~ubuntu-branches/ubuntu/hoary/binutils/hoary

« back to all changes in this revision

Viewing changes to opcodes/iq2000-opc.c

  • Committer: Bazaar Package Importer
  • Author(s): James Troup
  • Date: 2004-05-19 10:35:44 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20040519103544-17h3o6e8pwndydrg
Tags: 2.14.90.0.7-8
debian/rules: don't use gcc-2.95 on m68k.  Thanks to Adam Conrad for
pointing this out.

Show diffs side-by-side

added added

removed removed

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