* elf32-mep.c (config_names): Regenerate configuration.
[external/binutils.git] / opcodes / mep-desc.c
1 /* CPU data for mep.
2
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5 Copyright 1996-2007 Free Software Foundation, Inc.
6
7 This file is part of the GNU Binutils and/or GDB, the GNU debugger.
8
9    This file is free software; you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation; either version 3, or (at your option)
12    any later version.
13
14    It is distributed in the hope that it will be useful, but WITHOUT
15    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
17    License for more details.
18
19    You should have received a copy of the GNU General Public License along
20    with this program; if not, write to the Free Software Foundation, Inc.,
21    51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
22
23 */
24
25 #include "sysdep.h"
26 #include <stdio.h>
27 #include <stdarg.h>
28 #include "ansidecl.h"
29 #include "bfd.h"
30 #include "symcat.h"
31 #include "mep-desc.h"
32 #include "mep-opc.h"
33 #include "opintl.h"
34 #include "libiberty.h"
35 #include "xregex.h"
36
37 /* Attributes.  */
38
39 static const CGEN_ATTR_ENTRY bool_attr[] =
40 {
41   { "#f", 0 },
42   { "#t", 1 },
43   { 0, 0 }
44 };
45
46 static const CGEN_ATTR_ENTRY MACH_attr[] ATTRIBUTE_UNUSED =
47 {
48   { "base", MACH_BASE },
49   { "mep", MACH_MEP },
50   { "h1", MACH_H1 },
51   { "max", MACH_MAX },
52   { 0, 0 }
53 };
54
55 static const CGEN_ATTR_ENTRY ISA_attr[] ATTRIBUTE_UNUSED =
56 {
57   { "mep", ISA_MEP },
58   { "ext_core1", ISA_EXT_CORE1 },
59   { "max", ISA_MAX },
60   { 0, 0 }
61 };
62
63 static const CGEN_ATTR_ENTRY CDATA_attr[] ATTRIBUTE_UNUSED =
64 {
65   { "LABEL", CDATA_LABEL },
66   { "REGNUM", CDATA_REGNUM },
67   { "FMAX_FLOAT", CDATA_FMAX_FLOAT },
68   { "FMAX_INT", CDATA_FMAX_INT },
69   { "POINTER", CDATA_POINTER },
70   { "LONG", CDATA_LONG },
71   { "ULONG", CDATA_ULONG },
72   { "SHORT", CDATA_SHORT },
73   { "USHORT", CDATA_USHORT },
74   { "CHAR", CDATA_CHAR },
75   { "UCHAR", CDATA_UCHAR },
76   { "CP_DATA_BUS_INT", CDATA_CP_DATA_BUS_INT },
77   { 0, 0 }
78 };
79
80 static const CGEN_ATTR_ENTRY ALIGN_attr [] ATTRIBUTE_UNUSED = 
81 {
82   {"integer", 1},
83   { 0, 0 }
84 };
85
86 static const CGEN_ATTR_ENTRY LATENCY_attr [] ATTRIBUTE_UNUSED = 
87 {
88   {"integer", 0},
89   { 0, 0 }
90 };
91
92 static const CGEN_ATTR_ENTRY CONFIG_attr[] ATTRIBUTE_UNUSED =
93 {
94   { "NONE", CONFIG_NONE },
95   { "default", CONFIG_DEFAULT },
96   { 0, 0 }
97 };
98
99 const CGEN_ATTR_TABLE mep_cgen_ifield_attr_table[] =
100 {
101   { "MACH", & MACH_attr[0], & MACH_attr[0] },
102   { "ISA", & ISA_attr[0], & ISA_attr[0] },
103   { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
104   { "PCREL-ADDR", &bool_attr[0], &bool_attr[0] },
105   { "ABS-ADDR", &bool_attr[0], &bool_attr[0] },
106   { "RESERVED", &bool_attr[0], &bool_attr[0] },
107   { "SIGN-OPT", &bool_attr[0], &bool_attr[0] },
108   { "SIGNED", &bool_attr[0], &bool_attr[0] },
109   { 0, 0, 0 }
110 };
111
112 const CGEN_ATTR_TABLE mep_cgen_hardware_attr_table[] =
113 {
114   { "MACH", & MACH_attr[0], & MACH_attr[0] },
115   { "ISA", & ISA_attr[0], & ISA_attr[0] },
116   { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
117   { "CACHE-ADDR", &bool_attr[0], &bool_attr[0] },
118   { "PC", &bool_attr[0], &bool_attr[0] },
119   { "PROFILE", &bool_attr[0], &bool_attr[0] },
120   { "IS_FLOAT", &bool_attr[0], &bool_attr[0] },
121   { 0, 0, 0 }
122 };
123
124 const CGEN_ATTR_TABLE mep_cgen_operand_attr_table[] =
125 {
126   { "MACH", & MACH_attr[0], & MACH_attr[0] },
127   { "ISA", & ISA_attr[0], & ISA_attr[0] },
128   { "CDATA", & CDATA_attr[0], & CDATA_attr[0] },
129   { "ALIGN", & ALIGN_attr[0], & ALIGN_attr[0] },
130   { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
131   { "PCREL-ADDR", &bool_attr[0], &bool_attr[0] },
132   { "ABS-ADDR", &bool_attr[0], &bool_attr[0] },
133   { "SIGN-OPT", &bool_attr[0], &bool_attr[0] },
134   { "SIGNED", &bool_attr[0], &bool_attr[0] },
135   { "NEGATIVE", &bool_attr[0], &bool_attr[0] },
136   { "RELAX", &bool_attr[0], &bool_attr[0] },
137   { "SEM-ONLY", &bool_attr[0], &bool_attr[0] },
138   { "RELOC_IMPLIES_OVERFLOW", &bool_attr[0], &bool_attr[0] },
139   { 0, 0, 0 }
140 };
141
142 const CGEN_ATTR_TABLE mep_cgen_insn_attr_table[] =
143 {
144   { "MACH", & MACH_attr[0], & MACH_attr[0] },
145   { "ISA", & ISA_attr[0], & ISA_attr[0] },
146   { "LATENCY", & LATENCY_attr[0], & LATENCY_attr[0] },
147   { "CONFIG", & CONFIG_attr[0], & CONFIG_attr[0] },
148   { "ALIAS", &bool_attr[0], &bool_attr[0] },
149   { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
150   { "UNCOND-CTI", &bool_attr[0], &bool_attr[0] },
151   { "COND-CTI", &bool_attr[0], &bool_attr[0] },
152   { "SKIP-CTI", &bool_attr[0], &bool_attr[0] },
153   { "DELAY-SLOT", &bool_attr[0], &bool_attr[0] },
154   { "RELAXABLE", &bool_attr[0], &bool_attr[0] },
155   { "RELAXED", &bool_attr[0], &bool_attr[0] },
156   { "NO-DIS", &bool_attr[0], &bool_attr[0] },
157   { "PBB", &bool_attr[0], &bool_attr[0] },
158   { "OPTIONAL_BIT_INSN", &bool_attr[0], &bool_attr[0] },
159   { "OPTIONAL_MUL_INSN", &bool_attr[0], &bool_attr[0] },
160   { "OPTIONAL_DIV_INSN", &bool_attr[0], &bool_attr[0] },
161   { "OPTIONAL_DEBUG_INSN", &bool_attr[0], &bool_attr[0] },
162   { "OPTIONAL_LDZ_INSN", &bool_attr[0], &bool_attr[0] },
163   { "OPTIONAL_ABS_INSN", &bool_attr[0], &bool_attr[0] },
164   { "OPTIONAL_AVE_INSN", &bool_attr[0], &bool_attr[0] },
165   { "OPTIONAL_MINMAX_INSN", &bool_attr[0], &bool_attr[0] },
166   { "OPTIONAL_CLIP_INSN", &bool_attr[0], &bool_attr[0] },
167   { "OPTIONAL_SAT_INSN", &bool_attr[0], &bool_attr[0] },
168   { "OPTIONAL_UCI_INSN", &bool_attr[0], &bool_attr[0] },
169   { "OPTIONAL_DSP_INSN", &bool_attr[0], &bool_attr[0] },
170   { "OPTIONAL_CP_INSN", &bool_attr[0], &bool_attr[0] },
171   { "OPTIONAL_CP64_INSN", &bool_attr[0], &bool_attr[0] },
172   { "OPTIONAL_VLIW64", &bool_attr[0], &bool_attr[0] },
173   { "MAY_TRAP", &bool_attr[0], &bool_attr[0] },
174   { "VLIW_ALONE", &bool_attr[0], &bool_attr[0] },
175   { "VLIW_NO_CORE_NOP", &bool_attr[0], &bool_attr[0] },
176   { "VLIW_NO_COP_NOP", &bool_attr[0], &bool_attr[0] },
177   { "VLIW64_NO_MATCHING_NOP", &bool_attr[0], &bool_attr[0] },
178   { "VLIW32_NO_MATCHING_NOP", &bool_attr[0], &bool_attr[0] },
179   { "VOLATILE", &bool_attr[0], &bool_attr[0] },
180   { 0, 0, 0 }
181 };
182
183 /* Instruction set variants.  */
184
185 static const CGEN_ISA mep_cgen_isa_table[] = {
186   { "mep", 32, 32, 16, 32 },
187   { "ext_core1", 32, 32, 16, 32 },
188   { 0, 0, 0, 0, 0 }
189 };
190
191 /* Machine variants.  */
192
193 static const CGEN_MACH mep_cgen_mach_table[] = {
194   { "mep", "mep", MACH_MEP, 16 },
195   { "h1", "h1", MACH_H1, 16 },
196   { 0, 0, 0, 0 }
197 };
198
199 static CGEN_KEYWORD_ENTRY mep_cgen_opval_h_gpr_entries[] =
200 {
201   { "$0", 0, {0, {{{0, 0}}}}, 0, 0 },
202   { "$1", 1, {0, {{{0, 0}}}}, 0, 0 },
203   { "$2", 2, {0, {{{0, 0}}}}, 0, 0 },
204   { "$3", 3, {0, {{{0, 0}}}}, 0, 0 },
205   { "$4", 4, {0, {{{0, 0}}}}, 0, 0 },
206   { "$5", 5, {0, {{{0, 0}}}}, 0, 0 },
207   { "$6", 6, {0, {{{0, 0}}}}, 0, 0 },
208   { "$7", 7, {0, {{{0, 0}}}}, 0, 0 },
209   { "$8", 8, {0, {{{0, 0}}}}, 0, 0 },
210   { "$9", 9, {0, {{{0, 0}}}}, 0, 0 },
211   { "$10", 10, {0, {{{0, 0}}}}, 0, 0 },
212   { "$11", 11, {0, {{{0, 0}}}}, 0, 0 },
213   { "$fp", 8, {0, {{{0, 0}}}}, 0, 0 },
214   { "$tp", 13, {0, {{{0, 0}}}}, 0, 0 },
215   { "$gp", 14, {0, {{{0, 0}}}}, 0, 0 },
216   { "$sp", 15, {0, {{{0, 0}}}}, 0, 0 },
217   { "$12", 12, {0, {{{0, 0}}}}, 0, 0 },
218   { "$13", 13, {0, {{{0, 0}}}}, 0, 0 },
219   { "$14", 14, {0, {{{0, 0}}}}, 0, 0 },
220   { "$15", 15, {0, {{{0, 0}}}}, 0, 0 }
221 };
222
223 CGEN_KEYWORD mep_cgen_opval_h_gpr =
224 {
225   & mep_cgen_opval_h_gpr_entries[0],
226   20,
227   0, 0, 0, 0, ""
228 };
229
230 static CGEN_KEYWORD_ENTRY mep_cgen_opval_h_csr_entries[] =
231 {
232   { "$pc", 0, {0, {{{0, 0}}}}, 0, 0 },
233   { "$lp", 1, {0, {{{0, 0}}}}, 0, 0 },
234   { "$sar", 2, {0, {{{0, 0}}}}, 0, 0 },
235   { "$rpb", 4, {0, {{{0, 0}}}}, 0, 0 },
236   { "$rpe", 5, {0, {{{0, 0}}}}, 0, 0 },
237   { "$rpc", 6, {0, {{{0, 0}}}}, 0, 0 },
238   { "$hi", 7, {0, {{{0, 0}}}}, 0, 0 },
239   { "$lo", 8, {0, {{{0, 0}}}}, 0, 0 },
240   { "$mb0", 12, {0, {{{0, 0}}}}, 0, 0 },
241   { "$me0", 13, {0, {{{0, 0}}}}, 0, 0 },
242   { "$mb1", 14, {0, {{{0, 0}}}}, 0, 0 },
243   { "$me1", 15, {0, {{{0, 0}}}}, 0, 0 },
244   { "$psw", 16, {0, {{{0, 0}}}}, 0, 0 },
245   { "$id", 17, {0, {{{0, 0}}}}, 0, 0 },
246   { "$tmp", 18, {0, {{{0, 0}}}}, 0, 0 },
247   { "$epc", 19, {0, {{{0, 0}}}}, 0, 0 },
248   { "$exc", 20, {0, {{{0, 0}}}}, 0, 0 },
249   { "$cfg", 21, {0, {{{0, 0}}}}, 0, 0 },
250   { "$npc", 23, {0, {{{0, 0}}}}, 0, 0 },
251   { "$dbg", 24, {0, {{{0, 0}}}}, 0, 0 },
252   { "$depc", 25, {0, {{{0, 0}}}}, 0, 0 },
253   { "$opt", 26, {0, {{{0, 0}}}}, 0, 0 },
254   { "$rcfg", 27, {0, {{{0, 0}}}}, 0, 0 },
255   { "$ccfg", 28, {0, {{{0, 0}}}}, 0, 0 },
256   { "$vid", 22, {0, {{{0, 0}}}}, 0, 0 }
257 };
258
259 CGEN_KEYWORD mep_cgen_opval_h_csr =
260 {
261   & mep_cgen_opval_h_csr_entries[0],
262   25,
263   0, 0, 0, 0, ""
264 };
265
266 static CGEN_KEYWORD_ENTRY mep_cgen_opval_h_cr64_entries[] =
267 {
268   { "$c0", 0, {0, {{{0, 0}}}}, 0, 0 },
269   { "$c1", 1, {0, {{{0, 0}}}}, 0, 0 },
270   { "$c2", 2, {0, {{{0, 0}}}}, 0, 0 },
271   { "$c3", 3, {0, {{{0, 0}}}}, 0, 0 },
272   { "$c4", 4, {0, {{{0, 0}}}}, 0, 0 },
273   { "$c5", 5, {0, {{{0, 0}}}}, 0, 0 },
274   { "$c6", 6, {0, {{{0, 0}}}}, 0, 0 },
275   { "$c7", 7, {0, {{{0, 0}}}}, 0, 0 },
276   { "$c8", 8, {0, {{{0, 0}}}}, 0, 0 },
277   { "$c9", 9, {0, {{{0, 0}}}}, 0, 0 },
278   { "$c10", 10, {0, {{{0, 0}}}}, 0, 0 },
279   { "$c11", 11, {0, {{{0, 0}}}}, 0, 0 },
280   { "$c12", 12, {0, {{{0, 0}}}}, 0, 0 },
281   { "$c13", 13, {0, {{{0, 0}}}}, 0, 0 },
282   { "$c14", 14, {0, {{{0, 0}}}}, 0, 0 },
283   { "$c15", 15, {0, {{{0, 0}}}}, 0, 0 },
284   { "$c16", 16, {0, {{{0, 0}}}}, 0, 0 },
285   { "$c17", 17, {0, {{{0, 0}}}}, 0, 0 },
286   { "$c18", 18, {0, {{{0, 0}}}}, 0, 0 },
287   { "$c19", 19, {0, {{{0, 0}}}}, 0, 0 },
288   { "$c20", 20, {0, {{{0, 0}}}}, 0, 0 },
289   { "$c21", 21, {0, {{{0, 0}}}}, 0, 0 },
290   { "$c22", 22, {0, {{{0, 0}}}}, 0, 0 },
291   { "$c23", 23, {0, {{{0, 0}}}}, 0, 0 },
292   { "$c24", 24, {0, {{{0, 0}}}}, 0, 0 },
293   { "$c25", 25, {0, {{{0, 0}}}}, 0, 0 },
294   { "$c26", 26, {0, {{{0, 0}}}}, 0, 0 },
295   { "$c27", 27, {0, {{{0, 0}}}}, 0, 0 },
296   { "$c28", 28, {0, {{{0, 0}}}}, 0, 0 },
297   { "$c29", 29, {0, {{{0, 0}}}}, 0, 0 },
298   { "$c30", 30, {0, {{{0, 0}}}}, 0, 0 },
299   { "$c31", 31, {0, {{{0, 0}}}}, 0, 0 }
300 };
301
302 CGEN_KEYWORD mep_cgen_opval_h_cr64 =
303 {
304   & mep_cgen_opval_h_cr64_entries[0],
305   32,
306   0, 0, 0, 0, ""
307 };
308
309 static CGEN_KEYWORD_ENTRY mep_cgen_opval_h_cr_entries[] =
310 {
311   { "$c0", 0, {0, {{{0, 0}}}}, 0, 0 },
312   { "$c1", 1, {0, {{{0, 0}}}}, 0, 0 },
313   { "$c2", 2, {0, {{{0, 0}}}}, 0, 0 },
314   { "$c3", 3, {0, {{{0, 0}}}}, 0, 0 },
315   { "$c4", 4, {0, {{{0, 0}}}}, 0, 0 },
316   { "$c5", 5, {0, {{{0, 0}}}}, 0, 0 },
317   { "$c6", 6, {0, {{{0, 0}}}}, 0, 0 },
318   { "$c7", 7, {0, {{{0, 0}}}}, 0, 0 },
319   { "$c8", 8, {0, {{{0, 0}}}}, 0, 0 },
320   { "$c9", 9, {0, {{{0, 0}}}}, 0, 0 },
321   { "$c10", 10, {0, {{{0, 0}}}}, 0, 0 },
322   { "$c11", 11, {0, {{{0, 0}}}}, 0, 0 },
323   { "$c12", 12, {0, {{{0, 0}}}}, 0, 0 },
324   { "$c13", 13, {0, {{{0, 0}}}}, 0, 0 },
325   { "$c14", 14, {0, {{{0, 0}}}}, 0, 0 },
326   { "$c15", 15, {0, {{{0, 0}}}}, 0, 0 },
327   { "$c16", 16, {0, {{{0, 0}}}}, 0, 0 },
328   { "$c17", 17, {0, {{{0, 0}}}}, 0, 0 },
329   { "$c18", 18, {0, {{{0, 0}}}}, 0, 0 },
330   { "$c19", 19, {0, {{{0, 0}}}}, 0, 0 },
331   { "$c20", 20, {0, {{{0, 0}}}}, 0, 0 },
332   { "$c21", 21, {0, {{{0, 0}}}}, 0, 0 },
333   { "$c22", 22, {0, {{{0, 0}}}}, 0, 0 },
334   { "$c23", 23, {0, {{{0, 0}}}}, 0, 0 },
335   { "$c24", 24, {0, {{{0, 0}}}}, 0, 0 },
336   { "$c25", 25, {0, {{{0, 0}}}}, 0, 0 },
337   { "$c26", 26, {0, {{{0, 0}}}}, 0, 0 },
338   { "$c27", 27, {0, {{{0, 0}}}}, 0, 0 },
339   { "$c28", 28, {0, {{{0, 0}}}}, 0, 0 },
340   { "$c29", 29, {0, {{{0, 0}}}}, 0, 0 },
341   { "$c30", 30, {0, {{{0, 0}}}}, 0, 0 },
342   { "$c31", 31, {0, {{{0, 0}}}}, 0, 0 }
343 };
344
345 CGEN_KEYWORD mep_cgen_opval_h_cr =
346 {
347   & mep_cgen_opval_h_cr_entries[0],
348   32,
349   0, 0, 0, 0, ""
350 };
351
352 static CGEN_KEYWORD_ENTRY mep_cgen_opval_h_ccr_entries[] =
353 {
354   { "$ccr0", 0, {0, {{{0, 0}}}}, 0, 0 },
355   { "$ccr1", 1, {0, {{{0, 0}}}}, 0, 0 },
356   { "$ccr2", 2, {0, {{{0, 0}}}}, 0, 0 },
357   { "$ccr3", 3, {0, {{{0, 0}}}}, 0, 0 },
358   { "$ccr4", 4, {0, {{{0, 0}}}}, 0, 0 },
359   { "$ccr5", 5, {0, {{{0, 0}}}}, 0, 0 },
360   { "$ccr6", 6, {0, {{{0, 0}}}}, 0, 0 },
361   { "$ccr7", 7, {0, {{{0, 0}}}}, 0, 0 },
362   { "$ccr8", 8, {0, {{{0, 0}}}}, 0, 0 },
363   { "$ccr9", 9, {0, {{{0, 0}}}}, 0, 0 },
364   { "$ccr10", 10, {0, {{{0, 0}}}}, 0, 0 },
365   { "$ccr11", 11, {0, {{{0, 0}}}}, 0, 0 },
366   { "$ccr12", 12, {0, {{{0, 0}}}}, 0, 0 },
367   { "$ccr13", 13, {0, {{{0, 0}}}}, 0, 0 },
368   { "$ccr14", 14, {0, {{{0, 0}}}}, 0, 0 },
369   { "$ccr15", 15, {0, {{{0, 0}}}}, 0, 0 },
370   { "$ccr16", 16, {0, {{{0, 0}}}}, 0, 0 },
371   { "$ccr17", 17, {0, {{{0, 0}}}}, 0, 0 },
372   { "$ccr18", 18, {0, {{{0, 0}}}}, 0, 0 },
373   { "$ccr19", 19, {0, {{{0, 0}}}}, 0, 0 },
374   { "$ccr20", 20, {0, {{{0, 0}}}}, 0, 0 },
375   { "$ccr21", 21, {0, {{{0, 0}}}}, 0, 0 },
376   { "$ccr22", 22, {0, {{{0, 0}}}}, 0, 0 },
377   { "$ccr23", 23, {0, {{{0, 0}}}}, 0, 0 },
378   { "$ccr24", 24, {0, {{{0, 0}}}}, 0, 0 },
379   { "$ccr25", 25, {0, {{{0, 0}}}}, 0, 0 },
380   { "$ccr26", 26, {0, {{{0, 0}}}}, 0, 0 },
381   { "$ccr27", 27, {0, {{{0, 0}}}}, 0, 0 },
382   { "$ccr28", 28, {0, {{{0, 0}}}}, 0, 0 },
383   { "$ccr29", 29, {0, {{{0, 0}}}}, 0, 0 },
384   { "$ccr30", 30, {0, {{{0, 0}}}}, 0, 0 },
385   { "$ccr31", 31, {0, {{{0, 0}}}}, 0, 0 },
386   { "$ccr32", 32, {0, {{{0, 0}}}}, 0, 0 },
387   { "$ccr33", 33, {0, {{{0, 0}}}}, 0, 0 },
388   { "$ccr34", 34, {0, {{{0, 0}}}}, 0, 0 },
389   { "$ccr35", 35, {0, {{{0, 0}}}}, 0, 0 },
390   { "$ccr36", 36, {0, {{{0, 0}}}}, 0, 0 },
391   { "$ccr37", 37, {0, {{{0, 0}}}}, 0, 0 },
392   { "$ccr38", 38, {0, {{{0, 0}}}}, 0, 0 },
393   { "$ccr39", 39, {0, {{{0, 0}}}}, 0, 0 },
394   { "$ccr40", 40, {0, {{{0, 0}}}}, 0, 0 },
395   { "$ccr41", 41, {0, {{{0, 0}}}}, 0, 0 },
396   { "$ccr42", 42, {0, {{{0, 0}}}}, 0, 0 },
397   { "$ccr43", 43, {0, {{{0, 0}}}}, 0, 0 },
398   { "$ccr44", 44, {0, {{{0, 0}}}}, 0, 0 },
399   { "$ccr45", 45, {0, {{{0, 0}}}}, 0, 0 },
400   { "$ccr46", 46, {0, {{{0, 0}}}}, 0, 0 },
401   { "$ccr47", 47, {0, {{{0, 0}}}}, 0, 0 },
402   { "$ccr48", 48, {0, {{{0, 0}}}}, 0, 0 },
403   { "$ccr49", 49, {0, {{{0, 0}}}}, 0, 0 },
404   { "$ccr50", 50, {0, {{{0, 0}}}}, 0, 0 },
405   { "$ccr51", 51, {0, {{{0, 0}}}}, 0, 0 },
406   { "$ccr52", 52, {0, {{{0, 0}}}}, 0, 0 },
407   { "$ccr53", 53, {0, {{{0, 0}}}}, 0, 0 },
408   { "$ccr54", 54, {0, {{{0, 0}}}}, 0, 0 },
409   { "$ccr55", 55, {0, {{{0, 0}}}}, 0, 0 },
410   { "$ccr56", 56, {0, {{{0, 0}}}}, 0, 0 },
411   { "$ccr57", 57, {0, {{{0, 0}}}}, 0, 0 },
412   { "$ccr58", 58, {0, {{{0, 0}}}}, 0, 0 },
413   { "$ccr59", 59, {0, {{{0, 0}}}}, 0, 0 },
414   { "$ccr60", 60, {0, {{{0, 0}}}}, 0, 0 },
415   { "$ccr61", 61, {0, {{{0, 0}}}}, 0, 0 },
416   { "$ccr62", 62, {0, {{{0, 0}}}}, 0, 0 },
417   { "$ccr63", 63, {0, {{{0, 0}}}}, 0, 0 }
418 };
419
420 CGEN_KEYWORD mep_cgen_opval_h_ccr =
421 {
422   & mep_cgen_opval_h_ccr_entries[0],
423   64,
424   0, 0, 0, 0, ""
425 };
426
427
428 /* The hardware table.  */
429
430 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
431 #define A(a) (1 << CGEN_HW_##a)
432 #else
433 #define A(a) (1 << CGEN_HW_/**/a)
434 #endif
435
436 const CGEN_HW_ENTRY mep_cgen_hw_table[] =
437 {
438   { "h-memory", HW_H_MEMORY, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
439   { "h-sint", HW_H_SINT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
440   { "h-uint", HW_H_UINT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
441   { "h-addr", HW_H_ADDR, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
442   { "h-iaddr", HW_H_IADDR, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
443   { "h-pc", HW_H_PC, CGEN_ASM_NONE, 0, { 0|A(PROFILE)|A(PC), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
444   { "h-gpr", HW_H_GPR, CGEN_ASM_KEYWORD, (PTR) & mep_cgen_opval_h_gpr, { 0|A(PROFILE)|A(CACHE_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
445   { "h-csr", HW_H_CSR, CGEN_ASM_KEYWORD, (PTR) & mep_cgen_opval_h_csr, { 0|A(PROFILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
446   { "h-cr64", HW_H_CR64, CGEN_ASM_KEYWORD, (PTR) & mep_cgen_opval_h_cr64, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
447   { "h-cr", HW_H_CR, CGEN_ASM_KEYWORD, (PTR) & mep_cgen_opval_h_cr, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
448   { "h-ccr", HW_H_CCR, CGEN_ASM_KEYWORD, (PTR) & mep_cgen_opval_h_ccr, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
449   { 0, 0, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } }
450 };
451
452 #undef A
453
454
455 /* The instruction field table.  */
456
457 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
458 #define A(a) (1 << CGEN_IFLD_##a)
459 #else
460 #define A(a) (1 << CGEN_IFLD_/**/a)
461 #endif
462
463 const CGEN_IFLD mep_cgen_ifld_table[] =
464 {
465   { MEP_F_NIL, "f-nil", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
466   { MEP_F_ANYOF, "f-anyof", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
467   { MEP_F_MAJOR, "f-major", 0, 32, 0, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
468   { MEP_F_RN, "f-rn", 0, 32, 4, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
469   { MEP_F_RN3, "f-rn3", 0, 32, 5, 3, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
470   { MEP_F_RM, "f-rm", 0, 32, 8, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
471   { MEP_F_RL, "f-rl", 0, 32, 12, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
472   { MEP_F_SUB2, "f-sub2", 0, 32, 14, 2, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
473   { MEP_F_SUB3, "f-sub3", 0, 32, 13, 3, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
474   { MEP_F_SUB4, "f-sub4", 0, 32, 12, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
475   { MEP_F_EXT, "f-ext", 0, 32, 16, 8, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
476   { MEP_F_CRN, "f-crn", 0, 32, 4, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
477   { MEP_F_CSRN_HI, "f-csrn-hi", 0, 32, 15, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
478   { MEP_F_CSRN_LO, "f-csrn-lo", 0, 32, 8, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
479   { MEP_F_CSRN, "f-csrn", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
480   { MEP_F_CRNX_HI, "f-crnx-hi", 0, 32, 28, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
481   { MEP_F_CRNX_LO, "f-crnx-lo", 0, 32, 4, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
482   { MEP_F_CRNX, "f-crnx", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
483   { MEP_F_0, "f-0", 0, 32, 0, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
484   { MEP_F_1, "f-1", 0, 32, 1, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
485   { MEP_F_2, "f-2", 0, 32, 2, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
486   { MEP_F_3, "f-3", 0, 32, 3, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
487   { MEP_F_4, "f-4", 0, 32, 4, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
488   { MEP_F_5, "f-5", 0, 32, 5, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
489   { MEP_F_6, "f-6", 0, 32, 6, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
490   { MEP_F_7, "f-7", 0, 32, 7, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
491   { MEP_F_8, "f-8", 0, 32, 8, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
492   { MEP_F_9, "f-9", 0, 32, 9, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
493   { MEP_F_10, "f-10", 0, 32, 10, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
494   { MEP_F_11, "f-11", 0, 32, 11, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
495   { MEP_F_12, "f-12", 0, 32, 12, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
496   { MEP_F_13, "f-13", 0, 32, 13, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
497   { MEP_F_14, "f-14", 0, 32, 14, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
498   { MEP_F_15, "f-15", 0, 32, 15, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
499   { MEP_F_16, "f-16", 0, 32, 16, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
500   { MEP_F_17, "f-17", 0, 32, 17, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
501   { MEP_F_18, "f-18", 0, 32, 18, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
502   { MEP_F_19, "f-19", 0, 32, 19, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
503   { MEP_F_20, "f-20", 0, 32, 20, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
504   { MEP_F_21, "f-21", 0, 32, 21, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
505   { MEP_F_22, "f-22", 0, 32, 22, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
506   { MEP_F_23, "f-23", 0, 32, 23, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
507   { MEP_F_24, "f-24", 0, 32, 24, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
508   { MEP_F_25, "f-25", 0, 32, 25, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
509   { MEP_F_26, "f-26", 0, 32, 26, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
510   { MEP_F_27, "f-27", 0, 32, 27, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
511   { MEP_F_28, "f-28", 0, 32, 28, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
512   { MEP_F_29, "f-29", 0, 32, 29, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
513   { MEP_F_30, "f-30", 0, 32, 30, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
514   { MEP_F_31, "f-31", 0, 32, 31, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
515   { MEP_F_8S8A2, "f-8s8a2", 0, 32, 8, 7, { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
516   { MEP_F_12S4A2, "f-12s4a2", 0, 32, 4, 11, { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
517   { MEP_F_17S16A2, "f-17s16a2", 0, 32, 16, 16, { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
518   { MEP_F_24S5A2N_HI, "f-24s5a2n-hi", 0, 32, 16, 16, { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
519   { MEP_F_24S5A2N_LO, "f-24s5a2n-lo", 0, 32, 5, 7, { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
520   { MEP_F_24S5A2N, "f-24s5a2n", 0, 0, 0, 0,{ 0|A(PCREL_ADDR)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
521   { MEP_F_24U5A2N_HI, "f-24u5a2n-hi", 0, 32, 16, 16, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
522   { MEP_F_24U5A2N_LO, "f-24u5a2n-lo", 0, 32, 5, 7, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
523   { MEP_F_24U5A2N, "f-24u5a2n", 0, 0, 0, 0,{ 0|A(ABS_ADDR)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
524   { MEP_F_2U6, "f-2u6", 0, 32, 6, 2, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
525   { MEP_F_7U9, "f-7u9", 0, 32, 9, 7, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
526   { MEP_F_7U9A2, "f-7u9a2", 0, 32, 9, 6, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
527   { MEP_F_7U9A4, "f-7u9a4", 0, 32, 9, 5, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
528   { MEP_F_16S16, "f-16s16", 0, 32, 16, 16, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
529   { MEP_F_2U10, "f-2u10", 0, 32, 10, 2, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
530   { MEP_F_3U5, "f-3u5", 0, 32, 5, 3, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
531   { MEP_F_4U8, "f-4u8", 0, 32, 8, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
532   { MEP_F_5U8, "f-5u8", 0, 32, 8, 5, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
533   { MEP_F_5U24, "f-5u24", 0, 32, 24, 5, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
534   { MEP_F_6S8, "f-6s8", 0, 32, 8, 6, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
535   { MEP_F_8S8, "f-8s8", 0, 32, 8, 8, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
536   { MEP_F_16U16, "f-16u16", 0, 32, 16, 16, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
537   { MEP_F_12U16, "f-12u16", 0, 32, 16, 12, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
538   { MEP_F_3U29, "f-3u29", 0, 32, 29, 3, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
539   { MEP_F_8S24, "f-8s24", 0, 32, 24, 8, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
540   { MEP_F_8S24A2, "f-8s24a2", 0, 32, 24, 7, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
541   { MEP_F_8S24A4, "f-8s24a4", 0, 32, 24, 6, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
542   { MEP_F_8S24A8, "f-8s24a8", 0, 32, 24, 5, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
543   { MEP_F_24U8A4N_HI, "f-24u8a4n-hi", 0, 32, 16, 16, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
544   { MEP_F_24U8A4N_LO, "f-24u8a4n-lo", 0, 32, 8, 6, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
545   { MEP_F_24U8A4N, "f-24u8a4n", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
546   { MEP_F_24U8N_HI, "f-24u8n-hi", 0, 32, 16, 16, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
547   { MEP_F_24U8N_LO, "f-24u8n-lo", 0, 32, 8, 8, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
548   { MEP_F_24U8N, "f-24u8n", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
549   { MEP_F_24U4N_HI, "f-24u4n-hi", 0, 32, 4, 8, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
550   { MEP_F_24U4N_LO, "f-24u4n-lo", 0, 32, 16, 16, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
551   { MEP_F_24U4N, "f-24u4n", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
552   { MEP_F_CALLNUM, "f-callnum", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
553   { MEP_F_CCRN_HI, "f-ccrn-hi", 0, 32, 28, 2, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
554   { MEP_F_CCRN_LO, "f-ccrn-lo", 0, 32, 4, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
555   { MEP_F_CCRN, "f-ccrn", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
556   { 0, 0, 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } }
557 };
558
559 #undef A
560
561
562
563 /* multi ifield declarations */
564
565 const CGEN_MAYBE_MULTI_IFLD MEP_F_CSRN_MULTI_IFIELD [];
566 const CGEN_MAYBE_MULTI_IFLD MEP_F_CRNX_MULTI_IFIELD [];
567 const CGEN_MAYBE_MULTI_IFLD MEP_F_24S5A2N_MULTI_IFIELD [];
568 const CGEN_MAYBE_MULTI_IFLD MEP_F_24U5A2N_MULTI_IFIELD [];
569 const CGEN_MAYBE_MULTI_IFLD MEP_F_24U8A4N_MULTI_IFIELD [];
570 const CGEN_MAYBE_MULTI_IFLD MEP_F_24U8N_MULTI_IFIELD [];
571 const CGEN_MAYBE_MULTI_IFLD MEP_F_24U4N_MULTI_IFIELD [];
572 const CGEN_MAYBE_MULTI_IFLD MEP_F_CALLNUM_MULTI_IFIELD [];
573 const CGEN_MAYBE_MULTI_IFLD MEP_F_CCRN_MULTI_IFIELD [];
574
575
576 /* multi ifield definitions */
577
578 const CGEN_MAYBE_MULTI_IFLD MEP_F_CSRN_MULTI_IFIELD [] =
579 {
580     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_CSRN_HI] } },
581     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_CSRN_LO] } },
582     { 0, { (const PTR) 0 } }
583 };
584 const CGEN_MAYBE_MULTI_IFLD MEP_F_CRNX_MULTI_IFIELD [] =
585 {
586     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_CRNX_HI] } },
587     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_CRNX_LO] } },
588     { 0, { (const PTR) 0 } }
589 };
590 const CGEN_MAYBE_MULTI_IFLD MEP_F_24S5A2N_MULTI_IFIELD [] =
591 {
592     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_24S5A2N_HI] } },
593     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_24S5A2N_LO] } },
594     { 0, { (const PTR) 0 } }
595 };
596 const CGEN_MAYBE_MULTI_IFLD MEP_F_24U5A2N_MULTI_IFIELD [] =
597 {
598     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_24U5A2N_HI] } },
599     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_24U5A2N_LO] } },
600     { 0, { (const PTR) 0 } }
601 };
602 const CGEN_MAYBE_MULTI_IFLD MEP_F_24U8A4N_MULTI_IFIELD [] =
603 {
604     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_24U8A4N_HI] } },
605     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_24U8A4N_LO] } },
606     { 0, { (const PTR) 0 } }
607 };
608 const CGEN_MAYBE_MULTI_IFLD MEP_F_24U8N_MULTI_IFIELD [] =
609 {
610     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_24U8N_HI] } },
611     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_24U8N_LO] } },
612     { 0, { (const PTR) 0 } }
613 };
614 const CGEN_MAYBE_MULTI_IFLD MEP_F_24U4N_MULTI_IFIELD [] =
615 {
616     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_24U4N_HI] } },
617     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_24U4N_LO] } },
618     { 0, { (const PTR) 0 } }
619 };
620 const CGEN_MAYBE_MULTI_IFLD MEP_F_CALLNUM_MULTI_IFIELD [] =
621 {
622     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_5] } },
623     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_6] } },
624     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_7] } },
625     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_11] } },
626     { 0, { (const PTR) 0 } }
627 };
628 const CGEN_MAYBE_MULTI_IFLD MEP_F_CCRN_MULTI_IFIELD [] =
629 {
630     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_CCRN_HI] } },
631     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_CCRN_LO] } },
632     { 0, { (const PTR) 0 } }
633 };
634
635 /* The operand table.  */
636
637 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
638 #define A(a) (1 << CGEN_OPERAND_##a)
639 #else
640 #define A(a) (1 << CGEN_OPERAND_/**/a)
641 #endif
642 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
643 #define OPERAND(op) MEP_OPERAND_##op
644 #else
645 #define OPERAND(op) MEP_OPERAND_/**/op
646 #endif
647
648 const CGEN_OPERAND mep_cgen_operand_table[] =
649 {
650 /* pc: program counter */
651   { "pc", MEP_OPERAND_PC, HW_H_PC, 0, 0,
652     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_NIL] } }, 
653     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
654 /* r0: register 0 */
655   { "r0", MEP_OPERAND_R0, HW_H_GPR, 0, 0,
656     { 0, { (const PTR) 0 } }, 
657     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
658 /* rn: register Rn */
659   { "rn", MEP_OPERAND_RN, HW_H_GPR, 4, 4,
660     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN] } }, 
661     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
662 /* rm: register Rm */
663   { "rm", MEP_OPERAND_RM, HW_H_GPR, 8, 4,
664     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RM] } }, 
665     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
666 /* rl: register Rl */
667   { "rl", MEP_OPERAND_RL, HW_H_GPR, 12, 4,
668     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RL] } }, 
669     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
670 /* rn3: register 0-7 */
671   { "rn3", MEP_OPERAND_RN3, HW_H_GPR, 5, 3,
672     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN3] } }, 
673     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
674 /* rma: register Rm holding pointer */
675   { "rma", MEP_OPERAND_RMA, HW_H_GPR, 8, 4,
676     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RM] } }, 
677     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_POINTER, 0 } }, { { 1, 0 } } } }  },
678 /* rnc: register Rn holding char */
679   { "rnc", MEP_OPERAND_RNC, HW_H_GPR, 4, 4,
680     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN] } }, 
681     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
682 /* rnuc: register Rn holding unsigned char */
683   { "rnuc", MEP_OPERAND_RNUC, HW_H_GPR, 4, 4,
684     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN] } }, 
685     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
686 /* rns: register Rn holding short */
687   { "rns", MEP_OPERAND_RNS, HW_H_GPR, 4, 4,
688     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN] } }, 
689     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
690 /* rnus: register Rn holding unsigned short */
691   { "rnus", MEP_OPERAND_RNUS, HW_H_GPR, 4, 4,
692     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN] } }, 
693     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
694 /* rnl: register Rn holding long */
695   { "rnl", MEP_OPERAND_RNL, HW_H_GPR, 4, 4,
696     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN] } }, 
697     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
698 /* rnul: register Rn holding unsigned  long */
699   { "rnul", MEP_OPERAND_RNUL, HW_H_GPR, 4, 4,
700     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN] } }, 
701     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_ULONG, 0 } }, { { 1, 0 } } } }  },
702 /* rn3c: register 0-7 holding unsigned char */
703   { "rn3c", MEP_OPERAND_RN3C, HW_H_GPR, 5, 3,
704     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN3] } }, 
705     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
706 /* rn3uc: register 0-7 holding byte */
707   { "rn3uc", MEP_OPERAND_RN3UC, HW_H_GPR, 5, 3,
708     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN3] } }, 
709     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
710 /* rn3s: register 0-7 holding unsigned short */
711   { "rn3s", MEP_OPERAND_RN3S, HW_H_GPR, 5, 3,
712     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN3] } }, 
713     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
714 /* rn3us: register 0-7 holding short */
715   { "rn3us", MEP_OPERAND_RN3US, HW_H_GPR, 5, 3,
716     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN3] } }, 
717     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
718 /* rn3l: register 0-7 holding unsigned long */
719   { "rn3l", MEP_OPERAND_RN3L, HW_H_GPR, 5, 3,
720     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN3] } }, 
721     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
722 /* rn3ul: register 0-7 holding long */
723   { "rn3ul", MEP_OPERAND_RN3UL, HW_H_GPR, 5, 3,
724     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN3] } }, 
725     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_ULONG, 0 } }, { { 1, 0 } } } }  },
726 /* lp: link pointer */
727   { "lp", MEP_OPERAND_LP, HW_H_CSR, 0, 0,
728     { 0, { (const PTR) 0 } }, 
729     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
730 /* sar: shift amount register */
731   { "sar", MEP_OPERAND_SAR, HW_H_CSR, 0, 0,
732     { 0, { (const PTR) 0 } }, 
733     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
734 /* hi: high result */
735   { "hi", MEP_OPERAND_HI, HW_H_CSR, 0, 0,
736     { 0, { (const PTR) 0 } }, 
737     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
738 /* lo: low result */
739   { "lo", MEP_OPERAND_LO, HW_H_CSR, 0, 0,
740     { 0, { (const PTR) 0 } }, 
741     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
742 /* mb0: modulo begin register 0 */
743   { "mb0", MEP_OPERAND_MB0, HW_H_CSR, 0, 0,
744     { 0, { (const PTR) 0 } }, 
745     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
746 /* me0: modulo end register 0 */
747   { "me0", MEP_OPERAND_ME0, HW_H_CSR, 0, 0,
748     { 0, { (const PTR) 0 } }, 
749     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
750 /* mb1: modulo begin register 1 */
751   { "mb1", MEP_OPERAND_MB1, HW_H_CSR, 0, 0,
752     { 0, { (const PTR) 0 } }, 
753     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
754 /* me1: modulo end register 1 */
755   { "me1", MEP_OPERAND_ME1, HW_H_CSR, 0, 0,
756     { 0, { (const PTR) 0 } }, 
757     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
758 /* psw: program status word */
759   { "psw", MEP_OPERAND_PSW, HW_H_CSR, 0, 0,
760     { 0, { (const PTR) 0 } }, 
761     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
762 /* epc: exception prog counter */
763   { "epc", MEP_OPERAND_EPC, HW_H_CSR, 0, 0,
764     { 0, { (const PTR) 0 } }, 
765     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
766 /* exc: exception cause */
767   { "exc", MEP_OPERAND_EXC, HW_H_CSR, 0, 0,
768     { 0, { (const PTR) 0 } }, 
769     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
770 /* npc: nmi program counter */
771   { "npc", MEP_OPERAND_NPC, HW_H_CSR, 0, 0,
772     { 0, { (const PTR) 0 } }, 
773     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
774 /* dbg: debug register */
775   { "dbg", MEP_OPERAND_DBG, HW_H_CSR, 0, 0,
776     { 0, { (const PTR) 0 } }, 
777     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
778 /* depc: debug exception pc */
779   { "depc", MEP_OPERAND_DEPC, HW_H_CSR, 0, 0,
780     { 0, { (const PTR) 0 } }, 
781     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
782 /* opt: option register */
783   { "opt", MEP_OPERAND_OPT, HW_H_CSR, 0, 0,
784     { 0, { (const PTR) 0 } }, 
785     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
786 /* r1: register 1 */
787   { "r1", MEP_OPERAND_R1, HW_H_GPR, 0, 0,
788     { 0, { (const PTR) 0 } }, 
789     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
790 /* tp: tiny data area pointer */
791   { "tp", MEP_OPERAND_TP, HW_H_GPR, 0, 0,
792     { 0, { (const PTR) 0 } }, 
793     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
794 /* sp: stack pointer */
795   { "sp", MEP_OPERAND_SP, HW_H_GPR, 0, 0,
796     { 0, { (const PTR) 0 } }, 
797     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
798 /* tpr: comment */
799   { "tpr", MEP_OPERAND_TPR, HW_H_GPR, 0, 0,
800     { 0, { (const PTR) 0 } }, 
801     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
802 /* spr: comment */
803   { "spr", MEP_OPERAND_SPR, HW_H_GPR, 0, 0,
804     { 0, { (const PTR) 0 } }, 
805     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
806 /* csrn: control/special register */
807   { "csrn", MEP_OPERAND_CSRN, HW_H_CSR, 8, 5,
808     { 2, { (const PTR) &MEP_F_CSRN_MULTI_IFIELD[0] } }, 
809     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_REGNUM, 0 } }, { { 1, 0 } } } }  },
810 /* csrn-idx: control/special reg idx */
811   { "csrn-idx", MEP_OPERAND_CSRN_IDX, HW_H_UINT, 8, 5,
812     { 2, { (const PTR) &MEP_F_CSRN_MULTI_IFIELD[0] } }, 
813     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
814 /* crn64: copro Rn (64-bit) */
815   { "crn64", MEP_OPERAND_CRN64, HW_H_CR64, 4, 4,
816     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_CRN] } }, 
817     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_CP_DATA_BUS_INT, 0 } }, { { 1, 0 } } } }  },
818 /* crn: copro Rn (32-bit) */
819   { "crn", MEP_OPERAND_CRN, HW_H_CR, 4, 4,
820     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_CRN] } }, 
821     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_CP_DATA_BUS_INT, 0 } }, { { 1, 0 } } } }  },
822 /* crnx64: copro Rn (0-31, 64-bit) */
823   { "crnx64", MEP_OPERAND_CRNX64, HW_H_CR64, 4, 5,
824     { 2, { (const PTR) &MEP_F_CRNX_MULTI_IFIELD[0] } }, 
825     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_CP_DATA_BUS_INT, 0 } }, { { 1, 0 } } } }  },
826 /* crnx: copro Rn (0-31, 32-bit) */
827   { "crnx", MEP_OPERAND_CRNX, HW_H_CR, 4, 5,
828     { 2, { (const PTR) &MEP_F_CRNX_MULTI_IFIELD[0] } }, 
829     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_CP_DATA_BUS_INT, 0 } }, { { 1, 0 } } } }  },
830 /* ccrn: copro control reg CCRn */
831   { "ccrn", MEP_OPERAND_CCRN, HW_H_CCR, 4, 6,
832     { 2, { (const PTR) &MEP_F_CCRN_MULTI_IFIELD[0] } }, 
833     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_REGNUM, 0 } }, { { 1, 0 } } } }  },
834 /* cccc: copro flags */
835   { "cccc", MEP_OPERAND_CCCC, HW_H_UINT, 8, 4,
836     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RM] } }, 
837     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
838 /* pcrel8a2: comment */
839   { "pcrel8a2", MEP_OPERAND_PCREL8A2, HW_H_SINT, 8, 7,
840     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_8S8A2] } }, 
841     { 0|A(RELAX)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LABEL, 0 } }, { { 1, 0 } } } }  },
842 /* pcrel12a2: comment */
843   { "pcrel12a2", MEP_OPERAND_PCREL12A2, HW_H_SINT, 4, 11,
844     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_12S4A2] } }, 
845     { 0|A(RELAX)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LABEL, 0 } }, { { 1, 0 } } } }  },
846 /* pcrel17a2: comment */
847   { "pcrel17a2", MEP_OPERAND_PCREL17A2, HW_H_SINT, 16, 16,
848     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_17S16A2] } }, 
849     { 0|A(RELAX)|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LABEL, 0 } }, { { 1, 0 } } } }  },
850 /* pcrel24a2: comment */
851   { "pcrel24a2", MEP_OPERAND_PCREL24A2, HW_H_SINT, 5, 23,
852     { 2, { (const PTR) &MEP_F_24S5A2N_MULTI_IFIELD[0] } }, 
853     { 0|A(PCREL_ADDR)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LABEL, 0 } }, { { 1, 0 } } } }  },
854 /* pcabs24a2: comment */
855   { "pcabs24a2", MEP_OPERAND_PCABS24A2, HW_H_UINT, 5, 23,
856     { 2, { (const PTR) &MEP_F_24U5A2N_MULTI_IFIELD[0] } }, 
857     { 0|A(ABS_ADDR)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LABEL, 0 } }, { { 1, 0 } } } }  },
858 /* sdisp16: comment */
859   { "sdisp16", MEP_OPERAND_SDISP16, HW_H_SINT, 16, 16,
860     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_16S16] } }, 
861     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
862 /* simm16: comment */
863   { "simm16", MEP_OPERAND_SIMM16, HW_H_SINT, 16, 16,
864     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_16S16] } }, 
865     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
866 /* uimm16: comment */
867   { "uimm16", MEP_OPERAND_UIMM16, HW_H_UINT, 16, 16,
868     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_16U16] } }, 
869     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
870 /* code16: uci/dsp code (16 bits) */
871   { "code16", MEP_OPERAND_CODE16, HW_H_UINT, 16, 16,
872     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_16U16] } }, 
873     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
874 /* udisp2: SSARB addend (2 bits) */
875   { "udisp2", MEP_OPERAND_UDISP2, HW_H_SINT, 6, 2,
876     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_2U6] } }, 
877     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
878 /* uimm2: interrupt (2 bits) */
879   { "uimm2", MEP_OPERAND_UIMM2, HW_H_UINT, 10, 2,
880     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_2U10] } }, 
881     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
882 /* simm6: add const (6 bits) */
883   { "simm6", MEP_OPERAND_SIMM6, HW_H_SINT, 8, 6,
884     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_6S8] } }, 
885     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
886 /* simm8: mov const (8 bits) */
887   { "simm8", MEP_OPERAND_SIMM8, HW_H_SINT, 8, 8,
888     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_8S8] } }, 
889     { 0|A(RELOC_IMPLIES_OVERFLOW), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
890 /* addr24a4: comment */
891   { "addr24a4", MEP_OPERAND_ADDR24A4, HW_H_UINT, 8, 22,
892     { 2, { (const PTR) &MEP_F_24U8A4N_MULTI_IFIELD[0] } }, 
893     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 4, 0 } } } }  },
894 /* code24: coprocessor code */
895   { "code24", MEP_OPERAND_CODE24, HW_H_UINT, 4, 24,
896     { 2, { (const PTR) &MEP_F_24U4N_MULTI_IFIELD[0] } }, 
897     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
898 /* callnum: system call number */
899   { "callnum", MEP_OPERAND_CALLNUM, HW_H_UINT, 5, 4,
900     { 4, { (const PTR) &MEP_F_CALLNUM_MULTI_IFIELD[0] } }, 
901     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
902 /* uimm3: bit immediate (3 bits) */
903   { "uimm3", MEP_OPERAND_UIMM3, HW_H_UINT, 5, 3,
904     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_3U5] } }, 
905     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
906 /* uimm4: bCC const (4 bits) */
907   { "uimm4", MEP_OPERAND_UIMM4, HW_H_UINT, 8, 4,
908     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_4U8] } }, 
909     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
910 /* uimm5: bit/shift val (5 bits) */
911   { "uimm5", MEP_OPERAND_UIMM5, HW_H_UINT, 8, 5,
912     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_5U8] } }, 
913     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
914 /* udisp7: comment */
915   { "udisp7", MEP_OPERAND_UDISP7, HW_H_UINT, 9, 7,
916     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_7U9] } }, 
917     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
918 /* udisp7a2: comment */
919   { "udisp7a2", MEP_OPERAND_UDISP7A2, HW_H_UINT, 9, 6,
920     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_7U9A2] } }, 
921     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 2, 0 } } } }  },
922 /* udisp7a4: comment */
923   { "udisp7a4", MEP_OPERAND_UDISP7A4, HW_H_UINT, 9, 5,
924     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_7U9A4] } }, 
925     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 4, 0 } } } }  },
926 /* uimm7a4: comment */
927   { "uimm7a4", MEP_OPERAND_UIMM7A4, HW_H_UINT, 9, 5,
928     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_7U9A4] } }, 
929     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 4, 0 } } } }  },
930 /* uimm24: immediate (24 bits) */
931   { "uimm24", MEP_OPERAND_UIMM24, HW_H_UINT, 8, 24,
932     { 2, { (const PTR) &MEP_F_24U8N_MULTI_IFIELD[0] } }, 
933     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
934 /* cimm4: cache immed'te (4 bits) */
935   { "cimm4", MEP_OPERAND_CIMM4, HW_H_UINT, 4, 4,
936     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_RN] } }, 
937     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
938 /* cimm5: clip immediate (5 bits) */
939   { "cimm5", MEP_OPERAND_CIMM5, HW_H_UINT, 24, 5,
940     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_5U24] } }, 
941     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
942 /* cdisp8: copro addend (8 bits) */
943   { "cdisp8", MEP_OPERAND_CDISP8, HW_H_SINT, 24, 8,
944     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_8S24] } }, 
945     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
946 /* cdisp8a2: comment */
947   { "cdisp8a2", MEP_OPERAND_CDISP8A2, HW_H_SINT, 24, 7,
948     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_8S24A2] } }, 
949     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 2, 0 } } } }  },
950 /* cdisp8a4: comment */
951   { "cdisp8a4", MEP_OPERAND_CDISP8A4, HW_H_SINT, 24, 6,
952     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_8S24A4] } }, 
953     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 4, 0 } } } }  },
954 /* cdisp8a8: comment */
955   { "cdisp8a8", MEP_OPERAND_CDISP8A8, HW_H_SINT, 24, 5,
956     { 0, { (const PTR) &mep_cgen_ifld_table[MEP_F_8S24A8] } }, 
957     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 8, 0 } } } }  },
958 /* zero: Zero operand */
959   { "zero", MEP_OPERAND_ZERO, HW_H_SINT, 0, 0,
960     { 0, { (const PTR) 0 } }, 
961     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
962 /* cp_flag: branch condition register */
963   { "cp_flag", MEP_OPERAND_CP_FLAG, HW_H_CCR, 0, 0,
964     { 0, { (const PTR) 0 } }, 
965     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } }  },
966 /* sentinel */
967   { 0, 0, 0, 0, 0,
968     { 0, { (const PTR) 0 } },
969     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { CDATA_LONG, 0 } }, { { 1, 0 } } } } }
970 };
971
972 #undef A
973
974
975 /* The instruction table.  */
976
977 #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
978 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
979 #define A(a) (1 << CGEN_INSN_##a)
980 #else
981 #define A(a) (1 << CGEN_INSN_/**/a)
982 #endif
983
984 static const CGEN_IBASE mep_cgen_insn_table[MAX_INSNS] =
985 {
986   /* Special null first entry.
987      A `num' value of zero is thus invalid.
988      Also, the special `invalid' insn resides here.  */
989   { 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } } },
990 /* sb $rnc,($rma) */
991   {
992     MEP_INSN_SB, "sb", "sb", 16,
993     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
994   },
995 /* sh $rns,($rma) */
996   {
997     MEP_INSN_SH, "sh", "sh", 16,
998     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
999   },
1000 /* sw $rnl,($rma) */
1001   {
1002     MEP_INSN_SW, "sw", "sw", 16,
1003     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1004   },
1005 /* lb $rnc,($rma) */
1006   {
1007     MEP_INSN_LB, "lb", "lb", 16,
1008     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } }
1009   },
1010 /* lh $rns,($rma) */
1011   {
1012     MEP_INSN_LH, "lh", "lh", 16,
1013     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } }
1014   },
1015 /* lw $rnl,($rma) */
1016   {
1017     MEP_INSN_LW, "lw", "lw", 16,
1018     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } }
1019   },
1020 /* lbu $rnuc,($rma) */
1021   {
1022     MEP_INSN_LBU, "lbu", "lbu", 16,
1023     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } }
1024   },
1025 /* lhu $rnus,($rma) */
1026   {
1027     MEP_INSN_LHU, "lhu", "lhu", 16,
1028     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } }
1029   },
1030 /* sw $rnl,$udisp7a4($spr) */
1031   {
1032     MEP_INSN_SW_SP, "sw-sp", "sw", 16,
1033     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1034   },
1035 /* lw $rnl,$udisp7a4($spr) */
1036   {
1037     MEP_INSN_LW_SP, "lw-sp", "lw", 16,
1038     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } }
1039   },
1040 /* sb $rn3c,$udisp7($tpr) */
1041   {
1042     MEP_INSN_SB_TP, "sb-tp", "sb", 16,
1043     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1044   },
1045 /* sh $rn3s,$udisp7a2($tpr) */
1046   {
1047     MEP_INSN_SH_TP, "sh-tp", "sh", 16,
1048     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1049   },
1050 /* sw $rn3l,$udisp7a4($tpr) */
1051   {
1052     MEP_INSN_SW_TP, "sw-tp", "sw", 16,
1053     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1054   },
1055 /* lb $rn3c,$udisp7($tpr) */
1056   {
1057     MEP_INSN_LB_TP, "lb-tp", "lb", 16,
1058     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } }
1059   },
1060 /* lh $rn3s,$udisp7a2($tpr) */
1061   {
1062     MEP_INSN_LH_TP, "lh-tp", "lh", 16,
1063     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } }
1064   },
1065 /* lw $rn3l,$udisp7a4($tpr) */
1066   {
1067     MEP_INSN_LW_TP, "lw-tp", "lw", 16,
1068     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } }
1069   },
1070 /* lbu $rn3uc,$udisp7($tpr) */
1071   {
1072     MEP_INSN_LBU_TP, "lbu-tp", "lbu", 16,
1073     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } }
1074   },
1075 /* lhu $rn3us,$udisp7a2($tpr) */
1076   {
1077     MEP_INSN_LHU_TP, "lhu-tp", "lhu", 16,
1078     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } }
1079   },
1080 /* sb $rnc,$sdisp16($rma) */
1081   {
1082     MEP_INSN_SB16, "sb16", "sb", 32,
1083     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1084   },
1085 /* sh $rns,$sdisp16($rma) */
1086   {
1087     MEP_INSN_SH16, "sh16", "sh", 32,
1088     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1089   },
1090 /* sw $rnl,$sdisp16($rma) */
1091   {
1092     MEP_INSN_SW16, "sw16", "sw", 32,
1093     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1094   },
1095 /* lb $rnc,$sdisp16($rma) */
1096   {
1097     MEP_INSN_LB16, "lb16", "lb", 32,
1098     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } }
1099   },
1100 /* lh $rns,$sdisp16($rma) */
1101   {
1102     MEP_INSN_LH16, "lh16", "lh", 32,
1103     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } }
1104   },
1105 /* lw $rnl,$sdisp16($rma) */
1106   {
1107     MEP_INSN_LW16, "lw16", "lw", 32,
1108     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } }
1109   },
1110 /* lbu $rnuc,$sdisp16($rma) */
1111   {
1112     MEP_INSN_LBU16, "lbu16", "lbu", 32,
1113     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } }
1114   },
1115 /* lhu $rnus,$sdisp16($rma) */
1116   {
1117     MEP_INSN_LHU16, "lhu16", "lhu", 32,
1118     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } }
1119   },
1120 /* sw $rnl,($addr24a4) */
1121   {
1122     MEP_INSN_SW24, "sw24", "sw", 32,
1123     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1124   },
1125 /* lw $rnl,($addr24a4) */
1126   {
1127     MEP_INSN_LW24, "lw24", "lw", 32,
1128     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } }
1129   },
1130 /* extb $rn */
1131   {
1132     MEP_INSN_EXTB, "extb", "extb", 16,
1133     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1134   },
1135 /* exth $rn */
1136   {
1137     MEP_INSN_EXTH, "exth", "exth", 16,
1138     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1139   },
1140 /* extub $rn */
1141   {
1142     MEP_INSN_EXTUB, "extub", "extub", 16,
1143     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1144   },
1145 /* extuh $rn */
1146   {
1147     MEP_INSN_EXTUH, "extuh", "extuh", 16,
1148     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1149   },
1150 /* ssarb $udisp2($rm) */
1151   {
1152     MEP_INSN_SSARB, "ssarb", "ssarb", 16,
1153     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1154   },
1155 /* mov $rn,$rm */
1156   {
1157     MEP_INSN_MOV, "mov", "mov", 16,
1158     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1159   },
1160 /* mov $rn,$simm8 */
1161   {
1162     MEP_INSN_MOVI8, "movi8", "mov", 16,
1163     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1164   },
1165 /* mov $rn,$simm16 */
1166   {
1167     MEP_INSN_MOVI16, "movi16", "mov", 32,
1168     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1169   },
1170 /* movu $rn3,$uimm24 */
1171   {
1172     MEP_INSN_MOVU24, "movu24", "movu", 32,
1173     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1174   },
1175 /* movu $rn,$uimm16 */
1176   {
1177     MEP_INSN_MOVU16, "movu16", "movu", 32,
1178     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1179   },
1180 /* movh $rn,$uimm16 */
1181   {
1182     MEP_INSN_MOVH, "movh", "movh", 32,
1183     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1184   },
1185 /* add3 $rl,$rn,$rm */
1186   {
1187     MEP_INSN_ADD3, "add3", "add3", 16,
1188     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1189   },
1190 /* add $rn,$simm6 */
1191   {
1192     MEP_INSN_ADD, "add", "add", 16,
1193     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1194   },
1195 /* add3 $rn,$spr,$uimm7a4 */
1196   {
1197     MEP_INSN_ADD3I, "add3i", "add3", 16,
1198     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1199   },
1200 /* advck3 \$0,$rn,$rm */
1201   {
1202     MEP_INSN_ADVCK3, "advck3", "advck3", 16,
1203     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1204   },
1205 /* sub $rn,$rm */
1206   {
1207     MEP_INSN_SUB, "sub", "sub", 16,
1208     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1209   },
1210 /* sbvck3 \$0,$rn,$rm */
1211   {
1212     MEP_INSN_SBVCK3, "sbvck3", "sbvck3", 16,
1213     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1214   },
1215 /* neg $rn,$rm */
1216   {
1217     MEP_INSN_NEG, "neg", "neg", 16,
1218     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1219   },
1220 /* slt3 \$0,$rn,$rm */
1221   {
1222     MEP_INSN_SLT3, "slt3", "slt3", 16,
1223     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1224   },
1225 /* sltu3 \$0,$rn,$rm */
1226   {
1227     MEP_INSN_SLTU3, "sltu3", "sltu3", 16,
1228     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1229   },
1230 /* slt3 \$0,$rn,$uimm5 */
1231   {
1232     MEP_INSN_SLT3I, "slt3i", "slt3", 16,
1233     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1234   },
1235 /* sltu3 \$0,$rn,$uimm5 */
1236   {
1237     MEP_INSN_SLTU3I, "sltu3i", "sltu3", 16,
1238     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1239   },
1240 /* sl1ad3 \$0,$rn,$rm */
1241   {
1242     MEP_INSN_SL1AD3, "sl1ad3", "sl1ad3", 16,
1243     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1244   },
1245 /* sl2ad3 \$0,$rn,$rm */
1246   {
1247     MEP_INSN_SL2AD3, "sl2ad3", "sl2ad3", 16,
1248     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1249   },
1250 /* add3 $rn,$rm,$simm16 */
1251   {
1252     MEP_INSN_ADD3X, "add3x", "add3", 32,
1253     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1254   },
1255 /* slt3 $rn,$rm,$simm16 */
1256   {
1257     MEP_INSN_SLT3X, "slt3x", "slt3", 32,
1258     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1259   },
1260 /* sltu3 $rn,$rm,$uimm16 */
1261   {
1262     MEP_INSN_SLTU3X, "sltu3x", "sltu3", 32,
1263     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1264   },
1265 /* or $rn,$rm */
1266   {
1267     MEP_INSN_OR, "or", "or", 16,
1268     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1269   },
1270 /* and $rn,$rm */
1271   {
1272     MEP_INSN_AND, "and", "and", 16,
1273     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1274   },
1275 /* xor $rn,$rm */
1276   {
1277     MEP_INSN_XOR, "xor", "xor", 16,
1278     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1279   },
1280 /* nor $rn,$rm */
1281   {
1282     MEP_INSN_NOR, "nor", "nor", 16,
1283     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1284   },
1285 /* or3 $rn,$rm,$uimm16 */
1286   {
1287     MEP_INSN_OR3, "or3", "or3", 32,
1288     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1289   },
1290 /* and3 $rn,$rm,$uimm16 */
1291   {
1292     MEP_INSN_AND3, "and3", "and3", 32,
1293     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1294   },
1295 /* xor3 $rn,$rm,$uimm16 */
1296   {
1297     MEP_INSN_XOR3, "xor3", "xor3", 32,
1298     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1299   },
1300 /* sra $rn,$rm */
1301   {
1302     MEP_INSN_SRA, "sra", "sra", 16,
1303     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1304   },
1305 /* srl $rn,$rm */
1306   {
1307     MEP_INSN_SRL, "srl", "srl", 16,
1308     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1309   },
1310 /* sll $rn,$rm */
1311   {
1312     MEP_INSN_SLL, "sll", "sll", 16,
1313     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1314   },
1315 /* sra $rn,$uimm5 */
1316   {
1317     MEP_INSN_SRAI, "srai", "sra", 16,
1318     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1319   },
1320 /* srl $rn,$uimm5 */
1321   {
1322     MEP_INSN_SRLI, "srli", "srl", 16,
1323     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1324   },
1325 /* sll $rn,$uimm5 */
1326   {
1327     MEP_INSN_SLLI, "slli", "sll", 16,
1328     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1329   },
1330 /* sll3 \$0,$rn,$uimm5 */
1331   {
1332     MEP_INSN_SLL3, "sll3", "sll3", 16,
1333     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1334   },
1335 /* fsft $rn,$rm */
1336   {
1337     MEP_INSN_FSFT, "fsft", "fsft", 16,
1338     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1339   },
1340 /* bra $pcrel12a2 */
1341   {
1342     MEP_INSN_BRA, "bra", "bra", 16,
1343     { 0|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1344   },
1345 /* beqz $rn,$pcrel8a2 */
1346   {
1347     MEP_INSN_BEQZ, "beqz", "beqz", 16,
1348     { 0|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1349   },
1350 /* bnez $rn,$pcrel8a2 */
1351   {
1352     MEP_INSN_BNEZ, "bnez", "bnez", 16,
1353     { 0|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1354   },
1355 /* beqi $rn,$uimm4,$pcrel17a2 */
1356   {
1357     MEP_INSN_BEQI, "beqi", "beqi", 32,
1358     { 0|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1359   },
1360 /* bnei $rn,$uimm4,$pcrel17a2 */
1361   {
1362     MEP_INSN_BNEI, "bnei", "bnei", 32,
1363     { 0|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1364   },
1365 /* blti $rn,$uimm4,$pcrel17a2 */
1366   {
1367     MEP_INSN_BLTI, "blti", "blti", 32,
1368     { 0|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1369   },
1370 /* bgei $rn,$uimm4,$pcrel17a2 */
1371   {
1372     MEP_INSN_BGEI, "bgei", "bgei", 32,
1373     { 0|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1374   },
1375 /* beq $rn,$rm,$pcrel17a2 */
1376   {
1377     MEP_INSN_BEQ, "beq", "beq", 32,
1378     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1379   },
1380 /* bne $rn,$rm,$pcrel17a2 */
1381   {
1382     MEP_INSN_BNE, "bne", "bne", 32,
1383     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1384   },
1385 /* bsr $pcrel12a2 */
1386   {
1387     MEP_INSN_BSR12, "bsr12", "bsr", 16,
1388     { 0|A(RELAXABLE)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1389   },
1390 /* bsr $pcrel24a2 */
1391   {
1392     MEP_INSN_BSR24, "bsr24", "bsr", 32,
1393     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1394   },
1395 /* jmp $rm */
1396   {
1397     MEP_INSN_JMP, "jmp", "jmp", 16,
1398     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1399   },
1400 /* jmp $pcabs24a2 */
1401   {
1402     MEP_INSN_JMP24, "jmp24", "jmp", 32,
1403     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1404   },
1405 /* jsr $rm */
1406   {
1407     MEP_INSN_JSR, "jsr", "jsr", 16,
1408     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1409   },
1410 /* ret */
1411   {
1412     MEP_INSN_RET, "ret", "ret", 16,
1413     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1414   },
1415 /* repeat $rn,$pcrel17a2 */
1416   {
1417     MEP_INSN_REPEAT, "repeat", "repeat", 32,
1418     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1419   },
1420 /* erepeat $pcrel17a2 */
1421   {
1422     MEP_INSN_EREPEAT, "erepeat", "erepeat", 32,
1423     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1424   },
1425 /* stc $rn,\$lp */
1426   {
1427     MEP_INSN_STC_LP, "stc_lp", "stc", 16,
1428     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1429   },
1430 /* stc $rn,\$hi */
1431   {
1432     MEP_INSN_STC_HI, "stc_hi", "stc", 16,
1433     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1434   },
1435 /* stc $rn,\$lo */
1436   {
1437     MEP_INSN_STC_LO, "stc_lo", "stc", 16,
1438     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1439   },
1440 /* stc $rn,$csrn */
1441   {
1442     MEP_INSN_STC, "stc", "stc", 16,
1443     { 0|A(VOLATILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1444   },
1445 /* ldc $rn,\$lp */
1446   {
1447     MEP_INSN_LDC_LP, "ldc_lp", "ldc", 16,
1448     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1449   },
1450 /* ldc $rn,\$hi */
1451   {
1452     MEP_INSN_LDC_HI, "ldc_hi", "ldc", 16,
1453     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1454   },
1455 /* ldc $rn,\$lo */
1456   {
1457     MEP_INSN_LDC_LO, "ldc_lo", "ldc", 16,
1458     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1459   },
1460 /* ldc $rn,$csrn */
1461   {
1462     MEP_INSN_LDC, "ldc", "ldc", 16,
1463     { 0|A(VOLATILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 2, 0 } }, { { CONFIG_NONE, 0 } } } }
1464   },
1465 /* di */
1466   {
1467     MEP_INSN_DI, "di", "di", 16,
1468     { 0|A(VOLATILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1469   },
1470 /* ei */
1471   {
1472     MEP_INSN_EI, "ei", "ei", 16,
1473     { 0|A(VOLATILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1474   },
1475 /* reti */
1476   {
1477     MEP_INSN_RETI, "reti", "reti", 16,
1478     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1479   },
1480 /* halt */
1481   {
1482     MEP_INSN_HALT, "halt", "halt", 16,
1483     { 0|A(VOLATILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1484   },
1485 /* sleep */
1486   {
1487     MEP_INSN_SLEEP, "sleep", "sleep", 16,
1488     { 0|A(VOLATILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1489   },
1490 /* swi $uimm2 */
1491   {
1492     MEP_INSN_SWI, "swi", "swi", 16,
1493     { 0|A(VOLATILE)|A(MAY_TRAP), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1494   },
1495 /* break */
1496   {
1497     MEP_INSN_BREAK, "break", "break", 16,
1498     { 0|A(VOLATILE)|A(MAY_TRAP)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1499   },
1500 /* syncm */
1501   {
1502     MEP_INSN_SYNCM, "syncm", "syncm", 16,
1503     { 0|A(VOLATILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1504   },
1505 /* stcb $rn,$uimm16 */
1506   {
1507     MEP_INSN_STCB, "stcb", "stcb", 32,
1508     { 0|A(VOLATILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1509   },
1510 /* ldcb $rn,$uimm16 */
1511   {
1512     MEP_INSN_LDCB, "ldcb", "ldcb", 32,
1513     { 0|A(VOLATILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 3, 0 } }, { { CONFIG_NONE, 0 } } } }
1514   },
1515 /* bsetm ($rma),$uimm3 */
1516   {
1517     MEP_INSN_BSETM, "bsetm", "bsetm", 16,
1518     { 0|A(OPTIONAL_BIT_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1519   },
1520 /* bclrm ($rma),$uimm3 */
1521   {
1522     MEP_INSN_BCLRM, "bclrm", "bclrm", 16,
1523     { 0|A(OPTIONAL_BIT_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1524   },
1525 /* bnotm ($rma),$uimm3 */
1526   {
1527     MEP_INSN_BNOTM, "bnotm", "bnotm", 16,
1528     { 0|A(OPTIONAL_BIT_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1529   },
1530 /* btstm \$0,($rma),$uimm3 */
1531   {
1532     MEP_INSN_BTSTM, "btstm", "btstm", 16,
1533     { 0|A(OPTIONAL_BIT_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1534   },
1535 /* tas $rn,($rma) */
1536   {
1537     MEP_INSN_TAS, "tas", "tas", 16,
1538     { 0|A(OPTIONAL_BIT_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1539   },
1540 /* cache $cimm4,($rma) */
1541   {
1542     MEP_INSN_CACHE, "cache", "cache", 16,
1543     { 0|A(VOLATILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1544   },
1545 /* mul $rn,$rm */
1546   {
1547     MEP_INSN_MUL, "mul", "mul", 16,
1548     { 0|A(OPTIONAL_MUL_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1549   },
1550 /* mulu $rn,$rm */
1551   {
1552     MEP_INSN_MULU, "mulu", "mulu", 16,
1553     { 0|A(OPTIONAL_MUL_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1554   },
1555 /* mulr $rn,$rm */
1556   {
1557     MEP_INSN_MULR, "mulr", "mulr", 16,
1558     { 0|A(OPTIONAL_MUL_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 3, 0 } }, { { CONFIG_NONE, 0 } } } }
1559   },
1560 /* mulru $rn,$rm */
1561   {
1562     MEP_INSN_MULRU, "mulru", "mulru", 16,
1563     { 0|A(OPTIONAL_MUL_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 3, 0 } }, { { CONFIG_NONE, 0 } } } }
1564   },
1565 /* madd $rn,$rm */
1566   {
1567     MEP_INSN_MADD, "madd", "madd", 32,
1568     { 0|A(OPTIONAL_MUL_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1569   },
1570 /* maddu $rn,$rm */
1571   {
1572     MEP_INSN_MADDU, "maddu", "maddu", 32,
1573     { 0|A(OPTIONAL_MUL_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1574   },
1575 /* maddr $rn,$rm */
1576   {
1577     MEP_INSN_MADDR, "maddr", "maddr", 32,
1578     { 0|A(OPTIONAL_MUL_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 3, 0 } }, { { CONFIG_NONE, 0 } } } }
1579   },
1580 /* maddru $rn,$rm */
1581   {
1582     MEP_INSN_MADDRU, "maddru", "maddru", 32,
1583     { 0|A(OPTIONAL_MUL_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 3, 0 } }, { { CONFIG_NONE, 0 } } } }
1584   },
1585 /* div $rn,$rm */
1586   {
1587     MEP_INSN_DIV, "div", "div", 16,
1588     { 0|A(MAY_TRAP)|A(OPTIONAL_DIV_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 34, 0 } }, { { CONFIG_NONE, 0 } } } }
1589   },
1590 /* divu $rn,$rm */
1591   {
1592     MEP_INSN_DIVU, "divu", "divu", 16,
1593     { 0|A(MAY_TRAP)|A(OPTIONAL_DIV_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 34, 0 } }, { { CONFIG_NONE, 0 } } } }
1594   },
1595 /* dret */
1596   {
1597     MEP_INSN_DRET, "dret", "dret", 16,
1598     { 0|A(OPTIONAL_DEBUG_INSN)|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1599   },
1600 /* dbreak */
1601   {
1602     MEP_INSN_DBREAK, "dbreak", "dbreak", 16,
1603     { 0|A(VOLATILE)|A(MAY_TRAP)|A(OPTIONAL_DEBUG_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1604   },
1605 /* ldz $rn,$rm */
1606   {
1607     MEP_INSN_LDZ, "ldz", "ldz", 32,
1608     { 0|A(OPTIONAL_LDZ_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1609   },
1610 /* abs $rn,$rm */
1611   {
1612     MEP_INSN_ABS, "abs", "abs", 32,
1613     { 0|A(OPTIONAL_ABS_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1614   },
1615 /* ave $rn,$rm */
1616   {
1617     MEP_INSN_AVE, "ave", "ave", 32,
1618     { 0|A(OPTIONAL_AVE_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1619   },
1620 /* min $rn,$rm */
1621   {
1622     MEP_INSN_MIN, "min", "min", 32,
1623     { 0|A(OPTIONAL_MINMAX_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1624   },
1625 /* max $rn,$rm */
1626   {
1627     MEP_INSN_MAX, "max", "max", 32,
1628     { 0|A(OPTIONAL_MINMAX_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1629   },
1630 /* minu $rn,$rm */
1631   {
1632     MEP_INSN_MINU, "minu", "minu", 32,
1633     { 0|A(OPTIONAL_MINMAX_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1634   },
1635 /* maxu $rn,$rm */
1636   {
1637     MEP_INSN_MAXU, "maxu", "maxu", 32,
1638     { 0|A(OPTIONAL_MINMAX_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1639   },
1640 /* clip $rn,$cimm5 */
1641   {
1642     MEP_INSN_CLIP, "clip", "clip", 32,
1643     { 0|A(OPTIONAL_CLIP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1644   },
1645 /* clipu $rn,$cimm5 */
1646   {
1647     MEP_INSN_CLIPU, "clipu", "clipu", 32,
1648     { 0|A(OPTIONAL_CLIP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1649   },
1650 /* sadd $rn,$rm */
1651   {
1652     MEP_INSN_SADD, "sadd", "sadd", 32,
1653     { 0|A(OPTIONAL_SAT_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1654   },
1655 /* ssub $rn,$rm */
1656   {
1657     MEP_INSN_SSUB, "ssub", "ssub", 32,
1658     { 0|A(OPTIONAL_SAT_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1659   },
1660 /* saddu $rn,$rm */
1661   {
1662     MEP_INSN_SADDU, "saddu", "saddu", 32,
1663     { 0|A(OPTIONAL_SAT_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1664   },
1665 /* ssubu $rn,$rm */
1666   {
1667     MEP_INSN_SSUBU, "ssubu", "ssubu", 32,
1668     { 0|A(OPTIONAL_SAT_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1669   },
1670 /* swcp $crn,($rma) */
1671   {
1672     MEP_INSN_SWCP, "swcp", "swcp", 16,
1673     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1674   },
1675 /* lwcp $crn,($rma) */
1676   {
1677     MEP_INSN_LWCP, "lwcp", "lwcp", 16,
1678     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1679   },
1680 /* smcp $crn64,($rma) */
1681   {
1682     MEP_INSN_SMCP, "smcp", "smcp", 16,
1683     { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1684   },
1685 /* lmcp $crn64,($rma) */
1686   {
1687     MEP_INSN_LMCP, "lmcp", "lmcp", 16,
1688     { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1689   },
1690 /* swcpi $crn,($rma+) */
1691   {
1692     MEP_INSN_SWCPI, "swcpi", "swcpi", 16,
1693     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1694   },
1695 /* lwcpi $crn,($rma+) */
1696   {
1697     MEP_INSN_LWCPI, "lwcpi", "lwcpi", 16,
1698     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1699   },
1700 /* smcpi $crn64,($rma+) */
1701   {
1702     MEP_INSN_SMCPI, "smcpi", "smcpi", 16,
1703     { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1704   },
1705 /* lmcpi $crn64,($rma+) */
1706   {
1707     MEP_INSN_LMCPI, "lmcpi", "lmcpi", 16,
1708     { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1709   },
1710 /* swcp $crn,$sdisp16($rma) */
1711   {
1712     MEP_INSN_SWCP16, "swcp16", "swcp", 32,
1713     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1714   },
1715 /* lwcp $crn,$sdisp16($rma) */
1716   {
1717     MEP_INSN_LWCP16, "lwcp16", "lwcp", 32,
1718     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1719   },
1720 /* smcp $crn64,$sdisp16($rma) */
1721   {
1722     MEP_INSN_SMCP16, "smcp16", "smcp", 32,
1723     { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1724   },
1725 /* lmcp $crn64,$sdisp16($rma) */
1726   {
1727     MEP_INSN_LMCP16, "lmcp16", "lmcp", 32,
1728     { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1729   },
1730 /* sbcpa $crn,($rma+),$cdisp8 */
1731   {
1732     MEP_INSN_SBCPA, "sbcpa", "sbcpa", 32,
1733     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1734   },
1735 /* lbcpa $crn,($rma+),$cdisp8 */
1736   {
1737     MEP_INSN_LBCPA, "lbcpa", "lbcpa", 32,
1738     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1739   },
1740 /* shcpa $crn,($rma+),$cdisp8a2 */
1741   {
1742     MEP_INSN_SHCPA, "shcpa", "shcpa", 32,
1743     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1744   },
1745 /* lhcpa $crn,($rma+),$cdisp8a2 */
1746   {
1747     MEP_INSN_LHCPA, "lhcpa", "lhcpa", 32,
1748     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1749   },
1750 /* swcpa $crn,($rma+),$cdisp8a4 */
1751   {
1752     MEP_INSN_SWCPA, "swcpa", "swcpa", 32,
1753     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1754   },
1755 /* lwcpa $crn,($rma+),$cdisp8a4 */
1756   {
1757     MEP_INSN_LWCPA, "lwcpa", "lwcpa", 32,
1758     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1759   },
1760 /* smcpa $crn64,($rma+),$cdisp8a8 */
1761   {
1762     MEP_INSN_SMCPA, "smcpa", "smcpa", 32,
1763     { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1764   },
1765 /* lmcpa $crn64,($rma+),$cdisp8a8 */
1766   {
1767     MEP_INSN_LMCPA, "lmcpa", "lmcpa", 32,
1768     { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1769   },
1770 /* sbcpm0 $crn,($rma+),$cdisp8 */
1771   {
1772     MEP_INSN_SBCPM0, "sbcpm0", "sbcpm0", 32,
1773     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1774   },
1775 /* lbcpm0 $crn,($rma+),$cdisp8 */
1776   {
1777     MEP_INSN_LBCPM0, "lbcpm0", "lbcpm0", 32,
1778     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1779   },
1780 /* shcpm0 $crn,($rma+),$cdisp8a2 */
1781   {
1782     MEP_INSN_SHCPM0, "shcpm0", "shcpm0", 32,
1783     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1784   },
1785 /* lhcpm0 $crn,($rma+),$cdisp8a2 */
1786   {
1787     MEP_INSN_LHCPM0, "lhcpm0", "lhcpm0", 32,
1788     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1789   },
1790 /* swcpm0 $crn,($rma+),$cdisp8a4 */
1791   {
1792     MEP_INSN_SWCPM0, "swcpm0", "swcpm0", 32,
1793     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1794   },
1795 /* lwcpm0 $crn,($rma+),$cdisp8a4 */
1796   {
1797     MEP_INSN_LWCPM0, "lwcpm0", "lwcpm0", 32,
1798     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1799   },
1800 /* smcpm0 $crn64,($rma+),$cdisp8a8 */
1801   {
1802     MEP_INSN_SMCPM0, "smcpm0", "smcpm0", 32,
1803     { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1804   },
1805 /* lmcpm0 $crn64,($rma+),$cdisp8a8 */
1806   {
1807     MEP_INSN_LMCPM0, "lmcpm0", "lmcpm0", 32,
1808     { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1809   },
1810 /* sbcpm1 $crn,($rma+),$cdisp8 */
1811   {
1812     MEP_INSN_SBCPM1, "sbcpm1", "sbcpm1", 32,
1813     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1814   },
1815 /* lbcpm1 $crn,($rma+),$cdisp8 */
1816   {
1817     MEP_INSN_LBCPM1, "lbcpm1", "lbcpm1", 32,
1818     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1819   },
1820 /* shcpm1 $crn,($rma+),$cdisp8a2 */
1821   {
1822     MEP_INSN_SHCPM1, "shcpm1", "shcpm1", 32,
1823     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1824   },
1825 /* lhcpm1 $crn,($rma+),$cdisp8a2 */
1826   {
1827     MEP_INSN_LHCPM1, "lhcpm1", "lhcpm1", 32,
1828     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1829   },
1830 /* swcpm1 $crn,($rma+),$cdisp8a4 */
1831   {
1832     MEP_INSN_SWCPM1, "swcpm1", "swcpm1", 32,
1833     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1834   },
1835 /* lwcpm1 $crn,($rma+),$cdisp8a4 */
1836   {
1837     MEP_INSN_LWCPM1, "lwcpm1", "lwcpm1", 32,
1838     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1839   },
1840 /* smcpm1 $crn64,($rma+),$cdisp8a8 */
1841   {
1842     MEP_INSN_SMCPM1, "smcpm1", "smcpm1", 32,
1843     { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1844   },
1845 /* lmcpm1 $crn64,($rma+),$cdisp8a8 */
1846   {
1847     MEP_INSN_LMCPM1, "lmcpm1", "lmcpm1", 32,
1848     { 0|A(OPTIONAL_CP64_INSN)|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1849   },
1850 /* bcpeq $cccc,$pcrel17a2 */
1851   {
1852     MEP_INSN_BCPEQ, "bcpeq", "bcpeq", 32,
1853     { 0|A(RELAXABLE)|A(OPTIONAL_CP_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1854   },
1855 /* bcpne $cccc,$pcrel17a2 */
1856   {
1857     MEP_INSN_BCPNE, "bcpne", "bcpne", 32,
1858     { 0|A(RELAXABLE)|A(OPTIONAL_CP_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1859   },
1860 /* bcpat $cccc,$pcrel17a2 */
1861   {
1862     MEP_INSN_BCPAT, "bcpat", "bcpat", 32,
1863     { 0|A(RELAXABLE)|A(OPTIONAL_CP_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1864   },
1865 /* bcpaf $cccc,$pcrel17a2 */
1866   {
1867     MEP_INSN_BCPAF, "bcpaf", "bcpaf", 32,
1868     { 0|A(RELAXABLE)|A(OPTIONAL_CP_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1869   },
1870 /* synccp */
1871   {
1872     MEP_INSN_SYNCCP, "synccp", "synccp", 16,
1873     { 0|A(OPTIONAL_CP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1874   },
1875 /* jsrv $rm */
1876   {
1877     MEP_INSN_JSRV, "jsrv", "jsrv", 16,
1878     { 0|A(OPTIONAL_CP_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1879   },
1880 /* bsrv $pcrel24a2 */
1881   {
1882     MEP_INSN_BSRV, "bsrv", "bsrv", 32,
1883     { 0|A(OPTIONAL_CP_INSN)|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1884   },
1885 /* --unused-- */
1886   {
1887     MEP_INSN_SIM_SYSCALL, "sim-syscall", "--unused--", 16,
1888     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1889   },
1890 /* --reserved-- */
1891   {
1892     MEP_INSN_RI_0, "ri-0", "--reserved--", 16,
1893     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1894   },
1895 /* --reserved-- */
1896   {
1897     MEP_INSN_RI_1, "ri-1", "--reserved--", 16,
1898     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1899   },
1900 /* --reserved-- */
1901   {
1902     MEP_INSN_RI_2, "ri-2", "--reserved--", 16,
1903     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1904   },
1905 /* --reserved-- */
1906   {
1907     MEP_INSN_RI_3, "ri-3", "--reserved--", 16,
1908     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1909   },
1910 /* --reserved-- */
1911   {
1912     MEP_INSN_RI_4, "ri-4", "--reserved--", 16,
1913     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1914   },
1915 /* --reserved-- */
1916   {
1917     MEP_INSN_RI_5, "ri-5", "--reserved--", 16,
1918     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1919   },
1920 /* --reserved-- */
1921   {
1922     MEP_INSN_RI_6, "ri-6", "--reserved--", 16,
1923     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1924   },
1925 /* --reserved-- */
1926   {
1927     MEP_INSN_RI_7, "ri-7", "--reserved--", 16,
1928     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1929   },
1930 /* --reserved-- */
1931   {
1932     MEP_INSN_RI_8, "ri-8", "--reserved--", 16,
1933     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1934   },
1935 /* --reserved-- */
1936   {
1937     MEP_INSN_RI_9, "ri-9", "--reserved--", 16,
1938     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1939   },
1940 /* --reserved-- */
1941   {
1942     MEP_INSN_RI_10, "ri-10", "--reserved--", 16,
1943     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1944   },
1945 /* --reserved-- */
1946   {
1947     MEP_INSN_RI_11, "ri-11", "--reserved--", 16,
1948     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1949   },
1950 /* --reserved-- */
1951   {
1952     MEP_INSN_RI_12, "ri-12", "--reserved--", 16,
1953     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1954   },
1955 /* --reserved-- */
1956   {
1957     MEP_INSN_RI_13, "ri-13", "--reserved--", 16,
1958     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1959   },
1960 /* --reserved-- */
1961   {
1962     MEP_INSN_RI_14, "ri-14", "--reserved--", 16,
1963     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1964   },
1965 /* --reserved-- */
1966   {
1967     MEP_INSN_RI_15, "ri-15", "--reserved--", 16,
1968     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1969   },
1970 /* --reserved-- */
1971   {
1972     MEP_INSN_RI_17, "ri-17", "--reserved--", 16,
1973     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1974   },
1975 /* --reserved-- */
1976   {
1977     MEP_INSN_RI_20, "ri-20", "--reserved--", 16,
1978     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1979   },
1980 /* --reserved-- */
1981   {
1982     MEP_INSN_RI_21, "ri-21", "--reserved--", 16,
1983     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1984   },
1985 /* --reserved-- */
1986   {
1987     MEP_INSN_RI_22, "ri-22", "--reserved--", 16,
1988     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1989   },
1990 /* --reserved-- */
1991   {
1992     MEP_INSN_RI_23, "ri-23", "--reserved--", 16,
1993     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1994   },
1995 /* --reserved-- */
1996   {
1997     MEP_INSN_RI_24, "ri-24", "--reserved--", 16,
1998     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
1999   },
2000 /* --reserved-- */
2001   {
2002     MEP_INSN_RI_25, "ri-25", "--reserved--", 16,
2003     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
2004   },
2005 /* --reserved-- */
2006   {
2007     MEP_INSN_RI_26, "ri-26", "--reserved--", 16,
2008     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
2009   },
2010 /* --reserved-- */
2011   {
2012     MEP_INSN_RI_16, "ri-16", "--reserved--", 16,
2013     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
2014   },
2015 /* --reserved-- */
2016   {
2017     MEP_INSN_RI_18, "ri-18", "--reserved--", 16,
2018     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
2019   },
2020 /* --reserved-- */
2021   {
2022     MEP_INSN_RI_19, "ri-19", "--reserved--", 16,
2023     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } }, { { 0, 0 } }, { { CONFIG_NONE, 0 } } } }
2024   },
2025 };
2026
2027 #undef OP
2028 #undef A
2029
2030 /* Initialize anything needed to be done once, before any cpu_open call.  */
2031
2032 static void
2033 init_tables (void)
2034 {
2035 }
2036
2037 static const CGEN_MACH * lookup_mach_via_bfd_name (const CGEN_MACH *, const char *);
2038 static void build_hw_table      (CGEN_CPU_TABLE *);
2039 static void build_ifield_table  (CGEN_CPU_TABLE *);
2040 static void build_operand_table (CGEN_CPU_TABLE *);
2041 static void build_insn_table    (CGEN_CPU_TABLE *);
2042 static void mep_cgen_rebuild_tables (CGEN_CPU_TABLE *);
2043
2044 /* Subroutine of mep_cgen_cpu_open to look up a mach via its bfd name.  */
2045
2046 static const CGEN_MACH *
2047 lookup_mach_via_bfd_name (const CGEN_MACH *table, const char *name)
2048 {
2049   while (table->name)
2050     {
2051       if (strcmp (name, table->bfd_name) == 0)
2052         return table;
2053       ++table;
2054     }
2055   abort ();
2056 }
2057
2058 /* Subroutine of mep_cgen_cpu_open to build the hardware table.  */
2059
2060 static void
2061 build_hw_table (CGEN_CPU_TABLE *cd)
2062 {
2063   int i;
2064   int machs = cd->machs;
2065   const CGEN_HW_ENTRY *init = & mep_cgen_hw_table[0];
2066   /* MAX_HW is only an upper bound on the number of selected entries.
2067      However each entry is indexed by it's enum so there can be holes in
2068      the table.  */
2069   const CGEN_HW_ENTRY **selected =
2070     (const CGEN_HW_ENTRY **) xmalloc (MAX_HW * sizeof (CGEN_HW_ENTRY *));
2071
2072   cd->hw_table.init_entries = init;
2073   cd->hw_table.entry_size = sizeof (CGEN_HW_ENTRY);
2074   memset (selected, 0, MAX_HW * sizeof (CGEN_HW_ENTRY *));
2075   /* ??? For now we just use machs to determine which ones we want.  */
2076   for (i = 0; init[i].name != NULL; ++i)
2077     if (CGEN_HW_ATTR_VALUE (&init[i], CGEN_HW_MACH)
2078         & machs)
2079       selected[init[i].type] = &init[i];
2080   cd->hw_table.entries = selected;
2081   cd->hw_table.num_entries = MAX_HW;
2082 }
2083
2084 /* Subroutine of mep_cgen_cpu_open to build the hardware table.  */
2085
2086 static void
2087 build_ifield_table (CGEN_CPU_TABLE *cd)
2088 {
2089   cd->ifld_table = & mep_cgen_ifld_table[0];
2090 }
2091
2092 /* Subroutine of mep_cgen_cpu_open to build the hardware table.  */
2093
2094 static void
2095 build_operand_table (CGEN_CPU_TABLE *cd)
2096 {
2097   int i;
2098   int machs = cd->machs;
2099   const CGEN_OPERAND *init = & mep_cgen_operand_table[0];
2100   /* MAX_OPERANDS is only an upper bound on the number of selected entries.
2101      However each entry is indexed by it's enum so there can be holes in
2102      the table.  */
2103   const CGEN_OPERAND **selected = xmalloc (MAX_OPERANDS * sizeof (* selected));
2104
2105   cd->operand_table.init_entries = init;
2106   cd->operand_table.entry_size = sizeof (CGEN_OPERAND);
2107   memset (selected, 0, MAX_OPERANDS * sizeof (CGEN_OPERAND *));
2108   /* ??? For now we just use mach to determine which ones we want.  */
2109   for (i = 0; init[i].name != NULL; ++i)
2110     if (CGEN_OPERAND_ATTR_VALUE (&init[i], CGEN_OPERAND_MACH)
2111         & machs)
2112       selected[init[i].type] = &init[i];
2113   cd->operand_table.entries = selected;
2114   cd->operand_table.num_entries = MAX_OPERANDS;
2115 }
2116
2117 /* Subroutine of mep_cgen_cpu_open to build the hardware table.
2118    ??? This could leave out insns not supported by the specified mach/isa,
2119    but that would cause errors like "foo only supported by bar" to become
2120    "unknown insn", so for now we include all insns and require the app to
2121    do the checking later.
2122    ??? On the other hand, parsing of such insns may require their hardware or
2123    operand elements to be in the table [which they mightn't be].  */
2124
2125 static void
2126 build_insn_table (CGEN_CPU_TABLE *cd)
2127 {
2128   int i;
2129   const CGEN_IBASE *ib = & mep_cgen_insn_table[0];
2130   CGEN_INSN *insns = xmalloc (MAX_INSNS * sizeof (CGEN_INSN));
2131
2132   memset (insns, 0, MAX_INSNS * sizeof (CGEN_INSN));
2133   for (i = 0; i < MAX_INSNS; ++i)
2134     insns[i].base = &ib[i];
2135   cd->insn_table.init_entries = insns;
2136   cd->insn_table.entry_size = sizeof (CGEN_IBASE);
2137   cd->insn_table.num_init_entries = MAX_INSNS;
2138 }
2139
2140 /* Subroutine of mep_cgen_cpu_open to rebuild the tables.  */
2141
2142 static void
2143 mep_cgen_rebuild_tables (CGEN_CPU_TABLE *cd)
2144 {
2145   int i;
2146   CGEN_BITSET *isas = cd->isas;
2147   unsigned int machs = cd->machs;
2148
2149   cd->int_insn_p = CGEN_INT_INSN_P;
2150
2151   /* Data derived from the isa spec.  */
2152 #define UNSET (CGEN_SIZE_UNKNOWN + 1)
2153   cd->default_insn_bitsize = UNSET;
2154   cd->base_insn_bitsize = UNSET;
2155   cd->min_insn_bitsize = 65535; /* Some ridiculously big number.  */
2156   cd->max_insn_bitsize = 0;
2157   for (i = 0; i < MAX_ISAS; ++i)
2158     if (cgen_bitset_contains (isas, i))
2159       {
2160         const CGEN_ISA *isa = & mep_cgen_isa_table[i];
2161
2162         /* Default insn sizes of all selected isas must be
2163            equal or we set the result to 0, meaning "unknown".  */
2164         if (cd->default_insn_bitsize == UNSET)
2165           cd->default_insn_bitsize = isa->default_insn_bitsize;
2166         else if (isa->default_insn_bitsize == cd->default_insn_bitsize)
2167           ; /* This is ok.  */
2168         else
2169           cd->default_insn_bitsize = CGEN_SIZE_UNKNOWN;
2170
2171         /* Base insn sizes of all selected isas must be equal
2172            or we set the result to 0, meaning "unknown".  */
2173         if (cd->base_insn_bitsize == UNSET)
2174           cd->base_insn_bitsize = isa->base_insn_bitsize;
2175         else if (isa->base_insn_bitsize == cd->base_insn_bitsize)
2176           ; /* This is ok.  */
2177         else
2178           cd->base_insn_bitsize = CGEN_SIZE_UNKNOWN;
2179
2180         /* Set min,max insn sizes.  */
2181         if (isa->min_insn_bitsize < cd->min_insn_bitsize)
2182           cd->min_insn_bitsize = isa->min_insn_bitsize;
2183         if (isa->max_insn_bitsize > cd->max_insn_bitsize)
2184           cd->max_insn_bitsize = isa->max_insn_bitsize;
2185       }
2186
2187   /* Data derived from the mach spec.  */
2188   for (i = 0; i < MAX_MACHS; ++i)
2189     if (((1 << i) & machs) != 0)
2190       {
2191         const CGEN_MACH *mach = & mep_cgen_mach_table[i];
2192
2193         if (mach->insn_chunk_bitsize != 0)
2194         {
2195           if (cd->insn_chunk_bitsize != 0 && cd->insn_chunk_bitsize != mach->insn_chunk_bitsize)
2196             {
2197               fprintf (stderr, "mep_cgen_rebuild_tables: conflicting insn-chunk-bitsize values: `%d' vs. `%d'\n",
2198                        cd->insn_chunk_bitsize, mach->insn_chunk_bitsize);
2199               abort ();
2200             }
2201
2202           cd->insn_chunk_bitsize = mach->insn_chunk_bitsize;
2203         }
2204       }
2205
2206   /* Determine which hw elements are used by MACH.  */
2207   build_hw_table (cd);
2208
2209   /* Build the ifield table.  */
2210   build_ifield_table (cd);
2211
2212   /* Determine which operands are used by MACH/ISA.  */
2213   build_operand_table (cd);
2214
2215   /* Build the instruction table.  */
2216   build_insn_table (cd);
2217 }
2218
2219 /* Initialize a cpu table and return a descriptor.
2220    It's much like opening a file, and must be the first function called.
2221    The arguments are a set of (type/value) pairs, terminated with
2222    CGEN_CPU_OPEN_END.
2223
2224    Currently supported values:
2225    CGEN_CPU_OPEN_ISAS:    bitmap of values in enum isa_attr
2226    CGEN_CPU_OPEN_MACHS:   bitmap of values in enum mach_attr
2227    CGEN_CPU_OPEN_BFDMACH: specify 1 mach using bfd name
2228    CGEN_CPU_OPEN_ENDIAN:  specify endian choice
2229    CGEN_CPU_OPEN_END:     terminates arguments
2230
2231    ??? Simultaneous multiple isas might not make sense, but it's not (yet)
2232    precluded.
2233
2234    ??? We only support ISO C stdargs here, not K&R.
2235    Laziness, plus experiment to see if anything requires K&R - eventually
2236    K&R will no longer be supported - e.g. GDB is currently trying this.  */
2237
2238 CGEN_CPU_DESC
2239 mep_cgen_cpu_open (enum cgen_cpu_open_arg arg_type, ...)
2240 {
2241   CGEN_CPU_TABLE *cd = (CGEN_CPU_TABLE *) xmalloc (sizeof (CGEN_CPU_TABLE));
2242   static int init_p;
2243   CGEN_BITSET *isas = 0;  /* 0 = "unspecified" */
2244   unsigned int machs = 0; /* 0 = "unspecified" */
2245   enum cgen_endian endian = CGEN_ENDIAN_UNKNOWN;
2246   va_list ap;
2247
2248   if (! init_p)
2249     {
2250       init_tables ();
2251       init_p = 1;
2252     }
2253
2254   memset (cd, 0, sizeof (*cd));
2255
2256   va_start (ap, arg_type);
2257   while (arg_type != CGEN_CPU_OPEN_END)
2258     {
2259       switch (arg_type)
2260         {
2261         case CGEN_CPU_OPEN_ISAS :
2262           isas = va_arg (ap, CGEN_BITSET *);
2263           break;
2264         case CGEN_CPU_OPEN_MACHS :
2265           machs = va_arg (ap, unsigned int);
2266           break;
2267         case CGEN_CPU_OPEN_BFDMACH :
2268           {
2269             const char *name = va_arg (ap, const char *);
2270             const CGEN_MACH *mach =
2271               lookup_mach_via_bfd_name (mep_cgen_mach_table, name);
2272
2273             machs |= 1 << mach->num;
2274             break;
2275           }
2276         case CGEN_CPU_OPEN_ENDIAN :
2277           endian = va_arg (ap, enum cgen_endian);
2278           break;
2279         default :
2280           fprintf (stderr, "mep_cgen_cpu_open: unsupported argument `%d'\n",
2281                    arg_type);
2282           abort (); /* ??? return NULL? */
2283         }
2284       arg_type = va_arg (ap, enum cgen_cpu_open_arg);
2285     }
2286   va_end (ap);
2287
2288   /* Mach unspecified means "all".  */
2289   if (machs == 0)
2290     machs = (1 << MAX_MACHS) - 1;
2291   /* Base mach is always selected.  */
2292   machs |= 1;
2293   if (endian == CGEN_ENDIAN_UNKNOWN)
2294     {
2295       /* ??? If target has only one, could have a default.  */
2296       fprintf (stderr, "mep_cgen_cpu_open: no endianness specified\n");
2297       abort ();
2298     }
2299
2300   cd->isas = cgen_bitset_copy (isas);
2301   cd->machs = machs;
2302   cd->endian = endian;
2303   /* FIXME: for the sparc case we can determine insn-endianness statically.
2304      The worry here is where both data and insn endian can be independently
2305      chosen, in which case this function will need another argument.
2306      Actually, will want to allow for more arguments in the future anyway.  */
2307   cd->insn_endian = endian;
2308
2309   /* Table (re)builder.  */
2310   cd->rebuild_tables = mep_cgen_rebuild_tables;
2311   mep_cgen_rebuild_tables (cd);
2312
2313   /* Default to not allowing signed overflow.  */
2314   cd->signed_overflow_ok_p = 0;
2315   
2316   return (CGEN_CPU_DESC) cd;
2317 }
2318
2319 /* Cover fn to mep_cgen_cpu_open to handle the simple case of 1 isa, 1 mach.
2320    MACH_NAME is the bfd name of the mach.  */
2321
2322 CGEN_CPU_DESC
2323 mep_cgen_cpu_open_1 (const char *mach_name, enum cgen_endian endian)
2324 {
2325   return mep_cgen_cpu_open (CGEN_CPU_OPEN_BFDMACH, mach_name,
2326                                CGEN_CPU_OPEN_ENDIAN, endian,
2327                                CGEN_CPU_OPEN_END);
2328 }
2329
2330 /* Close a cpu table.
2331    ??? This can live in a machine independent file, but there's currently
2332    no place to put this file (there's no libcgen).  libopcodes is the wrong
2333    place as some simulator ports use this but they don't use libopcodes.  */
2334
2335 void
2336 mep_cgen_cpu_close (CGEN_CPU_DESC cd)
2337 {
2338   unsigned int i;
2339   const CGEN_INSN *insns;
2340
2341   if (cd->macro_insn_table.init_entries)
2342     {
2343       insns = cd->macro_insn_table.init_entries;
2344       for (i = 0; i < cd->macro_insn_table.num_init_entries; ++i, ++insns)
2345         if (CGEN_INSN_RX ((insns)))
2346           regfree (CGEN_INSN_RX (insns));
2347     }
2348
2349   if (cd->insn_table.init_entries)
2350     {
2351       insns = cd->insn_table.init_entries;
2352       for (i = 0; i < cd->insn_table.num_init_entries; ++i, ++insns)
2353         if (CGEN_INSN_RX (insns))
2354           regfree (CGEN_INSN_RX (insns));
2355     }  
2356
2357   if (cd->macro_insn_table.init_entries)
2358     free ((CGEN_INSN *) cd->macro_insn_table.init_entries);
2359
2360   if (cd->insn_table.init_entries)
2361     free ((CGEN_INSN *) cd->insn_table.init_entries);
2362
2363   if (cd->hw_table.entries)
2364     free ((CGEN_HW_ENTRY *) cd->hw_table.entries);
2365
2366   if (cd->operand_table.entries)
2367     free ((CGEN_HW_ENTRY *) cd->operand_table.entries);
2368
2369   free (cd);
2370 }
2371