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