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

Subversion Repositories open8_urisc

[/] [open8_urisc/] [trunk/] [gnu/] [binutils/] [opcodes/] [iq2000-opc.c] - Blame information for rev 147

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

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

powered by: WebSVN 2.1.0

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