OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gdb-6.8/] [opcodes/] [iq2000-opc.c] - Blame information for rev 258

Go to most recent revision | Details | Compare with Previous | View Log

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

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.