Coverage Report

Created: 2025-06-24 06:45

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