]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - sim/cris/cris-desc.c
* cris/cpuv10.h, cris/cpuv32.h, cris/cris-desc.c, cris/cris-opc.h,
[thirdparty/binutils-gdb.git] / sim / cris / cris-desc.c
CommitLineData
f6bcefef
HPN
1/* CPU data for cris.
2
3THIS FILE IS MACHINE GENERATED WITH CGEN.
4
cce0efb5 5Copyright 1996-2005 Free Software Foundation, Inc.
f6bcefef
HPN
6
7This file is part of the GNU Binutils and/or GDB, the GNU debugger.
8
9This program is free software; you can redistribute it and/or modify
10it under the terms of the GNU General Public License as published by
11the Free Software Foundation; either version 2, or (at your option)
12any later version.
13
14This program is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17GNU General Public License for more details.
18
19You should have received a copy of the GNU General Public License along
20with this program; if not, write to the Free Software Foundation, Inc.,
cf2bf87e 2151 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
f6bcefef
HPN
22
23*/
24
25#include "sysdep.h"
26#include <stdio.h>
27#include <stdarg.h>
28#include "ansidecl.h"
29#include "bfd.h"
30#include "symcat.h"
31#include "cris-desc.h"
32#include "cris-opc.h"
33#include "opintl.h"
34#include "libiberty.h"
35#include "xregex.h"
36
37/* Attributes. */
38
39static const CGEN_ATTR_ENTRY bool_attr[] =
40{
41 { "#f", 0 },
42 { "#t", 1 },
43 { 0, 0 }
44};
45
cce0efb5 46static const CGEN_ATTR_ENTRY MACH_attr[] ATTRIBUTE_UNUSED =
f6bcefef
HPN
47{
48 { "base", MACH_BASE },
49 { "crisv0", MACH_CRISV0 },
50 { "crisv3", MACH_CRISV3 },
51 { "crisv8", MACH_CRISV8 },
52 { "crisv10", MACH_CRISV10 },
53 { "crisv32", MACH_CRISV32 },
54 { "max", MACH_MAX },
55 { 0, 0 }
56};
57
cce0efb5 58static const CGEN_ATTR_ENTRY ISA_attr[] ATTRIBUTE_UNUSED =
f6bcefef
HPN
59{
60 { "cris", ISA_CRIS },
61 { "max", ISA_MAX },
62 { 0, 0 }
63};
64
65const CGEN_ATTR_TABLE cris_cgen_ifield_attr_table[] =
66{
67 { "MACH", & MACH_attr[0], & MACH_attr[0] },
68 { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
69 { "PCREL-ADDR", &bool_attr[0], &bool_attr[0] },
70 { "ABS-ADDR", &bool_attr[0], &bool_attr[0] },
71 { "RESERVED", &bool_attr[0], &bool_attr[0] },
72 { "SIGN-OPT", &bool_attr[0], &bool_attr[0] },
73 { "SIGNED", &bool_attr[0], &bool_attr[0] },
74 { 0, 0, 0 }
75};
76
77const CGEN_ATTR_TABLE cris_cgen_hardware_attr_table[] =
78{
79 { "MACH", & MACH_attr[0], & MACH_attr[0] },
80 { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
81 { "CACHE-ADDR", &bool_attr[0], &bool_attr[0] },
82 { "PC", &bool_attr[0], &bool_attr[0] },
83 { "PROFILE", &bool_attr[0], &bool_attr[0] },
84 { 0, 0, 0 }
85};
86
87const CGEN_ATTR_TABLE cris_cgen_operand_attr_table[] =
88{
89 { "MACH", & MACH_attr[0], & MACH_attr[0] },
90 { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
91 { "PCREL-ADDR", &bool_attr[0], &bool_attr[0] },
92 { "ABS-ADDR", &bool_attr[0], &bool_attr[0] },
93 { "SIGN-OPT", &bool_attr[0], &bool_attr[0] },
94 { "SIGNED", &bool_attr[0], &bool_attr[0] },
95 { "NEGATIVE", &bool_attr[0], &bool_attr[0] },
96 { "RELAX", &bool_attr[0], &bool_attr[0] },
97 { "SEM-ONLY", &bool_attr[0], &bool_attr[0] },
98 { 0, 0, 0 }
99};
100
101const CGEN_ATTR_TABLE cris_cgen_insn_attr_table[] =
102{
103 { "MACH", & MACH_attr[0], & MACH_attr[0] },
104 { "ALIAS", &bool_attr[0], &bool_attr[0] },
105 { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
106 { "UNCOND-CTI", &bool_attr[0], &bool_attr[0] },
107 { "COND-CTI", &bool_attr[0], &bool_attr[0] },
108 { "SKIP-CTI", &bool_attr[0], &bool_attr[0] },
109 { "DELAY-SLOT", &bool_attr[0], &bool_attr[0] },
110 { "RELAXABLE", &bool_attr[0], &bool_attr[0] },
111 { "RELAXED", &bool_attr[0], &bool_attr[0] },
112 { "NO-DIS", &bool_attr[0], &bool_attr[0] },
113 { "PBB", &bool_attr[0], &bool_attr[0] },
114 { 0, 0, 0 }
115};
116
117/* Instruction set variants. */
118
119static const CGEN_ISA cris_cgen_isa_table[] = {
120 { "cris", 16, 16, 16, 48 },
121 { 0, 0, 0, 0, 0 }
122};
123
124/* Machine variants. */
125
126static const CGEN_MACH cris_cgen_mach_table[] = {
127 { "crisv0", "cris", MACH_CRISV0, 0 },
128 { "crisv3", "cris", MACH_CRISV3, 0 },
129 { "crisv8", "cris", MACH_CRISV8, 0 },
130 { "crisv10", "cris", MACH_CRISV10, 0 },
131 { "crisv32", "crisv32", MACH_CRISV32, 0 },
132 { 0, 0, 0, 0 }
133};
134
135static CGEN_KEYWORD_ENTRY cris_cgen_opval_gr_names_pcreg_entries[] =
136{
cf2bf87e
HPN
137 { "PC", 15, {0, {{{0, 0}}}}, 0, 0 },
138 { "SP", 14, {0, {{{0, 0}}}}, 0, 0 },
139 { "R0", 0, {0, {{{0, 0}}}}, 0, 0 },
140 { "R1", 1, {0, {{{0, 0}}}}, 0, 0 },
141 { "R2", 2, {0, {{{0, 0}}}}, 0, 0 },
142 { "R3", 3, {0, {{{0, 0}}}}, 0, 0 },
143 { "R4", 4, {0, {{{0, 0}}}}, 0, 0 },
144 { "R5", 5, {0, {{{0, 0}}}}, 0, 0 },
145 { "R6", 6, {0, {{{0, 0}}}}, 0, 0 },
146 { "R7", 7, {0, {{{0, 0}}}}, 0, 0 },
147 { "R8", 8, {0, {{{0, 0}}}}, 0, 0 },
148 { "R9", 9, {0, {{{0, 0}}}}, 0, 0 },
149 { "R10", 10, {0, {{{0, 0}}}}, 0, 0 },
150 { "R11", 11, {0, {{{0, 0}}}}, 0, 0 },
151 { "R12", 12, {0, {{{0, 0}}}}, 0, 0 },
152 { "R13", 13, {0, {{{0, 0}}}}, 0, 0 },
153 { "R14", 14, {0, {{{0, 0}}}}, 0, 0 }
f6bcefef
HPN
154};
155
156CGEN_KEYWORD cris_cgen_opval_gr_names_pcreg =
157{
158 & cris_cgen_opval_gr_names_pcreg_entries[0],
159 17,
160 0, 0, 0, 0, ""
161};
162
163static CGEN_KEYWORD_ENTRY cris_cgen_opval_gr_names_acr_entries[] =
164{
cf2bf87e
HPN
165 { "ACR", 15, {0, {{{0, 0}}}}, 0, 0 },
166 { "SP", 14, {0, {{{0, 0}}}}, 0, 0 },
167 { "R0", 0, {0, {{{0, 0}}}}, 0, 0 },
168 { "R1", 1, {0, {{{0, 0}}}}, 0, 0 },
169 { "R2", 2, {0, {{{0, 0}}}}, 0, 0 },
170 { "R3", 3, {0, {{{0, 0}}}}, 0, 0 },
171 { "R4", 4, {0, {{{0, 0}}}}, 0, 0 },
172 { "R5", 5, {0, {{{0, 0}}}}, 0, 0 },
173 { "R6", 6, {0, {{{0, 0}}}}, 0, 0 },
174 { "R7", 7, {0, {{{0, 0}}}}, 0, 0 },
175 { "R8", 8, {0, {{{0, 0}}}}, 0, 0 },
176 { "R9", 9, {0, {{{0, 0}}}}, 0, 0 },
177 { "R10", 10, {0, {{{0, 0}}}}, 0, 0 },
178 { "R11", 11, {0, {{{0, 0}}}}, 0, 0 },
179 { "R12", 12, {0, {{{0, 0}}}}, 0, 0 },
180 { "R13", 13, {0, {{{0, 0}}}}, 0, 0 },
181 { "R14", 14, {0, {{{0, 0}}}}, 0, 0 }
f6bcefef
HPN
182};
183
184CGEN_KEYWORD cris_cgen_opval_gr_names_acr =
185{
186 & cris_cgen_opval_gr_names_acr_entries[0],
187 17,
188 0, 0, 0, 0, ""
189};
190
191static CGEN_KEYWORD_ENTRY cris_cgen_opval_gr_names_v32_entries[] =
192{
cf2bf87e
HPN
193 { "ACR", 15, {0, {{{0, 0}}}}, 0, 0 },
194 { "SP", 14, {0, {{{0, 0}}}}, 0, 0 },
195 { "R0", 0, {0, {{{0, 0}}}}, 0, 0 },
196 { "R1", 1, {0, {{{0, 0}}}}, 0, 0 },
197 { "R2", 2, {0, {{{0, 0}}}}, 0, 0 },
198 { "R3", 3, {0, {{{0, 0}}}}, 0, 0 },
199 { "R4", 4, {0, {{{0, 0}}}}, 0, 0 },
200 { "R5", 5, {0, {{{0, 0}}}}, 0, 0 },
201 { "R6", 6, {0, {{{0, 0}}}}, 0, 0 },
202 { "R7", 7, {0, {{{0, 0}}}}, 0, 0 },
203 { "R8", 8, {0, {{{0, 0}}}}, 0, 0 },
204 { "R9", 9, {0, {{{0, 0}}}}, 0, 0 },
205 { "R10", 10, {0, {{{0, 0}}}}, 0, 0 },
206 { "R11", 11, {0, {{{0, 0}}}}, 0, 0 },
207 { "R12", 12, {0, {{{0, 0}}}}, 0, 0 },
208 { "R13", 13, {0, {{{0, 0}}}}, 0, 0 },
209 { "R14", 14, {0, {{{0, 0}}}}, 0, 0 }
f6bcefef
HPN
210};
211
212CGEN_KEYWORD cris_cgen_opval_gr_names_v32 =
213{
214 & cris_cgen_opval_gr_names_v32_entries[0],
215 17,
216 0, 0, 0, 0, ""
217};
218
219static CGEN_KEYWORD_ENTRY cris_cgen_opval_p_names_v10_entries[] =
220{
cf2bf87e
HPN
221 { "CCR", 5, {0, {{{0, 0}}}}, 0, 0 },
222 { "MOF", 7, {0, {{{0, 0}}}}, 0, 0 },
223 { "IBR", 9, {0, {{{0, 0}}}}, 0, 0 },
224 { "IRP", 10, {0, {{{0, 0}}}}, 0, 0 },
225 { "BAR", 12, {0, {{{0, 0}}}}, 0, 0 },
226 { "DCCR", 13, {0, {{{0, 0}}}}, 0, 0 },
227 { "BRP", 14, {0, {{{0, 0}}}}, 0, 0 },
228 { "USP", 15, {0, {{{0, 0}}}}, 0, 0 },
229 { "VR", 1, {0, {{{0, 0}}}}, 0, 0 },
230 { "SRP", 11, {0, {{{0, 0}}}}, 0, 0 },
231 { "P0", 0, {0, {{{0, 0}}}}, 0, 0 },
232 { "P1", 1, {0, {{{0, 0}}}}, 0, 0 },
233 { "P2", 2, {0, {{{0, 0}}}}, 0, 0 },
234 { "P3", 3, {0, {{{0, 0}}}}, 0, 0 },
235 { "P4", 4, {0, {{{0, 0}}}}, 0, 0 },
236 { "P5", 5, {0, {{{0, 0}}}}, 0, 0 },
237 { "P6", 6, {0, {{{0, 0}}}}, 0, 0 },
238 { "P7", 7, {0, {{{0, 0}}}}, 0, 0 },
239 { "P8", 8, {0, {{{0, 0}}}}, 0, 0 },
240 { "P9", 9, {0, {{{0, 0}}}}, 0, 0 },
241 { "P10", 10, {0, {{{0, 0}}}}, 0, 0 },
242 { "P11", 11, {0, {{{0, 0}}}}, 0, 0 },
243 { "P12", 12, {0, {{{0, 0}}}}, 0, 0 },
244 { "P13", 13, {0, {{{0, 0}}}}, 0, 0 },
245 { "P14", 14, {0, {{{0, 0}}}}, 0, 0 }
f6bcefef
HPN
246};
247
248CGEN_KEYWORD cris_cgen_opval_p_names_v10 =
249{
250 & cris_cgen_opval_p_names_v10_entries[0],
251 25,
252 0, 0, 0, 0, ""
253};
254
255static CGEN_KEYWORD_ENTRY cris_cgen_opval_p_names_v32_entries[] =
256{
cf2bf87e
HPN
257 { "BZ", 0, {0, {{{0, 0}}}}, 0, 0 },
258 { "PID", 2, {0, {{{0, 0}}}}, 0, 0 },
259 { "SRS", 3, {0, {{{0, 0}}}}, 0, 0 },
260 { "WZ", 4, {0, {{{0, 0}}}}, 0, 0 },
261 { "EXS", 5, {0, {{{0, 0}}}}, 0, 0 },
262 { "EDA", 6, {0, {{{0, 0}}}}, 0, 0 },
263 { "MOF", 7, {0, {{{0, 0}}}}, 0, 0 },
264 { "DZ", 8, {0, {{{0, 0}}}}, 0, 0 },
265 { "EBP", 9, {0, {{{0, 0}}}}, 0, 0 },
266 { "ERP", 10, {0, {{{0, 0}}}}, 0, 0 },
267 { "NRP", 12, {0, {{{0, 0}}}}, 0, 0 },
268 { "CCS", 13, {0, {{{0, 0}}}}, 0, 0 },
269 { "USP", 14, {0, {{{0, 0}}}}, 0, 0 },
270 { "SPC", 15, {0, {{{0, 0}}}}, 0, 0 },
271 { "VR", 1, {0, {{{0, 0}}}}, 0, 0 },
272 { "SRP", 11, {0, {{{0, 0}}}}, 0, 0 },
273 { "P0", 0, {0, {{{0, 0}}}}, 0, 0 },
274 { "P1", 1, {0, {{{0, 0}}}}, 0, 0 },
275 { "P2", 2, {0, {{{0, 0}}}}, 0, 0 },
276 { "P3", 3, {0, {{{0, 0}}}}, 0, 0 },
277 { "P4", 4, {0, {{{0, 0}}}}, 0, 0 },
278 { "P5", 5, {0, {{{0, 0}}}}, 0, 0 },
279 { "P6", 6, {0, {{{0, 0}}}}, 0, 0 },
280 { "P7", 7, {0, {{{0, 0}}}}, 0, 0 },
281 { "P8", 8, {0, {{{0, 0}}}}, 0, 0 },
282 { "P9", 9, {0, {{{0, 0}}}}, 0, 0 },
283 { "P10", 10, {0, {{{0, 0}}}}, 0, 0 },
284 { "P11", 11, {0, {{{0, 0}}}}, 0, 0 },
285 { "P12", 12, {0, {{{0, 0}}}}, 0, 0 },
286 { "P13", 13, {0, {{{0, 0}}}}, 0, 0 },
287 { "P14", 14, {0, {{{0, 0}}}}, 0, 0 }
f6bcefef
HPN
288};
289
290CGEN_KEYWORD cris_cgen_opval_p_names_v32 =
291{
292 & cris_cgen_opval_p_names_v32_entries[0],
293 31,
294 0, 0, 0, 0, ""
295};
296
297static CGEN_KEYWORD_ENTRY cris_cgen_opval_p_names_v32_x_entries[] =
298{
cf2bf87e
HPN
299 { "BZ", 0, {0, {{{0, 0}}}}, 0, 0 },
300 { "PID", 2, {0, {{{0, 0}}}}, 0, 0 },
301 { "SRS", 3, {0, {{{0, 0}}}}, 0, 0 },
302 { "WZ", 4, {0, {{{0, 0}}}}, 0, 0 },
303 { "EXS", 5, {0, {{{0, 0}}}}, 0, 0 },
304 { "EDA", 6, {0, {{{0, 0}}}}, 0, 0 },
305 { "MOF", 7, {0, {{{0, 0}}}}, 0, 0 },
306 { "DZ", 8, {0, {{{0, 0}}}}, 0, 0 },
307 { "EBP", 9, {0, {{{0, 0}}}}, 0, 0 },
308 { "ERP", 10, {0, {{{0, 0}}}}, 0, 0 },
309 { "NRP", 12, {0, {{{0, 0}}}}, 0, 0 },
310 { "CCS", 13, {0, {{{0, 0}}}}, 0, 0 },
311 { "USP", 14, {0, {{{0, 0}}}}, 0, 0 },
312 { "SPC", 15, {0, {{{0, 0}}}}, 0, 0 },
313 { "VR", 1, {0, {{{0, 0}}}}, 0, 0 },
314 { "SRP", 11, {0, {{{0, 0}}}}, 0, 0 },
315 { "P0", 0, {0, {{{0, 0}}}}, 0, 0 },
316 { "P1", 1, {0, {{{0, 0}}}}, 0, 0 },
317 { "P2", 2, {0, {{{0, 0}}}}, 0, 0 },
318 { "P3", 3, {0, {{{0, 0}}}}, 0, 0 },
319 { "P4", 4, {0, {{{0, 0}}}}, 0, 0 },
320 { "P5", 5, {0, {{{0, 0}}}}, 0, 0 },
321 { "P6", 6, {0, {{{0, 0}}}}, 0, 0 },
322 { "P7", 7, {0, {{{0, 0}}}}, 0, 0 },
323 { "P8", 8, {0, {{{0, 0}}}}, 0, 0 },
324 { "P9", 9, {0, {{{0, 0}}}}, 0, 0 },
325 { "P10", 10, {0, {{{0, 0}}}}, 0, 0 },
326 { "P11", 11, {0, {{{0, 0}}}}, 0, 0 },
327 { "P12", 12, {0, {{{0, 0}}}}, 0, 0 },
328 { "P13", 13, {0, {{{0, 0}}}}, 0, 0 },
329 { "P14", 14, {0, {{{0, 0}}}}, 0, 0 }
f6bcefef
HPN
330};
331
332CGEN_KEYWORD cris_cgen_opval_p_names_v32_x =
333{
334 & cris_cgen_opval_p_names_v32_x_entries[0],
335 31,
336 0, 0, 0, 0, ""
337};
338
339static CGEN_KEYWORD_ENTRY cris_cgen_opval_h_inc_entries[] =
340{
cf2bf87e
HPN
341 { "", 0, {0, {{{0, 0}}}}, 0, 0 },
342 { "+", 1, {0, {{{0, 0}}}}, 0, 0 }
f6bcefef
HPN
343};
344
345CGEN_KEYWORD cris_cgen_opval_h_inc =
346{
347 & cris_cgen_opval_h_inc_entries[0],
348 2,
349 0, 0, 0, 0, ""
350};
351
352static CGEN_KEYWORD_ENTRY cris_cgen_opval_h_ccode_entries[] =
353{
cf2bf87e
HPN
354 { "cc", 0, {0, {{{0, 0}}}}, 0, 0 },
355 { "cs", 1, {0, {{{0, 0}}}}, 0, 0 },
356 { "ne", 2, {0, {{{0, 0}}}}, 0, 0 },
357 { "eq", 3, {0, {{{0, 0}}}}, 0, 0 },
358 { "vc", 4, {0, {{{0, 0}}}}, 0, 0 },
359 { "vs", 5, {0, {{{0, 0}}}}, 0, 0 },
360 { "pl", 6, {0, {{{0, 0}}}}, 0, 0 },
361 { "mi", 7, {0, {{{0, 0}}}}, 0, 0 },
362 { "ls", 8, {0, {{{0, 0}}}}, 0, 0 },
363 { "hi", 9, {0, {{{0, 0}}}}, 0, 0 },
364 { "ge", 10, {0, {{{0, 0}}}}, 0, 0 },
365 { "lt", 11, {0, {{{0, 0}}}}, 0, 0 },
366 { "gt", 12, {0, {{{0, 0}}}}, 0, 0 },
367 { "le", 13, {0, {{{0, 0}}}}, 0, 0 },
368 { "a", 14, {0, {{{0, 0}}}}, 0, 0 },
369 { "wf", 15, {0, {{{0, 0}}}}, 0, 0 }
f6bcefef
HPN
370};
371
372CGEN_KEYWORD cris_cgen_opval_h_ccode =
373{
374 & cris_cgen_opval_h_ccode_entries[0],
375 16,
376 0, 0, 0, 0, ""
377};
378
379static CGEN_KEYWORD_ENTRY cris_cgen_opval_h_swap_entries[] =
380{
cf2bf87e
HPN
381 { " ", 0, {0, {{{0, 0}}}}, 0, 0 },
382 { "r", 1, {0, {{{0, 0}}}}, 0, 0 },
383 { "b", 2, {0, {{{0, 0}}}}, 0, 0 },
384 { "br", 3, {0, {{{0, 0}}}}, 0, 0 },
385 { "w", 4, {0, {{{0, 0}}}}, 0, 0 },
386 { "wr", 5, {0, {{{0, 0}}}}, 0, 0 },
387 { "wb", 6, {0, {{{0, 0}}}}, 0, 0 },
388 { "wbr", 7, {0, {{{0, 0}}}}, 0, 0 },
389 { "n", 8, {0, {{{0, 0}}}}, 0, 0 },
390 { "nr", 9, {0, {{{0, 0}}}}, 0, 0 },
391 { "nb", 10, {0, {{{0, 0}}}}, 0, 0 },
392 { "nbr", 11, {0, {{{0, 0}}}}, 0, 0 },
393 { "nw", 12, {0, {{{0, 0}}}}, 0, 0 },
394 { "nwr", 13, {0, {{{0, 0}}}}, 0, 0 },
395 { "nwb", 14, {0, {{{0, 0}}}}, 0, 0 },
396 { "nwbr", 15, {0, {{{0, 0}}}}, 0, 0 }
f6bcefef
HPN
397};
398
399CGEN_KEYWORD cris_cgen_opval_h_swap =
400{
401 & cris_cgen_opval_h_swap_entries[0],
402 16,
403 0, 0, 0, 0, ""
404};
405
406static CGEN_KEYWORD_ENTRY cris_cgen_opval_h_flagbits_entries[] =
407{
cf2bf87e
HPN
408 { "_", 0, {0, {{{0, 0}}}}, 0, 0 },
409 { "c", 1, {0, {{{0, 0}}}}, 0, 0 },
410 { "v", 2, {0, {{{0, 0}}}}, 0, 0 },
411 { "cv", 3, {0, {{{0, 0}}}}, 0, 0 },
412 { "z", 4, {0, {{{0, 0}}}}, 0, 0 },
413 { "cz", 5, {0, {{{0, 0}}}}, 0, 0 },
414 { "vz", 6, {0, {{{0, 0}}}}, 0, 0 },
415 { "cvz", 7, {0, {{{0, 0}}}}, 0, 0 },
416 { "n", 8, {0, {{{0, 0}}}}, 0, 0 },
417 { "cn", 9, {0, {{{0, 0}}}}, 0, 0 },
418 { "vn", 10, {0, {{{0, 0}}}}, 0, 0 },
419 { "cvn", 11, {0, {{{0, 0}}}}, 0, 0 },
420 { "zn", 12, {0, {{{0, 0}}}}, 0, 0 },
421 { "czn", 13, {0, {{{0, 0}}}}, 0, 0 },
422 { "vzn", 14, {0, {{{0, 0}}}}, 0, 0 },
423 { "cvzn", 15, {0, {{{0, 0}}}}, 0, 0 },
424 { "x", 16, {0, {{{0, 0}}}}, 0, 0 },
425 { "cx", 17, {0, {{{0, 0}}}}, 0, 0 },
426 { "vx", 18, {0, {{{0, 0}}}}, 0, 0 },
427 { "cvx", 19, {0, {{{0, 0}}}}, 0, 0 },
428 { "zx", 20, {0, {{{0, 0}}}}, 0, 0 },
429 { "czx", 21, {0, {{{0, 0}}}}, 0, 0 },
430 { "vzx", 22, {0, {{{0, 0}}}}, 0, 0 },
431 { "cvzx", 23, {0, {{{0, 0}}}}, 0, 0 },
432 { "nx", 24, {0, {{{0, 0}}}}, 0, 0 },
433 { "cnx", 25, {0, {{{0, 0}}}}, 0, 0 },
434 { "vnx", 26, {0, {{{0, 0}}}}, 0, 0 },
435 { "cvnx", 27, {0, {{{0, 0}}}}, 0, 0 },
436 { "znx", 28, {0, {{{0, 0}}}}, 0, 0 },
437 { "cznx", 29, {0, {{{0, 0}}}}, 0, 0 },
438 { "vznx", 30, {0, {{{0, 0}}}}, 0, 0 },
439 { "cvznx", 31, {0, {{{0, 0}}}}, 0, 0 },
440 { "i", 32, {0, {{{0, 0}}}}, 0, 0 },
441 { "ci", 33, {0, {{{0, 0}}}}, 0, 0 },
442 { "vi", 34, {0, {{{0, 0}}}}, 0, 0 },
443 { "cvi", 35, {0, {{{0, 0}}}}, 0, 0 },
444 { "zi", 36, {0, {{{0, 0}}}}, 0, 0 },
445 { "czi", 37, {0, {{{0, 0}}}}, 0, 0 },
446 { "vzi", 38, {0, {{{0, 0}}}}, 0, 0 },
447 { "cvzi", 39, {0, {{{0, 0}}}}, 0, 0 },
448 { "ni", 40, {0, {{{0, 0}}}}, 0, 0 },
449 { "cni", 41, {0, {{{0, 0}}}}, 0, 0 },
450 { "vni", 42, {0, {{{0, 0}}}}, 0, 0 },
451 { "cvni", 43, {0, {{{0, 0}}}}, 0, 0 },
452 { "zni", 44, {0, {{{0, 0}}}}, 0, 0 },
453 { "czni", 45, {0, {{{0, 0}}}}, 0, 0 },
454 { "vzni", 46, {0, {{{0, 0}}}}, 0, 0 },
455 { "cvzni", 47, {0, {{{0, 0}}}}, 0, 0 },
456 { "xi", 48, {0, {{{0, 0}}}}, 0, 0 },
457 { "cxi", 49, {0, {{{0, 0}}}}, 0, 0 },
458 { "vxi", 50, {0, {{{0, 0}}}}, 0, 0 },
459 { "cvxi", 51, {0, {{{0, 0}}}}, 0, 0 },
460 { "zxi", 52, {0, {{{0, 0}}}}, 0, 0 },
461 { "czxi", 53, {0, {{{0, 0}}}}, 0, 0 },
462 { "vzxi", 54, {0, {{{0, 0}}}}, 0, 0 },
463 { "cvzxi", 55, {0, {{{0, 0}}}}, 0, 0 },
464 { "nxi", 56, {0, {{{0, 0}}}}, 0, 0 },
465 { "cnxi", 57, {0, {{{0, 0}}}}, 0, 0 },
466 { "vnxi", 58, {0, {{{0, 0}}}}, 0, 0 },
467 { "cvnxi", 59, {0, {{{0, 0}}}}, 0, 0 },
468 { "znxi", 60, {0, {{{0, 0}}}}, 0, 0 },
469 { "cznxi", 61, {0, {{{0, 0}}}}, 0, 0 },
470 { "vznxi", 62, {0, {{{0, 0}}}}, 0, 0 },
471 { "cvznxi", 63, {0, {{{0, 0}}}}, 0, 0 },
472 { "u", 64, {0, {{{0, 0}}}}, 0, 0 },
473 { "cu", 65, {0, {{{0, 0}}}}, 0, 0 },
474 { "vu", 66, {0, {{{0, 0}}}}, 0, 0 },
475 { "cvu", 67, {0, {{{0, 0}}}}, 0, 0 },
476 { "zu", 68, {0, {{{0, 0}}}}, 0, 0 },
477 { "czu", 69, {0, {{{0, 0}}}}, 0, 0 },
478 { "vzu", 70, {0, {{{0, 0}}}}, 0, 0 },
479 { "cvzu", 71, {0, {{{0, 0}}}}, 0, 0 },
480 { "nu", 72, {0, {{{0, 0}}}}, 0, 0 },
481 { "cnu", 73, {0, {{{0, 0}}}}, 0, 0 },
482 { "vnu", 74, {0, {{{0, 0}}}}, 0, 0 },
483 { "cvnu", 75, {0, {{{0, 0}}}}, 0, 0 },
484 { "znu", 76, {0, {{{0, 0}}}}, 0, 0 },
485 { "cznu", 77, {0, {{{0, 0}}}}, 0, 0 },
486 { "vznu", 78, {0, {{{0, 0}}}}, 0, 0 },
487 { "cvznu", 79, {0, {{{0, 0}}}}, 0, 0 },
488 { "xu", 80, {0, {{{0, 0}}}}, 0, 0 },
489 { "cxu", 81, {0, {{{0, 0}}}}, 0, 0 },
490 { "vxu", 82, {0, {{{0, 0}}}}, 0, 0 },
491 { "cvxu", 83, {0, {{{0, 0}}}}, 0, 0 },
492 { "zxu", 84, {0, {{{0, 0}}}}, 0, 0 },
493 { "czxu", 85, {0, {{{0, 0}}}}, 0, 0 },
494 { "vzxu", 86, {0, {{{0, 0}}}}, 0, 0 },
495 { "cvzxu", 87, {0, {{{0, 0}}}}, 0, 0 },
496 { "nxu", 88, {0, {{{0, 0}}}}, 0, 0 },
497 { "cnxu", 89, {0, {{{0, 0}}}}, 0, 0 },
498 { "vnxu", 90, {0, {{{0, 0}}}}, 0, 0 },
499 { "cvnxu", 91, {0, {{{0, 0}}}}, 0, 0 },
500 { "znxu", 92, {0, {{{0, 0}}}}, 0, 0 },
501 { "cznxu", 93, {0, {{{0, 0}}}}, 0, 0 },
502 { "vznxu", 94, {0, {{{0, 0}}}}, 0, 0 },
503 { "cvznxu", 95, {0, {{{0, 0}}}}, 0, 0 },
504 { "iu", 96, {0, {{{0, 0}}}}, 0, 0 },
505 { "ciu", 97, {0, {{{0, 0}}}}, 0, 0 },
506 { "viu", 98, {0, {{{0, 0}}}}, 0, 0 },
507 { "cviu", 99, {0, {{{0, 0}}}}, 0, 0 },
508 { "ziu", 100, {0, {{{0, 0}}}}, 0, 0 },
509 { "cziu", 101, {0, {{{0, 0}}}}, 0, 0 },
510 { "vziu", 102, {0, {{{0, 0}}}}, 0, 0 },
511 { "cvziu", 103, {0, {{{0, 0}}}}, 0, 0 },
512 { "niu", 104, {0, {{{0, 0}}}}, 0, 0 },
513 { "cniu", 105, {0, {{{0, 0}}}}, 0, 0 },
514 { "vniu", 106, {0, {{{0, 0}}}}, 0, 0 },
515 { "cvniu", 107, {0, {{{0, 0}}}}, 0, 0 },
516 { "zniu", 108, {0, {{{0, 0}}}}, 0, 0 },
517 { "czniu", 109, {0, {{{0, 0}}}}, 0, 0 },
518 { "vzniu", 110, {0, {{{0, 0}}}}, 0, 0 },
519 { "cvzniu", 111, {0, {{{0, 0}}}}, 0, 0 },
520 { "xiu", 112, {0, {{{0, 0}}}}, 0, 0 },
521 { "cxiu", 113, {0, {{{0, 0}}}}, 0, 0 },
522 { "vxiu", 114, {0, {{{0, 0}}}}, 0, 0 },
523 { "cvxiu", 115, {0, {{{0, 0}}}}, 0, 0 },
524 { "zxiu", 116, {0, {{{0, 0}}}}, 0, 0 },
525 { "czxiu", 117, {0, {{{0, 0}}}}, 0, 0 },
526 { "vzxiu", 118, {0, {{{0, 0}}}}, 0, 0 },
527 { "cvzxiu", 119, {0, {{{0, 0}}}}, 0, 0 },
528 { "nxiu", 120, {0, {{{0, 0}}}}, 0, 0 },
529 { "cnxiu", 121, {0, {{{0, 0}}}}, 0, 0 },
530 { "vnxiu", 122, {0, {{{0, 0}}}}, 0, 0 },
531 { "cvnxiu", 123, {0, {{{0, 0}}}}, 0, 0 },
532 { "znxiu", 124, {0, {{{0, 0}}}}, 0, 0 },
533 { "cznxiu", 125, {0, {{{0, 0}}}}, 0, 0 },
534 { "vznxiu", 126, {0, {{{0, 0}}}}, 0, 0 },
535 { "cvznxiu", 127, {0, {{{0, 0}}}}, 0, 0 },
536 { "p", 128, {0, {{{0, 0}}}}, 0, 0 },
537 { "cp", 129, {0, {{{0, 0}}}}, 0, 0 },
538 { "vp", 130, {0, {{{0, 0}}}}, 0, 0 },
539 { "cvp", 131, {0, {{{0, 0}}}}, 0, 0 },
540 { "zp", 132, {0, {{{0, 0}}}}, 0, 0 },
541 { "czp", 133, {0, {{{0, 0}}}}, 0, 0 },
542 { "vzp", 134, {0, {{{0, 0}}}}, 0, 0 },
543 { "cvzp", 135, {0, {{{0, 0}}}}, 0, 0 },
544 { "np", 136, {0, {{{0, 0}}}}, 0, 0 },
545 { "cnp", 137, {0, {{{0, 0}}}}, 0, 0 },
546 { "vnp", 138, {0, {{{0, 0}}}}, 0, 0 },
547 { "cvnp", 139, {0, {{{0, 0}}}}, 0, 0 },
548 { "znp", 140, {0, {{{0, 0}}}}, 0, 0 },
549 { "cznp", 141, {0, {{{0, 0}}}}, 0, 0 },
550 { "vznp", 142, {0, {{{0, 0}}}}, 0, 0 },
551 { "cvznp", 143, {0, {{{0, 0}}}}, 0, 0 },
552 { "xp", 144, {0, {{{0, 0}}}}, 0, 0 },
553 { "cxp", 145, {0, {{{0, 0}}}}, 0, 0 },
554 { "vxp", 146, {0, {{{0, 0}}}}, 0, 0 },
555 { "cvxp", 147, {0, {{{0, 0}}}}, 0, 0 },
556 { "zxp", 148, {0, {{{0, 0}}}}, 0, 0 },
557 { "czxp", 149, {0, {{{0, 0}}}}, 0, 0 },
558 { "vzxp", 150, {0, {{{0, 0}}}}, 0, 0 },
559 { "cvzxp", 151, {0, {{{0, 0}}}}, 0, 0 },
560 { "nxp", 152, {0, {{{0, 0}}}}, 0, 0 },
561 { "cnxp", 153, {0, {{{0, 0}}}}, 0, 0 },
562 { "vnxp", 154, {0, {{{0, 0}}}}, 0, 0 },
563 { "cvnxp", 155, {0, {{{0, 0}}}}, 0, 0 },
564 { "znxp", 156, {0, {{{0, 0}}}}, 0, 0 },
565 { "cznxp", 157, {0, {{{0, 0}}}}, 0, 0 },
566 { "vznxp", 158, {0, {{{0, 0}}}}, 0, 0 },
567 { "cvznxp", 159, {0, {{{0, 0}}}}, 0, 0 },
568 { "ip", 160, {0, {{{0, 0}}}}, 0, 0 },
569 { "cip", 161, {0, {{{0, 0}}}}, 0, 0 },
570 { "vip", 162, {0, {{{0, 0}}}}, 0, 0 },
571 { "cvip", 163, {0, {{{0, 0}}}}, 0, 0 },
572 { "zip", 164, {0, {{{0, 0}}}}, 0, 0 },
573 { "czip", 165, {0, {{{0, 0}}}}, 0, 0 },
574 { "vzip", 166, {0, {{{0, 0}}}}, 0, 0 },
575 { "cvzip", 167, {0, {{{0, 0}}}}, 0, 0 },
576 { "nip", 168, {0, {{{0, 0}}}}, 0, 0 },
577 { "cnip", 169, {0, {{{0, 0}}}}, 0, 0 },
578 { "vnip", 170, {0, {{{0, 0}}}}, 0, 0 },
579 { "cvnip", 171, {0, {{{0, 0}}}}, 0, 0 },
580 { "znip", 172, {0, {{{0, 0}}}}, 0, 0 },
581 { "cznip", 173, {0, {{{0, 0}}}}, 0, 0 },
582 { "vznip", 174, {0, {{{0, 0}}}}, 0, 0 },
583 { "cvznip", 175, {0, {{{0, 0}}}}, 0, 0 },
584 { "xip", 176, {0, {{{0, 0}}}}, 0, 0 },
585 { "cxip", 177, {0, {{{0, 0}}}}, 0, 0 },
586 { "vxip", 178, {0, {{{0, 0}}}}, 0, 0 },
587 { "cvxip", 179, {0, {{{0, 0}}}}, 0, 0 },
588 { "zxip", 180, {0, {{{0, 0}}}}, 0, 0 },
589 { "czxip", 181, {0, {{{0, 0}}}}, 0, 0 },
590 { "vzxip", 182, {0, {{{0, 0}}}}, 0, 0 },
591 { "cvzxip", 183, {0, {{{0, 0}}}}, 0, 0 },
592 { "nxip", 184, {0, {{{0, 0}}}}, 0, 0 },
593 { "cnxip", 185, {0, {{{0, 0}}}}, 0, 0 },
594 { "vnxip", 186, {0, {{{0, 0}}}}, 0, 0 },
595 { "cvnxip", 187, {0, {{{0, 0}}}}, 0, 0 },
596 { "znxip", 188, {0, {{{0, 0}}}}, 0, 0 },
597 { "cznxip", 189, {0, {{{0, 0}}}}, 0, 0 },
598 { "vznxip", 190, {0, {{{0, 0}}}}, 0, 0 },
599 { "cvznxip", 191, {0, {{{0, 0}}}}, 0, 0 },
600 { "up", 192, {0, {{{0, 0}}}}, 0, 0 },
601 { "cup", 193, {0, {{{0, 0}}}}, 0, 0 },
602 { "vup", 194, {0, {{{0, 0}}}}, 0, 0 },
603 { "cvup", 195, {0, {{{0, 0}}}}, 0, 0 },
604 { "zup", 196, {0, {{{0, 0}}}}, 0, 0 },
605 { "czup", 197, {0, {{{0, 0}}}}, 0, 0 },
606 { "vzup", 198, {0, {{{0, 0}}}}, 0, 0 },
607 { "cvzup", 199, {0, {{{0, 0}}}}, 0, 0 },
608 { "nup", 200, {0, {{{0, 0}}}}, 0, 0 },
609 { "cnup", 201, {0, {{{0, 0}}}}, 0, 0 },
610 { "vnup", 202, {0, {{{0, 0}}}}, 0, 0 },
611 { "cvnup", 203, {0, {{{0, 0}}}}, 0, 0 },
612 { "znup", 204, {0, {{{0, 0}}}}, 0, 0 },
613 { "cznup", 205, {0, {{{0, 0}}}}, 0, 0 },
614 { "vznup", 206, {0, {{{0, 0}}}}, 0, 0 },
615 { "cvznup", 207, {0, {{{0, 0}}}}, 0, 0 },
616 { "xup", 208, {0, {{{0, 0}}}}, 0, 0 },
617 { "cxup", 209, {0, {{{0, 0}}}}, 0, 0 },
618 { "vxup", 210, {0, {{{0, 0}}}}, 0, 0 },
619 { "cvxup", 211, {0, {{{0, 0}}}}, 0, 0 },
620 { "zxup", 212, {0, {{{0, 0}}}}, 0, 0 },
621 { "czxup", 213, {0, {{{0, 0}}}}, 0, 0 },
622 { "vzxup", 214, {0, {{{0, 0}}}}, 0, 0 },
623 { "cvzxup", 215, {0, {{{0, 0}}}}, 0, 0 },
624 { "nxup", 216, {0, {{{0, 0}}}}, 0, 0 },
625 { "cnxup", 217, {0, {{{0, 0}}}}, 0, 0 },
626 { "vnxup", 218, {0, {{{0, 0}}}}, 0, 0 },
627 { "cvnxup", 219, {0, {{{0, 0}}}}, 0, 0 },
628 { "znxup", 220, {0, {{{0, 0}}}}, 0, 0 },
629 { "cznxup", 221, {0, {{{0, 0}}}}, 0, 0 },
630 { "vznxup", 222, {0, {{{0, 0}}}}, 0, 0 },
631 { "cvznxup", 223, {0, {{{0, 0}}}}, 0, 0 },
632 { "iup", 224, {0, {{{0, 0}}}}, 0, 0 },
633 { "ciup", 225, {0, {{{0, 0}}}}, 0, 0 },
634 { "viup", 226, {0, {{{0, 0}}}}, 0, 0 },
635 { "cviup", 227, {0, {{{0, 0}}}}, 0, 0 },
636 { "ziup", 228, {0, {{{0, 0}}}}, 0, 0 },
637 { "cziup", 229, {0, {{{0, 0}}}}, 0, 0 },
638 { "vziup", 230, {0, {{{0, 0}}}}, 0, 0 },
639 { "cvziup", 231, {0, {{{0, 0}}}}, 0, 0 },
640 { "niup", 232, {0, {{{0, 0}}}}, 0, 0 },
641 { "cniup", 233, {0, {{{0, 0}}}}, 0, 0 },
642 { "vniup", 234, {0, {{{0, 0}}}}, 0, 0 },
643 { "cvniup", 235, {0, {{{0, 0}}}}, 0, 0 },
644 { "zniup", 236, {0, {{{0, 0}}}}, 0, 0 },
645 { "czniup", 237, {0, {{{0, 0}}}}, 0, 0 },
646 { "vzniup", 238, {0, {{{0, 0}}}}, 0, 0 },
647 { "cvzniup", 239, {0, {{{0, 0}}}}, 0, 0 },
648 { "xiup", 240, {0, {{{0, 0}}}}, 0, 0 },
649 { "cxiup", 241, {0, {{{0, 0}}}}, 0, 0 },
650 { "vxiup", 242, {0, {{{0, 0}}}}, 0, 0 },
651 { "cvxiup", 243, {0, {{{0, 0}}}}, 0, 0 },
652 { "zxiup", 244, {0, {{{0, 0}}}}, 0, 0 },
653 { "czxiup", 245, {0, {{{0, 0}}}}, 0, 0 },
654 { "vzxiup", 246, {0, {{{0, 0}}}}, 0, 0 },
655 { "cvzxiup", 247, {0, {{{0, 0}}}}, 0, 0 },
656 { "nxiup", 248, {0, {{{0, 0}}}}, 0, 0 },
657 { "cnxiup", 249, {0, {{{0, 0}}}}, 0, 0 },
658 { "vnxiup", 250, {0, {{{0, 0}}}}, 0, 0 },
659 { "cvnxiup", 251, {0, {{{0, 0}}}}, 0, 0 },
660 { "znxiup", 252, {0, {{{0, 0}}}}, 0, 0 },
661 { "cznxiup", 253, {0, {{{0, 0}}}}, 0, 0 },
662 { "vznxiup", 254, {0, {{{0, 0}}}}, 0, 0 },
663 { "cvznxiup", 255, {0, {{{0, 0}}}}, 0, 0 }
f6bcefef
HPN
664};
665
666CGEN_KEYWORD cris_cgen_opval_h_flagbits =
667{
668 & cris_cgen_opval_h_flagbits_entries[0],
669 256,
670 0, 0, 0, 0, ""
671};
672
673static CGEN_KEYWORD_ENTRY cris_cgen_opval_h_supr_entries[] =
674{
cf2bf87e
HPN
675 { "S0", 0, {0, {{{0, 0}}}}, 0, 0 },
676 { "S1", 1, {0, {{{0, 0}}}}, 0, 0 },
677 { "S2", 2, {0, {{{0, 0}}}}, 0, 0 },
678 { "S3", 3, {0, {{{0, 0}}}}, 0, 0 },
679 { "S4", 4, {0, {{{0, 0}}}}, 0, 0 },
680 { "S5", 5, {0, {{{0, 0}}}}, 0, 0 },
681 { "S6", 6, {0, {{{0, 0}}}}, 0, 0 },
682 { "S7", 7, {0, {{{0, 0}}}}, 0, 0 },
683 { "S8", 8, {0, {{{0, 0}}}}, 0, 0 },
684 { "S9", 9, {0, {{{0, 0}}}}, 0, 0 },
685 { "S10", 10, {0, {{{0, 0}}}}, 0, 0 },
686 { "S11", 11, {0, {{{0, 0}}}}, 0, 0 },
687 { "S12", 12, {0, {{{0, 0}}}}, 0, 0 },
688 { "S13", 13, {0, {{{0, 0}}}}, 0, 0 },
689 { "S14", 14, {0, {{{0, 0}}}}, 0, 0 },
690 { "S15", 15, {0, {{{0, 0}}}}, 0, 0 }
f6bcefef
HPN
691};
692
693CGEN_KEYWORD cris_cgen_opval_h_supr =
694{
695 & cris_cgen_opval_h_supr_entries[0],
696 16,
697 0, 0, 0, 0, ""
698};
699
700
701/* The hardware table. */
702
703#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
704#define A(a) (1 << CGEN_HW_##a)
705#else
706#define A(a) (1 << CGEN_HW_/**/a)
707#endif
708
709const CGEN_HW_ENTRY cris_cgen_hw_table[] =
710{
cf2bf87e
HPN
711 { "h-memory", HW_H_MEMORY, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
712 { "h-sint", HW_H_SINT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
713 { "h-uint", HW_H_UINT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
714 { "h-addr", HW_H_ADDR, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
715 { "h-iaddr", HW_H_IADDR, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
716 { "h-inc", HW_H_INC, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_h_inc, { 0, { { { (1<<MACH_BASE), 0 } } } } },
717 { "h-ccode", HW_H_CCODE, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_h_ccode, { 0, { { { (1<<MACH_BASE), 0 } } } } },
718 { "h-swap", HW_H_SWAP, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_h_swap, { 0, { { { (1<<MACH_BASE), 0 } } } } },
719 { "h-flagbits", HW_H_FLAGBITS, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_h_flagbits, { 0, { { { (1<<MACH_BASE), 0 } } } } },
720 { "h-v32-v32", HW_H_V32, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV32), 0 } } } } },
721 { "h-v32-non-v32", HW_H_V32, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } } },
722 { "h-pc", HW_H_PC, CGEN_ASM_NONE, 0, { 0|A(PROFILE)|A(PC), { { { (1<<MACH_BASE), 0 } } } } },
723 { "h-gr", HW_H_GR, CGEN_ASM_NONE, 0, { 0|A(PROFILE)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
724 { "h-gr-pc", HW_H_GR_X, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_gr_names_pcreg, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } } },
725 { "h-gr-real-pc", HW_H_GR_REAL_PC, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_gr_names_pcreg, { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } } },
726 { "h-raw-gr-pc", HW_H_RAW_GR, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } } },
727 { "h-gr-acr", HW_H_GR_X, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_gr_names_acr, { 0, { { { (1<<MACH_CRISV32), 0 } } } } },
728 { "h-raw-gr-acr", HW_H_RAW_GR, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV32), 0 } } } } },
729 { "h-sr", HW_H_SR, CGEN_ASM_NONE, 0, { 0|A(PROFILE)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
730 { "h-sr-v0", HW_H_SR_X, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_p_names_v10, { 0, { { { (1<<MACH_CRISV0), 0 } } } } },
731 { "h-sr-v3", HW_H_SR_X, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_p_names_v10, { 0, { { { (1<<MACH_CRISV3), 0 } } } } },
732 { "h-sr-v8", HW_H_SR_X, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_p_names_v10, { 0, { { { (1<<MACH_CRISV8), 0 } } } } },
733 { "h-sr-v10", HW_H_SR_X, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_p_names_v10, { 0, { { { (1<<MACH_CRISV10), 0 } } } } },
734 { "h-sr-v32", HW_H_SR_X, CGEN_ASM_KEYWORD, (PTR) & cris_cgen_opval_p_names_v32, { 0, { { { (1<<MACH_CRISV32), 0 } } } } },
735 { "h-supr", HW_H_SUPR, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV32), 0 } } } } },
736 { "h-cbit", HW_H_CBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
737 { "h-cbit-move", HW_H_CBIT_MOVE, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
738 { "h-cbit-move-v32", HW_H_CBIT_MOVE_X, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV32), 0 } } } } },
739 { "h-cbit-move-pre-v32", HW_H_CBIT_MOVE_X, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } } },
740 { "h-vbit", HW_H_VBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
741 { "h-vbit-move", HW_H_VBIT_MOVE, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
742 { "h-vbit-move-v32", HW_H_VBIT_MOVE_X, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV32), 0 } } } } },
743 { "h-vbit-move-pre-v32", HW_H_VBIT_MOVE_X, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } } },
744 { "h-zbit", HW_H_ZBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
745 { "h-zbit-move", HW_H_ZBIT_MOVE, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
746 { "h-zbit-move-v32", HW_H_ZBIT_MOVE_X, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV32), 0 } } } } },
747 { "h-zbit-move-pre-v32", HW_H_ZBIT_MOVE_X, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } } },
748 { "h-nbit", HW_H_NBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
749 { "h-nbit-move", HW_H_NBIT_MOVE, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
750 { "h-nbit-move-v32", HW_H_NBIT_MOVE_X, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV32), 0 } } } } },
751 { "h-nbit-move-pre-v32", HW_H_NBIT_MOVE_X, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } } },
752 { "h-xbit", HW_H_XBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
753 { "h-ibit", HW_H_IBIT, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
754 { "h-ibit-pre-v32", HW_H_IBIT_X, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } } },
755 { "h-pbit", HW_H_PBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV10)|(1<<MACH_CRISV32), 0 } } } } },
756 { "h-rbit", HW_H_RBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV32), 0 } } } } },
757 { "h-ubit", HW_H_UBIT, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
758 { "h-ubit-pre-v32", HW_H_UBIT_X, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV10), 0 } } } } },
759 { "h-gbit", HW_H_GBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV32), 0 } } } } },
760 { "h-kernel-sp", HW_H_KERNEL_SP, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV32), 0 } } } } },
761 { "h-ubit-v32", HW_H_UBIT_X, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV32), 0 } } } } },
762 { "h-ibit-v32", HW_H_IBIT_X, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV32), 0 } } } } },
763 { "h-mbit", HW_H_MBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV32), 0 } } } } },
764 { "h-qbit", HW_H_QBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV32), 0 } } } } },
765 { "h-sbit", HW_H_SBIT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV32), 0 } } } } },
766 { "h-insn-prefixed-p", HW_H_INSN_PREFIXED_P, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
767 { "h-insn-prefixed-p-pre-v32", HW_H_INSN_PREFIXED_P_X, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } } },
768 { "h-insn-prefixed-p-v32", HW_H_INSN_PREFIXED_P_X, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV32), 0 } } } } },
769 { "h-prefixreg-pre-v32", HW_H_PREFIXREG, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } } },
770 { "h-prefixreg-v32", HW_H_PREFIXREG, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_CRISV32), 0 } } } } },
771 { 0, 0, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } }
f6bcefef
HPN
772};
773
774#undef A
775
776
777/* The instruction field table. */
778
779#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
780#define A(a) (1 << CGEN_IFLD_##a)
781#else
782#define A(a) (1 << CGEN_IFLD_/**/a)
783#endif
784
785const CGEN_IFLD cris_cgen_ifld_table[] =
786{
cf2bf87e
HPN
787 { CRIS_F_NIL, "f-nil", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
788 { CRIS_F_ANYOF, "f-anyof", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
789 { CRIS_F_OPERAND1, "f-operand1", 0, 16, 3, 4, { 0, { { { (1<<MACH_BASE), 0 } } } } },
790 { CRIS_F_SIZE, "f-size", 0, 16, 5, 2, { 0, { { { (1<<MACH_BASE), 0 } } } } },
791 { CRIS_F_OPCODE, "f-opcode", 0, 16, 9, 4, { 0, { { { (1<<MACH_BASE), 0 } } } } },
792 { CRIS_F_MODE, "f-mode", 0, 16, 11, 2, { 0, { { { (1<<MACH_BASE), 0 } } } } },
793 { CRIS_F_OPERAND2, "f-operand2", 0, 16, 15, 4, { 0, { { { (1<<MACH_BASE), 0 } } } } },
794 { CRIS_F_MEMMODE, "f-memmode", 0, 16, 10, 1, { 0, { { { (1<<MACH_BASE), 0 } } } } },
795 { CRIS_F_MEMBIT, "f-membit", 0, 16, 11, 1, { 0, { { { (1<<MACH_BASE), 0 } } } } },
796 { CRIS_F_B5, "f-b5", 0, 16, 5, 1, { 0, { { { (1<<MACH_BASE), 0 } } } } },
797 { CRIS_F_OPCODE_HI, "f-opcode-hi", 0, 16, 9, 2, { 0, { { { (1<<MACH_BASE), 0 } } } } },
798 { CRIS_F_DSTSRC, "f-dstsrc", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
799 { CRIS_F_U6, "f-u6", 0, 16, 5, 6, { 0, { { { (1<<MACH_BASE), 0 } } } } },
800 { CRIS_F_S6, "f-s6", 0, 16, 5, 6, { 0, { { { (1<<MACH_BASE), 0 } } } } },
801 { CRIS_F_U5, "f-u5", 0, 16, 4, 5, { 0, { { { (1<<MACH_BASE), 0 } } } } },
802 { CRIS_F_U4, "f-u4", 0, 16, 3, 4, { 0, { { { (1<<MACH_BASE), 0 } } } } },
803 { CRIS_F_S8, "f-s8", 0, 16, 7, 8, { 0, { { { (1<<MACH_BASE), 0 } } } } },
804 { CRIS_F_DISP9_HI, "f-disp9-hi", 0, 16, 0, 1, { 0, { { { (1<<MACH_BASE), 0 } } } } },
805 { CRIS_F_DISP9_LO, "f-disp9-lo", 0, 16, 7, 7, { 0, { { { (1<<MACH_BASE), 0 } } } } },
806 { CRIS_F_DISP9, "f-disp9", 0, 0, 0, 0,{ 0|A(PCREL_ADDR)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
807 { CRIS_F_QO, "f-qo", 0, 16, 3, 4, { 0|A(PCREL_ADDR), { { { (1<<MACH_CRISV32), 0 } } } } },
808 { CRIS_F_INDIR_PC__BYTE, "f-indir-pc+-byte", 16, 16, 15, 16, { 0|A(SIGN_OPT), { { { (1<<MACH_BASE), 0 } } } } },
809 { CRIS_F_INDIR_PC__WORD, "f-indir-pc+-word", 16, 16, 15, 16, { 0|A(SIGN_OPT), { { { (1<<MACH_BASE), 0 } } } } },
810 { CRIS_F_INDIR_PC__WORD_PCREL, "f-indir-pc+-word-pcrel", 16, 16, 15, 16, { 0|A(SIGN_OPT)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } } },
811 { CRIS_F_INDIR_PC__DWORD, "f-indir-pc+-dword", 16, 32, 31, 32, { 0|A(SIGN_OPT), { { { (1<<MACH_BASE), 0 } } } } },
812 { CRIS_F_INDIR_PC__DWORD_PCREL, "f-indir-pc+-dword-pcrel", 16, 32, 31, 32, { 0|A(PCREL_ADDR)|A(SIGN_OPT), { { { (1<<MACH_CRISV32), 0 } } } } },
813 { 0, 0, 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } }
f6bcefef
HPN
814};
815
816#undef A
817
818
819
820/* multi ifield declarations */
821
822const CGEN_MAYBE_MULTI_IFLD CRIS_F_DSTSRC_MULTI_IFIELD [];
823const CGEN_MAYBE_MULTI_IFLD CRIS_F_DISP9_MULTI_IFIELD [];
824
825
826/* multi ifield definitions */
827
828const CGEN_MAYBE_MULTI_IFLD CRIS_F_DSTSRC_MULTI_IFIELD [] =
829{
830 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_OPERAND2] } },
831 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_OPERAND1] } },
832 { 0, { (const PTR) 0 } }
833};
834const CGEN_MAYBE_MULTI_IFLD CRIS_F_DISP9_MULTI_IFIELD [] =
835{
836 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_DISP9_HI] } },
837 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_DISP9_LO] } },
838 { 0, { (const PTR) 0 } }
839};
840
841/* The operand table. */
842
843#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
844#define A(a) (1 << CGEN_OPERAND_##a)
845#else
846#define A(a) (1 << CGEN_OPERAND_/**/a)
847#endif
848#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
849#define OPERAND(op) CRIS_OPERAND_##op
850#else
851#define OPERAND(op) CRIS_OPERAND_/**/op
852#endif
853
854const CGEN_OPERAND cris_cgen_operand_table[] =
855{
856/* pc: program counter */
857 { "pc", CRIS_OPERAND_PC, HW_H_PC, 0, 0,
858 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_NIL] } },
cf2bf87e 859 { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
860/* cbit: */
861 { "cbit", CRIS_OPERAND_CBIT, HW_H_CBIT, 0, 0,
862 { 0, { (const PTR) 0 } },
cf2bf87e 863 { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
864/* cbit-move: cbit for pre-V32, nothing for newer */
865 { "cbit-move", CRIS_OPERAND_CBIT_MOVE, HW_H_CBIT_MOVE, 0, 0,
866 { 0, { (const PTR) 0 } },
cf2bf87e 867 { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
868/* vbit: */
869 { "vbit", CRIS_OPERAND_VBIT, HW_H_VBIT, 0, 0,
870 { 0, { (const PTR) 0 } },
cf2bf87e 871 { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
872/* vbit-move: vbit for pre-V32, nothing for newer */
873 { "vbit-move", CRIS_OPERAND_VBIT_MOVE, HW_H_VBIT_MOVE, 0, 0,
874 { 0, { (const PTR) 0 } },
cf2bf87e 875 { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
876/* zbit: */
877 { "zbit", CRIS_OPERAND_ZBIT, HW_H_ZBIT, 0, 0,
878 { 0, { (const PTR) 0 } },
cf2bf87e 879 { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
880/* zbit-move: zbit for pre-V32, nothing for newer */
881 { "zbit-move", CRIS_OPERAND_ZBIT_MOVE, HW_H_ZBIT_MOVE, 0, 0,
882 { 0, { (const PTR) 0 } },
cf2bf87e 883 { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
884/* nbit: */
885 { "nbit", CRIS_OPERAND_NBIT, HW_H_NBIT, 0, 0,
886 { 0, { (const PTR) 0 } },
cf2bf87e 887 { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
888/* nbit-move: nbit for pre-V32, nothing for newer */
889 { "nbit-move", CRIS_OPERAND_NBIT_MOVE, HW_H_NBIT_MOVE, 0, 0,
890 { 0, { (const PTR) 0 } },
cf2bf87e 891 { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
892/* xbit: */
893 { "xbit", CRIS_OPERAND_XBIT, HW_H_XBIT, 0, 0,
894 { 0, { (const PTR) 0 } },
cf2bf87e 895 { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
896/* ibit: */
897 { "ibit", CRIS_OPERAND_IBIT, HW_H_IBIT, 0, 0,
898 { 0, { (const PTR) 0 } },
cf2bf87e 899 { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
900/* ubit: */
901 { "ubit", CRIS_OPERAND_UBIT, HW_H_UBIT, 0, 0,
902 { 0, { (const PTR) 0 } },
cf2bf87e 903 { 0|A(SEM_ONLY), { { { (1<<MACH_CRISV10)|(1<<MACH_CRISV32), 0 } } } } },
f6bcefef
HPN
904/* pbit: */
905 { "pbit", CRIS_OPERAND_PBIT, HW_H_PBIT, 0, 0,
906 { 0, { (const PTR) 0 } },
cf2bf87e 907 { 0|A(SEM_ONLY), { { { (1<<MACH_CRISV10)|(1<<MACH_CRISV32), 0 } } } } },
f6bcefef
HPN
908/* rbit: carry bit for MCP+restore-P flag bit */
909 { "rbit", CRIS_OPERAND_RBIT, HW_H_RBIT, 0, 0,
910 { 0, { (const PTR) 0 } },
cf2bf87e 911 { 0|A(SEM_ONLY), { { { (1<<MACH_CRISV32), 0 } } } } },
f6bcefef
HPN
912/* sbit: */
913 { "sbit", CRIS_OPERAND_SBIT, HW_H_SBIT, 0, 0,
914 { 0, { (const PTR) 0 } },
cf2bf87e 915 { 0|A(SEM_ONLY), { { { (1<<MACH_CRISV32), 0 } } } } },
f6bcefef
HPN
916/* mbit: */
917 { "mbit", CRIS_OPERAND_MBIT, HW_H_MBIT, 0, 0,
918 { 0, { (const PTR) 0 } },
cf2bf87e 919 { 0|A(SEM_ONLY), { { { (1<<MACH_CRISV32), 0 } } } } },
f6bcefef
HPN
920/* qbit: */
921 { "qbit", CRIS_OPERAND_QBIT, HW_H_QBIT, 0, 0,
922 { 0, { (const PTR) 0 } },
cf2bf87e 923 { 0|A(SEM_ONLY), { { { (1<<MACH_CRISV32), 0 } } } } },
f6bcefef
HPN
924/* prefix-set: Instruction-prefixed flag */
925 { "prefix-set", CRIS_OPERAND_PREFIX_SET, HW_H_INSN_PREFIXED_P, 0, 0,
926 { 0, { (const PTR) 0 } },
cf2bf87e 927 { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
928/* prefixreg: Prefix address */
929 { "prefixreg", CRIS_OPERAND_PREFIXREG, HW_H_PREFIXREG, 0, 0,
930 { 0, { (const PTR) 0 } },
cf2bf87e 931 { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
932/* Rs: Source general register */
933 { "Rs", CRIS_OPERAND_RS, HW_H_GR, 3, 4,
934 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_OPERAND1] } },
cf2bf87e 935 { 0, { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
936/* inc: Incrementness of indirect operand */
937 { "inc", CRIS_OPERAND_INC, HW_H_INC, 10, 1,
938 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_MEMMODE] } },
cf2bf87e 939 { 0, { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
940/* Ps: Source special register */
941 { "Ps", CRIS_OPERAND_PS, HW_H_SR, 15, 4,
942 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_OPERAND2] } },
cf2bf87e 943 { 0, { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
944/* Ss: Source support register */
945 { "Ss", CRIS_OPERAND_SS, HW_H_SUPR, 15, 4,
946 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_OPERAND2] } },
cf2bf87e 947 { 0, { { { (1<<MACH_CRISV32), 0 } } } } },
f6bcefef
HPN
948/* Sd: Destination support register */
949 { "Sd", CRIS_OPERAND_SD, HW_H_SUPR, 15, 4,
950 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_OPERAND2] } },
cf2bf87e 951 { 0, { { { (1<<MACH_CRISV32), 0 } } } } },
f6bcefef
HPN
952/* i: Quick signed 6-bit */
953 { "i", CRIS_OPERAND_I, HW_H_SINT, 5, 6,
954 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_S6] } },
cf2bf87e 955 { 0, { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
956/* j: Quick unsigned 6-bit */
957 { "j", CRIS_OPERAND_J, HW_H_UINT, 5, 6,
958 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_U6] } },
cf2bf87e 959 { 0, { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
960/* c: Quick unsigned 5-bit */
961 { "c", CRIS_OPERAND_C, HW_H_UINT, 4, 5,
962 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_U5] } },
cf2bf87e 963 { 0, { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
964/* qo: Quick unsigned 4-bit, PC-relative */
965 { "qo", CRIS_OPERAND_QO, HW_H_ADDR, 3, 4,
966 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_QO] } },
cf2bf87e 967 { 0|A(PCREL_ADDR), { { { (1<<MACH_CRISV32), 0 } } } } },
f6bcefef
HPN
968/* Rd: Destination general register */
969 { "Rd", CRIS_OPERAND_RD, HW_H_GR, 15, 4,
970 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_OPERAND2] } },
cf2bf87e 971 { 0, { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
972/* sconst8: Signed byte [PC+] */
973 { "sconst8", CRIS_OPERAND_SCONST8, HW_H_SINT, 15, 16,
974 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_INDIR_PC__BYTE] } },
cf2bf87e 975 { 0|A(SIGN_OPT), { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
976/* uconst8: Unsigned byte [PC+] */
977 { "uconst8", CRIS_OPERAND_UCONST8, HW_H_UINT, 15, 16,
978 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_INDIR_PC__BYTE] } },
cf2bf87e 979 { 0|A(SIGN_OPT), { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
980/* sconst16: Signed word [PC+] */
981 { "sconst16", CRIS_OPERAND_SCONST16, HW_H_SINT, 15, 16,
982 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_INDIR_PC__WORD] } },
cf2bf87e 983 { 0|A(SIGN_OPT), { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
984/* uconst16: Unsigned word [PC+] */
985 { "uconst16", CRIS_OPERAND_UCONST16, HW_H_UINT, 15, 16,
986 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_INDIR_PC__WORD] } },
cf2bf87e 987 { 0|A(SIGN_OPT), { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
988/* const32: Dword [PC+] */
989 { "const32", CRIS_OPERAND_CONST32, HW_H_UINT, 31, 32,
990 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_INDIR_PC__DWORD] } },
cf2bf87e 991 { 0|A(SIGN_OPT), { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
992/* const32-pcrel: Dword [PC+] */
993 { "const32-pcrel", CRIS_OPERAND_CONST32_PCREL, HW_H_ADDR, 31, 32,
994 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_INDIR_PC__DWORD_PCREL] } },
cf2bf87e 995 { 0|A(PCREL_ADDR)|A(SIGN_OPT), { { { (1<<MACH_CRISV32), 0 } } } } },
f6bcefef
HPN
996/* Pd: Destination special register */
997 { "Pd", CRIS_OPERAND_PD, HW_H_SR, 15, 4,
998 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_OPERAND2] } },
cf2bf87e 999 { 0, { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
1000/* o: Signed 8-bit */
1001 { "o", CRIS_OPERAND_O, HW_H_SINT, 7, 8,
1002 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_S8] } },
cf2bf87e 1003 { 0, { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
1004/* o-pcrel: 9-bit signed immediate PC-rel */
1005 { "o-pcrel", CRIS_OPERAND_O_PCREL, HW_H_IADDR, 0, 8,
1006 { 2, { (const PTR) &CRIS_F_DISP9_MULTI_IFIELD[0] } },
cf2bf87e 1007 { 0|A(PCREL_ADDR)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
1008/* o-word-pcrel: 16-bit signed immediate PC-rel */
1009 { "o-word-pcrel", CRIS_OPERAND_O_WORD_PCREL, HW_H_IADDR, 15, 16,
1010 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_INDIR_PC__WORD_PCREL] } },
cf2bf87e 1011 { 0|A(SIGN_OPT)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
1012/* cc: Condition codes */
1013 { "cc", CRIS_OPERAND_CC, HW_H_CCODE, 15, 4,
1014 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_OPERAND2] } },
cf2bf87e 1015 { 0, { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
1016/* n: Quick unsigned 4-bit */
1017 { "n", CRIS_OPERAND_N, HW_H_UINT, 3, 4,
1018 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_U4] } },
cf2bf87e 1019 { 0, { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
1020/* swapoption: Swap option */
1021 { "swapoption", CRIS_OPERAND_SWAPOPTION, HW_H_SWAP, 15, 4,
1022 { 0, { (const PTR) &cris_cgen_ifld_table[CRIS_F_OPERAND2] } },
cf2bf87e 1023 { 0, { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
1024/* list-of-flags: Flag bits as operand */
1025 { "list-of-flags", CRIS_OPERAND_LIST_OF_FLAGS, HW_H_FLAGBITS, 3, 8,
1026 { 2, { (const PTR) &CRIS_F_DSTSRC_MULTI_IFIELD[0] } },
cf2bf87e 1027 { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
1028/* sentinel */
1029 { 0, 0, 0, 0, 0,
1030 { 0, { (const PTR) 0 } },
cf2bf87e 1031 { 0, { { { (1<<MACH_BASE), 0 } } } } }
f6bcefef
HPN
1032};
1033
1034#undef A
1035
1036
1037/* The instruction table. */
1038
1039#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
1040#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
1041#define A(a) (1 << CGEN_INSN_##a)
1042#else
1043#define A(a) (1 << CGEN_INSN_/**/a)
1044#endif
1045
1046static const CGEN_IBASE cris_cgen_insn_table[MAX_INSNS] =
1047{
1048 /* Special null first entry.
1049 A `num' value of zero is thus invalid.
1050 Also, the special `invalid' insn resides here. */
cf2bf87e 1051 { 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } } } } },
f6bcefef
HPN
1052/* nop */
1053 {
1054 CRIS_INSN_NOP, "nop", "nop", 16,
cf2bf87e 1055 { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
1056 },
1057/* move.b move.m ${Rs},${Rd} */
1058 {
1059 CRIS_INSN_MOVE_B_R, "move.b-r", "move.b", 16,
cf2bf87e 1060 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1061 },
1062/* move.w move.m ${Rs},${Rd} */
1063 {
1064 CRIS_INSN_MOVE_W_R, "move.w-r", "move.w", 16,
cf2bf87e 1065 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1066 },
1067/* move.d move.m ${Rs},${Rd} */
1068 {
1069 CRIS_INSN_MOVE_D_R, "move.d-r", "move.d", 16,
cf2bf87e 1070 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1071 },
1072/* move.d PC,${Rd} */
1073 {
1074 CRIS_INSN_MOVEPCR, "movepcr", "move.d", 16,
cf2bf87e 1075 { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
1076 },
1077/* moveq $i,$Rd */
1078 {
1079 CRIS_INSN_MOVEQ, "moveq", "moveq", 16,
cf2bf87e 1080 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1081 },
1082/* movs.b movs.m ${Rs},${Rd} */
1083 {
1084 CRIS_INSN_MOVS_B_R, "movs.b-r", "movs.b", 16,
cf2bf87e 1085 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1086 },
1087/* movs.w movs.m ${Rs},${Rd} */
1088 {
1089 CRIS_INSN_MOVS_W_R, "movs.w-r", "movs.w", 16,
cf2bf87e 1090 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1091 },
1092/* movu.b movu.m ${Rs},${Rd} */
1093 {
1094 CRIS_INSN_MOVU_B_R, "movu.b-r", "movu.b", 16,
cf2bf87e 1095 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1096 },
1097/* movu.w movu.m ${Rs},${Rd} */
1098 {
1099 CRIS_INSN_MOVU_W_R, "movu.w-r", "movu.w", 16,
cf2bf87e 1100 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1101 },
1102/* move.b ${sconst8},${Rd} */
1103 {
1104 CRIS_INSN_MOVECBR, "movecbr", "move.b", 32,
cf2bf87e 1105 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1106 },
1107/* move.w ${sconst16},${Rd} */
1108 {
1109 CRIS_INSN_MOVECWR, "movecwr", "move.w", 32,
cf2bf87e 1110 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1111 },
1112/* move.d ${const32},${Rd} */
1113 {
1114 CRIS_INSN_MOVECDR, "movecdr", "move.d", 48,
cf2bf87e 1115 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1116 },
1117/* movs.b ${sconst8},${Rd} */
1118 {
1119 CRIS_INSN_MOVSCBR, "movscbr", "movs.b", 32,
cf2bf87e 1120 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1121 },
1122/* movs.w ${sconst16},${Rd} */
1123 {
1124 CRIS_INSN_MOVSCWR, "movscwr", "movs.w", 32,
cf2bf87e 1125 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1126 },
1127/* movu.b ${uconst8},${Rd} */
1128 {
1129 CRIS_INSN_MOVUCBR, "movucbr", "movu.b", 32,
cf2bf87e 1130 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1131 },
1132/* movu.w ${uconst16},${Rd} */
1133 {
1134 CRIS_INSN_MOVUCWR, "movucwr", "movu.w", 32,
cf2bf87e 1135 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1136 },
1137/* addq $j,$Rd */
1138 {
1139 CRIS_INSN_ADDQ, "addq", "addq", 16,
cf2bf87e 1140 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1141 },
1142/* subq $j,$Rd */
1143 {
1144 CRIS_INSN_SUBQ, "subq", "subq", 16,
cf2bf87e 1145 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1146 },
1147/* cmp-r.b $Rs,$Rd */
1148 {
1149 CRIS_INSN_CMP_R_B_R, "cmp-r.b-r", "cmp-r.b", 16,
cf2bf87e 1150 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1151 },
1152/* cmp-r.w $Rs,$Rd */
1153 {
1154 CRIS_INSN_CMP_R_W_R, "cmp-r.w-r", "cmp-r.w", 16,
cf2bf87e 1155 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1156 },
1157/* cmp-r.d $Rs,$Rd */
1158 {
1159 CRIS_INSN_CMP_R_D_R, "cmp-r.d-r", "cmp-r.d", 16,
cf2bf87e 1160 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1161 },
1162/* cmp-m.b [${Rs}${inc}],${Rd} */
1163 {
1164 CRIS_INSN_CMP_M_B_M, "cmp-m.b-m", "cmp-m.b", 16,
cf2bf87e 1165 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1166 },
1167/* cmp-m.w [${Rs}${inc}],${Rd} */
1168 {
1169 CRIS_INSN_CMP_M_W_M, "cmp-m.w-m", "cmp-m.w", 16,
cf2bf87e 1170 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1171 },
1172/* cmp-m.d [${Rs}${inc}],${Rd} */
1173 {
1174 CRIS_INSN_CMP_M_D_M, "cmp-m.d-m", "cmp-m.d", 16,
cf2bf87e 1175 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1176 },
1177/* cmp.b $sconst8,$Rd */
1178 {
1179 CRIS_INSN_CMPCBR, "cmpcbr", "cmp.b", 32,
cf2bf87e 1180 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1181 },
1182/* cmp.w $sconst16,$Rd */
1183 {
1184 CRIS_INSN_CMPCWR, "cmpcwr", "cmp.w", 32,
cf2bf87e 1185 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1186 },
1187/* cmp.d $const32,$Rd */
1188 {
1189 CRIS_INSN_CMPCDR, "cmpcdr", "cmp.d", 48,
cf2bf87e 1190 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1191 },
1192/* cmpq $i,$Rd */
1193 {
1194 CRIS_INSN_CMPQ, "cmpq", "cmpq", 16,
cf2bf87e 1195 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1196 },
1197/* cmps-m.b [${Rs}${inc}],$Rd */
1198 {
1199 CRIS_INSN_CMPS_M_B_M, "cmps-m.b-m", "cmps-m.b", 16,
cf2bf87e 1200 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1201 },
1202/* cmps-m.w [${Rs}${inc}],$Rd */
1203 {
1204 CRIS_INSN_CMPS_M_W_M, "cmps-m.w-m", "cmps-m.w", 16,
cf2bf87e 1205 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1206 },
1207/* [${Rs}${inc}],$Rd */
1208 {
1209 CRIS_INSN_CMPSCBR, "cmpscbr", "[", 32,
cf2bf87e 1210 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1211 },
1212/* [${Rs}${inc}],$Rd */
1213 {
1214 CRIS_INSN_CMPSCWR, "cmpscwr", "[", 32,
cf2bf87e 1215 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1216 },
1217/* cmpu-m.b [${Rs}${inc}],$Rd */
1218 {
1219 CRIS_INSN_CMPU_M_B_M, "cmpu-m.b-m", "cmpu-m.b", 16,
cf2bf87e 1220 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1221 },
1222/* cmpu-m.w [${Rs}${inc}],$Rd */
1223 {
1224 CRIS_INSN_CMPU_M_W_M, "cmpu-m.w-m", "cmpu-m.w", 16,
cf2bf87e 1225 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1226 },
1227/* [${Rs}${inc}],$Rd */
1228 {
1229 CRIS_INSN_CMPUCBR, "cmpucbr", "[", 32,
cf2bf87e 1230 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1231 },
1232/* [${Rs}${inc}],$Rd */
1233 {
1234 CRIS_INSN_CMPUCWR, "cmpucwr", "[", 32,
cf2bf87e 1235 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1236 },
1237/* move-m.b [${Rs}${inc}],${Rd} */
1238 {
1239 CRIS_INSN_MOVE_M_B_M, "move-m.b-m", "move-m.b", 16,
cf2bf87e 1240 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1241 },
1242/* move-m.w [${Rs}${inc}],${Rd} */
1243 {
1244 CRIS_INSN_MOVE_M_W_M, "move-m.w-m", "move-m.w", 16,
cf2bf87e 1245 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1246 },
1247/* move-m.d [${Rs}${inc}],${Rd} */
1248 {
1249 CRIS_INSN_MOVE_M_D_M, "move-m.d-m", "move-m.d", 16,
cf2bf87e 1250 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1251 },
1252/* movs-m.b [${Rs}${inc}],${Rd} */
1253 {
1254 CRIS_INSN_MOVS_M_B_M, "movs-m.b-m", "movs-m.b", 16,
cf2bf87e 1255 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1256 },
1257/* movs-m.w [${Rs}${inc}],${Rd} */
1258 {
1259 CRIS_INSN_MOVS_M_W_M, "movs-m.w-m", "movs-m.w", 16,
cf2bf87e 1260 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1261 },
1262/* movu-m.b [${Rs}${inc}],${Rd} */
1263 {
1264 CRIS_INSN_MOVU_M_B_M, "movu-m.b-m", "movu-m.b", 16,
cf2bf87e 1265 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1266 },
1267/* movu-m.w [${Rs}${inc}],${Rd} */
1268 {
1269 CRIS_INSN_MOVU_M_W_M, "movu-m.w-m", "movu-m.w", 16,
cf2bf87e 1270 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1271 },
1272/* move ${Rs},${Pd} */
1273 {
1274 CRIS_INSN_MOVE_R_SPRV0, "move-r-sprv0", "move", 16,
cf2bf87e 1275 { 0, { { { (1<<MACH_CRISV0), 0 } } } }
f6bcefef
HPN
1276 },
1277/* move ${Rs},${Pd} */
1278 {
1279 CRIS_INSN_MOVE_R_SPRV3, "move-r-sprv3", "move", 16,
cf2bf87e 1280 { 0, { { { (1<<MACH_CRISV3), 0 } } } }
f6bcefef
HPN
1281 },
1282/* move ${Rs},${Pd} */
1283 {
1284 CRIS_INSN_MOVE_R_SPRV8, "move-r-sprv8", "move", 16,
cf2bf87e 1285 { 0, { { { (1<<MACH_CRISV8), 0 } } } }
f6bcefef
HPN
1286 },
1287/* move ${Rs},${Pd} */
1288 {
1289 CRIS_INSN_MOVE_R_SPRV10, "move-r-sprv10", "move", 16,
cf2bf87e 1290 { 0, { { { (1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
1291 },
1292/* move ${Rs},${Pd} */
1293 {
1294 CRIS_INSN_MOVE_R_SPRV32, "move-r-sprv32", "move", 16,
cf2bf87e 1295 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1296 },
1297/* move ${Ps},${Rd-sfield} */
1298 {
1299 CRIS_INSN_MOVE_SPR_RV0, "move-spr-rv0", "move", 16,
cf2bf87e 1300 { 0, { { { (1<<MACH_CRISV0), 0 } } } }
f6bcefef
HPN
1301 },
1302/* move ${Ps},${Rd-sfield} */
1303 {
1304 CRIS_INSN_MOVE_SPR_RV3, "move-spr-rv3", "move", 16,
cf2bf87e 1305 { 0, { { { (1<<MACH_CRISV3), 0 } } } }
f6bcefef
HPN
1306 },
1307/* move ${Ps},${Rd-sfield} */
1308 {
1309 CRIS_INSN_MOVE_SPR_RV8, "move-spr-rv8", "move", 16,
cf2bf87e 1310 { 0, { { { (1<<MACH_CRISV8), 0 } } } }
f6bcefef
HPN
1311 },
1312/* move ${Ps},${Rd-sfield} */
1313 {
1314 CRIS_INSN_MOVE_SPR_RV10, "move-spr-rv10", "move", 16,
cf2bf87e 1315 { 0, { { { (1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
1316 },
1317/* move ${Ps},${Rd-sfield} */
1318 {
1319 CRIS_INSN_MOVE_SPR_RV32, "move-spr-rv32", "move", 16,
cf2bf87e 1320 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1321 },
1322/* ret/reti/retb */
1323 {
1324 CRIS_INSN_RET_TYPE, "ret-type", "ret/reti/retb", 16,
cf2bf87e 1325 { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
1326 },
1327/* move [${Rs}${inc}],${Pd} */
1328 {
1329 CRIS_INSN_MOVE_M_SPRV0, "move-m-sprv0", "move", 16,
cf2bf87e 1330 { 0, { { { (1<<MACH_CRISV0), 0 } } } }
f6bcefef
HPN
1331 },
1332/* move [${Rs}${inc}],${Pd} */
1333 {
1334 CRIS_INSN_MOVE_M_SPRV3, "move-m-sprv3", "move", 16,
cf2bf87e 1335 { 0, { { { (1<<MACH_CRISV3), 0 } } } }
f6bcefef
HPN
1336 },
1337/* move [${Rs}${inc}],${Pd} */
1338 {
1339 CRIS_INSN_MOVE_M_SPRV8, "move-m-sprv8", "move", 16,
cf2bf87e 1340 { 0, { { { (1<<MACH_CRISV8), 0 } } } }
f6bcefef
HPN
1341 },
1342/* move [${Rs}${inc}],${Pd} */
1343 {
1344 CRIS_INSN_MOVE_M_SPRV10, "move-m-sprv10", "move", 16,
cf2bf87e 1345 { 0, { { { (1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
1346 },
1347/* move [${Rs}${inc}],${Pd} */
1348 {
1349 CRIS_INSN_MOVE_M_SPRV32, "move-m-sprv32", "move", 16,
cf2bf87e 1350 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef 1351 },
f6bcefef
HPN
1352/* move ${sconst16},${Pd} */
1353 {
1354 CRIS_INSN_MOVE_C_SPRV0_P5, "move-c-sprv0-p5", "move", 32,
cf2bf87e 1355 { 0, { { { (1<<MACH_CRISV0), 0 } } } }
f6bcefef 1356 },
f6bcefef
HPN
1357/* move ${const32},${Pd} */
1358 {
1359 CRIS_INSN_MOVE_C_SPRV0_P9, "move-c-sprv0-p9", "move", 48,
cf2bf87e 1360 { 0, { { { (1<<MACH_CRISV0), 0 } } } }
f6bcefef
HPN
1361 },
1362/* move ${const32},${Pd} */
1363 {
1364 CRIS_INSN_MOVE_C_SPRV0_P10, "move-c-sprv0-p10", "move", 48,
cf2bf87e 1365 { 0, { { { (1<<MACH_CRISV0), 0 } } } }
f6bcefef
HPN
1366 },
1367/* move ${const32},${Pd} */
1368 {
1369 CRIS_INSN_MOVE_C_SPRV0_P11, "move-c-sprv0-p11", "move", 48,
cf2bf87e 1370 { 0, { { { (1<<MACH_CRISV0), 0 } } } }
f6bcefef
HPN
1371 },
1372/* move ${const32},${Pd} */
1373 {
1374 CRIS_INSN_MOVE_C_SPRV0_P12, "move-c-sprv0-p12", "move", 48,
cf2bf87e 1375 { 0, { { { (1<<MACH_CRISV0), 0 } } } }
f6bcefef
HPN
1376 },
1377/* move ${const32},${Pd} */
1378 {
1379 CRIS_INSN_MOVE_C_SPRV0_P13, "move-c-sprv0-p13", "move", 48,
cf2bf87e 1380 { 0, { { { (1<<MACH_CRISV0), 0 } } } }
f6bcefef
HPN
1381 },
1382/* move ${sconst16},${Pd} */
1383 {
1384 CRIS_INSN_MOVE_C_SPRV0_P6, "move-c-sprv0-p6", "move", 32,
cf2bf87e 1385 { 0, { { { (1<<MACH_CRISV0), 0 } } } }
f6bcefef
HPN
1386 },
1387/* move ${sconst16},${Pd} */
1388 {
1389 CRIS_INSN_MOVE_C_SPRV0_P7, "move-c-sprv0-p7", "move", 32,
cf2bf87e 1390 { 0, { { { (1<<MACH_CRISV0), 0 } } } }
f6bcefef 1391 },
f6bcefef
HPN
1392/* move ${sconst16},${Pd} */
1393 {
1394 CRIS_INSN_MOVE_C_SPRV3_P5, "move-c-sprv3-p5", "move", 32,
cf2bf87e 1395 { 0, { { { (1<<MACH_CRISV3), 0 } } } }
f6bcefef 1396 },
f6bcefef
HPN
1397/* move ${const32},${Pd} */
1398 {
1399 CRIS_INSN_MOVE_C_SPRV3_P9, "move-c-sprv3-p9", "move", 48,
cf2bf87e 1400 { 0, { { { (1<<MACH_CRISV3), 0 } } } }
f6bcefef
HPN
1401 },
1402/* move ${const32},${Pd} */
1403 {
1404 CRIS_INSN_MOVE_C_SPRV3_P10, "move-c-sprv3-p10", "move", 48,
cf2bf87e 1405 { 0, { { { (1<<MACH_CRISV3), 0 } } } }
f6bcefef
HPN
1406 },
1407/* move ${const32},${Pd} */
1408 {
1409 CRIS_INSN_MOVE_C_SPRV3_P11, "move-c-sprv3-p11", "move", 48,
cf2bf87e 1410 { 0, { { { (1<<MACH_CRISV3), 0 } } } }
f6bcefef
HPN
1411 },
1412/* move ${const32},${Pd} */
1413 {
1414 CRIS_INSN_MOVE_C_SPRV3_P12, "move-c-sprv3-p12", "move", 48,
cf2bf87e 1415 { 0, { { { (1<<MACH_CRISV3), 0 } } } }
f6bcefef
HPN
1416 },
1417/* move ${const32},${Pd} */
1418 {
1419 CRIS_INSN_MOVE_C_SPRV3_P13, "move-c-sprv3-p13", "move", 48,
cf2bf87e 1420 { 0, { { { (1<<MACH_CRISV3), 0 } } } }
f6bcefef
HPN
1421 },
1422/* move ${sconst16},${Pd} */
1423 {
1424 CRIS_INSN_MOVE_C_SPRV3_P6, "move-c-sprv3-p6", "move", 32,
cf2bf87e 1425 { 0, { { { (1<<MACH_CRISV3), 0 } } } }
f6bcefef
HPN
1426 },
1427/* move ${sconst16},${Pd} */
1428 {
1429 CRIS_INSN_MOVE_C_SPRV3_P7, "move-c-sprv3-p7", "move", 32,
cf2bf87e 1430 { 0, { { { (1<<MACH_CRISV3), 0 } } } }
f6bcefef
HPN
1431 },
1432/* move ${const32},${Pd} */
1433 {
1434 CRIS_INSN_MOVE_C_SPRV3_P14, "move-c-sprv3-p14", "move", 48,
cf2bf87e 1435 { 0, { { { (1<<MACH_CRISV3), 0 } } } }
f6bcefef 1436 },
f6bcefef
HPN
1437/* move ${sconst16},${Pd} */
1438 {
1439 CRIS_INSN_MOVE_C_SPRV8_P5, "move-c-sprv8-p5", "move", 32,
cf2bf87e 1440 { 0, { { { (1<<MACH_CRISV8), 0 } } } }
f6bcefef 1441 },
f6bcefef
HPN
1442/* move ${const32},${Pd} */
1443 {
1444 CRIS_INSN_MOVE_C_SPRV8_P9, "move-c-sprv8-p9", "move", 48,
cf2bf87e 1445 { 0, { { { (1<<MACH_CRISV8), 0 } } } }
f6bcefef
HPN
1446 },
1447/* move ${const32},${Pd} */
1448 {
1449 CRIS_INSN_MOVE_C_SPRV8_P10, "move-c-sprv8-p10", "move", 48,
cf2bf87e 1450 { 0, { { { (1<<MACH_CRISV8), 0 } } } }
f6bcefef
HPN
1451 },
1452/* move ${const32},${Pd} */
1453 {
1454 CRIS_INSN_MOVE_C_SPRV8_P11, "move-c-sprv8-p11", "move", 48,
cf2bf87e 1455 { 0, { { { (1<<MACH_CRISV8), 0 } } } }
f6bcefef
HPN
1456 },
1457/* move ${const32},${Pd} */
1458 {
1459 CRIS_INSN_MOVE_C_SPRV8_P12, "move-c-sprv8-p12", "move", 48,
cf2bf87e 1460 { 0, { { { (1<<MACH_CRISV8), 0 } } } }
f6bcefef
HPN
1461 },
1462/* move ${const32},${Pd} */
1463 {
1464 CRIS_INSN_MOVE_C_SPRV8_P13, "move-c-sprv8-p13", "move", 48,
cf2bf87e 1465 { 0, { { { (1<<MACH_CRISV8), 0 } } } }
f6bcefef
HPN
1466 },
1467/* move ${const32},${Pd} */
1468 {
1469 CRIS_INSN_MOVE_C_SPRV8_P14, "move-c-sprv8-p14", "move", 48,
cf2bf87e 1470 { 0, { { { (1<<MACH_CRISV8), 0 } } } }
f6bcefef 1471 },
f6bcefef
HPN
1472/* move ${sconst16},${Pd} */
1473 {
1474 CRIS_INSN_MOVE_C_SPRV10_P5, "move-c-sprv10-p5", "move", 32,
cf2bf87e 1475 { 0, { { { (1<<MACH_CRISV10), 0 } } } }
f6bcefef 1476 },
f6bcefef
HPN
1477/* move ${const32},${Pd} */
1478 {
1479 CRIS_INSN_MOVE_C_SPRV10_P9, "move-c-sprv10-p9", "move", 48,
cf2bf87e 1480 { 0, { { { (1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
1481 },
1482/* move ${const32},${Pd} */
1483 {
1484 CRIS_INSN_MOVE_C_SPRV10_P10, "move-c-sprv10-p10", "move", 48,
cf2bf87e 1485 { 0, { { { (1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
1486 },
1487/* move ${const32},${Pd} */
1488 {
1489 CRIS_INSN_MOVE_C_SPRV10_P11, "move-c-sprv10-p11", "move", 48,
cf2bf87e 1490 { 0, { { { (1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
1491 },
1492/* move ${const32},${Pd} */
1493 {
1494 CRIS_INSN_MOVE_C_SPRV10_P12, "move-c-sprv10-p12", "move", 48,
cf2bf87e 1495 { 0, { { { (1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
1496 },
1497/* move ${const32},${Pd} */
1498 {
1499 CRIS_INSN_MOVE_C_SPRV10_P13, "move-c-sprv10-p13", "move", 48,
cf2bf87e 1500 { 0, { { { (1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
1501 },
1502/* move ${const32},${Pd} */
1503 {
1504 CRIS_INSN_MOVE_C_SPRV10_P7, "move-c-sprv10-p7", "move", 48,
cf2bf87e 1505 { 0, { { { (1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
1506 },
1507/* move ${const32},${Pd} */
1508 {
1509 CRIS_INSN_MOVE_C_SPRV10_P14, "move-c-sprv10-p14", "move", 48,
cf2bf87e 1510 { 0, { { { (1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
1511 },
1512/* move ${const32},${Pd} */
1513 {
1514 CRIS_INSN_MOVE_C_SPRV10_P15, "move-c-sprv10-p15", "move", 48,
cf2bf87e 1515 { 0, { { { (1<<MACH_CRISV10), 0 } } } }
f6bcefef 1516 },
f6bcefef
HPN
1517/* move ${const32},${Pd} */
1518 {
1519 CRIS_INSN_MOVE_C_SPRV32_P2, "move-c-sprv32-p2", "move", 48,
cf2bf87e 1520 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1521 },
1522/* move ${const32},${Pd} */
1523 {
1524 CRIS_INSN_MOVE_C_SPRV32_P3, "move-c-sprv32-p3", "move", 48,
cf2bf87e 1525 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef 1526 },
f6bcefef
HPN
1527/* move ${const32},${Pd} */
1528 {
1529 CRIS_INSN_MOVE_C_SPRV32_P5, "move-c-sprv32-p5", "move", 48,
cf2bf87e 1530 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1531 },
1532/* move ${const32},${Pd} */
1533 {
1534 CRIS_INSN_MOVE_C_SPRV32_P6, "move-c-sprv32-p6", "move", 48,
cf2bf87e 1535 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1536 },
1537/* move ${const32},${Pd} */
1538 {
1539 CRIS_INSN_MOVE_C_SPRV32_P7, "move-c-sprv32-p7", "move", 48,
cf2bf87e 1540 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef 1541 },
f6bcefef
HPN
1542/* move ${const32},${Pd} */
1543 {
1544 CRIS_INSN_MOVE_C_SPRV32_P9, "move-c-sprv32-p9", "move", 48,
cf2bf87e 1545 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1546 },
1547/* move ${const32},${Pd} */
1548 {
1549 CRIS_INSN_MOVE_C_SPRV32_P10, "move-c-sprv32-p10", "move", 48,
cf2bf87e 1550 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1551 },
1552/* move ${const32},${Pd} */
1553 {
1554 CRIS_INSN_MOVE_C_SPRV32_P11, "move-c-sprv32-p11", "move", 48,
cf2bf87e 1555 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1556 },
1557/* move ${const32},${Pd} */
1558 {
1559 CRIS_INSN_MOVE_C_SPRV32_P12, "move-c-sprv32-p12", "move", 48,
cf2bf87e 1560 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1561 },
1562/* move ${const32},${Pd} */
1563 {
1564 CRIS_INSN_MOVE_C_SPRV32_P13, "move-c-sprv32-p13", "move", 48,
cf2bf87e 1565 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1566 },
1567/* move ${const32},${Pd} */
1568 {
1569 CRIS_INSN_MOVE_C_SPRV32_P14, "move-c-sprv32-p14", "move", 48,
cf2bf87e 1570 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1571 },
1572/* move ${const32},${Pd} */
1573 {
1574 CRIS_INSN_MOVE_C_SPRV32_P15, "move-c-sprv32-p15", "move", 48,
cf2bf87e 1575 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1576 },
1577/* move ${Ps},[${Rd-sfield}${inc}] */
1578 {
1579 CRIS_INSN_MOVE_SPR_MV0, "move-spr-mv0", "move", 16,
cf2bf87e 1580 { 0, { { { (1<<MACH_CRISV0), 0 } } } }
f6bcefef
HPN
1581 },
1582/* move ${Ps},[${Rd-sfield}${inc}] */
1583 {
1584 CRIS_INSN_MOVE_SPR_MV3, "move-spr-mv3", "move", 16,
cf2bf87e 1585 { 0, { { { (1<<MACH_CRISV3), 0 } } } }
f6bcefef
HPN
1586 },
1587/* move ${Ps},[${Rd-sfield}${inc}] */
1588 {
1589 CRIS_INSN_MOVE_SPR_MV8, "move-spr-mv8", "move", 16,
cf2bf87e 1590 { 0, { { { (1<<MACH_CRISV8), 0 } } } }
f6bcefef
HPN
1591 },
1592/* move ${Ps},[${Rd-sfield}${inc}] */
1593 {
1594 CRIS_INSN_MOVE_SPR_MV10, "move-spr-mv10", "move", 16,
cf2bf87e 1595 { 0, { { { (1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
1596 },
1597/* move ${Ps},[${Rd-sfield}${inc}] */
1598 {
1599 CRIS_INSN_MOVE_SPR_MV32, "move-spr-mv32", "move", 16,
cf2bf87e 1600 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1601 },
1602/* sbfs [${Rd-sfield}${inc}] */
1603 {
1604 CRIS_INSN_SBFS, "sbfs", "sbfs", 16,
cf2bf87e 1605 { 0, { { { (1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
1606 },
1607/* move ${Ss},${Rd-sfield} */
1608 {
1609 CRIS_INSN_MOVE_SS_R, "move-ss-r", "move", 16,
cf2bf87e 1610 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1611 },
1612/* move ${Rs},${Sd} */
1613 {
1614 CRIS_INSN_MOVE_R_SS, "move-r-ss", "move", 16,
cf2bf87e 1615 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1616 },
1617/* movem ${Rs-dfield},[${Rd-sfield}${inc}] */
1618 {
1619 CRIS_INSN_MOVEM_R_M, "movem-r-m", "movem", 16,
cf2bf87e 1620 { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
1621 },
1622/* movem ${Rs-dfield},[${Rd-sfield}${inc}] */
1623 {
1624 CRIS_INSN_MOVEM_R_M_V32, "movem-r-m-v32", "movem", 16,
cf2bf87e 1625 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1626 },
1627/* movem [${Rs}${inc}],${Rd} */
1628 {
1629 CRIS_INSN_MOVEM_M_R, "movem-m-r", "movem", 16,
cf2bf87e 1630 { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
1631 },
1632/* movem [${Rs}${inc}],${Rd} */
1633 {
1634 CRIS_INSN_MOVEM_M_PC, "movem-m-pc", "movem", 16,
cf2bf87e 1635 { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
1636 },
1637/* movem [${Rs}${inc}],${Rd} */
1638 {
1639 CRIS_INSN_MOVEM_M_R_V32, "movem-m-r-v32", "movem", 16,
cf2bf87e 1640 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1641 },
1642/* add.b $Rs,$Rd */
1643 {
1644 CRIS_INSN_ADD_B_R, "add.b-r", "add.b", 16,
cf2bf87e 1645 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1646 },
1647/* add.w $Rs,$Rd */
1648 {
1649 CRIS_INSN_ADD_W_R, "add.w-r", "add.w", 16,
cf2bf87e 1650 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1651 },
1652/* add.d $Rs,$Rd */
1653 {
1654 CRIS_INSN_ADD_D_R, "add.d-r", "add.d", 16,
cf2bf87e 1655 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1656 },
1657/* add-m.b [${Rs}${inc}],${Rd} */
1658 {
1659 CRIS_INSN_ADD_M_B_M, "add-m.b-m", "add-m.b", 16,
cf2bf87e 1660 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1661 },
1662/* add-m.w [${Rs}${inc}],${Rd} */
1663 {
1664 CRIS_INSN_ADD_M_W_M, "add-m.w-m", "add-m.w", 16,
cf2bf87e 1665 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1666 },
1667/* add-m.d [${Rs}${inc}],${Rd} */
1668 {
1669 CRIS_INSN_ADD_M_D_M, "add-m.d-m", "add-m.d", 16,
cf2bf87e 1670 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1671 },
1672/* add.b ${sconst8}],${Rd} */
1673 {
1674 CRIS_INSN_ADDCBR, "addcbr", "add.b", 32,
cf2bf87e 1675 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1676 },
1677/* add.w ${sconst16}],${Rd} */
1678 {
1679 CRIS_INSN_ADDCWR, "addcwr", "add.w", 32,
cf2bf87e 1680 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1681 },
1682/* add.d ${const32}],${Rd} */
1683 {
1684 CRIS_INSN_ADDCDR, "addcdr", "add.d", 48,
cf2bf87e 1685 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1686 },
1687/* add.d ${sconst32},PC */
1688 {
1689 CRIS_INSN_ADDCPC, "addcpc", "add.d", 48,
cf2bf87e 1690 { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
1691 },
1692/* adds.b $Rs,$Rd */
1693 {
1694 CRIS_INSN_ADDS_B_R, "adds.b-r", "adds.b", 16,
cf2bf87e 1695 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1696 },
1697/* adds.w $Rs,$Rd */
1698 {
1699 CRIS_INSN_ADDS_W_R, "adds.w-r", "adds.w", 16,
cf2bf87e 1700 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1701 },
1702/* adds-m.b [${Rs}${inc}],$Rd */
1703 {
1704 CRIS_INSN_ADDS_M_B_M, "adds-m.b-m", "adds-m.b", 16,
cf2bf87e 1705 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1706 },
1707/* adds-m.w [${Rs}${inc}],$Rd */
1708 {
1709 CRIS_INSN_ADDS_M_W_M, "adds-m.w-m", "adds-m.w", 16,
cf2bf87e 1710 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1711 },
1712/* [${Rs}${inc}],$Rd */
1713 {
1714 CRIS_INSN_ADDSCBR, "addscbr", "[", 32,
cf2bf87e 1715 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1716 },
1717/* [${Rs}${inc}],$Rd */
1718 {
1719 CRIS_INSN_ADDSCWR, "addscwr", "[", 32,
cf2bf87e 1720 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1721 },
1722/* adds.w [PC],PC */
1723 {
1724 CRIS_INSN_ADDSPCPC, "addspcpc", "adds.w", 16,
cf2bf87e 1725 { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
1726 },
1727/* addu.b $Rs,$Rd */
1728 {
1729 CRIS_INSN_ADDU_B_R, "addu.b-r", "addu.b", 16,
cf2bf87e 1730 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1731 },
1732/* addu.w $Rs,$Rd */
1733 {
1734 CRIS_INSN_ADDU_W_R, "addu.w-r", "addu.w", 16,
cf2bf87e 1735 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1736 },
1737/* addu-m.b [${Rs}${inc}],$Rd */
1738 {
1739 CRIS_INSN_ADDU_M_B_M, "addu-m.b-m", "addu-m.b", 16,
cf2bf87e 1740 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1741 },
1742/* addu-m.w [${Rs}${inc}],$Rd */
1743 {
1744 CRIS_INSN_ADDU_M_W_M, "addu-m.w-m", "addu-m.w", 16,
cf2bf87e 1745 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1746 },
1747/* [${Rs}${inc}],$Rd */
1748 {
1749 CRIS_INSN_ADDUCBR, "adducbr", "[", 32,
cf2bf87e 1750 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1751 },
1752/* [${Rs}${inc}],$Rd */
1753 {
1754 CRIS_INSN_ADDUCWR, "adducwr", "[", 32,
cf2bf87e 1755 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1756 },
1757/* sub.b $Rs,$Rd */
1758 {
1759 CRIS_INSN_SUB_B_R, "sub.b-r", "sub.b", 16,
cf2bf87e 1760 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1761 },
1762/* sub.w $Rs,$Rd */
1763 {
1764 CRIS_INSN_SUB_W_R, "sub.w-r", "sub.w", 16,
cf2bf87e 1765 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1766 },
1767/* sub.d $Rs,$Rd */
1768 {
1769 CRIS_INSN_SUB_D_R, "sub.d-r", "sub.d", 16,
cf2bf87e 1770 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1771 },
1772/* sub-m.b [${Rs}${inc}],${Rd} */
1773 {
1774 CRIS_INSN_SUB_M_B_M, "sub-m.b-m", "sub-m.b", 16,
cf2bf87e 1775 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1776 },
1777/* sub-m.w [${Rs}${inc}],${Rd} */
1778 {
1779 CRIS_INSN_SUB_M_W_M, "sub-m.w-m", "sub-m.w", 16,
cf2bf87e 1780 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1781 },
1782/* sub-m.d [${Rs}${inc}],${Rd} */
1783 {
1784 CRIS_INSN_SUB_M_D_M, "sub-m.d-m", "sub-m.d", 16,
cf2bf87e 1785 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1786 },
1787/* sub.b ${sconst8}],${Rd} */
1788 {
1789 CRIS_INSN_SUBCBR, "subcbr", "sub.b", 32,
cf2bf87e 1790 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1791 },
1792/* sub.w ${sconst16}],${Rd} */
1793 {
1794 CRIS_INSN_SUBCWR, "subcwr", "sub.w", 32,
cf2bf87e 1795 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1796 },
1797/* sub.d ${const32}],${Rd} */
1798 {
1799 CRIS_INSN_SUBCDR, "subcdr", "sub.d", 48,
cf2bf87e 1800 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1801 },
1802/* subs.b $Rs,$Rd */
1803 {
1804 CRIS_INSN_SUBS_B_R, "subs.b-r", "subs.b", 16,
cf2bf87e 1805 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1806 },
1807/* subs.w $Rs,$Rd */
1808 {
1809 CRIS_INSN_SUBS_W_R, "subs.w-r", "subs.w", 16,
cf2bf87e 1810 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1811 },
1812/* subs-m.b [${Rs}${inc}],$Rd */
1813 {
1814 CRIS_INSN_SUBS_M_B_M, "subs-m.b-m", "subs-m.b", 16,
cf2bf87e 1815 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1816 },
1817/* subs-m.w [${Rs}${inc}],$Rd */
1818 {
1819 CRIS_INSN_SUBS_M_W_M, "subs-m.w-m", "subs-m.w", 16,
cf2bf87e 1820 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1821 },
1822/* [${Rs}${inc}],$Rd */
1823 {
1824 CRIS_INSN_SUBSCBR, "subscbr", "[", 32,
cf2bf87e 1825 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1826 },
1827/* [${Rs}${inc}],$Rd */
1828 {
1829 CRIS_INSN_SUBSCWR, "subscwr", "[", 32,
cf2bf87e 1830 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1831 },
1832/* subu.b $Rs,$Rd */
1833 {
1834 CRIS_INSN_SUBU_B_R, "subu.b-r", "subu.b", 16,
cf2bf87e 1835 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1836 },
1837/* subu.w $Rs,$Rd */
1838 {
1839 CRIS_INSN_SUBU_W_R, "subu.w-r", "subu.w", 16,
cf2bf87e 1840 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1841 },
1842/* subu-m.b [${Rs}${inc}],$Rd */
1843 {
1844 CRIS_INSN_SUBU_M_B_M, "subu-m.b-m", "subu-m.b", 16,
cf2bf87e 1845 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1846 },
1847/* subu-m.w [${Rs}${inc}],$Rd */
1848 {
1849 CRIS_INSN_SUBU_M_W_M, "subu-m.w-m", "subu-m.w", 16,
cf2bf87e 1850 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1851 },
1852/* [${Rs}${inc}],$Rd */
1853 {
1854 CRIS_INSN_SUBUCBR, "subucbr", "[", 32,
cf2bf87e 1855 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1856 },
1857/* [${Rs}${inc}],$Rd */
1858 {
1859 CRIS_INSN_SUBUCWR, "subucwr", "[", 32,
cf2bf87e 1860 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1861 },
1862/* addc $Rs,$Rd */
1863 {
1864 CRIS_INSN_ADDC_R, "addc-r", "addc", 16,
cf2bf87e 1865 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1866 },
1867/* addc [${Rs}${inc}],${Rd} */
1868 {
1869 CRIS_INSN_ADDC_M, "addc-m", "addc", 16,
cf2bf87e 1870 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1871 },
1872/* addc ${const32},${Rd} */
1873 {
1874 CRIS_INSN_ADDC_C, "addc-c", "addc", 48,
cf2bf87e 1875 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1876 },
1877/* lapc.d ${const32-pcrel},${Rd} */
1878 {
1879 CRIS_INSN_LAPC_D, "lapc-d", "lapc.d", 48,
cf2bf87e 1880 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1881 },
1882/* lapcq ${qo},${Rd} */
1883 {
1884 CRIS_INSN_LAPCQ, "lapcq", "lapcq", 16,
cf2bf87e 1885 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1886 },
1887/* addi.b ${Rs-dfield}.m,${Rd-sfield} */
1888 {
1889 CRIS_INSN_ADDI_B_R, "addi.b-r", "addi.b", 16,
cf2bf87e 1890 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1891 },
1892/* addi.w ${Rs-dfield}.m,${Rd-sfield} */
1893 {
1894 CRIS_INSN_ADDI_W_R, "addi.w-r", "addi.w", 16,
cf2bf87e 1895 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1896 },
1897/* addi.d ${Rs-dfield}.m,${Rd-sfield} */
1898 {
1899 CRIS_INSN_ADDI_D_R, "addi.d-r", "addi.d", 16,
cf2bf87e 1900 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1901 },
1902/* neg.b $Rs,$Rd */
1903 {
1904 CRIS_INSN_NEG_B_R, "neg.b-r", "neg.b", 16,
cf2bf87e 1905 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1906 },
1907/* neg.w $Rs,$Rd */
1908 {
1909 CRIS_INSN_NEG_W_R, "neg.w-r", "neg.w", 16,
cf2bf87e 1910 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1911 },
1912/* neg.d $Rs,$Rd */
1913 {
1914 CRIS_INSN_NEG_D_R, "neg.d-r", "neg.d", 16,
cf2bf87e 1915 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1916 },
1917/* test-m.b [${Rs}${inc}] */
1918 {
1919 CRIS_INSN_TEST_M_B_M, "test-m.b-m", "test-m.b", 16,
cf2bf87e 1920 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1921 },
1922/* test-m.w [${Rs}${inc}] */
1923 {
1924 CRIS_INSN_TEST_M_W_M, "test-m.w-m", "test-m.w", 16,
cf2bf87e 1925 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1926 },
1927/* test-m.d [${Rs}${inc}] */
1928 {
1929 CRIS_INSN_TEST_M_D_M, "test-m.d-m", "test-m.d", 16,
cf2bf87e 1930 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1931 },
1932/* move-r-m.b ${Rs-dfield},[${Rd-sfield}${inc}] */
1933 {
1934 CRIS_INSN_MOVE_R_M_B_M, "move-r-m.b-m", "move-r-m.b", 16,
cf2bf87e 1935 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1936 },
1937/* move-r-m.w ${Rs-dfield},[${Rd-sfield}${inc}] */
1938 {
1939 CRIS_INSN_MOVE_R_M_W_M, "move-r-m.w-m", "move-r-m.w", 16,
cf2bf87e 1940 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1941 },
1942/* move-r-m.d ${Rs-dfield},[${Rd-sfield}${inc}] */
1943 {
1944 CRIS_INSN_MOVE_R_M_D_M, "move-r-m.d-m", "move-r-m.d", 16,
cf2bf87e 1945 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1946 },
1947/* muls.b $Rs,$Rd */
1948 {
1949 CRIS_INSN_MULS_B, "muls.b", "muls.b", 16,
cf2bf87e 1950 { 0, { { { (1<<MACH_CRISV10)|(1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1951 },
1952/* muls.w $Rs,$Rd */
1953 {
1954 CRIS_INSN_MULS_W, "muls.w", "muls.w", 16,
cf2bf87e 1955 { 0, { { { (1<<MACH_CRISV10)|(1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1956 },
1957/* muls.d $Rs,$Rd */
1958 {
1959 CRIS_INSN_MULS_D, "muls.d", "muls.d", 16,
cf2bf87e 1960 { 0, { { { (1<<MACH_CRISV10)|(1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1961 },
1962/* mulu.b $Rs,$Rd */
1963 {
1964 CRIS_INSN_MULU_B, "mulu.b", "mulu.b", 16,
cf2bf87e 1965 { 0, { { { (1<<MACH_CRISV10)|(1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1966 },
1967/* mulu.w $Rs,$Rd */
1968 {
1969 CRIS_INSN_MULU_W, "mulu.w", "mulu.w", 16,
cf2bf87e 1970 { 0, { { { (1<<MACH_CRISV10)|(1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1971 },
1972/* mulu.d $Rs,$Rd */
1973 {
1974 CRIS_INSN_MULU_D, "mulu.d", "mulu.d", 16,
cf2bf87e 1975 { 0, { { { (1<<MACH_CRISV10)|(1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1976 },
1977/* mcp $Ps,$Rd */
1978 {
1979 CRIS_INSN_MCP, "mcp", "mcp", 16,
cf2bf87e 1980 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
1981 },
1982/* mstep $Rs,$Rd */
1983 {
1984 CRIS_INSN_MSTEP, "mstep", "mstep", 16,
cf2bf87e 1985 { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
1986 },
1987/* dstep $Rs,$Rd */
1988 {
1989 CRIS_INSN_DSTEP, "dstep", "dstep", 16,
cf2bf87e 1990 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1991 },
1992/* abs $Rs,$Rd */
1993 {
1994 CRIS_INSN_ABS, "abs", "abs", 16,
cf2bf87e 1995 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
1996 },
1997/* and.b $Rs,$Rd */
1998 {
1999 CRIS_INSN_AND_B_R, "and.b-r", "and.b", 16,
cf2bf87e 2000 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2001 },
2002/* and.w $Rs,$Rd */
2003 {
2004 CRIS_INSN_AND_W_R, "and.w-r", "and.w", 16,
cf2bf87e 2005 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2006 },
2007/* and.d $Rs,$Rd */
2008 {
2009 CRIS_INSN_AND_D_R, "and.d-r", "and.d", 16,
cf2bf87e 2010 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2011 },
2012/* and-m.b [${Rs}${inc}],${Rd} */
2013 {
2014 CRIS_INSN_AND_M_B_M, "and-m.b-m", "and-m.b", 16,
cf2bf87e 2015 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2016 },
2017/* and-m.w [${Rs}${inc}],${Rd} */
2018 {
2019 CRIS_INSN_AND_M_W_M, "and-m.w-m", "and-m.w", 16,
cf2bf87e 2020 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2021 },
2022/* and-m.d [${Rs}${inc}],${Rd} */
2023 {
2024 CRIS_INSN_AND_M_D_M, "and-m.d-m", "and-m.d", 16,
cf2bf87e 2025 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2026 },
2027/* and.b ${sconst8}],${Rd} */
2028 {
2029 CRIS_INSN_ANDCBR, "andcbr", "and.b", 32,
cf2bf87e 2030 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2031 },
2032/* and.w ${sconst16}],${Rd} */
2033 {
2034 CRIS_INSN_ANDCWR, "andcwr", "and.w", 32,
cf2bf87e 2035 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2036 },
2037/* and.d ${const32}],${Rd} */
2038 {
2039 CRIS_INSN_ANDCDR, "andcdr", "and.d", 48,
cf2bf87e 2040 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2041 },
2042/* andq $i,$Rd */
2043 {
2044 CRIS_INSN_ANDQ, "andq", "andq", 16,
cf2bf87e 2045 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2046 },
2047/* orr.b $Rs,$Rd */
2048 {
2049 CRIS_INSN_ORR_B_R, "orr.b-r", "orr.b", 16,
cf2bf87e 2050 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2051 },
2052/* orr.w $Rs,$Rd */
2053 {
2054 CRIS_INSN_ORR_W_R, "orr.w-r", "orr.w", 16,
cf2bf87e 2055 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2056 },
2057/* orr.d $Rs,$Rd */
2058 {
2059 CRIS_INSN_ORR_D_R, "orr.d-r", "orr.d", 16,
cf2bf87e 2060 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2061 },
2062/* or-m.b [${Rs}${inc}],${Rd} */
2063 {
2064 CRIS_INSN_OR_M_B_M, "or-m.b-m", "or-m.b", 16,
cf2bf87e 2065 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2066 },
2067/* or-m.w [${Rs}${inc}],${Rd} */
2068 {
2069 CRIS_INSN_OR_M_W_M, "or-m.w-m", "or-m.w", 16,
cf2bf87e 2070 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2071 },
2072/* or-m.d [${Rs}${inc}],${Rd} */
2073 {
2074 CRIS_INSN_OR_M_D_M, "or-m.d-m", "or-m.d", 16,
cf2bf87e 2075 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2076 },
2077/* or.b ${sconst8}],${Rd} */
2078 {
2079 CRIS_INSN_ORCBR, "orcbr", "or.b", 32,
cf2bf87e 2080 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2081 },
2082/* or.w ${sconst16}],${Rd} */
2083 {
2084 CRIS_INSN_ORCWR, "orcwr", "or.w", 32,
cf2bf87e 2085 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2086 },
2087/* or.d ${const32}],${Rd} */
2088 {
2089 CRIS_INSN_ORCDR, "orcdr", "or.d", 48,
cf2bf87e 2090 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2091 },
2092/* orq $i,$Rd */
2093 {
2094 CRIS_INSN_ORQ, "orq", "orq", 16,
cf2bf87e 2095 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2096 },
2097/* xor $Rs,$Rd */
2098 {
2099 CRIS_INSN_XOR, "xor", "xor", 16,
cf2bf87e 2100 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2101 },
2102/* not ${Rs} */
2103 {
2104 CRIS_INSN_NOT, "not", "not", 16,
cf2bf87e 2105 { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3), 0 } } } }
f6bcefef
HPN
2106 },
2107/* swap${swapoption} ${Rs} */
2108 {
2109 CRIS_INSN_SWAP, "swap", "swap", 16,
cf2bf87e 2110 { 0, { { { (1<<MACH_CRISV8)|(1<<MACH_CRISV10)|(1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
2111 },
2112/* asrr.b $Rs,$Rd */
2113 {
2114 CRIS_INSN_ASRR_B_R, "asrr.b-r", "asrr.b", 16,
cf2bf87e 2115 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2116 },
2117/* asrr.w $Rs,$Rd */
2118 {
2119 CRIS_INSN_ASRR_W_R, "asrr.w-r", "asrr.w", 16,
cf2bf87e 2120 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2121 },
2122/* asrr.d $Rs,$Rd */
2123 {
2124 CRIS_INSN_ASRR_D_R, "asrr.d-r", "asrr.d", 16,
cf2bf87e 2125 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2126 },
2127/* asrq $c,${Rd} */
2128 {
2129 CRIS_INSN_ASRQ, "asrq", "asrq", 16,
cf2bf87e 2130 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2131 },
2132/* lsrr.b $Rs,$Rd */
2133 {
2134 CRIS_INSN_LSRR_B_R, "lsrr.b-r", "lsrr.b", 16,
cf2bf87e 2135 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2136 },
2137/* lsrr.w $Rs,$Rd */
2138 {
2139 CRIS_INSN_LSRR_W_R, "lsrr.w-r", "lsrr.w", 16,
cf2bf87e 2140 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2141 },
2142/* lsrr.d $Rs,$Rd */
2143 {
2144 CRIS_INSN_LSRR_D_R, "lsrr.d-r", "lsrr.d", 16,
cf2bf87e 2145 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2146 },
2147/* lsrq $c,${Rd} */
2148 {
2149 CRIS_INSN_LSRQ, "lsrq", "lsrq", 16,
cf2bf87e 2150 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2151 },
2152/* lslr.b $Rs,$Rd */
2153 {
2154 CRIS_INSN_LSLR_B_R, "lslr.b-r", "lslr.b", 16,
cf2bf87e 2155 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2156 },
2157/* lslr.w $Rs,$Rd */
2158 {
2159 CRIS_INSN_LSLR_W_R, "lslr.w-r", "lslr.w", 16,
cf2bf87e 2160 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2161 },
2162/* lslr.d $Rs,$Rd */
2163 {
2164 CRIS_INSN_LSLR_D_R, "lslr.d-r", "lslr.d", 16,
cf2bf87e 2165 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2166 },
2167/* lslq $c,${Rd} */
2168 {
2169 CRIS_INSN_LSLQ, "lslq", "lslq", 16,
cf2bf87e 2170 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2171 },
2172/* $Rs,$Rd */
2173 {
2174 CRIS_INSN_BTST, "btst", "", 16,
cf2bf87e 2175 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2176 },
2177/* btstq $c,${Rd} */
2178 {
2179 CRIS_INSN_BTSTQ, "btstq", "btstq", 16,
cf2bf87e 2180 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2181 },
2182/* setf ${list-of-flags} */
2183 {
2184 CRIS_INSN_SETF, "setf", "setf", 16,
cf2bf87e 2185 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2186 },
2187/* clearf ${list-of-flags} */
2188 {
2189 CRIS_INSN_CLEARF, "clearf", "clearf", 16,
cf2bf87e 2190 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2191 },
2192/* rfe */
2193 {
2194 CRIS_INSN_RFE, "rfe", "rfe", 16,
cf2bf87e 2195 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
2196 },
2197/* sfe */
2198 {
2199 CRIS_INSN_SFE, "sfe", "sfe", 16,
cf2bf87e 2200 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
2201 },
2202/* rfg */
2203 {
2204 CRIS_INSN_RFG, "rfg", "rfg", 16,
cf2bf87e 2205 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
2206 },
2207/* rfn */
2208 {
2209 CRIS_INSN_RFN, "rfn", "rfn", 16,
cf2bf87e 2210 { 0, { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
2211 },
2212/* halt */
2213 {
2214 CRIS_INSN_HALT, "halt", "halt", 16,
cf2bf87e 2215 { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
2216 },
2217/* b${cc} ${o-pcrel} */
2218 {
2219 CRIS_INSN_BCC_B, "bcc-b", "b", 16,
cf2bf87e 2220 { 0|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2221 },
2222/* ba ${o-pcrel} */
2223 {
2224 CRIS_INSN_BA_B, "ba-b", "ba", 16,
cf2bf87e 2225 { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2226 },
2227/* b${cc} ${o-word-pcrel} */
2228 {
2229 CRIS_INSN_BCC_W, "bcc-w", "b", 32,
cf2bf87e 2230 { 0|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2231 },
2232/* ba ${o-word-pcrel} */
2233 {
2234 CRIS_INSN_BA_W, "ba-w", "ba", 32,
cf2bf87e 2235 { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2236 },
2237/* jas ${Rs},${Pd} */
2238 {
2239 CRIS_INSN_JAS_R, "jas-r", "jas", 16,
cf2bf87e 2240 { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
2241 },
2242/* jump/jsr/jir ${Rs} */
2243 {
2244 CRIS_INSN_JUMP_R, "jump-r", "jump/jsr/jir", 16,
cf2bf87e 2245 { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
2246 },
2247/* jas ${const32},${Pd} */
2248 {
2249 CRIS_INSN_JAS_C, "jas-c", "jas", 48,
cf2bf87e 2250 { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
2251 },
2252/* jump/jsr/jir [${Rs}${inc}] */
2253 {
2254 CRIS_INSN_JUMP_M, "jump-m", "jump/jsr/jir", 16,
cf2bf87e 2255 { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
2256 },
2257/* jump/jsr/jir ${const32} */
2258 {
2259 CRIS_INSN_JUMP_C, "jump-c", "jump/jsr/jir", 48,
cf2bf87e 2260 { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
2261 },
2262/* jump ${Ps} */
2263 {
2264 CRIS_INSN_JUMP_P, "jump-p", "jump", 16,
cf2bf87e 2265 { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
2266 },
2267/* bas ${const32},${Pd} */
2268 {
2269 CRIS_INSN_BAS_C, "bas-c", "bas", 48,
cf2bf87e 2270 { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
2271 },
2272/* jasc ${Rs},${Pd} */
2273 {
2274 CRIS_INSN_JASC_R, "jasc-r", "jasc", 16,
cf2bf87e 2275 { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
2276 },
2277/* jasc ${const32},${Pd} */
2278 {
2279 CRIS_INSN_JASC_C, "jasc-c", "jasc", 48,
cf2bf87e 2280 { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
2281 },
2282/* basc ${const32},${Pd} */
2283 {
2284 CRIS_INSN_BASC_C, "basc-c", "basc", 48,
cf2bf87e 2285 { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
2286 },
2287/* break $n */
2288 {
2289 CRIS_INSN_BREAK, "break", "break", 16,
cf2bf87e 2290 { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2291 },
2292/* bound-r.b ${Rs},${Rd} */
2293 {
2294 CRIS_INSN_BOUND_R_B_R, "bound-r.b-r", "bound-r.b", 16,
cf2bf87e 2295 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2296 },
2297/* bound-r.w ${Rs},${Rd} */
2298 {
2299 CRIS_INSN_BOUND_R_W_R, "bound-r.w-r", "bound-r.w", 16,
cf2bf87e 2300 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2301 },
2302/* bound-r.d ${Rs},${Rd} */
2303 {
2304 CRIS_INSN_BOUND_R_D_R, "bound-r.d-r", "bound-r.d", 16,
cf2bf87e 2305 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2306 },
2307/* bound-m.b [${Rs}${inc}],${Rd} */
2308 {
2309 CRIS_INSN_BOUND_M_B_M, "bound-m.b-m", "bound-m.b", 16,
cf2bf87e 2310 { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
2311 },
2312/* bound-m.w [${Rs}${inc}],${Rd} */
2313 {
2314 CRIS_INSN_BOUND_M_W_M, "bound-m.w-m", "bound-m.w", 16,
cf2bf87e 2315 { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
2316 },
2317/* bound-m.d [${Rs}${inc}],${Rd} */
2318 {
2319 CRIS_INSN_BOUND_M_D_M, "bound-m.d-m", "bound-m.d", 16,
cf2bf87e 2320 { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
2321 },
2322/* bound.b [PC+],${Rd} */
2323 {
2324 CRIS_INSN_BOUND_CB, "bound-cb", "bound.b", 32,
cf2bf87e 2325 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2326 },
2327/* bound.w [PC+],${Rd} */
2328 {
2329 CRIS_INSN_BOUND_CW, "bound-cw", "bound.w", 32,
cf2bf87e 2330 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2331 },
2332/* bound.d [PC+],${Rd} */
2333 {
2334 CRIS_INSN_BOUND_CD, "bound-cd", "bound.d", 48,
cf2bf87e 2335 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2336 },
2337/* s${cc} ${Rd-sfield} */
2338 {
2339 CRIS_INSN_SCC, "scc", "s", 16,
cf2bf87e 2340 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2341 },
2342/* lz ${Rs},${Rd} */
2343 {
2344 CRIS_INSN_LZ, "lz", "lz", 16,
cf2bf87e 2345 { 0, { { { (1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10)|(1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
2346 },
2347/* addoq $o,$Rs,ACR */
2348 {
2349 CRIS_INSN_ADDOQ, "addoq", "addoq", 16,
cf2bf87e 2350 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2351 },
2352/* bdapq $o,PC */
2353 {
2354 CRIS_INSN_BDAPQPC, "bdapqpc", "bdapq", 16,
cf2bf87e 2355 { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
f6bcefef 2356 },
392753ae
HPN
2357/* bdap ${sconst32},PC */
2358 {
2359 CRIS_INSN_BDAP_32_PC, "bdap-32-pc", "bdap", 48,
2360 { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
2361 },
2362/* move [PC+],P0 */
2363 {
2364 CRIS_INSN_MOVE_M_PCPLUS_P0, "move-m-pcplus-p0", "move", 16,
2365 { 0|A(COND_CTI), { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
2366 },
2367/* move [SP+],P8 */
2368 {
2369 CRIS_INSN_MOVE_M_SPPLUS_P8, "move-m-spplus-p8", "move", 16,
2370 { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
2371 },
f6bcefef
HPN
2372/* addo-m.b [${Rs}${inc}],$Rd,ACR */
2373 {
2374 CRIS_INSN_ADDO_M_B_M, "addo-m.b-m", "addo-m.b", 16,
cf2bf87e 2375 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2376 },
2377/* addo-m.w [${Rs}${inc}],$Rd,ACR */
2378 {
2379 CRIS_INSN_ADDO_M_W_M, "addo-m.w-m", "addo-m.w", 16,
cf2bf87e 2380 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2381 },
2382/* addo-m.d [${Rs}${inc}],$Rd,ACR */
2383 {
2384 CRIS_INSN_ADDO_M_D_M, "addo-m.d-m", "addo-m.d", 16,
cf2bf87e 2385 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2386 },
2387/* addo.b [PC+],$Rd,ACR */
2388 {
2389 CRIS_INSN_ADDO_CB, "addo-cb", "addo.b", 32,
cf2bf87e 2390 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2391 },
2392/* addo.w [PC+],$Rd,ACR */
2393 {
2394 CRIS_INSN_ADDO_CW, "addo-cw", "addo.w", 32,
cf2bf87e 2395 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2396 },
2397/* addo.d [PC+],$Rd,ACR */
2398 {
2399 CRIS_INSN_ADDO_CD, "addo-cd", "addo.d", 48,
cf2bf87e 2400 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2401 },
2402/* dip [${Rs}${inc}] */
2403 {
2404 CRIS_INSN_DIP_M, "dip-m", "dip", 16,
cf2bf87e 2405 { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
2406 },
2407/* dip [PC+] */
2408 {
2409 CRIS_INSN_DIP_C, "dip-c", "dip", 48,
cf2bf87e 2410 { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
2411 },
2412/* addi-acr.b ${Rs-dfield}.m,${Rd-sfield},ACR */
2413 {
2414 CRIS_INSN_ADDI_ACR_B_R, "addi-acr.b-r", "addi-acr.b", 16,
cf2bf87e 2415 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2416 },
2417/* addi-acr.w ${Rs-dfield}.m,${Rd-sfield},ACR */
2418 {
2419 CRIS_INSN_ADDI_ACR_W_R, "addi-acr.w-r", "addi-acr.w", 16,
cf2bf87e 2420 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2421 },
2422/* addi-acr.d ${Rs-dfield}.m,${Rd-sfield},ACR */
2423 {
2424 CRIS_INSN_ADDI_ACR_D_R, "addi-acr.d-r", "addi-acr.d", 16,
cf2bf87e 2425 { 0, { { { (1<<MACH_BASE), 0 } } } }
f6bcefef
HPN
2426 },
2427/* biap-pc.b ${Rs-dfield}.m,PC */
2428 {
2429 CRIS_INSN_BIAP_PC_B_R, "biap-pc.b-r", "biap-pc.b", 16,
cf2bf87e 2430 { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
2431 },
2432/* biap-pc.w ${Rs-dfield}.m,PC */
2433 {
2434 CRIS_INSN_BIAP_PC_W_R, "biap-pc.w-r", "biap-pc.w", 16,
cf2bf87e 2435 { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
2436 },
2437/* biap-pc.d ${Rs-dfield}.m,PC */
2438 {
2439 CRIS_INSN_BIAP_PC_D_R, "biap-pc.d-r", "biap-pc.d", 16,
cf2bf87e 2440 { 0, { { { (1<<MACH_CRISV0)|(1<<MACH_CRISV3)|(1<<MACH_CRISV8)|(1<<MACH_CRISV10), 0 } } } }
f6bcefef
HPN
2441 },
2442/* fidxi [$Rs] */
2443 {
2444 CRIS_INSN_FIDXI, "fidxi", "fidxi", 16,
cf2bf87e 2445 { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
2446 },
2447/* fidxi [$Rs] */
2448 {
2449 CRIS_INSN_FTAGI, "ftagi", "fidxi", 16,
cf2bf87e 2450 { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
2451 },
2452/* fidxd [$Rs] */
2453 {
2454 CRIS_INSN_FIDXD, "fidxd", "fidxd", 16,
cf2bf87e 2455 { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
2456 },
2457/* ftagd [$Rs] */
2458 {
2459 CRIS_INSN_FTAGD, "ftagd", "ftagd", 16,
cf2bf87e 2460 { 0|A(UNCOND_CTI), { { { (1<<MACH_CRISV32), 0 } } } }
f6bcefef
HPN
2461 },
2462};
2463
2464#undef OP
2465#undef A
2466
2467/* Initialize anything needed to be done once, before any cpu_open call. */
f6bcefef
HPN
2468
2469static void
cf2bf87e 2470init_tables (void)
f6bcefef
HPN
2471{
2472}
2473
cf2bf87e
HPN
2474static const CGEN_MACH * lookup_mach_via_bfd_name (const CGEN_MACH *, const char *);
2475static void build_hw_table (CGEN_CPU_TABLE *);
2476static void build_ifield_table (CGEN_CPU_TABLE *);
2477static void build_operand_table (CGEN_CPU_TABLE *);
2478static void build_insn_table (CGEN_CPU_TABLE *);
2479static void cris_cgen_rebuild_tables (CGEN_CPU_TABLE *);
f6bcefef
HPN
2480
2481/* Subroutine of cris_cgen_cpu_open to look up a mach via its bfd name. */
2482
2483static const CGEN_MACH *
cf2bf87e 2484lookup_mach_via_bfd_name (const CGEN_MACH *table, const char *name)
f6bcefef
HPN
2485{
2486 while (table->name)
2487 {
2488 if (strcmp (name, table->bfd_name) == 0)
2489 return table;
2490 ++table;
2491 }
2492 abort ();
2493}
2494
2495/* Subroutine of cris_cgen_cpu_open to build the hardware table. */
2496
2497static void
cf2bf87e 2498build_hw_table (CGEN_CPU_TABLE *cd)
f6bcefef
HPN
2499{
2500 int i;
2501 int machs = cd->machs;
2502 const CGEN_HW_ENTRY *init = & cris_cgen_hw_table[0];
2503 /* MAX_HW is only an upper bound on the number of selected entries.
2504 However each entry is indexed by it's enum so there can be holes in
2505 the table. */
2506 const CGEN_HW_ENTRY **selected =
2507 (const CGEN_HW_ENTRY **) xmalloc (MAX_HW * sizeof (CGEN_HW_ENTRY *));
2508
2509 cd->hw_table.init_entries = init;
2510 cd->hw_table.entry_size = sizeof (CGEN_HW_ENTRY);
2511 memset (selected, 0, MAX_HW * sizeof (CGEN_HW_ENTRY *));
2512 /* ??? For now we just use machs to determine which ones we want. */
2513 for (i = 0; init[i].name != NULL; ++i)
2514 if (CGEN_HW_ATTR_VALUE (&init[i], CGEN_HW_MACH)
2515 & machs)
2516 selected[init[i].type] = &init[i];
2517 cd->hw_table.entries = selected;
2518 cd->hw_table.num_entries = MAX_HW;
2519}
2520
2521/* Subroutine of cris_cgen_cpu_open to build the hardware table. */
2522
2523static void
cf2bf87e 2524build_ifield_table (CGEN_CPU_TABLE *cd)
f6bcefef
HPN
2525{
2526 cd->ifld_table = & cris_cgen_ifld_table[0];
2527}
2528
2529/* Subroutine of cris_cgen_cpu_open to build the hardware table. */
2530
2531static void
cf2bf87e 2532build_operand_table (CGEN_CPU_TABLE *cd)
f6bcefef
HPN
2533{
2534 int i;
2535 int machs = cd->machs;
2536 const CGEN_OPERAND *init = & cris_cgen_operand_table[0];
2537 /* MAX_OPERANDS is only an upper bound on the number of selected entries.
2538 However each entry is indexed by it's enum so there can be holes in
2539 the table. */
cf2bf87e 2540 const CGEN_OPERAND **selected = xmalloc (MAX_OPERANDS * sizeof (* selected));
f6bcefef
HPN
2541
2542 cd->operand_table.init_entries = init;
2543 cd->operand_table.entry_size = sizeof (CGEN_OPERAND);
2544 memset (selected, 0, MAX_OPERANDS * sizeof (CGEN_OPERAND *));
2545 /* ??? For now we just use mach to determine which ones we want. */
2546 for (i = 0; init[i].name != NULL; ++i)
2547 if (CGEN_OPERAND_ATTR_VALUE (&init[i], CGEN_OPERAND_MACH)
2548 & machs)
2549 selected[init[i].type] = &init[i];
2550 cd->operand_table.entries = selected;
2551 cd->operand_table.num_entries = MAX_OPERANDS;
2552}
2553
2554/* Subroutine of cris_cgen_cpu_open to build the hardware table.
2555 ??? This could leave out insns not supported by the specified mach/isa,
2556 but that would cause errors like "foo only supported by bar" to become
2557 "unknown insn", so for now we include all insns and require the app to
2558 do the checking later.
2559 ??? On the other hand, parsing of such insns may require their hardware or
2560 operand elements to be in the table [which they mightn't be]. */
2561
2562static void
cf2bf87e 2563build_insn_table (CGEN_CPU_TABLE *cd)
f6bcefef
HPN
2564{
2565 int i;
2566 const CGEN_IBASE *ib = & cris_cgen_insn_table[0];
cf2bf87e 2567 CGEN_INSN *insns = xmalloc (MAX_INSNS * sizeof (CGEN_INSN));
f6bcefef
HPN
2568
2569 memset (insns, 0, MAX_INSNS * sizeof (CGEN_INSN));
2570 for (i = 0; i < MAX_INSNS; ++i)
2571 insns[i].base = &ib[i];
2572 cd->insn_table.init_entries = insns;
2573 cd->insn_table.entry_size = sizeof (CGEN_IBASE);
2574 cd->insn_table.num_init_entries = MAX_INSNS;
2575}
2576
2577/* Subroutine of cris_cgen_cpu_open to rebuild the tables. */
2578
2579static void
cf2bf87e 2580cris_cgen_rebuild_tables (CGEN_CPU_TABLE *cd)
f6bcefef
HPN
2581{
2582 int i;
cf2bf87e 2583 CGEN_BITSET *isas = cd->isas;
f6bcefef
HPN
2584 unsigned int machs = cd->machs;
2585
2586 cd->int_insn_p = CGEN_INT_INSN_P;
2587
2588 /* Data derived from the isa spec. */
2589#define UNSET (CGEN_SIZE_UNKNOWN + 1)
2590 cd->default_insn_bitsize = UNSET;
2591 cd->base_insn_bitsize = UNSET;
cf2bf87e 2592 cd->min_insn_bitsize = 65535; /* Some ridiculously big number. */
f6bcefef
HPN
2593 cd->max_insn_bitsize = 0;
2594 for (i = 0; i < MAX_ISAS; ++i)
cf2bf87e 2595 if (cgen_bitset_contains (isas, i))
f6bcefef
HPN
2596 {
2597 const CGEN_ISA *isa = & cris_cgen_isa_table[i];
2598
2599 /* Default insn sizes of all selected isas must be
2600 equal or we set the result to 0, meaning "unknown". */
2601 if (cd->default_insn_bitsize == UNSET)
2602 cd->default_insn_bitsize = isa->default_insn_bitsize;
2603 else if (isa->default_insn_bitsize == cd->default_insn_bitsize)
cf2bf87e 2604 ; /* This is ok. */
f6bcefef
HPN
2605 else
2606 cd->default_insn_bitsize = CGEN_SIZE_UNKNOWN;
2607
2608 /* Base insn sizes of all selected isas must be equal
2609 or we set the result to 0, meaning "unknown". */
2610 if (cd->base_insn_bitsize == UNSET)
2611 cd->base_insn_bitsize = isa->base_insn_bitsize;
2612 else if (isa->base_insn_bitsize == cd->base_insn_bitsize)
cf2bf87e 2613 ; /* This is ok. */
f6bcefef
HPN
2614 else
2615 cd->base_insn_bitsize = CGEN_SIZE_UNKNOWN;
2616
2617 /* Set min,max insn sizes. */
2618 if (isa->min_insn_bitsize < cd->min_insn_bitsize)
2619 cd->min_insn_bitsize = isa->min_insn_bitsize;
2620 if (isa->max_insn_bitsize > cd->max_insn_bitsize)
2621 cd->max_insn_bitsize = isa->max_insn_bitsize;
2622 }
2623
2624 /* Data derived from the mach spec. */
2625 for (i = 0; i < MAX_MACHS; ++i)
2626 if (((1 << i) & machs) != 0)
2627 {
2628 const CGEN_MACH *mach = & cris_cgen_mach_table[i];
2629
2630 if (mach->insn_chunk_bitsize != 0)
2631 {
2632 if (cd->insn_chunk_bitsize != 0 && cd->insn_chunk_bitsize != mach->insn_chunk_bitsize)
2633 {
2634 fprintf (stderr, "cris_cgen_rebuild_tables: conflicting insn-chunk-bitsize values: `%d' vs. `%d'\n",
2635 cd->insn_chunk_bitsize, mach->insn_chunk_bitsize);
2636 abort ();
2637 }
2638
2639 cd->insn_chunk_bitsize = mach->insn_chunk_bitsize;
2640 }
2641 }
2642
2643 /* Determine which hw elements are used by MACH. */
2644 build_hw_table (cd);
2645
2646 /* Build the ifield table. */
2647 build_ifield_table (cd);
2648
2649 /* Determine which operands are used by MACH/ISA. */
2650 build_operand_table (cd);
2651
2652 /* Build the instruction table. */
2653 build_insn_table (cd);
2654}
2655
2656/* Initialize a cpu table and return a descriptor.
2657 It's much like opening a file, and must be the first function called.
2658 The arguments are a set of (type/value) pairs, terminated with
2659 CGEN_CPU_OPEN_END.
2660
2661 Currently supported values:
2662 CGEN_CPU_OPEN_ISAS: bitmap of values in enum isa_attr
2663 CGEN_CPU_OPEN_MACHS: bitmap of values in enum mach_attr
2664 CGEN_CPU_OPEN_BFDMACH: specify 1 mach using bfd name
2665 CGEN_CPU_OPEN_ENDIAN: specify endian choice
2666 CGEN_CPU_OPEN_END: terminates arguments
2667
2668 ??? Simultaneous multiple isas might not make sense, but it's not (yet)
2669 precluded.
2670
2671 ??? We only support ISO C stdargs here, not K&R.
2672 Laziness, plus experiment to see if anything requires K&R - eventually
2673 K&R will no longer be supported - e.g. GDB is currently trying this. */
2674
2675CGEN_CPU_DESC
2676cris_cgen_cpu_open (enum cgen_cpu_open_arg arg_type, ...)
2677{
2678 CGEN_CPU_TABLE *cd = (CGEN_CPU_TABLE *) xmalloc (sizeof (CGEN_CPU_TABLE));
2679 static int init_p;
cf2bf87e 2680 CGEN_BITSET *isas = 0; /* 0 = "unspecified" */
f6bcefef
HPN
2681 unsigned int machs = 0; /* 0 = "unspecified" */
2682 enum cgen_endian endian = CGEN_ENDIAN_UNKNOWN;
2683 va_list ap;
2684
2685 if (! init_p)
2686 {
2687 init_tables ();
2688 init_p = 1;
2689 }
2690
2691 memset (cd, 0, sizeof (*cd));
2692
2693 va_start (ap, arg_type);
2694 while (arg_type != CGEN_CPU_OPEN_END)
2695 {
2696 switch (arg_type)
2697 {
2698 case CGEN_CPU_OPEN_ISAS :
cf2bf87e 2699 isas = va_arg (ap, CGEN_BITSET *);
f6bcefef
HPN
2700 break;
2701 case CGEN_CPU_OPEN_MACHS :
2702 machs = va_arg (ap, unsigned int);
2703 break;
2704 case CGEN_CPU_OPEN_BFDMACH :
2705 {
2706 const char *name = va_arg (ap, const char *);
2707 const CGEN_MACH *mach =
2708 lookup_mach_via_bfd_name (cris_cgen_mach_table, name);
2709
2710 machs |= 1 << mach->num;
2711 break;
2712 }
2713 case CGEN_CPU_OPEN_ENDIAN :
2714 endian = va_arg (ap, enum cgen_endian);
2715 break;
2716 default :
2717 fprintf (stderr, "cris_cgen_cpu_open: unsupported argument `%d'\n",
2718 arg_type);
2719 abort (); /* ??? return NULL? */
2720 }
2721 arg_type = va_arg (ap, enum cgen_cpu_open_arg);
2722 }
2723 va_end (ap);
2724
cf2bf87e 2725 /* Mach unspecified means "all". */
f6bcefef
HPN
2726 if (machs == 0)
2727 machs = (1 << MAX_MACHS) - 1;
cf2bf87e 2728 /* Base mach is always selected. */
f6bcefef 2729 machs |= 1;
f6bcefef
HPN
2730 if (endian == CGEN_ENDIAN_UNKNOWN)
2731 {
2732 /* ??? If target has only one, could have a default. */
2733 fprintf (stderr, "cris_cgen_cpu_open: no endianness specified\n");
2734 abort ();
2735 }
2736
cf2bf87e 2737 cd->isas = cgen_bitset_copy (isas);
f6bcefef
HPN
2738 cd->machs = machs;
2739 cd->endian = endian;
2740 /* FIXME: for the sparc case we can determine insn-endianness statically.
2741 The worry here is where both data and insn endian can be independently
2742 chosen, in which case this function will need another argument.
2743 Actually, will want to allow for more arguments in the future anyway. */
2744 cd->insn_endian = endian;
2745
2746 /* Table (re)builder. */
2747 cd->rebuild_tables = cris_cgen_rebuild_tables;
2748 cris_cgen_rebuild_tables (cd);
2749
2750 /* Default to not allowing signed overflow. */
2751 cd->signed_overflow_ok_p = 0;
2752
2753 return (CGEN_CPU_DESC) cd;
2754}
2755
2756/* Cover fn to cris_cgen_cpu_open to handle the simple case of 1 isa, 1 mach.
2757 MACH_NAME is the bfd name of the mach. */
2758
2759CGEN_CPU_DESC
cf2bf87e 2760cris_cgen_cpu_open_1 (const char *mach_name, enum cgen_endian endian)
f6bcefef
HPN
2761{
2762 return cris_cgen_cpu_open (CGEN_CPU_OPEN_BFDMACH, mach_name,
2763 CGEN_CPU_OPEN_ENDIAN, endian,
2764 CGEN_CPU_OPEN_END);
2765}
2766
2767/* Close a cpu table.
2768 ??? This can live in a machine independent file, but there's currently
2769 no place to put this file (there's no libcgen). libopcodes is the wrong
2770 place as some simulator ports use this but they don't use libopcodes. */
2771
2772void
cf2bf87e 2773cris_cgen_cpu_close (CGEN_CPU_DESC cd)
f6bcefef
HPN
2774{
2775 unsigned int i;
2776 const CGEN_INSN *insns;
2777
2778 if (cd->macro_insn_table.init_entries)
2779 {
2780 insns = cd->macro_insn_table.init_entries;
2781 for (i = 0; i < cd->macro_insn_table.num_init_entries; ++i, ++insns)
cf2bf87e
HPN
2782 if (CGEN_INSN_RX ((insns)))
2783 regfree (CGEN_INSN_RX (insns));
f6bcefef
HPN
2784 }
2785
2786 if (cd->insn_table.init_entries)
2787 {
2788 insns = cd->insn_table.init_entries;
2789 for (i = 0; i < cd->insn_table.num_init_entries; ++i, ++insns)
cf2bf87e
HPN
2790 if (CGEN_INSN_RX (insns))
2791 regfree (CGEN_INSN_RX (insns));
2792 }
f6bcefef
HPN
2793
2794 if (cd->macro_insn_table.init_entries)
2795 free ((CGEN_INSN *) cd->macro_insn_table.init_entries);
2796
2797 if (cd->insn_table.init_entries)
2798 free ((CGEN_INSN *) cd->insn_table.init_entries);
2799
2800 if (cd->hw_table.entries)
2801 free ((CGEN_HW_ENTRY *) cd->hw_table.entries);
2802
2803 if (cd->operand_table.entries)
2804 free ((CGEN_HW_ENTRY *) cd->operand_table.entries);
2805
2806 free (cd);
2807}
2808