1
/* Instruction opcode table for iq2000.
3
THIS FILE IS MACHINE GENERATED WITH CGEN.
5
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
7
This file is part of the GNU Binutils and/or GDB, the GNU debugger.
9
This program is free software; you can redistribute it and/or modify
10
it under the terms of the GNU General Public License as published by
11
the Free Software Foundation; either version 2, or (at your option)
14
This program is distributed in the hope that it will be useful,
15
but WITHOUT ANY WARRANTY; without even the implied warranty of
16
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
GNU General Public License for more details.
19
You should have received a copy of the GNU General Public License along
20
with this program; if not, write to the Free Software Foundation, Inc.,
21
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
29
#include "iq2000-desc.h"
30
#include "iq2000-opc.h"
31
#include "libiberty.h"
33
/* The hash functions are recorded here to help keep assembler code out of
34
the disassembler and vice versa. */
36
static int asm_hash_insn_p PARAMS ((const CGEN_INSN *));
37
static unsigned int asm_hash_insn PARAMS ((const char *));
38
static int dis_hash_insn_p PARAMS ((const CGEN_INSN *));
39
static unsigned int dis_hash_insn PARAMS ((const char *, CGEN_INSN_INT));
41
/* Instruction formats. */
43
#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
44
#define F(f) & iq2000_cgen_ifld_table[IQ2000_##f]
46
#define F(f) & iq2000_cgen_ifld_table[IQ2000_/**/f]
48
static const CGEN_IFMT ifmt_empty = {
52
static const CGEN_IFMT ifmt_add2 = {
53
32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
56
static const CGEN_IFMT ifmt_add = {
57
32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
60
static const CGEN_IFMT ifmt_addi2 = {
61
32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
64
static const CGEN_IFMT ifmt_addi = {
65
32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
68
static const CGEN_IFMT ifmt_ram = {
69
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 } }
72
static const CGEN_IFMT ifmt_sll = {
73
32, 32, 0xffe0003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
76
static const CGEN_IFMT ifmt_sllv2 = {
77
32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
80
static const CGEN_IFMT ifmt_slmv2 = {
81
32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
84
static const CGEN_IFMT ifmt_slmv = {
85
32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
88
static const CGEN_IFMT ifmt_slti2 = {
89
32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
92
static const CGEN_IFMT ifmt_slti = {
93
32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
96
static const CGEN_IFMT ifmt_sra2 = {
97
32, 32, 0xffe0003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
100
static const CGEN_IFMT ifmt_bbi = {
101
32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
104
static const CGEN_IFMT ifmt_bbv = {
105
32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
108
static const CGEN_IFMT ifmt_bgez = {
109
32, 32, 0xfc1f0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
112
static const CGEN_IFMT ifmt_jalr = {
113
32, 32, 0xfc1f07ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
116
static const CGEN_IFMT ifmt_jr = {
117
32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
120
static const CGEN_IFMT ifmt_lb = {
121
32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
124
static const CGEN_IFMT ifmt_lui = {
125
32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
128
static const CGEN_IFMT ifmt_break = {
129
32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
132
static const CGEN_IFMT ifmt_syscall = {
133
32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_EXCODE) }, { F (F_FUNC) }, { 0 } }
136
static const CGEN_IFMT ifmt_andoui = {
137
32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
140
static const CGEN_IFMT ifmt_andoui2 = {
141
32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } }
144
static const CGEN_IFMT ifmt_mrgb = {
145
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 } }
148
static const CGEN_IFMT ifmt_mrgb2 = {
149
32, 32, 0xfc00043f, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_10) }, { F (F_MASK) }, { F (F_FUNC) }, { 0 } }
152
static const CGEN_IFMT ifmt_bc0f = {
153
32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } }
156
static const CGEN_IFMT ifmt_cfc0 = {
157
32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_10_11) }, { 0 } }
160
static const CGEN_IFMT ifmt_chkhdr = {
161
32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
164
static const CGEN_IFMT ifmt_lulck = {
165
32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
168
static const CGEN_IFMT ifmt_pkrlr1 = {
169
23, 23, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_COUNT) }, { 0 } }
172
static const CGEN_IFMT ifmt_rfe = {
173
32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_25) }, { F (F_24_19) }, { F (F_FUNC) }, { 0 } }
176
static const CGEN_IFMT ifmt_j = {
177
32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RSRVD) }, { F (F_JTARG) }, { 0 } }
180
static const CGEN_IFMT ifmt_mrgbq10 = {
181
32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_MASKQ10) }, { F (F_FUNC) }, { 0 } }
184
static const CGEN_IFMT ifmt_mrgbq102 = {
185
32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_MASKQ10) }, { F (F_FUNC) }, { 0 } }
188
static const CGEN_IFMT ifmt_jq10 = {
189
32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_JTARG) }, { 0 } }
192
static const CGEN_IFMT ifmt_jalq10 = {
193
32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_JTARG) }, { 0 } }
196
static const CGEN_IFMT ifmt_avail = {
197
32, 32, 0xffff07ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
200
static const CGEN_IFMT ifmt_rbi = {
201
32, 32, 0xfc000700, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
204
static const CGEN_IFMT ifmt_cam36 = {
205
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 } }
208
static const CGEN_IFMT ifmt_cm32and = {
209
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 } }
212
static const CGEN_IFMT ifmt_cm32rd = {
213
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 } }
216
static const CGEN_IFMT ifmt_cm128ria3 = {
217
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 } }
220
static const CGEN_IFMT ifmt_cm128ria4 = {
221
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 } }
224
static const CGEN_IFMT ifmt_ctc = {
225
32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
230
#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
231
#define A(a) (1 << CGEN_INSN_##a)
233
#define A(a) (1 << CGEN_INSN_/**/a)
235
#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
236
#define OPERAND(op) IQ2000_OPERAND_##op
238
#define OPERAND(op) IQ2000_OPERAND_/**/op
240
#define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
241
#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
243
/* The instruction table. */
245
static const CGEN_OPCODE iq2000_cgen_insn_opcode_table[MAX_INSNS] =
247
/* Special null first entry.
248
A `num' value of zero is thus invalid.
249
Also, the special `invalid' insn resides here. */
250
{ { 0, 0, 0, 0 }, {{0}}, 0, {0}},
251
/* add ${rd-rs},$rt */
254
{ { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
255
& ifmt_add2, { 0x20 }
257
/* add $rd,$rs,$rt */
260
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
263
/* addi ${rt-rs},$lo16 */
266
{ { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
267
& ifmt_addi2, { 0x20000000 }
269
/* addi $rt,$rs,$lo16 */
272
{ { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
273
& ifmt_addi, { 0x20000000 }
275
/* addiu ${rt-rs},$lo16 */
278
{ { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
279
& ifmt_addi2, { 0x24000000 }
281
/* addiu $rt,$rs,$lo16 */
284
{ { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
285
& ifmt_addi, { 0x24000000 }
287
/* addu ${rd-rs},$rt */
290
{ { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
291
& ifmt_add2, { 0x21 }
293
/* addu $rd,$rs,$rt */
296
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
299
/* ado16 ${rd-rs},$rt */
302
{ { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
303
& ifmt_add2, { 0x29 }
305
/* ado16 $rd,$rs,$rt */
308
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
311
/* and ${rd-rs},$rt */
314
{ { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
315
& ifmt_add2, { 0x24 }
317
/* and $rd,$rs,$rt */
320
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
323
/* andi ${rt-rs},$lo16 */
326
{ { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
327
& ifmt_addi2, { 0x30000000 }
329
/* andi $rt,$rs,$lo16 */
332
{ { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
333
& ifmt_addi, { 0x30000000 }
335
/* andoi ${rt-rs},$lo16 */
338
{ { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
339
& ifmt_addi2, { 0xb0000000 }
341
/* andoi $rt,$rs,$lo16 */
344
{ { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
345
& ifmt_addi, { 0xb0000000 }
347
/* nor ${rd-rs},$rt */
350
{ { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
351
& ifmt_add2, { 0x27 }
353
/* nor $rd,$rs,$rt */
356
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
359
/* or ${rd-rs},$rt */
362
{ { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
363
& ifmt_add2, { 0x25 }
368
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
371
/* ori ${rt-rs},$lo16 */
374
{ { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
375
& ifmt_addi2, { 0x34000000 }
377
/* ori $rt,$rs,$lo16 */
380
{ { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
381
& ifmt_addi, { 0x34000000 }
383
/* ram $rd,$rt,$shamt,$maskl,$maskr */
386
{ { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), ',', OP (MASKL), ',', OP (MASKR), 0 } },
387
& ifmt_ram, { 0x9c000000 }
389
/* sll $rd,$rt,$shamt */
392
{ { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
395
/* sllv ${rd-rt},$rs */
398
{ { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
399
& ifmt_sllv2, { 0x4 }
401
/* sllv $rd,$rt,$rs */
404
{ { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
407
/* slmv ${rd-rt},$rs,$shamt */
410
{ { MNEM, ' ', OP (RD_RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
411
& ifmt_slmv2, { 0x1 }
413
/* slmv $rd,$rt,$rs,$shamt */
416
{ { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
419
/* slt ${rd-rs},$rt */
422
{ { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
423
& ifmt_add2, { 0x2a }
425
/* slt $rd,$rs,$rt */
428
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
431
/* slti ${rt-rs},$imm */
434
{ { MNEM, ' ', OP (RT_RS), ',', OP (IMM), 0 } },
435
& ifmt_slti2, { 0x28000000 }
437
/* slti $rt,$rs,$imm */
440
{ { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
441
& ifmt_slti, { 0x28000000 }
443
/* sltiu ${rt-rs},$imm */
446
{ { MNEM, ' ', OP (RT_RS), ',', OP (IMM), 0 } },
447
& ifmt_slti2, { 0x2c000000 }
449
/* sltiu $rt,$rs,$imm */
452
{ { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
453
& ifmt_slti, { 0x2c000000 }
455
/* sltu ${rd-rs},$rt */
458
{ { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
459
& ifmt_add2, { 0x2b }
461
/* sltu $rd,$rs,$rt */
464
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
467
/* sra ${rd-rt},$shamt */
470
{ { MNEM, ' ', OP (RD_RT), ',', OP (SHAMT), 0 } },
473
/* sra $rd,$rt,$shamt */
476
{ { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
479
/* srav ${rd-rt},$rs */
482
{ { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
483
& ifmt_sllv2, { 0x7 }
485
/* srav $rd,$rt,$rs */
488
{ { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
491
/* srl $rd,$rt,$shamt */
494
{ { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } },
497
/* srlv ${rd-rt},$rs */
500
{ { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } },
501
& ifmt_sllv2, { 0x6 }
503
/* srlv $rd,$rt,$rs */
506
{ { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
509
/* srmv ${rd-rt},$rs,$shamt */
512
{ { MNEM, ' ', OP (RD_RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
513
& ifmt_slmv2, { 0x5 }
515
/* srmv $rd,$rt,$rs,$shamt */
518
{ { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), ',', OP (SHAMT), 0 } },
521
/* sub ${rd-rs},$rt */
524
{ { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
525
& ifmt_add2, { 0x22 }
527
/* sub $rd,$rs,$rt */
530
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
533
/* subu ${rd-rs},$rt */
536
{ { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
537
& ifmt_add2, { 0x23 }
539
/* subu $rd,$rs,$rt */
542
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
545
/* xor ${rd-rs},$rt */
548
{ { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } },
549
& ifmt_add2, { 0x26 }
551
/* xor $rd,$rs,$rt */
554
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
557
/* xori ${rt-rs},$lo16 */
560
{ { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } },
561
& ifmt_addi2, { 0x38000000 }
563
/* xori $rt,$rs,$lo16 */
566
{ { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
567
& ifmt_addi, { 0x38000000 }
569
/* bbi $rs($bitnum),$offset */
572
{ { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
573
& ifmt_bbi, { 0x70000000 }
575
/* bbin $rs($bitnum),$offset */
578
{ { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
579
& ifmt_bbi, { 0x78000000 }
581
/* bbv $rs,$rt,$offset */
584
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
585
& ifmt_bbv, { 0x74000000 }
587
/* bbvn $rs,$rt,$offset */
590
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
591
& ifmt_bbv, { 0x7c000000 }
593
/* beq $rs,$rt,$offset */
596
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
597
& ifmt_bbv, { 0x10000000 }
599
/* beql $rs,$rt,$offset */
602
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
603
& ifmt_bbv, { 0x50000000 }
605
/* bgez $rs,$offset */
608
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
609
& ifmt_bgez, { 0x4010000 }
611
/* bgezal $rs,$offset */
614
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
615
& ifmt_bgez, { 0x4110000 }
617
/* bgezall $rs,$offset */
620
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
621
& ifmt_bgez, { 0x4130000 }
623
/* bgezl $rs,$offset */
626
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
627
& ifmt_bgez, { 0x4030000 }
629
/* bltz $rs,$offset */
632
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
633
& ifmt_bgez, { 0x4000000 }
635
/* bltzl $rs,$offset */
638
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
639
& ifmt_bgez, { 0x4020000 }
641
/* bltzal $rs,$offset */
644
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
645
& ifmt_bgez, { 0x4100000 }
647
/* bltzall $rs,$offset */
650
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
651
& ifmt_bgez, { 0x4120000 }
653
/* bmb0 $rs,$rt,$offset */
656
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
657
& ifmt_bbv, { 0x60000000 }
659
/* bmb1 $rs,$rt,$offset */
662
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
663
& ifmt_bbv, { 0x64000000 }
665
/* bmb2 $rs,$rt,$offset */
668
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
669
& ifmt_bbv, { 0x68000000 }
671
/* bmb3 $rs,$rt,$offset */
674
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
675
& ifmt_bbv, { 0x6c000000 }
677
/* bne $rs,$rt,$offset */
680
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
681
& ifmt_bbv, { 0x14000000 }
683
/* bnel $rs,$rt,$offset */
686
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
687
& ifmt_bbv, { 0x54000000 }
692
{ { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
698
{ { MNEM, ' ', OP (RS), 0 } },
701
/* lb $rt,$lo16($base) */
704
{ { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
705
& ifmt_lb, { 0x80000000 }
707
/* lbu $rt,$lo16($base) */
710
{ { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
711
& ifmt_lb, { 0x90000000 }
713
/* lh $rt,$lo16($base) */
716
{ { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
717
& ifmt_lb, { 0x84000000 }
719
/* lhu $rt,$lo16($base) */
722
{ { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
723
& ifmt_lb, { 0x94000000 }
728
{ { MNEM, ' ', OP (RT), ',', OP (HI16), 0 } },
729
& ifmt_lui, { 0x3c000000 }
731
/* lw $rt,$lo16($base) */
734
{ { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
735
& ifmt_lb, { 0x8c000000 }
737
/* sb $rt,$lo16($base) */
740
{ { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
741
& ifmt_lb, { 0xa0000000 }
743
/* sh $rt,$lo16($base) */
746
{ { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
747
& ifmt_lb, { 0xa4000000 }
749
/* sw $rt,$lo16($base) */
752
{ { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
753
& ifmt_lb, { 0xac000000 }
759
& ifmt_break, { 0xd }
765
& ifmt_syscall, { 0xc }
767
/* andoui $rt,$rs,$hi16 */
770
{ { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
771
& ifmt_andoui, { 0xfc000000 }
773
/* andoui ${rt-rs},$hi16 */
776
{ { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
777
& ifmt_andoui2, { 0xfc000000 }
779
/* orui ${rt-rs},$hi16 */
782
{ { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
783
& ifmt_andoui2, { 0xbc000000 }
785
/* orui $rt,$rs,$hi16 */
788
{ { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
789
& ifmt_andoui, { 0xbc000000 }
791
/* bgtz $rs,$offset */
794
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
795
& ifmt_bgez, { 0x1c000000 }
797
/* bgtzl $rs,$offset */
800
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
801
& ifmt_bgez, { 0x5c000000 }
803
/* blez $rs,$offset */
806
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
807
& ifmt_bgez, { 0x18000000 }
809
/* blezl $rs,$offset */
812
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
813
& ifmt_bgez, { 0x58000000 }
815
/* mrgb $rd,$rs,$rt,$mask */
818
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (MASK), 0 } },
819
& ifmt_mrgb, { 0x2d }
821
/* mrgb ${rd-rs},$rt,$mask */
824
{ { MNEM, ' ', OP (RD_RS), ',', OP (RT), ',', OP (MASK), 0 } },
825
& ifmt_mrgb2, { 0x2d }
827
/* bctxt $rs,$offset */
830
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
831
& ifmt_bgez, { 0x4060000 }
836
{ { MNEM, ' ', OP (OFFSET), 0 } },
837
& ifmt_bc0f, { 0x41000000 }
842
{ { MNEM, ' ', OP (OFFSET), 0 } },
843
& ifmt_bc0f, { 0x41020000 }
848
{ { MNEM, ' ', OP (OFFSET), 0 } },
849
& ifmt_bc0f, { 0x4d000000 }
854
{ { MNEM, ' ', OP (OFFSET), 0 } },
855
& ifmt_bc0f, { 0x4d020000 }
860
{ { MNEM, ' ', OP (OFFSET), 0 } },
861
& ifmt_bc0f, { 0x41010000 }
866
{ { MNEM, ' ', OP (OFFSET), 0 } },
867
& ifmt_bc0f, { 0x41030000 }
872
{ { MNEM, ' ', OP (OFFSET), 0 } },
873
& ifmt_bc0f, { 0x4d010000 }
878
{ { MNEM, ' ', OP (OFFSET), 0 } },
879
& ifmt_bc0f, { 0x4d030000 }
884
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
885
& ifmt_cfc0, { 0x40400000 }
890
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
891
& ifmt_cfc0, { 0x44400000 }
896
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
897
& ifmt_cfc0, { 0x48400000 }
902
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
903
& ifmt_cfc0, { 0x4c400000 }
908
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
909
& ifmt_chkhdr, { 0x4d200000 }
914
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
915
& ifmt_cfc0, { 0x40c00000 }
920
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
921
& ifmt_cfc0, { 0x44c00000 }
926
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
927
& ifmt_cfc0, { 0x48c00000 }
932
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
933
& ifmt_cfc0, { 0x4cc00000 }
938
{ { MNEM, ' ', OP (RS), 0 } },
944
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
945
& ifmt_chkhdr, { 0x48200003 }
950
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
951
& ifmt_chkhdr, { 0x48200007 }
956
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
957
& ifmt_chkhdr, { 0x4820000b }
962
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
963
& ifmt_chkhdr, { 0x4820000f }
968
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
969
& ifmt_chkhdr, { 0x48200008 }
974
{ { MNEM, ' ', OP (RT), 0 } },
975
& ifmt_lulck, { 0x48200004 }
980
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
981
& ifmt_chkhdr, { 0x48200002 }
986
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
987
& ifmt_chkhdr, { 0x48200006 }
992
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
993
& ifmt_chkhdr, { 0x4820000a }
998
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
999
& ifmt_chkhdr, { 0x4820000e }
1004
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1005
& ifmt_chkhdr, { 0x48200001 }
1010
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1011
& ifmt_chkhdr, { 0x48200005 }
1016
{ { MNEM, ' ', OP (RT), 0 } },
1017
& ifmt_lulck, { 0x48200000 }
1022
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1023
& ifmt_cfc0, { 0x40000000 }
1028
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1029
& ifmt_cfc0, { 0x44000000 }
1034
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1035
& ifmt_cfc0, { 0x48000000 }
1040
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1041
& ifmt_cfc0, { 0x4c000000 }
1046
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1047
& ifmt_cfc0, { 0x40800000 }
1052
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1053
& ifmt_cfc0, { 0x44800000 }
1058
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1059
& ifmt_cfc0, { 0x48800000 }
1064
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1065
& ifmt_cfc0, { 0x4c800000 }
1070
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1071
& ifmt_chkhdr, { 0x4c200007 }
1073
/* pkrlr1 $rt,$count */
1076
{ { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } },
1077
& ifmt_pkrlr1, { 0x4fa00000 }
1079
/* pkrlr30 $rt,$count */
1082
{ { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } },
1083
& ifmt_pkrlr1, { 0x4fe00000 }
1088
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1089
& ifmt_chkhdr, { 0x4c200004 }
1091
/* rbr1 $rt,$count */
1094
{ { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } },
1095
& ifmt_pkrlr1, { 0x4f000000 }
1097
/* rbr30 $rt,$count */
1100
{ { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } },
1101
& ifmt_pkrlr1, { 0x4f400000 }
1107
& ifmt_rfe, { 0x42000010 }
1112
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1113
& ifmt_chkhdr, { 0x4c200006 }
1115
/* rxr1 $rt,$count */
1118
{ { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } },
1119
& ifmt_pkrlr1, { 0x4f800000 }
1121
/* rxr30 $rt,$count */
1124
{ { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } },
1125
& ifmt_pkrlr1, { 0x4fc00000 }
1131
& ifmt_syscall, { 0xe }
1136
{ { MNEM, ' ', OP (RT), 0 } },
1137
& ifmt_lulck, { 0x48200010 }
1142
{ { MNEM, ' ', OP (RT), 0 } },
1143
& ifmt_lulck, { 0x48200014 }
1148
{ { MNEM, ' ', OP (RT), 0 } },
1149
& ifmt_lulck, { 0x48200016 }
1154
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1155
& ifmt_chkhdr, { 0x48200011 }
1160
{ { MNEM, ' ', OP (RT), ',', OP (RD), 0 } },
1161
& ifmt_chkhdr, { 0x48200015 }
1167
& ifmt_break, { 0x4c200008 }
1173
& ifmt_break, { 0x4c200009 }
1178
{ { MNEM, ' ', OP (RT), 0 } },
1179
& ifmt_lulck, { 0x4c20000a }
1184
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1185
& ifmt_chkhdr, { 0x4c200000 }
1190
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1191
& ifmt_chkhdr, { 0x4c200001 }
1193
/* wbr1 $rt,$count */
1196
{ { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } },
1197
& ifmt_pkrlr1, { 0x4e000000 }
1199
/* wbr1u $rt,$count */
1202
{ { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } },
1203
& ifmt_pkrlr1, { 0x4e200000 }
1205
/* wbr30 $rt,$count */
1208
{ { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } },
1209
& ifmt_pkrlr1, { 0x4e400000 }
1211
/* wbr30u $rt,$count */
1214
{ { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } },
1215
& ifmt_pkrlr1, { 0x4e600000 }
1220
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1221
& ifmt_chkhdr, { 0x4c200002 }
1226
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1227
& ifmt_chkhdr, { 0x4c200003 }
1229
/* wxr1 $rt,$count */
1232
{ { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } },
1233
& ifmt_pkrlr1, { 0x4e800000 }
1235
/* wxr1u $rt,$count */
1238
{ { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } },
1239
& ifmt_pkrlr1, { 0x4ea00000 }
1241
/* wxr30 $rt,$count */
1244
{ { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } },
1245
& ifmt_pkrlr1, { 0x4ec00000 }
1247
/* wxr30u $rt,$count */
1250
{ { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } },
1251
& ifmt_pkrlr1, { 0x4ee00000 }
1253
/* ldw $rt,$lo16($base) */
1256
{ { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
1257
& ifmt_lb, { 0xc0000000 }
1259
/* sdw $rt,$lo16($base) */
1262
{ { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } },
1263
& ifmt_lb, { 0xe0000000 }
1268
{ { MNEM, ' ', OP (JMPTARG), 0 } },
1269
& ifmt_j, { 0x8000000 }
1274
{ { MNEM, ' ', OP (JMPTARG), 0 } },
1275
& ifmt_j, { 0xc000000 }
1277
/* bmb $rs,$rt,$offset */
1280
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1281
& ifmt_bbv, { 0xb4000000 }
1283
/* andoui $rt,$rs,$hi16 */
1286
{ { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
1287
& ifmt_andoui, { 0xbc000000 }
1289
/* andoui ${rt-rs},$hi16 */
1292
{ { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
1293
& ifmt_andoui2, { 0xbc000000 }
1295
/* orui $rt,$rs,$hi16 */
1298
{ { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } },
1299
& ifmt_andoui, { 0x3c000000 }
1301
/* orui ${rt-rs},$hi16 */
1304
{ { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } },
1305
& ifmt_andoui2, { 0x3c000000 }
1307
/* mrgb $rd,$rs,$rt,$maskq10 */
1310
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (MASKQ10), 0 } },
1311
& ifmt_mrgbq10, { 0x2d }
1313
/* mrgb ${rd-rs},$rt,$maskq10 */
1316
{ { MNEM, ' ', OP (RD_RS), ',', OP (RT), ',', OP (MASKQ10), 0 } },
1317
& ifmt_mrgbq102, { 0x2d }
1322
{ { MNEM, ' ', OP (JMPTARG), 0 } },
1323
& ifmt_jq10, { 0x8000000 }
1325
/* jal $rt,$jmptarg */
1328
{ { MNEM, ' ', OP (RT), ',', OP (JMPTARG), 0 } },
1329
& ifmt_jalq10, { 0xc000000 }
1334
{ { MNEM, ' ', OP (JMPTARG), 0 } },
1335
& ifmt_jq10, { 0xc1f0000 }
1337
/* bbil $rs($bitnum),$offset */
1340
{ { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
1341
& ifmt_bbi, { 0xf0000000 }
1343
/* bbinl $rs($bitnum),$offset */
1346
{ { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } },
1347
& ifmt_bbi, { 0xf8000000 }
1349
/* bbvl $rs,$rt,$offset */
1352
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1353
& ifmt_bbv, { 0xf4000000 }
1355
/* bbvnl $rs,$rt,$offset */
1358
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1359
& ifmt_bbv, { 0xfc000000 }
1361
/* bgtzal $rs,$offset */
1364
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1365
& ifmt_bgez, { 0x4150000 }
1367
/* bgtzall $rs,$offset */
1370
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1371
& ifmt_bgez, { 0x4170000 }
1373
/* blezal $rs,$offset */
1376
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1377
& ifmt_bgez, { 0x4140000 }
1379
/* blezall $rs,$offset */
1382
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1383
& ifmt_bgez, { 0x4160000 }
1385
/* bgtz $rs,$offset */
1388
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1389
& ifmt_bgez, { 0x4050000 }
1391
/* bgtzl $rs,$offset */
1394
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1395
& ifmt_bgez, { 0x4070000 }
1397
/* blez $rs,$offset */
1400
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1401
& ifmt_bgez, { 0x4040000 }
1403
/* blezl $rs,$offset */
1406
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1407
& ifmt_bgez, { 0x4060000 }
1409
/* bmb $rs,$rt,$offset */
1412
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1413
& ifmt_bbv, { 0x18000000 }
1415
/* bmbl $rs,$rt,$offset */
1418
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } },
1419
& ifmt_bbv, { 0x58000000 }
1421
/* bri $rs,$offset */
1424
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1425
& ifmt_bgez, { 0x4080000 }
1427
/* brv $rs,$offset */
1430
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1431
& ifmt_bgez, { 0x4090000 }
1433
/* bctx $rs,$offset */
1436
{ { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } },
1437
& ifmt_bgez, { 0x40c0000 }
1443
& ifmt_break, { 0xe }
1445
/* crc32 $rd,$rs,$rt */
1448
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1449
& ifmt_add, { 0x4c000014 }
1451
/* crc32b $rd,$rs,$rt */
1454
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1455
& ifmt_add, { 0x4c000015 }
1460
{ { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1461
& ifmt_add, { 0x2e }
1466
{ { MNEM, ' ', OP (RD), 0 } },
1467
& ifmt_avail, { 0x4c000024 }
1472
{ { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1473
& ifmt_jalr, { 0x4c000025 }
1478
{ { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1479
& ifmt_jalr, { 0x4c000027 }
1484
{ { MNEM, ' ', OP (RD), 0 } },
1485
& ifmt_avail, { 0x4c00002c }
1490
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1491
& ifmt_chkhdr, { 0x4c000020 }
1496
{ { MNEM, ' ', OP (RD), 0 } },
1497
& ifmt_avail, { 0x4c000022 }
1499
/* dbd $rd,$rs,$rt */
1502
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1503
& ifmt_add, { 0x4c000021 }
1508
{ { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1509
& ifmt_jalr, { 0x4c000023 }
1511
/* chkhdr $rd,$rs */
1514
{ { MNEM, ' ', OP (RD), ',', OP (RS), 0 } },
1515
& ifmt_jalr, { 0x4c000026 }
1517
/* rba $rd,$rs,$rt */
1520
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1521
& ifmt_add, { 0x4c000008 }
1523
/* rbal $rd,$rs,$rt */
1526
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1527
& ifmt_add, { 0x4c000009 }
1529
/* rbar $rd,$rs,$rt */
1532
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1533
& ifmt_add, { 0x4c00000a }
1535
/* wba $rd,$rs,$rt */
1538
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1539
& ifmt_add, { 0x4c000010 }
1541
/* wbau $rd,$rs,$rt */
1544
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1545
& ifmt_add, { 0x4c000011 }
1547
/* wbac $rd,$rs,$rt */
1550
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1551
& ifmt_add, { 0x4c000012 }
1553
/* rbi $rd,$rs,$rt,$bytecount */
1556
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1557
& ifmt_rbi, { 0x4c000200 }
1559
/* rbil $rd,$rs,$rt,$bytecount */
1562
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1563
& ifmt_rbi, { 0x4c000300 }
1565
/* rbir $rd,$rs,$rt,$bytecount */
1568
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1569
& ifmt_rbi, { 0x4c000100 }
1571
/* wbi $rd,$rs,$rt,$bytecount */
1574
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1575
& ifmt_rbi, { 0x4c000600 }
1577
/* wbic $rd,$rs,$rt,$bytecount */
1580
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1581
& ifmt_rbi, { 0x4c000500 }
1583
/* wbiu $rd,$rs,$rt,$bytecount */
1586
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1587
& ifmt_rbi, { 0x4c000700 }
1589
/* pkrli $rd,$rs,$rt,$bytecount */
1592
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1593
& ifmt_rbi, { 0x48000000 }
1595
/* pkrlih $rd,$rs,$rt,$bytecount */
1598
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1599
& ifmt_rbi, { 0x48000200 }
1601
/* pkrliu $rd,$rs,$rt,$bytecount */
1604
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1605
& ifmt_rbi, { 0x48000100 }
1607
/* pkrlic $rd,$rs,$rt,$bytecount */
1610
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
1611
& ifmt_rbi, { 0x48000300 }
1613
/* pkrla $rd,$rs,$rt */
1616
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1617
& ifmt_add, { 0x4c000028 }
1619
/* pkrlau $rd,$rs,$rt */
1622
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1623
& ifmt_add, { 0x4c000029 }
1625
/* pkrlah $rd,$rs,$rt */
1628
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1629
& ifmt_add, { 0x4c00002a }
1631
/* pkrlac $rd,$rs,$rt */
1634
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1635
& ifmt_add, { 0x4c00002b }
1640
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1641
& ifmt_chkhdr, { 0x4c000001 }
1646
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1647
& ifmt_chkhdr, { 0x4c000003 }
1652
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1653
& ifmt_chkhdr, { 0x4c000004 }
1658
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1659
& ifmt_chkhdr, { 0x4c000005 }
1661
/* swwr $rd,$rs,$rt */
1664
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1665
& ifmt_add, { 0x4c000006 }
1667
/* swwru $rd,$rs,$rt */
1670
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1671
& ifmt_add, { 0x4c000007 }
1676
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1677
& ifmt_chkhdr, { 0x4c00000c }
1682
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1683
& ifmt_chkhdr, { 0x4c00000d }
1685
/* cam36 $rd,$rt,${cam-z},${cam-y} */
1688
{ { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), ',', OP (CAM_Y), 0 } },
1689
& ifmt_cam36, { 0x4c000400 }
1691
/* cam72 $rd,$rt,${cam-y},${cam-z} */
1694
{ { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } },
1695
& ifmt_cam36, { 0x4c000440 }
1697
/* cam144 $rd,$rt,${cam-y},${cam-z} */
1700
{ { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } },
1701
& ifmt_cam36, { 0x4c000480 }
1703
/* cam288 $rd,$rt,${cam-y},${cam-z} */
1706
{ { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } },
1707
& ifmt_cam36, { 0x4c0004c0 }
1709
/* cm32and $rd,$rs,$rt */
1712
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1713
& ifmt_cm32and, { 0x4c0000ab }
1715
/* cm32andn $rd,$rs,$rt */
1718
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1719
& ifmt_cm32and, { 0x4c0000a3 }
1721
/* cm32or $rd,$rs,$rt */
1724
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1725
& ifmt_cm32and, { 0x4c0000aa }
1727
/* cm32ra $rd,$rs,$rt */
1730
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1731
& ifmt_add, { 0x4c0000b0 }
1733
/* cm32rd $rd,$rt */
1736
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1737
& ifmt_cm32rd, { 0x4c0000a1 }
1739
/* cm32ri $rd,$rt */
1742
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1743
& ifmt_cm32rd, { 0x4c0000a4 }
1745
/* cm32rs $rd,$rs,$rt */
1748
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1749
& ifmt_add, { 0x4c0000a0 }
1751
/* cm32sa $rd,$rs,$rt */
1754
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1755
& ifmt_cm32and, { 0x4c0000b8 }
1757
/* cm32sd $rd,$rt */
1760
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1761
& ifmt_cm32rd, { 0x4c0000a9 }
1763
/* cm32si $rd,$rt */
1766
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1767
& ifmt_cm32rd, { 0x4c0000ac }
1769
/* cm32ss $rd,$rs,$rt */
1772
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1773
& ifmt_cm32and, { 0x4c0000a8 }
1775
/* cm32xor $rd,$rs,$rt */
1778
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1779
& ifmt_cm32and, { 0x4c0000a2 }
1781
/* cm64clr $rd,$rt */
1784
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1785
& ifmt_cm32rd, { 0x4c000085 }
1787
/* cm64ra $rd,$rs,$rt */
1790
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1791
& ifmt_cm32and, { 0x4c000090 }
1793
/* cm64rd $rd,$rt */
1796
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1797
& ifmt_cm32rd, { 0x4c000081 }
1799
/* cm64ri $rd,$rt */
1802
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1803
& ifmt_cm32rd, { 0x4c000084 }
1805
/* cm64ria2 $rd,$rs,$rt */
1808
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1809
& ifmt_cm32and, { 0x4c000094 }
1811
/* cm64rs $rd,$rs,$rt */
1814
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1815
& ifmt_cm32and, { 0x4c000080 }
1817
/* cm64sa $rd,$rs,$rt */
1820
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1821
& ifmt_cm32and, { 0x4c000098 }
1823
/* cm64sd $rd,$rt */
1826
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1827
& ifmt_cm32rd, { 0x4c000089 }
1829
/* cm64si $rd,$rt */
1832
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1833
& ifmt_cm32rd, { 0x4c00008c }
1835
/* cm64sia2 $rd,$rs,$rt */
1838
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1839
& ifmt_cm32and, { 0x4c00009c }
1841
/* cm64ss $rd,$rs,$rt */
1844
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1845
& ifmt_cm32and, { 0x4c000088 }
1847
/* cm128ria2 $rd,$rs,$rt */
1850
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1851
& ifmt_cm32and, { 0x4c000095 }
1853
/* cm128ria3 $rd,$rs,$rt,${cm-3z} */
1856
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
1857
& ifmt_cm128ria3, { 0x4c000090 }
1859
/* cm128ria4 $rd,$rs,$rt,${cm-4z} */
1862
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
1863
& ifmt_cm128ria4, { 0x4c0000b0 }
1865
/* cm128sia2 $rd,$rs,$rt */
1868
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1869
& ifmt_cm32and, { 0x4c00009d }
1871
/* cm128sia3 $rd,$rs,$rt,${cm-3z} */
1874
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
1875
& ifmt_cm128ria3, { 0x4c000098 }
1877
/* cm128sia4 $rd,$rs,$rt,${cm-4z} */
1880
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
1881
& ifmt_cm128ria4, { 0x4c0000b8 }
1883
/* cm128vsa $rd,$rs,$rt */
1886
{ { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } },
1887
& ifmt_cm32and, { 0x4c0000a6 }
1892
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
1893
& ifmt_chkhdr, { 0x4c000000 }
1898
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
1899
& ifmt_ctc, { 0x4c000002 }
1908
/* Formats for ALIAS macro-insns. */
1910
#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
1911
#define F(f) & iq2000_cgen_ifld_table[IQ2000_##f]
1913
#define F(f) & iq2000_cgen_ifld_table[IQ2000_/**/f]
1915
static const CGEN_IFMT ifmt_nop = {
1916
32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1919
static const CGEN_IFMT ifmt_li = {
1920
32, 32, 0xfc1f0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1923
static const CGEN_IFMT ifmt_move = {
1924
32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1927
static const CGEN_IFMT ifmt_lb_base_0 = {
1928
32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1931
static const CGEN_IFMT ifmt_lbu_base_0 = {
1932
32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1935
static const CGEN_IFMT ifmt_lh_base_0 = {
1936
32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1939
static const CGEN_IFMT ifmt_lw_base_0 = {
1940
32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1943
static const CGEN_IFMT ifmt_m_add = {
1944
32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1947
static const CGEN_IFMT ifmt_m_addu = {
1948
32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1951
static const CGEN_IFMT ifmt_m_and = {
1952
32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1955
static const CGEN_IFMT ifmt_m_j = {
1956
32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1959
static const CGEN_IFMT ifmt_m_or = {
1960
32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1963
static const CGEN_IFMT ifmt_m_sll = {
1964
32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1967
static const CGEN_IFMT ifmt_m_slt = {
1968
32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1971
static const CGEN_IFMT ifmt_m_sltu = {
1972
32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1975
static const CGEN_IFMT ifmt_m_sra = {
1976
32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1979
static const CGEN_IFMT ifmt_m_srl = {
1980
32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1983
static const CGEN_IFMT ifmt_not = {
1984
32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
1987
static const CGEN_IFMT ifmt_subi = {
1988
32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1991
static const CGEN_IFMT ifmt_m_sub = {
1992
32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1995
static const CGEN_IFMT ifmt_m_subu = {
1996
32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
1999
static const CGEN_IFMT ifmt_sb_base_0 = {
2000
32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
2003
static const CGEN_IFMT ifmt_sh_base_0 = {
2004
32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
2007
static const CGEN_IFMT ifmt_sw_base_0 = {
2008
32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
2011
static const CGEN_IFMT ifmt_m_xor = {
2012
32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
2015
static const CGEN_IFMT ifmt_ldw_base_0 = {
2016
32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
2019
static const CGEN_IFMT ifmt_sdw_base_0 = {
2020
32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } }
2023
static const CGEN_IFMT ifmt_m_avail = {
2024
32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2027
static const CGEN_IFMT ifmt_m_cam36 = {
2028
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 } }
2031
static const CGEN_IFMT ifmt_m_cam72 = {
2032
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 } }
2035
static const CGEN_IFMT ifmt_m_cam144 = {
2036
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 } }
2039
static const CGEN_IFMT ifmt_m_cam288 = {
2040
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 } }
2043
static const CGEN_IFMT ifmt_m_cm32read = {
2044
32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2047
static const CGEN_IFMT ifmt_m_cm64read = {
2048
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 } }
2051
static const CGEN_IFMT ifmt_m_cm32mlog = {
2052
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 } }
2055
static const CGEN_IFMT ifmt_m_cm32and = {
2056
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 } }
2059
static const CGEN_IFMT ifmt_m_cm32andn = {
2060
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 } }
2063
static const CGEN_IFMT ifmt_m_cm32or = {
2064
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 } }
2067
static const CGEN_IFMT ifmt_m_cm32ra = {
2068
32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2071
static const CGEN_IFMT ifmt_m_cm32rd = {
2072
32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2075
static const CGEN_IFMT ifmt_m_cm32ri = {
2076
32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2079
static const CGEN_IFMT ifmt_m_cm32rs = {
2080
32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2083
static const CGEN_IFMT ifmt_m_cm32sa = {
2084
32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2087
static const CGEN_IFMT ifmt_m_cm32sd = {
2088
32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2091
static const CGEN_IFMT ifmt_m_cm32si = {
2092
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 } }
2095
static const CGEN_IFMT ifmt_m_cm32ss = {
2096
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 } }
2099
static const CGEN_IFMT ifmt_m_cm32xor = {
2100
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 } }
2103
static const CGEN_IFMT ifmt_m_cm64clr = {
2104
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 } }
2107
static const CGEN_IFMT ifmt_m_cm64ra = {
2108
32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2111
static const CGEN_IFMT ifmt_m_cm64rd = {
2112
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 } }
2115
static const CGEN_IFMT ifmt_m_cm64ri = {
2116
32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2119
static const CGEN_IFMT ifmt_m_cm64ria2 = {
2120
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 } }
2123
static const CGEN_IFMT ifmt_m_cm64rs = {
2124
32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2127
static const CGEN_IFMT ifmt_m_cm64sa = {
2128
32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2131
static const CGEN_IFMT ifmt_m_cm64sd = {
2132
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 } }
2135
static const CGEN_IFMT ifmt_m_cm64si = {
2136
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 } }
2139
static const CGEN_IFMT ifmt_m_cm64sia2 = {
2140
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 } }
2143
static const CGEN_IFMT ifmt_m_cm64ss = {
2144
32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } }
2147
static const CGEN_IFMT ifmt_m_cm128ria2 = {
2148
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 } }
2151
static const CGEN_IFMT ifmt_m_cm128ria3 = {
2152
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 } }
2155
static const CGEN_IFMT ifmt_m_cm128ria4 = {
2156
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 } }
2159
static const CGEN_IFMT ifmt_m_cm128sia2 = {
2160
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 } }
2163
static const CGEN_IFMT ifmt_m_cm128sia3 = {
2164
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 } }
2167
static const CGEN_IFMT ifmt_m_cm128sia4 = {
2168
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 } }
2171
static const CGEN_IFMT ifmt_m_cmphdr = {
2172
32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2175
static const CGEN_IFMT ifmt_m_dbd = {
2176
32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2179
static const CGEN_IFMT ifmt_m2_dbd = {
2180
32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2183
static const CGEN_IFMT ifmt_m_dpwt = {
2184
32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2187
static const CGEN_IFMT ifmt_m_free = {
2188
32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2191
static const CGEN_IFMT ifmt_m_lock = {
2192
32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2195
static const CGEN_IFMT ifmt_m_pkrla = {
2196
32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2199
static const CGEN_IFMT ifmt_m_pkrlac = {
2200
32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2203
static const CGEN_IFMT ifmt_m_pkrlah = {
2204
32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2207
static const CGEN_IFMT ifmt_m_pkrlau = {
2208
32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2211
static const CGEN_IFMT ifmt_m_pkrli = {
2212
32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2215
static const CGEN_IFMT ifmt_m_pkrlic = {
2216
32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2219
static const CGEN_IFMT ifmt_m_pkrlih = {
2220
32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2223
static const CGEN_IFMT ifmt_m_pkrliu = {
2224
32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2227
static const CGEN_IFMT ifmt_m_rba = {
2228
32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2231
static const CGEN_IFMT ifmt_m_rbal = {
2232
32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2235
static const CGEN_IFMT ifmt_m_rbar = {
2236
32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2239
static const CGEN_IFMT ifmt_m_rbi = {
2240
32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2243
static const CGEN_IFMT ifmt_m_rbil = {
2244
32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2247
static const CGEN_IFMT ifmt_m_rbir = {
2248
32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2251
static const CGEN_IFMT ifmt_m_swwr = {
2252
32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2255
static const CGEN_IFMT ifmt_m_swwru = {
2256
32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2259
static const CGEN_IFMT ifmt_m_tstod = {
2260
32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2263
static const CGEN_IFMT ifmt_m_unlk = {
2264
32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2267
static const CGEN_IFMT ifmt_m_wba = {
2268
32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2271
static const CGEN_IFMT ifmt_m_wbac = {
2272
32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2275
static const CGEN_IFMT ifmt_m_wbau = {
2276
32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } }
2279
static const CGEN_IFMT ifmt_m_wbi = {
2280
32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2283
static const CGEN_IFMT ifmt_m_wbic = {
2284
32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2287
static const CGEN_IFMT ifmt_m_wbiu = {
2288
32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } }
2293
/* Each non-simple macro entry points to an array of expansion possibilities. */
2295
#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
2296
#define A(a) (1 << CGEN_INSN_##a)
2298
#define A(a) (1 << CGEN_INSN_/**/a)
2300
#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
2301
#define OPERAND(op) IQ2000_OPERAND_##op
2303
#define OPERAND(op) IQ2000_OPERAND_/**/op
2305
#define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
2306
#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
2308
/* The macro instruction table. */
2310
static const CGEN_IBASE iq2000_cgen_macro_insn_table[] =
2314
-1, "nop", "nop", 32,
2315
{ 0|A(ALIAS), { (1<<MACH_BASE) } }
2320
{ 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
2324
-1, "move", "move", 32,
2325
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { (1<<MACH_BASE) } }
2329
-1, "lb-base-0", "lb", 32,
2330
{ 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } }
2334
-1, "lbu-base-0", "lbu", 32,
2335
{ 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } }
2339
-1, "lh-base-0", "lh", 32,
2340
{ 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } }
2344
-1, "lw-base-0", "lw", 32,
2345
{ 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } }
2347
/* add $rt,$rs,$lo16 */
2349
-1, "m-add", "add", 32,
2350
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
2352
/* addu $rt,$rs,$lo16 */
2354
-1, "m-addu", "addu", 32,
2355
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
2357
/* and $rt,$rs,$lo16 */
2359
-1, "m-and", "and", 32,
2360
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
2365
{ 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
2367
/* or $rt,$rs,$lo16 */
2369
-1, "m-or", "or", 32,
2370
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
2372
/* sll $rd,$rt,$rs */
2374
-1, "m-sll", "sll", 32,
2375
{ 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { (1<<MACH_BASE) } }
2377
/* slt $rt,$rs,$imm */
2379
-1, "m-slt", "slt", 32,
2380
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
2382
/* sltu $rt,$rs,$imm */
2384
-1, "m-sltu", "sltu", 32,
2385
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
2387
/* sra $rd,$rt,$rs */
2389
-1, "m-sra", "sra", 32,
2390
{ 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { (1<<MACH_BASE) } }
2392
/* srl $rd,$rt,$rs */
2394
-1, "m-srl", "srl", 32,
2395
{ 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { (1<<MACH_BASE) } }
2399
-1, "not", "not", 32,
2400
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { (1<<MACH_BASE) } }
2402
/* subi $rt,$rs,$mlo16 */
2404
-1, "subi", "subi", 32,
2405
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
2407
/* sub $rt,$rs,$mlo16 */
2409
-1, "m-sub", "sub", 32,
2410
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
2412
/* subu $rt,$rs,$mlo16 */
2414
-1, "m-subu", "subu", 32,
2415
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
2419
-1, "sb-base-0", "sb", 32,
2420
{ 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } }
2424
-1, "sh-base-0", "sh", 32,
2425
{ 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } }
2429
-1, "sw-base-0", "sw", 32,
2430
{ 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } }
2432
/* xor $rt,$rs,$lo16 */
2434
-1, "m-xor", "xor", 32,
2435
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } }
2439
-1, "ldw-base-0", "ldw", 32,
2440
{ 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(LOAD_DELAY)|A(EVEN_REG_NUM)|A(ALIAS), { (1<<MACH_IQ2000) } }
2444
-1, "sdw-base-0", "sdw", 32,
2445
{ 0|A(NO_DIS)|A(USES_RT)|A(EVEN_REG_NUM)|A(ALIAS), { (1<<MACH_IQ2000) } }
2449
-1, "m-avail", "avail", 32,
2450
{ 0|A(NO_DIS)|A(ALIAS), { (1<<MACH_IQ10) } }
2452
/* cam36 $rd,$rt,${cam-z} */
2454
-1, "m-cam36", "cam36", 32,
2455
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
2457
/* cam72 $rd,$rt,${cam-z} */
2459
-1, "m-cam72", "cam72", 32,
2460
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
2462
/* cam144 $rd,$rt,${cam-z} */
2464
-1, "m-cam144", "cam144", 32,
2465
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
2467
/* cam288 $rd,$rt,${cam-z} */
2469
-1, "m-cam288", "cam288", 32,
2470
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
2472
/* cm32read $rd,$rt */
2474
-1, "m-cm32read", "cm32read", 32,
2475
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
2477
/* cm64read $rd,$rt */
2479
-1, "m-cm64read", "cm64read", 32,
2480
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
2482
/* cm32mlog $rs,$rt */
2484
-1, "m-cm32mlog", "cm32mlog", 32,
2485
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2487
/* cm32and $rs,$rt */
2489
-1, "m-cm32and", "cm32and", 32,
2490
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2492
/* cm32andn $rs,$rt */
2494
-1, "m-cm32andn", "cm32andn", 32,
2495
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2497
/* cm32or $rs,$rt */
2499
-1, "m-cm32or", "cm32or", 32,
2500
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2502
/* cm32ra $rs,$rt */
2504
-1, "m-cm32ra", "cm32ra", 32,
2505
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2509
-1, "m-cm32rd", "cm32rd", 32,
2510
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
2514
-1, "m-cm32ri", "cm32ri", 32,
2515
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
2517
/* cm32rs $rs,$rt */
2519
-1, "m-cm32rs", "cm32rs", 32,
2520
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2522
/* cm32sa $rs,$rt */
2524
-1, "m-cm32sa", "cm32sa", 32,
2525
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2529
-1, "m-cm32sd", "cm32sd", 32,
2530
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
2534
-1, "m-cm32si", "cm32si", 32,
2535
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
2537
/* cm32ss $rs,$rt */
2539
-1, "m-cm32ss", "cm32ss", 32,
2540
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2542
/* cm32xor $rs,$rt */
2544
-1, "m-cm32xor", "cm32xor", 32,
2545
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2549
-1, "m-cm64clr", "cm64clr", 32,
2550
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
2552
/* cm64ra $rs,$rt */
2554
-1, "m-cm64ra", "cm64ra", 32,
2555
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2559
-1, "m-cm64rd", "cm64rd", 32,
2560
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
2564
-1, "m-cm64ri", "cm64ri", 32,
2565
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
2567
/* cm64ria2 $rs,$rt */
2569
-1, "m-cm64ria2", "cm64ria2", 32,
2570
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2572
/* cm64rs $rs,$rt */
2574
-1, "m-cm64rs", "cm64rs", 32,
2575
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2577
/* cm64sa $rs,$rt */
2579
-1, "m-cm64sa", "cm64sa", 32,
2580
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2584
-1, "m-cm64sd", "cm64sd", 32,
2585
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
2589
-1, "m-cm64si", "cm64si", 32,
2590
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
2592
/* cm64sia2 $rs,$rt */
2594
-1, "m-cm64sia2", "cm64sia2", 32,
2595
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2597
/* cm64ss $rs,$rt */
2599
-1, "m-cm64ss", "cm64ss", 32,
2600
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2602
/* cm128ria2 $rs,$rt */
2604
-1, "m-cm128ria2", "cm128ria2", 32,
2605
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2607
/* cm128ria3 $rs,$rt,${cm-3z} */
2609
-1, "m-cm128ria3", "cm128ria3", 32,
2610
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2612
/* cm128ria4 $rs,$rt,${cm-4z} */
2614
-1, "m-cm128ria4", "cm128ria4", 32,
2615
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2617
/* cm128sia2 $rs,$rt */
2619
-1, "m-cm128sia2", "cm128sia2", 32,
2620
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2622
/* cm128sia3 $rs,$rt,${cm-3z} */
2624
-1, "m-cm128sia3", "cm128sia3", 32,
2625
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2627
/* cm128sia4 $rs,$rt,${cm-4z} */
2629
-1, "m-cm128sia4", "cm128sia4", 32,
2630
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2634
-1, "m-cmphdr", "cmphdr", 32,
2635
{ 0|A(NO_DIS)|A(ALIAS), { (1<<MACH_IQ10) } }
2639
-1, "m-dbd", "dbd", 32,
2640
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { (1<<MACH_IQ10) } }
2644
-1, "m2-dbd", "dbd", 32,
2645
{ 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
2649
-1, "m-dpwt", "dpwt", 32,
2650
{ 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2654
-1, "m-free", "free", 32,
2655
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2659
-1, "m-lock", "lock", 32,
2660
{ 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
2664
-1, "m-pkrla", "pkrla", 32,
2665
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2667
/* pkrlac $rs,$rt */
2669
-1, "m-pkrlac", "pkrlac", 32,
2670
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2672
/* pkrlah $rs,$rt */
2674
-1, "m-pkrlah", "pkrlah", 32,
2675
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2677
/* pkrlau $rs,$rt */
2679
-1, "m-pkrlau", "pkrlau", 32,
2680
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2682
/* pkrli $rs,$rt,$bytecount */
2684
-1, "m-pkrli", "pkrli", 32,
2685
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { (1<<MACH_IQ10) } }
2687
/* pkrlic $rs,$rt,$bytecount */
2689
-1, "m-pkrlic", "pkrlic", 32,
2690
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2692
/* pkrlih $rs,$rt,$bytecount */
2694
-1, "m-pkrlih", "pkrlih", 32,
2695
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { (1<<MACH_IQ10) } }
2697
/* pkrliu $rs,$rt,$bytecount */
2699
-1, "m-pkrliu", "pkrliu", 32,
2700
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { (1<<MACH_IQ10) } }
2704
-1, "m-rba", "rba", 32,
2705
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2709
-1, "m-rbal", "rbal", 32,
2710
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2714
-1, "m-rbar", "rbar", 32,
2715
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2717
/* rbi $rs,$rt,$bytecount */
2719
-1, "m-rbi", "rbi", 32,
2720
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2722
/* rbil $rs,$rt,$bytecount */
2724
-1, "m-rbil", "rbil", 32,
2725
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2727
/* rbir $rs,$rt,$bytecount */
2729
-1, "m-rbir", "rbir", 32,
2730
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2734
-1, "m-swwr", "swwr", 32,
2735
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2739
-1, "m-swwru", "swwru", 32,
2740
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2744
-1, "m-tstod", "tstod", 32,
2745
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2749
-1, "m-unlk", "unlk", 32,
2750
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } }
2754
-1, "m-wba", "wba", 32,
2755
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2759
-1, "m-wbac", "wbac", 32,
2760
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2764
-1, "m-wbau", "wbau", 32,
2765
{ 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } }
2767
/* wbi $rs,$rt,$bytecount */
2769
-1, "m-wbi", "wbi", 32,
2770
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { (1<<MACH_IQ10) } }
2772
/* wbic $rs,$rt,$bytecount */
2774
-1, "m-wbic", "wbic", 32,
2775
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { (1<<MACH_IQ10) } }
2777
/* wbiu $rs,$rt,$bytecount */
2779
-1, "m-wbiu", "wbiu", 32,
2780
{ 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { (1<<MACH_IQ10) } }
2784
/* The macro instruction opcode table. */
2786
static const CGEN_OPCODE iq2000_cgen_macro_insn_opcode_table[] =
2797
{ { MNEM, ' ', OP (RS), ',', OP (IMM), 0 } },
2798
& ifmt_li, { 0x34000000 }
2803
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
2804
& ifmt_move, { 0x25 }
2809
{ { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2810
& ifmt_lb_base_0, { 0x80000000 }
2815
{ { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2816
& ifmt_lbu_base_0, { 0x90000000 }
2821
{ { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2822
& ifmt_lh_base_0, { 0x84000000 }
2827
{ { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2828
& ifmt_lw_base_0, { 0x8c000000 }
2830
/* add $rt,$rs,$lo16 */
2833
{ { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2834
& ifmt_m_add, { 0x20000000 }
2836
/* addu $rt,$rs,$lo16 */
2839
{ { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2840
& ifmt_m_addu, { 0x24000000 }
2842
/* and $rt,$rs,$lo16 */
2845
{ { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2846
& ifmt_m_and, { 0x30000000 }
2851
{ { MNEM, ' ', OP (RS), 0 } },
2854
/* or $rt,$rs,$lo16 */
2857
{ { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2858
& ifmt_m_or, { 0x34000000 }
2860
/* sll $rd,$rt,$rs */
2863
{ { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
2864
& ifmt_m_sll, { 0x4 }
2866
/* slt $rt,$rs,$imm */
2869
{ { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
2870
& ifmt_m_slt, { 0x28000000 }
2872
/* sltu $rt,$rs,$imm */
2875
{ { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } },
2876
& ifmt_m_sltu, { 0x2c000000 }
2878
/* sra $rd,$rt,$rs */
2881
{ { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
2882
& ifmt_m_sra, { 0x7 }
2884
/* srl $rd,$rt,$rs */
2887
{ { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } },
2888
& ifmt_m_srl, { 0x6 }
2893
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
2894
& ifmt_not, { 0x27 }
2896
/* subi $rt,$rs,$mlo16 */
2899
{ { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
2900
& ifmt_subi, { 0x24000000 }
2902
/* sub $rt,$rs,$mlo16 */
2905
{ { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
2906
& ifmt_m_sub, { 0x24000000 }
2908
/* subu $rt,$rs,$mlo16 */
2911
{ { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } },
2912
& ifmt_m_subu, { 0x24000000 }
2917
{ { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2918
& ifmt_sb_base_0, { 0xa0000000 }
2923
{ { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2924
& ifmt_sh_base_0, { 0xa4000000 }
2929
{ { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2930
& ifmt_sw_base_0, { 0xac000000 }
2932
/* xor $rt,$rs,$lo16 */
2935
{ { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } },
2936
& ifmt_m_xor, { 0x38000000 }
2941
{ { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2942
& ifmt_ldw_base_0, { 0xc0000000 }
2947
{ { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } },
2948
& ifmt_sdw_base_0, { 0xe0000000 }
2954
& ifmt_m_avail, { 0x4c000024 }
2956
/* cam36 $rd,$rt,${cam-z} */
2959
{ { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
2960
& ifmt_m_cam36, { 0x4c000400 }
2962
/* cam72 $rd,$rt,${cam-z} */
2965
{ { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
2966
& ifmt_m_cam72, { 0x4c000440 }
2968
/* cam144 $rd,$rt,${cam-z} */
2971
{ { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
2972
& ifmt_m_cam144, { 0x4c000480 }
2974
/* cam288 $rd,$rt,${cam-z} */
2977
{ { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } },
2978
& ifmt_m_cam288, { 0x4c0004c0 }
2980
/* cm32read $rd,$rt */
2983
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
2984
& ifmt_m_cm32read, { 0x4c0000b0 }
2986
/* cm64read $rd,$rt */
2989
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
2990
& ifmt_m_cm64read, { 0x4c000090 }
2992
/* cm32mlog $rs,$rt */
2995
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
2996
& ifmt_m_cm32mlog, { 0x4c0000aa }
2998
/* cm32and $rs,$rt */
3001
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3002
& ifmt_m_cm32and, { 0x4c0000ab }
3004
/* cm32andn $rs,$rt */
3007
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3008
& ifmt_m_cm32andn, { 0x4c0000a3 }
3010
/* cm32or $rs,$rt */
3013
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3014
& ifmt_m_cm32or, { 0x4c0000aa }
3016
/* cm32ra $rs,$rt */
3019
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3020
& ifmt_m_cm32ra, { 0x4c0000b0 }
3025
{ { MNEM, ' ', OP (RT), 0 } },
3026
& ifmt_m_cm32rd, { 0x4c0000a1 }
3031
{ { MNEM, ' ', OP (RT), 0 } },
3032
& ifmt_m_cm32ri, { 0x4c0000a4 }
3034
/* cm32rs $rs,$rt */
3037
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3038
& ifmt_m_cm32rs, { 0x4c0000a0 }
3040
/* cm32sa $rs,$rt */
3043
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3044
& ifmt_m_cm32sa, { 0x4c0000b8 }
3049
{ { MNEM, ' ', OP (RT), 0 } },
3050
& ifmt_m_cm32sd, { 0x4c0000a9 }
3055
{ { MNEM, ' ', OP (RT), 0 } },
3056
& ifmt_m_cm32si, { 0x4c0000ac }
3058
/* cm32ss $rs,$rt */
3061
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3062
& ifmt_m_cm32ss, { 0x4c0000a8 }
3064
/* cm32xor $rs,$rt */
3067
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3068
& ifmt_m_cm32xor, { 0x4c0000a2 }
3073
{ { MNEM, ' ', OP (RT), 0 } },
3074
& ifmt_m_cm64clr, { 0x4c000085 }
3076
/* cm64ra $rs,$rt */
3079
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3080
& ifmt_m_cm64ra, { 0x4c000090 }
3085
{ { MNEM, ' ', OP (RT), 0 } },
3086
& ifmt_m_cm64rd, { 0x4c000081 }
3091
{ { MNEM, ' ', OP (RT), 0 } },
3092
& ifmt_m_cm64ri, { 0x4c000084 }
3094
/* cm64ria2 $rs,$rt */
3097
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3098
& ifmt_m_cm64ria2, { 0x4c000094 }
3100
/* cm64rs $rs,$rt */
3103
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3104
& ifmt_m_cm64rs, { 0x4c000080 }
3106
/* cm64sa $rs,$rt */
3109
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3110
& ifmt_m_cm64sa, { 0x4c000098 }
3115
{ { MNEM, ' ', OP (RT), 0 } },
3116
& ifmt_m_cm64sd, { 0x4c000089 }
3121
{ { MNEM, ' ', OP (RT), 0 } },
3122
& ifmt_m_cm64si, { 0x4c00008c }
3124
/* cm64sia2 $rs,$rt */
3127
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3128
& ifmt_m_cm64sia2, { 0x4c00009c }
3130
/* cm64ss $rs,$rt */
3133
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3134
& ifmt_m_cm64ss, { 0x4c000088 }
3136
/* cm128ria2 $rs,$rt */
3139
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3140
& ifmt_m_cm128ria2, { 0x4c000095 }
3142
/* cm128ria3 $rs,$rt,${cm-3z} */
3145
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
3146
& ifmt_m_cm128ria3, { 0x4c000090 }
3148
/* cm128ria4 $rs,$rt,${cm-4z} */
3151
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
3152
& ifmt_m_cm128ria4, { 0x4c0000b0 }
3154
/* cm128sia2 $rs,$rt */
3157
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3158
& ifmt_m_cm128sia2, { 0x4c00009d }
3160
/* cm128sia3 $rs,$rt,${cm-3z} */
3163
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } },
3164
& ifmt_m_cm128sia3, { 0x4c000098 }
3166
/* cm128sia4 $rs,$rt,${cm-4z} */
3169
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } },
3170
& ifmt_m_cm128sia4, { 0x4c0000b8 }
3176
& ifmt_m_cmphdr, { 0x4c00002c }
3181
{ { MNEM, ' ', OP (RD), ',', OP (RT), 0 } },
3182
& ifmt_m_dbd, { 0x4c000021 }
3187
{ { MNEM, ' ', OP (RT), 0 } },
3188
& ifmt_m2_dbd, { 0x4c000021 }
3193
{ { MNEM, ' ', OP (RS), 0 } },
3194
& ifmt_m_dpwt, { 0x4c000023 }
3199
{ { MNEM, ' ', OP (RS), 0 } },
3200
& ifmt_m_free, { 0x4c000025 }
3205
{ { MNEM, ' ', OP (RT), 0 } },
3206
& ifmt_m_lock, { 0x4c000001 }
3211
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3212
& ifmt_m_pkrla, { 0x4c000028 }
3214
/* pkrlac $rs,$rt */
3217
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3218
& ifmt_m_pkrlac, { 0x4c00002b }
3220
/* pkrlah $rs,$rt */
3223
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3224
& ifmt_m_pkrlah, { 0x4c00002a }
3226
/* pkrlau $rs,$rt */
3229
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3230
& ifmt_m_pkrlau, { 0x4c000029 }
3232
/* pkrli $rs,$rt,$bytecount */
3235
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3236
& ifmt_m_pkrli, { 0x48000000 }
3238
/* pkrlic $rs,$rt,$bytecount */
3241
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3242
& ifmt_m_pkrlic, { 0x48000300 }
3244
/* pkrlih $rs,$rt,$bytecount */
3247
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3248
& ifmt_m_pkrlih, { 0x48000200 }
3250
/* pkrliu $rs,$rt,$bytecount */
3253
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3254
& ifmt_m_pkrliu, { 0x48000100 }
3259
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3260
& ifmt_m_rba, { 0x4c000008 }
3265
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3266
& ifmt_m_rbal, { 0x4c000009 }
3271
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3272
& ifmt_m_rbar, { 0x4c00000a }
3274
/* rbi $rs,$rt,$bytecount */
3277
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3278
& ifmt_m_rbi, { 0x4c000200 }
3280
/* rbil $rs,$rt,$bytecount */
3283
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3284
& ifmt_m_rbil, { 0x4c000300 }
3286
/* rbir $rs,$rt,$bytecount */
3289
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3290
& ifmt_m_rbir, { 0x4c000100 }
3295
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3296
& ifmt_m_swwr, { 0x4c000006 }
3301
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3302
& ifmt_m_swwru, { 0x4c000007 }
3307
{ { MNEM, ' ', OP (RS), 0 } },
3308
& ifmt_m_tstod, { 0x4c000027 }
3313
{ { MNEM, ' ', OP (RT), 0 } },
3314
& ifmt_m_unlk, { 0x4c000003 }
3319
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3320
& ifmt_m_wba, { 0x4c000010 }
3325
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3326
& ifmt_m_wbac, { 0x4c000012 }
3331
{ { MNEM, ' ', OP (RS), ',', OP (RT), 0 } },
3332
& ifmt_m_wbau, { 0x4c000011 }
3334
/* wbi $rs,$rt,$bytecount */
3337
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3338
& ifmt_m_wbi, { 0x4c000600 }
3340
/* wbic $rs,$rt,$bytecount */
3343
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3344
& ifmt_m_wbic, { 0x4c000500 }
3346
/* wbiu $rs,$rt,$bytecount */
3349
{ { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } },
3350
& ifmt_m_wbiu, { 0x4c000700 }
3359
#ifndef CGEN_ASM_HASH_P
3360
#define CGEN_ASM_HASH_P(insn) 1
3363
#ifndef CGEN_DIS_HASH_P
3364
#define CGEN_DIS_HASH_P(insn) 1
3367
/* Return non-zero if INSN is to be added to the hash table.
3368
Targets are free to override CGEN_{ASM,DIS}_HASH_P in the .opc file. */
3371
asm_hash_insn_p (insn)
3372
const CGEN_INSN *insn ATTRIBUTE_UNUSED;
3374
return CGEN_ASM_HASH_P (insn);
3378
dis_hash_insn_p (insn)
3379
const CGEN_INSN *insn;
3381
/* If building the hash table and the NO-DIS attribute is present,
3383
if (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_NO_DIS))
3385
return CGEN_DIS_HASH_P (insn);
3388
#ifndef CGEN_ASM_HASH
3389
#define CGEN_ASM_HASH_SIZE 127
3390
#ifdef CGEN_MNEMONIC_OPERANDS
3391
#define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE)
3393
#define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE) /*FIXME*/
3397
/* It doesn't make much sense to provide a default here,
3398
but while this is under development we do.
3399
BUFFER is a pointer to the bytes of the insn, target order.
3400
VALUE is the first base_insn_bitsize bits as an int in host order. */
3402
#ifndef CGEN_DIS_HASH
3403
#define CGEN_DIS_HASH_SIZE 256
3404
#define CGEN_DIS_HASH(buf, value) (*(unsigned char *) (buf))
3407
/* The result is the hash value of the insn.
3408
Targets are free to override CGEN_{ASM,DIS}_HASH in the .opc file. */
3411
asm_hash_insn (mnem)
3414
return CGEN_ASM_HASH (mnem);
3417
/* BUF is a pointer to the bytes of the insn, target order.
3418
VALUE is the first base_insn_bitsize bits as an int in host order. */
3421
dis_hash_insn (buf, value)
3422
const char * buf ATTRIBUTE_UNUSED;
3423
CGEN_INSN_INT value ATTRIBUTE_UNUSED;
3425
return CGEN_DIS_HASH (buf, value);
3428
static void set_fields_bitsize PARAMS ((CGEN_FIELDS *, int));
3430
/* Set the recorded length of the insn in the CGEN_FIELDS struct. */
3433
set_fields_bitsize (fields, size)
3434
CGEN_FIELDS *fields;
3437
CGEN_FIELDS_BITSIZE (fields) = size;
3440
/* Function to call before using the operand instance table.
3441
This plugs the opcode entries and macro instructions into the cpu table. */
3444
iq2000_cgen_init_opcode_table (cd)
3448
int num_macros = (sizeof (iq2000_cgen_macro_insn_table) /
3449
sizeof (iq2000_cgen_macro_insn_table[0]));
3450
const CGEN_IBASE *ib = & iq2000_cgen_macro_insn_table[0];
3451
const CGEN_OPCODE *oc = & iq2000_cgen_macro_insn_opcode_table[0];
3452
CGEN_INSN *insns = (CGEN_INSN *) xmalloc (num_macros * sizeof (CGEN_INSN));
3453
memset (insns, 0, num_macros * sizeof (CGEN_INSN));
3454
for (i = 0; i < num_macros; ++i)
3456
insns[i].base = &ib[i];
3457
insns[i].opcode = &oc[i];
3458
iq2000_cgen_build_insn_regex (& insns[i]);
3460
cd->macro_insn_table.init_entries = insns;
3461
cd->macro_insn_table.entry_size = sizeof (CGEN_IBASE);
3462
cd->macro_insn_table.num_init_entries = num_macros;
3464
oc = & iq2000_cgen_insn_opcode_table[0];
3465
insns = (CGEN_INSN *) cd->insn_table.init_entries;
3466
for (i = 0; i < MAX_INSNS; ++i)
3468
insns[i].opcode = &oc[i];
3469
iq2000_cgen_build_insn_regex (& insns[i]);
3472
cd->sizeof_fields = sizeof (CGEN_FIELDS);
3473
cd->set_fields_bitsize = set_fields_bitsize;
3475
cd->asm_hash_p = asm_hash_insn_p;
3476
cd->asm_hash = asm_hash_insn;
3477
cd->asm_hash_size = CGEN_ASM_HASH_SIZE;
3479
cd->dis_hash_p = dis_hash_insn_p;
3480
cd->dis_hash = dis_hash_insn;
3481
cd->dis_hash_size = CGEN_DIS_HASH_SIZE;