OSDN Git Service

09d7aab512eb0b7fa97c0bdeb1169ef7bec03e3a
[pf3gnuchains/pf3gnuchains3x.git] / sim / sh64 / sh-desc.c
1 /* CPU data for sh.
2
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5 Copyright 1996-2009 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 "sh-desc.h"
32 #include "sh-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   { "sh2", MACH_SH2 },
50   { "sh2e", MACH_SH2E },
51   { "sh2a_fpu", MACH_SH2A_FPU },
52   { "sh2a_nofpu", MACH_SH2A_NOFPU },
53   { "sh3", MACH_SH3 },
54   { "sh3e", MACH_SH3E },
55   { "sh4_nofpu", MACH_SH4_NOFPU },
56   { "sh4", MACH_SH4 },
57   { "sh4a_nofpu", MACH_SH4A_NOFPU },
58   { "sh4a", MACH_SH4A },
59   { "sh4al", MACH_SH4AL },
60   { "sh5", MACH_SH5 },
61   { "max", MACH_MAX },
62   { 0, 0 }
63 };
64
65 static const CGEN_ATTR_ENTRY ISA_attr[] ATTRIBUTE_UNUSED =
66 {
67   { "compact", ISA_COMPACT },
68   { "media", ISA_MEDIA },
69   { "max", ISA_MAX },
70   { 0, 0 }
71 };
72
73 static const CGEN_ATTR_ENTRY SH4_GROUP_attr[] ATTRIBUTE_UNUSED =
74 {
75   { "NONE", SH4_GROUP_NONE },
76   { "MT", SH4_GROUP_MT },
77   { "EX", SH4_GROUP_EX },
78   { "BR", SH4_GROUP_BR },
79   { "LS", SH4_GROUP_LS },
80   { "FE", SH4_GROUP_FE },
81   { "CO", SH4_GROUP_CO },
82   { "MAX", SH4_GROUP_MAX },
83   { 0, 0 }
84 };
85
86 static const CGEN_ATTR_ENTRY SH4A_GROUP_attr[] ATTRIBUTE_UNUSED =
87 {
88   { "NONE", SH4A_GROUP_NONE },
89   { "MT", SH4A_GROUP_MT },
90   { "EX", SH4A_GROUP_EX },
91   { "BR", SH4A_GROUP_BR },
92   { "LS", SH4A_GROUP_LS },
93   { "FE", SH4A_GROUP_FE },
94   { "CO", SH4A_GROUP_CO },
95   { "MAX", SH4A_GROUP_MAX },
96   { 0, 0 }
97 };
98
99 const CGEN_ATTR_TABLE sh_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 sh_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   { 0, 0, 0 }
121 };
122
123 const CGEN_ATTR_TABLE sh_cgen_operand_attr_table[] =
124 {
125   { "MACH", & MACH_attr[0], & MACH_attr[0] },
126   { "ISA", & ISA_attr[0], & ISA_attr[0] },
127   { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
128   { "PCREL-ADDR", &bool_attr[0], &bool_attr[0] },
129   { "ABS-ADDR", &bool_attr[0], &bool_attr[0] },
130   { "SIGN-OPT", &bool_attr[0], &bool_attr[0] },
131   { "SIGNED", &bool_attr[0], &bool_attr[0] },
132   { "NEGATIVE", &bool_attr[0], &bool_attr[0] },
133   { "RELAX", &bool_attr[0], &bool_attr[0] },
134   { "SEM-ONLY", &bool_attr[0], &bool_attr[0] },
135   { 0, 0, 0 }
136 };
137
138 const CGEN_ATTR_TABLE sh_cgen_insn_attr_table[] =
139 {
140   { "MACH", & MACH_attr[0], & MACH_attr[0] },
141   { "ISA", & ISA_attr[0], & ISA_attr[0] },
142   { "SH4-GROUP", & SH4_GROUP_attr[0], & SH4_GROUP_attr[0] },
143   { "SH4A-GROUP", & SH4A_GROUP_attr[0], & SH4A_GROUP_attr[0] },
144   { "ALIAS", &bool_attr[0], &bool_attr[0] },
145   { "VIRTUAL", &bool_attr[0], &bool_attr[0] },
146   { "UNCOND-CTI", &bool_attr[0], &bool_attr[0] },
147   { "COND-CTI", &bool_attr[0], &bool_attr[0] },
148   { "SKIP-CTI", &bool_attr[0], &bool_attr[0] },
149   { "DELAY-SLOT", &bool_attr[0], &bool_attr[0] },
150   { "RELAXABLE", &bool_attr[0], &bool_attr[0] },
151   { "RELAXED", &bool_attr[0], &bool_attr[0] },
152   { "NO-DIS", &bool_attr[0], &bool_attr[0] },
153   { "PBB", &bool_attr[0], &bool_attr[0] },
154   { "ILLSLOT", &bool_attr[0], &bool_attr[0] },
155   { "FP-INSN", &bool_attr[0], &bool_attr[0] },
156   { "32-BIT-INSN", &bool_attr[0], &bool_attr[0] },
157   { 0, 0, 0 }
158 };
159
160 /* Instruction set variants.  */
161
162 static const CGEN_ISA sh_cgen_isa_table[] = {
163   { "media", 32, 32, 32, 32 },
164   { "compact", 32, 32, 16, 32 },
165   { 0, 0, 0, 0, 0 }
166 };
167
168 /* Machine variants.  */
169
170 static const CGEN_MACH sh_cgen_mach_table[] = {
171   { "sh2", "sh2", MACH_SH2, 0 },
172   { "sh2e", "sh2e", MACH_SH2E, 0 },
173   { "sh2a-fpu", "sh2a-fpu", MACH_SH2A_FPU, 0 },
174   { "sh2a-nofpu", "sh2a-nofpu", MACH_SH2A_NOFPU, 0 },
175   { "sh3", "sh3", MACH_SH3, 0 },
176   { "sh3e", "sh3e", MACH_SH3E, 0 },
177   { "sh4-nofpu", "sh4-nofpu", MACH_SH4_NOFPU, 0 },
178   { "sh4", "sh4", MACH_SH4, 0 },
179   { "sh4a-nofpu", "sh4a-nofpu", MACH_SH4A_NOFPU, 0 },
180   { "sh4a", "sh4a", MACH_SH4A, 0 },
181   { "sh4al", "sh4al", MACH_SH4AL, 0 },
182   { "sh5", "sh5", MACH_SH5, 0 },
183   { 0, 0, 0, 0 }
184 };
185
186 static CGEN_KEYWORD_ENTRY sh_cgen_opval_frc_names_entries[] =
187 {
188   { "fr0", 0, {0, {{{0, 0}}}}, 0, 0 },
189   { "fr1", 1, {0, {{{0, 0}}}}, 0, 0 },
190   { "fr2", 2, {0, {{{0, 0}}}}, 0, 0 },
191   { "fr3", 3, {0, {{{0, 0}}}}, 0, 0 },
192   { "fr4", 4, {0, {{{0, 0}}}}, 0, 0 },
193   { "fr5", 5, {0, {{{0, 0}}}}, 0, 0 },
194   { "fr6", 6, {0, {{{0, 0}}}}, 0, 0 },
195   { "fr7", 7, {0, {{{0, 0}}}}, 0, 0 },
196   { "fr8", 8, {0, {{{0, 0}}}}, 0, 0 },
197   { "fr9", 9, {0, {{{0, 0}}}}, 0, 0 },
198   { "fr10", 10, {0, {{{0, 0}}}}, 0, 0 },
199   { "fr11", 11, {0, {{{0, 0}}}}, 0, 0 },
200   { "fr12", 12, {0, {{{0, 0}}}}, 0, 0 },
201   { "fr13", 13, {0, {{{0, 0}}}}, 0, 0 },
202   { "fr14", 14, {0, {{{0, 0}}}}, 0, 0 },
203   { "fr15", 15, {0, {{{0, 0}}}}, 0, 0 }
204 };
205
206 CGEN_KEYWORD sh_cgen_opval_frc_names =
207 {
208   & sh_cgen_opval_frc_names_entries[0],
209   16,
210   0, 0, 0, 0, ""
211 };
212
213 static CGEN_KEYWORD_ENTRY sh_cgen_opval_drc_names_entries[] =
214 {
215   { "dr0", 0, {0, {{{0, 0}}}}, 0, 0 },
216   { "dr2", 2, {0, {{{0, 0}}}}, 0, 0 },
217   { "dr4", 4, {0, {{{0, 0}}}}, 0, 0 },
218   { "dr6", 6, {0, {{{0, 0}}}}, 0, 0 },
219   { "dr8", 8, {0, {{{0, 0}}}}, 0, 0 },
220   { "dr10", 10, {0, {{{0, 0}}}}, 0, 0 },
221   { "dr12", 12, {0, {{{0, 0}}}}, 0, 0 },
222   { "dr14", 14, {0, {{{0, 0}}}}, 0, 0 }
223 };
224
225 CGEN_KEYWORD sh_cgen_opval_drc_names =
226 {
227   & sh_cgen_opval_drc_names_entries[0],
228   8,
229   0, 0, 0, 0, ""
230 };
231
232 static CGEN_KEYWORD_ENTRY sh_cgen_opval_xf_names_entries[] =
233 {
234   { "xf0", 0, {0, {{{0, 0}}}}, 0, 0 },
235   { "xf1", 1, {0, {{{0, 0}}}}, 0, 0 },
236   { "xf2", 2, {0, {{{0, 0}}}}, 0, 0 },
237   { "xf3", 3, {0, {{{0, 0}}}}, 0, 0 },
238   { "xf4", 4, {0, {{{0, 0}}}}, 0, 0 },
239   { "xf5", 5, {0, {{{0, 0}}}}, 0, 0 },
240   { "xf6", 6, {0, {{{0, 0}}}}, 0, 0 },
241   { "xf7", 7, {0, {{{0, 0}}}}, 0, 0 },
242   { "xf8", 8, {0, {{{0, 0}}}}, 0, 0 },
243   { "xf9", 9, {0, {{{0, 0}}}}, 0, 0 },
244   { "xf10", 10, {0, {{{0, 0}}}}, 0, 0 },
245   { "xf11", 11, {0, {{{0, 0}}}}, 0, 0 },
246   { "xf12", 12, {0, {{{0, 0}}}}, 0, 0 },
247   { "xf13", 13, {0, {{{0, 0}}}}, 0, 0 },
248   { "xf14", 14, {0, {{{0, 0}}}}, 0, 0 },
249   { "xf15", 15, {0, {{{0, 0}}}}, 0, 0 }
250 };
251
252 CGEN_KEYWORD sh_cgen_opval_xf_names =
253 {
254   & sh_cgen_opval_xf_names_entries[0],
255   16,
256   0, 0, 0, 0, ""
257 };
258
259 static CGEN_KEYWORD_ENTRY sh_cgen_opval_h_gr_entries[] =
260 {
261   { "r0", 0, {0, {{{0, 0}}}}, 0, 0 },
262   { "r1", 1, {0, {{{0, 0}}}}, 0, 0 },
263   { "r2", 2, {0, {{{0, 0}}}}, 0, 0 },
264   { "r3", 3, {0, {{{0, 0}}}}, 0, 0 },
265   { "r4", 4, {0, {{{0, 0}}}}, 0, 0 },
266   { "r5", 5, {0, {{{0, 0}}}}, 0, 0 },
267   { "r6", 6, {0, {{{0, 0}}}}, 0, 0 },
268   { "r7", 7, {0, {{{0, 0}}}}, 0, 0 },
269   { "r8", 8, {0, {{{0, 0}}}}, 0, 0 },
270   { "r9", 9, {0, {{{0, 0}}}}, 0, 0 },
271   { "r10", 10, {0, {{{0, 0}}}}, 0, 0 },
272   { "r11", 11, {0, {{{0, 0}}}}, 0, 0 },
273   { "r12", 12, {0, {{{0, 0}}}}, 0, 0 },
274   { "r13", 13, {0, {{{0, 0}}}}, 0, 0 },
275   { "r14", 14, {0, {{{0, 0}}}}, 0, 0 },
276   { "r15", 15, {0, {{{0, 0}}}}, 0, 0 },
277   { "r16", 16, {0, {{{0, 0}}}}, 0, 0 },
278   { "r17", 17, {0, {{{0, 0}}}}, 0, 0 },
279   { "r18", 18, {0, {{{0, 0}}}}, 0, 0 },
280   { "r19", 19, {0, {{{0, 0}}}}, 0, 0 },
281   { "r20", 20, {0, {{{0, 0}}}}, 0, 0 },
282   { "r21", 21, {0, {{{0, 0}}}}, 0, 0 },
283   { "r22", 22, {0, {{{0, 0}}}}, 0, 0 },
284   { "r23", 23, {0, {{{0, 0}}}}, 0, 0 },
285   { "r24", 24, {0, {{{0, 0}}}}, 0, 0 },
286   { "r25", 25, {0, {{{0, 0}}}}, 0, 0 },
287   { "r26", 26, {0, {{{0, 0}}}}, 0, 0 },
288   { "r27", 27, {0, {{{0, 0}}}}, 0, 0 },
289   { "r28", 28, {0, {{{0, 0}}}}, 0, 0 },
290   { "r29", 29, {0, {{{0, 0}}}}, 0, 0 },
291   { "r30", 30, {0, {{{0, 0}}}}, 0, 0 },
292   { "r31", 31, {0, {{{0, 0}}}}, 0, 0 },
293   { "r32", 32, {0, {{{0, 0}}}}, 0, 0 },
294   { "r33", 33, {0, {{{0, 0}}}}, 0, 0 },
295   { "r34", 34, {0, {{{0, 0}}}}, 0, 0 },
296   { "r35", 35, {0, {{{0, 0}}}}, 0, 0 },
297   { "r36", 36, {0, {{{0, 0}}}}, 0, 0 },
298   { "r37", 37, {0, {{{0, 0}}}}, 0, 0 },
299   { "r38", 38, {0, {{{0, 0}}}}, 0, 0 },
300   { "r39", 39, {0, {{{0, 0}}}}, 0, 0 },
301   { "r40", 40, {0, {{{0, 0}}}}, 0, 0 },
302   { "r41", 41, {0, {{{0, 0}}}}, 0, 0 },
303   { "r42", 42, {0, {{{0, 0}}}}, 0, 0 },
304   { "r43", 43, {0, {{{0, 0}}}}, 0, 0 },
305   { "r44", 44, {0, {{{0, 0}}}}, 0, 0 },
306   { "r45", 45, {0, {{{0, 0}}}}, 0, 0 },
307   { "r46", 46, {0, {{{0, 0}}}}, 0, 0 },
308   { "r47", 47, {0, {{{0, 0}}}}, 0, 0 },
309   { "r48", 48, {0, {{{0, 0}}}}, 0, 0 },
310   { "r49", 49, {0, {{{0, 0}}}}, 0, 0 },
311   { "r50", 50, {0, {{{0, 0}}}}, 0, 0 },
312   { "r51", 51, {0, {{{0, 0}}}}, 0, 0 },
313   { "r52", 52, {0, {{{0, 0}}}}, 0, 0 },
314   { "r53", 53, {0, {{{0, 0}}}}, 0, 0 },
315   { "r54", 54, {0, {{{0, 0}}}}, 0, 0 },
316   { "r55", 55, {0, {{{0, 0}}}}, 0, 0 },
317   { "r56", 56, {0, {{{0, 0}}}}, 0, 0 },
318   { "r57", 57, {0, {{{0, 0}}}}, 0, 0 },
319   { "r58", 58, {0, {{{0, 0}}}}, 0, 0 },
320   { "r59", 59, {0, {{{0, 0}}}}, 0, 0 },
321   { "r60", 60, {0, {{{0, 0}}}}, 0, 0 },
322   { "r61", 61, {0, {{{0, 0}}}}, 0, 0 },
323   { "r62", 62, {0, {{{0, 0}}}}, 0, 0 },
324   { "r63", 63, {0, {{{0, 0}}}}, 0, 0 }
325 };
326
327 CGEN_KEYWORD sh_cgen_opval_h_gr =
328 {
329   & sh_cgen_opval_h_gr_entries[0],
330   64,
331   0, 0, 0, 0, ""
332 };
333
334 static CGEN_KEYWORD_ENTRY sh_cgen_opval_h_grc_entries[] =
335 {
336   { "r0", 0, {0, {{{0, 0}}}}, 0, 0 },
337   { "r1", 1, {0, {{{0, 0}}}}, 0, 0 },
338   { "r2", 2, {0, {{{0, 0}}}}, 0, 0 },
339   { "r3", 3, {0, {{{0, 0}}}}, 0, 0 },
340   { "r4", 4, {0, {{{0, 0}}}}, 0, 0 },
341   { "r5", 5, {0, {{{0, 0}}}}, 0, 0 },
342   { "r6", 6, {0, {{{0, 0}}}}, 0, 0 },
343   { "r7", 7, {0, {{{0, 0}}}}, 0, 0 },
344   { "r8", 8, {0, {{{0, 0}}}}, 0, 0 },
345   { "r9", 9, {0, {{{0, 0}}}}, 0, 0 },
346   { "r10", 10, {0, {{{0, 0}}}}, 0, 0 },
347   { "r11", 11, {0, {{{0, 0}}}}, 0, 0 },
348   { "r12", 12, {0, {{{0, 0}}}}, 0, 0 },
349   { "r13", 13, {0, {{{0, 0}}}}, 0, 0 },
350   { "r14", 14, {0, {{{0, 0}}}}, 0, 0 },
351   { "r15", 15, {0, {{{0, 0}}}}, 0, 0 }
352 };
353
354 CGEN_KEYWORD sh_cgen_opval_h_grc =
355 {
356   & sh_cgen_opval_h_grc_entries[0],
357   16,
358   0, 0, 0, 0, ""
359 };
360
361 static CGEN_KEYWORD_ENTRY sh_cgen_opval_h_cr_entries[] =
362 {
363   { "cr0", 0, {0, {{{0, 0}}}}, 0, 0 },
364   { "cr1", 1, {0, {{{0, 0}}}}, 0, 0 },
365   { "cr2", 2, {0, {{{0, 0}}}}, 0, 0 },
366   { "cr3", 3, {0, {{{0, 0}}}}, 0, 0 },
367   { "cr4", 4, {0, {{{0, 0}}}}, 0, 0 },
368   { "cr5", 5, {0, {{{0, 0}}}}, 0, 0 },
369   { "cr6", 6, {0, {{{0, 0}}}}, 0, 0 },
370   { "cr7", 7, {0, {{{0, 0}}}}, 0, 0 },
371   { "cr8", 8, {0, {{{0, 0}}}}, 0, 0 },
372   { "cr9", 9, {0, {{{0, 0}}}}, 0, 0 },
373   { "cr10", 10, {0, {{{0, 0}}}}, 0, 0 },
374   { "cr11", 11, {0, {{{0, 0}}}}, 0, 0 },
375   { "cr12", 12, {0, {{{0, 0}}}}, 0, 0 },
376   { "cr13", 13, {0, {{{0, 0}}}}, 0, 0 },
377   { "cr14", 14, {0, {{{0, 0}}}}, 0, 0 },
378   { "cr15", 15, {0, {{{0, 0}}}}, 0, 0 },
379   { "cr16", 16, {0, {{{0, 0}}}}, 0, 0 },
380   { "cr17", 17, {0, {{{0, 0}}}}, 0, 0 },
381   { "cr18", 18, {0, {{{0, 0}}}}, 0, 0 },
382   { "cr19", 19, {0, {{{0, 0}}}}, 0, 0 },
383   { "cr20", 20, {0, {{{0, 0}}}}, 0, 0 },
384   { "cr21", 21, {0, {{{0, 0}}}}, 0, 0 },
385   { "cr22", 22, {0, {{{0, 0}}}}, 0, 0 },
386   { "cr23", 23, {0, {{{0, 0}}}}, 0, 0 },
387   { "cr24", 24, {0, {{{0, 0}}}}, 0, 0 },
388   { "cr25", 25, {0, {{{0, 0}}}}, 0, 0 },
389   { "cr26", 26, {0, {{{0, 0}}}}, 0, 0 },
390   { "cr27", 27, {0, {{{0, 0}}}}, 0, 0 },
391   { "cr28", 28, {0, {{{0, 0}}}}, 0, 0 },
392   { "cr29", 29, {0, {{{0, 0}}}}, 0, 0 },
393   { "cr30", 30, {0, {{{0, 0}}}}, 0, 0 },
394   { "cr31", 31, {0, {{{0, 0}}}}, 0, 0 },
395   { "cr32", 32, {0, {{{0, 0}}}}, 0, 0 },
396   { "cr33", 33, {0, {{{0, 0}}}}, 0, 0 },
397   { "cr34", 34, {0, {{{0, 0}}}}, 0, 0 },
398   { "cr35", 35, {0, {{{0, 0}}}}, 0, 0 },
399   { "cr36", 36, {0, {{{0, 0}}}}, 0, 0 },
400   { "cr37", 37, {0, {{{0, 0}}}}, 0, 0 },
401   { "cr38", 38, {0, {{{0, 0}}}}, 0, 0 },
402   { "cr39", 39, {0, {{{0, 0}}}}, 0, 0 },
403   { "cr40", 40, {0, {{{0, 0}}}}, 0, 0 },
404   { "cr41", 41, {0, {{{0, 0}}}}, 0, 0 },
405   { "cr42", 42, {0, {{{0, 0}}}}, 0, 0 },
406   { "cr43", 43, {0, {{{0, 0}}}}, 0, 0 },
407   { "cr44", 44, {0, {{{0, 0}}}}, 0, 0 },
408   { "cr45", 45, {0, {{{0, 0}}}}, 0, 0 },
409   { "cr46", 46, {0, {{{0, 0}}}}, 0, 0 },
410   { "cr47", 47, {0, {{{0, 0}}}}, 0, 0 },
411   { "cr48", 48, {0, {{{0, 0}}}}, 0, 0 },
412   { "cr49", 49, {0, {{{0, 0}}}}, 0, 0 },
413   { "cr50", 50, {0, {{{0, 0}}}}, 0, 0 },
414   { "cr51", 51, {0, {{{0, 0}}}}, 0, 0 },
415   { "cr52", 52, {0, {{{0, 0}}}}, 0, 0 },
416   { "cr53", 53, {0, {{{0, 0}}}}, 0, 0 },
417   { "cr54", 54, {0, {{{0, 0}}}}, 0, 0 },
418   { "cr55", 55, {0, {{{0, 0}}}}, 0, 0 },
419   { "cr56", 56, {0, {{{0, 0}}}}, 0, 0 },
420   { "cr57", 57, {0, {{{0, 0}}}}, 0, 0 },
421   { "cr58", 58, {0, {{{0, 0}}}}, 0, 0 },
422   { "cr59", 59, {0, {{{0, 0}}}}, 0, 0 },
423   { "cr60", 60, {0, {{{0, 0}}}}, 0, 0 },
424   { "cr61", 61, {0, {{{0, 0}}}}, 0, 0 },
425   { "cr62", 62, {0, {{{0, 0}}}}, 0, 0 },
426   { "cr63", 63, {0, {{{0, 0}}}}, 0, 0 }
427 };
428
429 CGEN_KEYWORD sh_cgen_opval_h_cr =
430 {
431   & sh_cgen_opval_h_cr_entries[0],
432   64,
433   0, 0, 0, 0, ""
434 };
435
436 static CGEN_KEYWORD_ENTRY sh_cgen_opval_h_fr_entries[] =
437 {
438   { "fr0", 0, {0, {{{0, 0}}}}, 0, 0 },
439   { "fr1", 1, {0, {{{0, 0}}}}, 0, 0 },
440   { "fr2", 2, {0, {{{0, 0}}}}, 0, 0 },
441   { "fr3", 3, {0, {{{0, 0}}}}, 0, 0 },
442   { "fr4", 4, {0, {{{0, 0}}}}, 0, 0 },
443   { "fr5", 5, {0, {{{0, 0}}}}, 0, 0 },
444   { "fr6", 6, {0, {{{0, 0}}}}, 0, 0 },
445   { "fr7", 7, {0, {{{0, 0}}}}, 0, 0 },
446   { "fr8", 8, {0, {{{0, 0}}}}, 0, 0 },
447   { "fr9", 9, {0, {{{0, 0}}}}, 0, 0 },
448   { "fr10", 10, {0, {{{0, 0}}}}, 0, 0 },
449   { "fr11", 11, {0, {{{0, 0}}}}, 0, 0 },
450   { "fr12", 12, {0, {{{0, 0}}}}, 0, 0 },
451   { "fr13", 13, {0, {{{0, 0}}}}, 0, 0 },
452   { "fr14", 14, {0, {{{0, 0}}}}, 0, 0 },
453   { "fr15", 15, {0, {{{0, 0}}}}, 0, 0 },
454   { "fr16", 16, {0, {{{0, 0}}}}, 0, 0 },
455   { "fr17", 17, {0, {{{0, 0}}}}, 0, 0 },
456   { "fr18", 18, {0, {{{0, 0}}}}, 0, 0 },
457   { "fr19", 19, {0, {{{0, 0}}}}, 0, 0 },
458   { "fr20", 20, {0, {{{0, 0}}}}, 0, 0 },
459   { "fr21", 21, {0, {{{0, 0}}}}, 0, 0 },
460   { "fr22", 22, {0, {{{0, 0}}}}, 0, 0 },
461   { "fr23", 23, {0, {{{0, 0}}}}, 0, 0 },
462   { "fr24", 24, {0, {{{0, 0}}}}, 0, 0 },
463   { "fr25", 25, {0, {{{0, 0}}}}, 0, 0 },
464   { "fr26", 26, {0, {{{0, 0}}}}, 0, 0 },
465   { "fr27", 27, {0, {{{0, 0}}}}, 0, 0 },
466   { "fr28", 28, {0, {{{0, 0}}}}, 0, 0 },
467   { "fr29", 29, {0, {{{0, 0}}}}, 0, 0 },
468   { "fr30", 30, {0, {{{0, 0}}}}, 0, 0 },
469   { "fr31", 31, {0, {{{0, 0}}}}, 0, 0 },
470   { "fr32", 32, {0, {{{0, 0}}}}, 0, 0 },
471   { "fr33", 33, {0, {{{0, 0}}}}, 0, 0 },
472   { "fr34", 34, {0, {{{0, 0}}}}, 0, 0 },
473   { "fr35", 35, {0, {{{0, 0}}}}, 0, 0 },
474   { "fr36", 36, {0, {{{0, 0}}}}, 0, 0 },
475   { "fr37", 37, {0, {{{0, 0}}}}, 0, 0 },
476   { "fr38", 38, {0, {{{0, 0}}}}, 0, 0 },
477   { "fr39", 39, {0, {{{0, 0}}}}, 0, 0 },
478   { "fr40", 40, {0, {{{0, 0}}}}, 0, 0 },
479   { "fr41", 41, {0, {{{0, 0}}}}, 0, 0 },
480   { "fr42", 42, {0, {{{0, 0}}}}, 0, 0 },
481   { "fr43", 43, {0, {{{0, 0}}}}, 0, 0 },
482   { "fr44", 44, {0, {{{0, 0}}}}, 0, 0 },
483   { "fr45", 45, {0, {{{0, 0}}}}, 0, 0 },
484   { "fr46", 46, {0, {{{0, 0}}}}, 0, 0 },
485   { "fr47", 47, {0, {{{0, 0}}}}, 0, 0 },
486   { "fr48", 48, {0, {{{0, 0}}}}, 0, 0 },
487   { "fr49", 49, {0, {{{0, 0}}}}, 0, 0 },
488   { "fr50", 50, {0, {{{0, 0}}}}, 0, 0 },
489   { "fr51", 51, {0, {{{0, 0}}}}, 0, 0 },
490   { "fr52", 52, {0, {{{0, 0}}}}, 0, 0 },
491   { "fr53", 53, {0, {{{0, 0}}}}, 0, 0 },
492   { "fr54", 54, {0, {{{0, 0}}}}, 0, 0 },
493   { "fr55", 55, {0, {{{0, 0}}}}, 0, 0 },
494   { "fr56", 56, {0, {{{0, 0}}}}, 0, 0 },
495   { "fr57", 57, {0, {{{0, 0}}}}, 0, 0 },
496   { "fr58", 58, {0, {{{0, 0}}}}, 0, 0 },
497   { "fr59", 59, {0, {{{0, 0}}}}, 0, 0 },
498   { "fr60", 60, {0, {{{0, 0}}}}, 0, 0 },
499   { "fr61", 61, {0, {{{0, 0}}}}, 0, 0 },
500   { "fr62", 62, {0, {{{0, 0}}}}, 0, 0 },
501   { "fr63", 63, {0, {{{0, 0}}}}, 0, 0 }
502 };
503
504 CGEN_KEYWORD sh_cgen_opval_h_fr =
505 {
506   & sh_cgen_opval_h_fr_entries[0],
507   64,
508   0, 0, 0, 0, ""
509 };
510
511 static CGEN_KEYWORD_ENTRY sh_cgen_opval_h_fp_entries[] =
512 {
513   { "fp0", 0, {0, {{{0, 0}}}}, 0, 0 },
514   { "fp2", 2, {0, {{{0, 0}}}}, 0, 0 },
515   { "fp4", 4, {0, {{{0, 0}}}}, 0, 0 },
516   { "fp6", 6, {0, {{{0, 0}}}}, 0, 0 },
517   { "fp8", 8, {0, {{{0, 0}}}}, 0, 0 },
518   { "fp10", 10, {0, {{{0, 0}}}}, 0, 0 },
519   { "fp12", 12, {0, {{{0, 0}}}}, 0, 0 },
520   { "fp14", 14, {0, {{{0, 0}}}}, 0, 0 },
521   { "fp16", 16, {0, {{{0, 0}}}}, 0, 0 },
522   { "fp18", 18, {0, {{{0, 0}}}}, 0, 0 },
523   { "fp20", 20, {0, {{{0, 0}}}}, 0, 0 },
524   { "fp22", 22, {0, {{{0, 0}}}}, 0, 0 },
525   { "fp24", 24, {0, {{{0, 0}}}}, 0, 0 },
526   { "fp26", 26, {0, {{{0, 0}}}}, 0, 0 },
527   { "fp28", 28, {0, {{{0, 0}}}}, 0, 0 },
528   { "fp30", 30, {0, {{{0, 0}}}}, 0, 0 },
529   { "fp32", 32, {0, {{{0, 0}}}}, 0, 0 },
530   { "fp34", 34, {0, {{{0, 0}}}}, 0, 0 },
531   { "fp36", 36, {0, {{{0, 0}}}}, 0, 0 },
532   { "fp38", 38, {0, {{{0, 0}}}}, 0, 0 },
533   { "fp40", 40, {0, {{{0, 0}}}}, 0, 0 },
534   { "fp42", 42, {0, {{{0, 0}}}}, 0, 0 },
535   { "fp44", 44, {0, {{{0, 0}}}}, 0, 0 },
536   { "fp46", 46, {0, {{{0, 0}}}}, 0, 0 },
537   { "fp48", 48, {0, {{{0, 0}}}}, 0, 0 },
538   { "fp50", 50, {0, {{{0, 0}}}}, 0, 0 },
539   { "fp52", 52, {0, {{{0, 0}}}}, 0, 0 },
540   { "fp54", 54, {0, {{{0, 0}}}}, 0, 0 },
541   { "fp56", 56, {0, {{{0, 0}}}}, 0, 0 },
542   { "fp58", 58, {0, {{{0, 0}}}}, 0, 0 },
543   { "fp60", 60, {0, {{{0, 0}}}}, 0, 0 },
544   { "fp62", 62, {0, {{{0, 0}}}}, 0, 0 }
545 };
546
547 CGEN_KEYWORD sh_cgen_opval_h_fp =
548 {
549   & sh_cgen_opval_h_fp_entries[0],
550   32,
551   0, 0, 0, 0, ""
552 };
553
554 static CGEN_KEYWORD_ENTRY sh_cgen_opval_h_fv_entries[] =
555 {
556   { "fv0", 0, {0, {{{0, 0}}}}, 0, 0 },
557   { "fv4", 4, {0, {{{0, 0}}}}, 0, 0 },
558   { "fv8", 8, {0, {{{0, 0}}}}, 0, 0 },
559   { "fv12", 12, {0, {{{0, 0}}}}, 0, 0 },
560   { "fv16", 16, {0, {{{0, 0}}}}, 0, 0 },
561   { "fv20", 20, {0, {{{0, 0}}}}, 0, 0 },
562   { "fv24", 24, {0, {{{0, 0}}}}, 0, 0 },
563   { "fv28", 28, {0, {{{0, 0}}}}, 0, 0 },
564   { "fv32", 32, {0, {{{0, 0}}}}, 0, 0 },
565   { "fv36", 36, {0, {{{0, 0}}}}, 0, 0 },
566   { "fv40", 40, {0, {{{0, 0}}}}, 0, 0 },
567   { "fv44", 44, {0, {{{0, 0}}}}, 0, 0 },
568   { "fv48", 48, {0, {{{0, 0}}}}, 0, 0 },
569   { "fv52", 52, {0, {{{0, 0}}}}, 0, 0 },
570   { "fv56", 56, {0, {{{0, 0}}}}, 0, 0 },
571   { "fv60", 60, {0, {{{0, 0}}}}, 0, 0 }
572 };
573
574 CGEN_KEYWORD sh_cgen_opval_h_fv =
575 {
576   & sh_cgen_opval_h_fv_entries[0],
577   16,
578   0, 0, 0, 0, ""
579 };
580
581 static CGEN_KEYWORD_ENTRY sh_cgen_opval_h_fmtx_entries[] =
582 {
583   { "mtrx0", 0, {0, {{{0, 0}}}}, 0, 0 },
584   { "mtrx16", 16, {0, {{{0, 0}}}}, 0, 0 },
585   { "mtrx32", 32, {0, {{{0, 0}}}}, 0, 0 },
586   { "mtrx48", 48, {0, {{{0, 0}}}}, 0, 0 }
587 };
588
589 CGEN_KEYWORD sh_cgen_opval_h_fmtx =
590 {
591   & sh_cgen_opval_h_fmtx_entries[0],
592   4,
593   0, 0, 0, 0, ""
594 };
595
596 static CGEN_KEYWORD_ENTRY sh_cgen_opval_h_dr_entries[] =
597 {
598   { "dr0", 0, {0, {{{0, 0}}}}, 0, 0 },
599   { "dr2", 2, {0, {{{0, 0}}}}, 0, 0 },
600   { "dr4", 4, {0, {{{0, 0}}}}, 0, 0 },
601   { "dr6", 6, {0, {{{0, 0}}}}, 0, 0 },
602   { "dr8", 8, {0, {{{0, 0}}}}, 0, 0 },
603   { "dr10", 10, {0, {{{0, 0}}}}, 0, 0 },
604   { "dr12", 12, {0, {{{0, 0}}}}, 0, 0 },
605   { "dr14", 14, {0, {{{0, 0}}}}, 0, 0 },
606   { "dr16", 16, {0, {{{0, 0}}}}, 0, 0 },
607   { "dr18", 18, {0, {{{0, 0}}}}, 0, 0 },
608   { "dr20", 20, {0, {{{0, 0}}}}, 0, 0 },
609   { "dr22", 22, {0, {{{0, 0}}}}, 0, 0 },
610   { "dr24", 24, {0, {{{0, 0}}}}, 0, 0 },
611   { "dr26", 26, {0, {{{0, 0}}}}, 0, 0 },
612   { "dr28", 28, {0, {{{0, 0}}}}, 0, 0 },
613   { "dr30", 30, {0, {{{0, 0}}}}, 0, 0 },
614   { "dr32", 32, {0, {{{0, 0}}}}, 0, 0 },
615   { "dr34", 34, {0, {{{0, 0}}}}, 0, 0 },
616   { "dr36", 36, {0, {{{0, 0}}}}, 0, 0 },
617   { "dr38", 38, {0, {{{0, 0}}}}, 0, 0 },
618   { "dr40", 40, {0, {{{0, 0}}}}, 0, 0 },
619   { "dr42", 42, {0, {{{0, 0}}}}, 0, 0 },
620   { "dr44", 44, {0, {{{0, 0}}}}, 0, 0 },
621   { "dr46", 46, {0, {{{0, 0}}}}, 0, 0 },
622   { "dr48", 48, {0, {{{0, 0}}}}, 0, 0 },
623   { "dr50", 50, {0, {{{0, 0}}}}, 0, 0 },
624   { "dr52", 52, {0, {{{0, 0}}}}, 0, 0 },
625   { "dr54", 54, {0, {{{0, 0}}}}, 0, 0 },
626   { "dr56", 56, {0, {{{0, 0}}}}, 0, 0 },
627   { "dr58", 58, {0, {{{0, 0}}}}, 0, 0 },
628   { "dr60", 60, {0, {{{0, 0}}}}, 0, 0 },
629   { "dr62", 62, {0, {{{0, 0}}}}, 0, 0 }
630 };
631
632 CGEN_KEYWORD sh_cgen_opval_h_dr =
633 {
634   & sh_cgen_opval_h_dr_entries[0],
635   32,
636   0, 0, 0, 0, ""
637 };
638
639 static CGEN_KEYWORD_ENTRY sh_cgen_opval_h_fsd_entries[] =
640 {
641   { "fr0", 0, {0, {{{0, 0}}}}, 0, 0 },
642   { "fr1", 1, {0, {{{0, 0}}}}, 0, 0 },
643   { "fr2", 2, {0, {{{0, 0}}}}, 0, 0 },
644   { "fr3", 3, {0, {{{0, 0}}}}, 0, 0 },
645   { "fr4", 4, {0, {{{0, 0}}}}, 0, 0 },
646   { "fr5", 5, {0, {{{0, 0}}}}, 0, 0 },
647   { "fr6", 6, {0, {{{0, 0}}}}, 0, 0 },
648   { "fr7", 7, {0, {{{0, 0}}}}, 0, 0 },
649   { "fr8", 8, {0, {{{0, 0}}}}, 0, 0 },
650   { "fr9", 9, {0, {{{0, 0}}}}, 0, 0 },
651   { "fr10", 10, {0, {{{0, 0}}}}, 0, 0 },
652   { "fr11", 11, {0, {{{0, 0}}}}, 0, 0 },
653   { "fr12", 12, {0, {{{0, 0}}}}, 0, 0 },
654   { "fr13", 13, {0, {{{0, 0}}}}, 0, 0 },
655   { "fr14", 14, {0, {{{0, 0}}}}, 0, 0 },
656   { "fr15", 15, {0, {{{0, 0}}}}, 0, 0 }
657 };
658
659 CGEN_KEYWORD sh_cgen_opval_h_fsd =
660 {
661   & sh_cgen_opval_h_fsd_entries[0],
662   16,
663   0, 0, 0, 0, ""
664 };
665
666 static CGEN_KEYWORD_ENTRY sh_cgen_opval_h_fmov_entries[] =
667 {
668   { "fr0", 0, {0, {{{0, 0}}}}, 0, 0 },
669   { "fr1", 1, {0, {{{0, 0}}}}, 0, 0 },
670   { "fr2", 2, {0, {{{0, 0}}}}, 0, 0 },
671   { "fr3", 3, {0, {{{0, 0}}}}, 0, 0 },
672   { "fr4", 4, {0, {{{0, 0}}}}, 0, 0 },
673   { "fr5", 5, {0, {{{0, 0}}}}, 0, 0 },
674   { "fr6", 6, {0, {{{0, 0}}}}, 0, 0 },
675   { "fr7", 7, {0, {{{0, 0}}}}, 0, 0 },
676   { "fr8", 8, {0, {{{0, 0}}}}, 0, 0 },
677   { "fr9", 9, {0, {{{0, 0}}}}, 0, 0 },
678   { "fr10", 10, {0, {{{0, 0}}}}, 0, 0 },
679   { "fr11", 11, {0, {{{0, 0}}}}, 0, 0 },
680   { "fr12", 12, {0, {{{0, 0}}}}, 0, 0 },
681   { "fr13", 13, {0, {{{0, 0}}}}, 0, 0 },
682   { "fr14", 14, {0, {{{0, 0}}}}, 0, 0 },
683   { "fr15", 15, {0, {{{0, 0}}}}, 0, 0 }
684 };
685
686 CGEN_KEYWORD sh_cgen_opval_h_fmov =
687 {
688   & sh_cgen_opval_h_fmov_entries[0],
689   16,
690   0, 0, 0, 0, ""
691 };
692
693 static CGEN_KEYWORD_ENTRY sh_cgen_opval_h_tr_entries[] =
694 {
695   { "tr0", 0, {0, {{{0, 0}}}}, 0, 0 },
696   { "tr1", 1, {0, {{{0, 0}}}}, 0, 0 },
697   { "tr2", 2, {0, {{{0, 0}}}}, 0, 0 },
698   { "tr3", 3, {0, {{{0, 0}}}}, 0, 0 },
699   { "tr4", 4, {0, {{{0, 0}}}}, 0, 0 },
700   { "tr5", 5, {0, {{{0, 0}}}}, 0, 0 },
701   { "tr6", 6, {0, {{{0, 0}}}}, 0, 0 },
702   { "tr7", 7, {0, {{{0, 0}}}}, 0, 0 }
703 };
704
705 CGEN_KEYWORD sh_cgen_opval_h_tr =
706 {
707   & sh_cgen_opval_h_tr_entries[0],
708   8,
709   0, 0, 0, 0, ""
710 };
711
712 static CGEN_KEYWORD_ENTRY sh_cgen_opval_h_fvc_entries[] =
713 {
714   { "fv0", 0, {0, {{{0, 0}}}}, 0, 0 },
715   { "fv4", 4, {0, {{{0, 0}}}}, 0, 0 },
716   { "fv8", 8, {0, {{{0, 0}}}}, 0, 0 },
717   { "fv12", 12, {0, {{{0, 0}}}}, 0, 0 }
718 };
719
720 CGEN_KEYWORD sh_cgen_opval_h_fvc =
721 {
722   & sh_cgen_opval_h_fvc_entries[0],
723   4,
724   0, 0, 0, 0, ""
725 };
726
727
728 /* The hardware table.  */
729
730 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
731 #define A(a) (1 << CGEN_HW_##a)
732 #else
733 #define A(a) (1 << CGEN_HW_/**/a)
734 #endif
735
736 const CGEN_HW_ENTRY sh_cgen_hw_table[] =
737 {
738   { "h-memory", HW_H_MEMORY, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
739   { "h-sint", HW_H_SINT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
740   { "h-uint", HW_H_UINT, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
741   { "h-addr", HW_H_ADDR, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
742   { "h-iaddr", HW_H_IADDR, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
743   { "h-pc", HW_H_PC, CGEN_ASM_NONE, 0, { 0|A(PROFILE)|A(PC), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
744   { "h-gr", HW_H_GR, CGEN_ASM_KEYWORD, (PTR) & sh_cgen_opval_h_gr, { 0|A(PROFILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
745   { "h-grc", HW_H_GRC, CGEN_ASM_KEYWORD, (PTR) & sh_cgen_opval_h_grc, { 0|A(PROFILE)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } },
746   { "h-cr", HW_H_CR, CGEN_ASM_KEYWORD, (PTR) & sh_cgen_opval_h_cr, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } } },
747   { "h-sr", HW_H_SR, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
748   { "h-fpscr", HW_H_FPSCR, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
749   { "h-frbit", HW_H_FRBIT, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
750   { "h-szbit", HW_H_SZBIT, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
751   { "h-prbit", HW_H_PRBIT, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
752   { "h-sbit", HW_H_SBIT, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } },
753   { "h-mbit", HW_H_MBIT, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } },
754   { "h-qbit", HW_H_QBIT, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } },
755   { "h-fr", HW_H_FR, CGEN_ASM_KEYWORD, (PTR) & sh_cgen_opval_h_fr, { 0|A(PROFILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
756   { "h-fp", HW_H_FP, CGEN_ASM_KEYWORD, (PTR) & sh_cgen_opval_h_fp, { 0|A(PROFILE)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
757   { "h-fv", HW_H_FV, CGEN_ASM_KEYWORD, (PTR) & sh_cgen_opval_h_fv, { 0|A(PROFILE)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
758   { "h-fmtx", HW_H_FMTX, CGEN_ASM_KEYWORD, (PTR) & sh_cgen_opval_h_fmtx, { 0|A(PROFILE)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } } },
759   { "h-dr", HW_H_DR, CGEN_ASM_KEYWORD, (PTR) & sh_cgen_opval_h_dr, { 0|A(PROFILE)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
760   { "h-fsd", HW_H_FSD, CGEN_ASM_KEYWORD, (PTR) & sh_cgen_opval_h_fsd, { 0|A(PROFILE), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\xc0" } } } } },
761   { "h-fmov", HW_H_FMOV, CGEN_ASM_KEYWORD, (PTR) & sh_cgen_opval_h_fmov, { 0|A(PROFILE), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\xc0" } } } } },
762   { "h-tr", HW_H_TR, CGEN_ASM_KEYWORD, (PTR) & sh_cgen_opval_h_tr, { 0|A(PROFILE), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } } },
763   { "h-endian", HW_H_ENDIAN, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
764   { "h-ism", HW_H_ISM, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } } },
765   { "h-frc", HW_H_FRC, CGEN_ASM_KEYWORD, (PTR) & sh_cgen_opval_frc_names, { 0|A(PROFILE)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } },
766   { "h-drc", HW_H_DRC, CGEN_ASM_KEYWORD, (PTR) & sh_cgen_opval_drc_names, { 0|A(PROFILE)|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } },
767   { "h-xf", HW_H_XF, CGEN_ASM_KEYWORD, (PTR) & sh_cgen_opval_xf_names, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } },
768   { "h-xd", HW_H_XD, CGEN_ASM_KEYWORD, (PTR) & sh_cgen_opval_frc_names, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } },
769   { "h-fvc", HW_H_FVC, CGEN_ASM_KEYWORD, (PTR) & sh_cgen_opval_h_fvc, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } },
770   { "h-gbr", HW_H_GBR, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } },
771   { "h-vbr", HW_H_VBR, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } },
772   { "h-pr", HW_H_PR, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } },
773   { "h-macl", HW_H_MACL, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } },
774   { "h-mach", HW_H_MACH, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } },
775   { "h-tbit", HW_H_TBIT, CGEN_ASM_NONE, 0, { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } },
776   { 0, 0, CGEN_ASM_NONE, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } }
777 };
778
779 #undef A
780
781
782 /* The instruction field table.  */
783
784 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
785 #define A(a) (1 << CGEN_IFLD_##a)
786 #else
787 #define A(a) (1 << CGEN_IFLD_/**/a)
788 #endif
789
790 const CGEN_IFLD sh_cgen_ifld_table[] =
791 {
792   { SH_F_NIL, "f-nil", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
793   { SH_F_ANYOF, "f-anyof", 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
794   { SH_F_OP4, "f-op4", 0, 32, 0, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
795   { SH_F_OP8, "f-op8", 0, 32, 0, 8, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
796   { SH_F_OP16, "f-op16", 0, 32, 0, 16, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
797   { SH_F_SUB4, "f-sub4", 0, 32, 12, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
798   { SH_F_SUB8, "f-sub8", 0, 32, 8, 8, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
799   { SH_F_SUB10, "f-sub10", 0, 32, 6, 10, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
800   { SH_F_RN, "f-rn", 0, 32, 4, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
801   { SH_F_RM, "f-rm", 0, 32, 8, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
802   { SH_F_7_1, "f-7-1", 0, 32, 7, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
803   { SH_F_11_1, "f-11-1", 0, 32, 11, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
804   { SH_F_16_4, "f-16-4", 0, 32, 16, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
805   { SH_F_DISP8, "f-disp8", 0, 32, 8, 8, { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
806   { SH_F_DISP12, "f-disp12", 0, 32, 4, 12, { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
807   { SH_F_IMM8, "f-imm8", 0, 32, 8, 8, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
808   { SH_F_IMM4, "f-imm4", 0, 32, 12, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
809   { SH_F_IMM4X2, "f-imm4x2", 0, 32, 12, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
810   { SH_F_IMM4X4, "f-imm4x4", 0, 32, 12, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
811   { SH_F_IMM8X2, "f-imm8x2", 0, 32, 8, 8, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
812   { SH_F_IMM8X4, "f-imm8x4", 0, 32, 8, 8, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
813   { SH_F_IMM12X4, "f-imm12x4", 0, 32, 20, 12, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
814   { SH_F_IMM12X8, "f-imm12x8", 0, 32, 20, 12, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
815   { SH_F_DN, "f-dn", 0, 32, 4, 3, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
816   { SH_F_DM, "f-dm", 0, 32, 8, 3, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
817   { SH_F_VN, "f-vn", 0, 32, 4, 2, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
818   { SH_F_VM, "f-vm", 0, 32, 6, 2, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
819   { SH_F_XN, "f-xn", 0, 32, 4, 3, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
820   { SH_F_XM, "f-xm", 0, 32, 8, 3, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
821   { SH_F_IMM20_HI, "f-imm20-hi", 0, 32, 8, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
822   { SH_F_IMM20_LO, "f-imm20-lo", 0, 32, 16, 16, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
823   { SH_F_IMM20, "f-imm20", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
824   { SH_F_OP, "f-op", 0, 32, 0, 6, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
825   { SH_F_EXT, "f-ext", 0, 32, 12, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
826   { SH_F_RSVD, "f-rsvd", 0, 32, 28, 4, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
827   { SH_F_LEFT, "f-left", 0, 32, 6, 6, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
828   { SH_F_RIGHT, "f-right", 0, 32, 16, 6, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
829   { SH_F_DEST, "f-dest", 0, 32, 22, 6, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
830   { SH_F_LEFT_RIGHT, "f-left-right", 0, 0, 0, 0,{ 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
831   { SH_F_TRA, "f-tra", 0, 32, 25, 3, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
832   { SH_F_TRB, "f-trb", 0, 32, 9, 3, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
833   { SH_F_LIKELY, "f-likely", 0, 32, 22, 1, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
834   { SH_F_6_3, "f-6-3", 0, 32, 6, 3, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
835   { SH_F_23_2, "f-23-2", 0, 32, 23, 2, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
836   { SH_F_IMM6, "f-imm6", 0, 32, 16, 6, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
837   { SH_F_IMM10, "f-imm10", 0, 32, 12, 10, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
838   { SH_F_IMM16, "f-imm16", 0, 32, 6, 16, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
839   { SH_F_UIMM6, "f-uimm6", 0, 32, 16, 6, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
840   { SH_F_UIMM16, "f-uimm16", 0, 32, 6, 16, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
841   { SH_F_DISP6, "f-disp6", 0, 32, 16, 6, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
842   { SH_F_DISP6X32, "f-disp6x32", 0, 32, 16, 6, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
843   { SH_F_DISP10, "f-disp10", 0, 32, 12, 10, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
844   { SH_F_DISP10X8, "f-disp10x8", 0, 32, 12, 10, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
845   { SH_F_DISP10X4, "f-disp10x4", 0, 32, 12, 10, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
846   { SH_F_DISP10X2, "f-disp10x2", 0, 32, 12, 10, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
847   { SH_F_DISP16, "f-disp16", 0, 32, 6, 16, { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
848   { 0, 0, 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } }
849 };
850
851 #undef A
852
853
854
855 /* multi ifield declarations */
856
857 const CGEN_MAYBE_MULTI_IFLD SH_F_IMM20_MULTI_IFIELD [];
858 const CGEN_MAYBE_MULTI_IFLD SH_F_LEFT_RIGHT_MULTI_IFIELD [];
859
860
861 /* multi ifield definitions */
862
863 const CGEN_MAYBE_MULTI_IFLD SH_F_IMM20_MULTI_IFIELD [] =
864 {
865     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_IMM20_HI] } },
866     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_IMM20_LO] } },
867     { 0, { (const PTR) 0 } }
868 };
869 const CGEN_MAYBE_MULTI_IFLD SH_F_LEFT_RIGHT_MULTI_IFIELD [] =
870 {
871     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_LEFT] } },
872     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_RIGHT] } },
873     { 0, { (const PTR) 0 } }
874 };
875
876 /* The operand table.  */
877
878 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
879 #define A(a) (1 << CGEN_OPERAND_##a)
880 #else
881 #define A(a) (1 << CGEN_OPERAND_/**/a)
882 #endif
883 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
884 #define OPERAND(op) SH_OPERAND_##op
885 #else
886 #define OPERAND(op) SH_OPERAND_/**/op
887 #endif
888
889 const CGEN_OPERAND sh_cgen_operand_table[] =
890 {
891 /* pc: program counter */
892   { "pc", SH_OPERAND_PC, HW_H_PC, 0, 0,
893     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_NIL] } }, 
894     { 0|A(SEM_ONLY), { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
895 /* endian: Endian mode */
896   { "endian", SH_OPERAND_ENDIAN, HW_H_ENDIAN, 0, 0,
897     { 0, { (const PTR) 0 } }, 
898     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
899 /* ism: Instruction set mode */
900   { "ism", SH_OPERAND_ISM, HW_H_ISM, 0, 0,
901     { 0, { (const PTR) 0 } }, 
902     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\xc0" } } } }  },
903 /* rm: Left general purpose register */
904   { "rm", SH_OPERAND_RM, HW_H_GRC, 8, 4,
905     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_RM] } }, 
906     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
907 /* rn: Right general purpose register */
908   { "rn", SH_OPERAND_RN, HW_H_GRC, 4, 4,
909     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_RN] } }, 
910     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
911 /* r0: Register 0 */
912   { "r0", SH_OPERAND_R0, HW_H_GRC, 0, 0,
913     { 0, { (const PTR) 0 } }, 
914     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
915 /* frn: Single precision register */
916   { "frn", SH_OPERAND_FRN, HW_H_FRC, 4, 4,
917     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_RN] } }, 
918     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
919 /* frm: Single precision register */
920   { "frm", SH_OPERAND_FRM, HW_H_FRC, 8, 4,
921     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_RM] } }, 
922     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
923 /* fr0: Single precision register 0 */
924   { "fr0", SH_OPERAND_FR0, HW_H_FRC, 0, 0,
925     { 0, { (const PTR) 0 } }, 
926     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
927 /* fmovn: Register for fmov */
928   { "fmovn", SH_OPERAND_FMOVN, HW_H_FMOV, 4, 4,
929     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_RN] } }, 
930     { 0, { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } } } }  },
931 /* fmovm: Register for fmov */
932   { "fmovm", SH_OPERAND_FMOVM, HW_H_FMOV, 8, 4,
933     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_RM] } }, 
934     { 0, { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } } } }  },
935 /* fvn: Left floating point vector */
936   { "fvn", SH_OPERAND_FVN, HW_H_FVC, 4, 2,
937     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_VN] } }, 
938     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
939 /* fvm: Right floating point vector */
940   { "fvm", SH_OPERAND_FVM, HW_H_FVC, 6, 2,
941     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_VM] } }, 
942     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
943 /* drn: Left double precision register */
944   { "drn", SH_OPERAND_DRN, HW_H_DRC, 4, 3,
945     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_DN] } }, 
946     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
947 /* drm: Right double precision register */
948   { "drm", SH_OPERAND_DRM, HW_H_DRC, 8, 3,
949     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_DM] } }, 
950     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
951 /* imm4: Immediate value (4 bits) */
952   { "imm4", SH_OPERAND_IMM4, HW_H_SINT, 12, 4,
953     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_IMM4] } }, 
954     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
955 /* imm8: Immediate value (8 bits) */
956   { "imm8", SH_OPERAND_IMM8, HW_H_SINT, 8, 8,
957     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_IMM8] } }, 
958     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
959 /* uimm8: Immediate value (8 bits unsigned) */
960   { "uimm8", SH_OPERAND_UIMM8, HW_H_UINT, 8, 8,
961     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_IMM8] } }, 
962     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
963 /* imm20: Immediate value (20 bits) */
964   { "imm20", SH_OPERAND_IMM20, HW_H_SINT, 8, 20,
965     { 2, { (const PTR) &SH_F_IMM20_MULTI_IFIELD[0] } }, 
966     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
967 /* imm4x2: Immediate value (4 bits, 2x scale) */
968   { "imm4x2", SH_OPERAND_IMM4X2, HW_H_UINT, 12, 4,
969     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_IMM4X2] } }, 
970     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
971 /* imm4x4: Immediate value (4 bits, 4x scale) */
972   { "imm4x4", SH_OPERAND_IMM4X4, HW_H_UINT, 12, 4,
973     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_IMM4X4] } }, 
974     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
975 /* imm8x2: Immediate value (8 bits, 2x scale) */
976   { "imm8x2", SH_OPERAND_IMM8X2, HW_H_UINT, 8, 8,
977     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_IMM8X2] } }, 
978     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
979 /* imm8x4: Immediate value (8 bits, 4x scale) */
980   { "imm8x4", SH_OPERAND_IMM8X4, HW_H_UINT, 8, 8,
981     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_IMM8X4] } }, 
982     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
983 /* disp8: Displacement (8 bits) */
984   { "disp8", SH_OPERAND_DISP8, HW_H_IADDR, 8, 8,
985     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_DISP8] } }, 
986     { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
987 /* disp12: Displacement (12 bits) */
988   { "disp12", SH_OPERAND_DISP12, HW_H_IADDR, 4, 12,
989     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_DISP12] } }, 
990     { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
991 /* imm12x4: Displacement (12 bits) */
992   { "imm12x4", SH_OPERAND_IMM12X4, HW_H_SINT, 20, 12,
993     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_IMM12X4] } }, 
994     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
995 /* imm12x8: Displacement (12 bits) */
996   { "imm12x8", SH_OPERAND_IMM12X8, HW_H_SINT, 20, 12,
997     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_IMM12X8] } }, 
998     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
999 /* rm64: Register m (64 bits) */
1000   { "rm64", SH_OPERAND_RM64, HW_H_GR, 8, 4,
1001     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_RM] } }, 
1002     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
1003 /* rn64: Register n (64 bits) */
1004   { "rn64", SH_OPERAND_RN64, HW_H_GR, 4, 4,
1005     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_RN] } }, 
1006     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
1007 /* gbr: Global base register */
1008   { "gbr", SH_OPERAND_GBR, HW_H_GBR, 0, 0,
1009     { 0, { (const PTR) 0 } }, 
1010     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
1011 /* vbr: Vector base register */
1012   { "vbr", SH_OPERAND_VBR, HW_H_VBR, 0, 0,
1013     { 0, { (const PTR) 0 } }, 
1014     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
1015 /* pr: Procedure link register */
1016   { "pr", SH_OPERAND_PR, HW_H_PR, 0, 0,
1017     { 0, { (const PTR) 0 } }, 
1018     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
1019 /* fpscr: Floating point status/control register */
1020   { "fpscr", SH_OPERAND_FPSCR, HW_H_FPSCR, 0, 0,
1021     { 0, { (const PTR) 0 } }, 
1022     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
1023 /* tbit: Condition code flag */
1024   { "tbit", SH_OPERAND_TBIT, HW_H_TBIT, 0, 0,
1025     { 0, { (const PTR) 0 } }, 
1026     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
1027 /* sbit: Multiply-accumulate saturation flag */
1028   { "sbit", SH_OPERAND_SBIT, HW_H_SBIT, 0, 0,
1029     { 0, { (const PTR) 0 } }, 
1030     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
1031 /* mbit: Divide-step M flag */
1032   { "mbit", SH_OPERAND_MBIT, HW_H_MBIT, 0, 0,
1033     { 0, { (const PTR) 0 } }, 
1034     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
1035 /* qbit: Divide-step Q flag */
1036   { "qbit", SH_OPERAND_QBIT, HW_H_QBIT, 0, 0,
1037     { 0, { (const PTR) 0 } }, 
1038     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
1039 /* fpul: Floating point ??? */
1040   { "fpul", SH_OPERAND_FPUL, HW_H_FR, 0, 0,
1041     { 0, { (const PTR) 0 } }, 
1042     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
1043 /* frbit: Floating point register bank bit */
1044   { "frbit", SH_OPERAND_FRBIT, HW_H_FRBIT, 0, 0,
1045     { 0, { (const PTR) 0 } }, 
1046     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
1047 /* szbit: Floating point transfer size bit */
1048   { "szbit", SH_OPERAND_SZBIT, HW_H_SZBIT, 0, 0,
1049     { 0, { (const PTR) 0 } }, 
1050     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
1051 /* prbit: Floating point precision bit */
1052   { "prbit", SH_OPERAND_PRBIT, HW_H_PRBIT, 0, 0,
1053     { 0, { (const PTR) 0 } }, 
1054     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
1055 /* macl: Multiply-accumulate low register */
1056   { "macl", SH_OPERAND_MACL, HW_H_MACL, 0, 0,
1057     { 0, { (const PTR) 0 } }, 
1058     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
1059 /* mach: Multiply-accumulate high register */
1060   { "mach", SH_OPERAND_MACH, HW_H_MACH, 0, 0,
1061     { 0, { (const PTR) 0 } }, 
1062     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } }  },
1063 /* fsdm: bar */
1064   { "fsdm", SH_OPERAND_FSDM, HW_H_FSD, 8, 4,
1065     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_RM] } }, 
1066     { 0, { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } } } }  },
1067 /* fsdn: bar */
1068   { "fsdn", SH_OPERAND_FSDN, HW_H_FSD, 4, 4,
1069     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_RN] } }, 
1070     { 0, { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } } } }  },
1071 /* rm: Left general purpose reg */
1072   { "rm", SH_OPERAND_RM, HW_H_GR, 6, 6,
1073     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_LEFT] } }, 
1074     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1075 /* rn: Right general purpose reg */
1076   { "rn", SH_OPERAND_RN, HW_H_GR, 16, 6,
1077     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_RIGHT] } }, 
1078     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1079 /* rd: Destination general purpose reg */
1080   { "rd", SH_OPERAND_RD, HW_H_GR, 22, 6,
1081     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_DEST] } }, 
1082     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1083 /* frg: Left single precision register */
1084   { "frg", SH_OPERAND_FRG, HW_H_FR, 6, 6,
1085     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_LEFT] } }, 
1086     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1087 /* frh: Right single precision register */
1088   { "frh", SH_OPERAND_FRH, HW_H_FR, 16, 6,
1089     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_RIGHT] } }, 
1090     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1091 /* frf: Destination single precision reg */
1092   { "frf", SH_OPERAND_FRF, HW_H_FR, 22, 6,
1093     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_DEST] } }, 
1094     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1095 /* frgh: Single precision register pair */
1096   { "frgh", SH_OPERAND_FRGH, HW_H_FR, 6, 12,
1097     { 2, { (const PTR) &SH_F_LEFT_RIGHT_MULTI_IFIELD[0] } }, 
1098     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1099 /* fpf: Pair of single precision registers */
1100   { "fpf", SH_OPERAND_FPF, HW_H_FP, 22, 6,
1101     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_DEST] } }, 
1102     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1103 /* fvg: Left single precision vector */
1104   { "fvg", SH_OPERAND_FVG, HW_H_FV, 6, 6,
1105     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_LEFT] } }, 
1106     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1107 /* fvh: Right single precision vector */
1108   { "fvh", SH_OPERAND_FVH, HW_H_FV, 16, 6,
1109     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_RIGHT] } }, 
1110     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1111 /* fvf: Destination single precision vector */
1112   { "fvf", SH_OPERAND_FVF, HW_H_FV, 22, 6,
1113     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_DEST] } }, 
1114     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1115 /* mtrxg: Left single precision matrix */
1116   { "mtrxg", SH_OPERAND_MTRXG, HW_H_FMTX, 6, 6,
1117     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_LEFT] } }, 
1118     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1119 /* drg: Left double precision register */
1120   { "drg", SH_OPERAND_DRG, HW_H_DR, 6, 6,
1121     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_LEFT] } }, 
1122     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1123 /* drh: Right double precision register */
1124   { "drh", SH_OPERAND_DRH, HW_H_DR, 16, 6,
1125     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_RIGHT] } }, 
1126     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1127 /* drf: Destination double precision reg */
1128   { "drf", SH_OPERAND_DRF, HW_H_DR, 22, 6,
1129     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_DEST] } }, 
1130     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1131 /* drgh: Double precision register pair */
1132   { "drgh", SH_OPERAND_DRGH, HW_H_DR, 6, 12,
1133     { 2, { (const PTR) &SH_F_LEFT_RIGHT_MULTI_IFIELD[0] } }, 
1134     { 0|A(VIRTUAL), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1135 /* fpscr: Floating point status register */
1136   { "fpscr", SH_OPERAND_FPSCR, HW_H_FPSCR, 0, 0,
1137     { 0, { (const PTR) 0 } }, 
1138     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1139 /* crj: Control register j */
1140   { "crj", SH_OPERAND_CRJ, HW_H_CR, 22, 6,
1141     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_DEST] } }, 
1142     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1143 /* crk: Control register k */
1144   { "crk", SH_OPERAND_CRK, HW_H_CR, 6, 6,
1145     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_LEFT] } }, 
1146     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1147 /* tra: Target register a */
1148   { "tra", SH_OPERAND_TRA, HW_H_TR, 25, 3,
1149     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_TRA] } }, 
1150     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1151 /* trb: Target register b */
1152   { "trb", SH_OPERAND_TRB, HW_H_TR, 9, 3,
1153     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_TRB] } }, 
1154     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1155 /* disp6: Displacement (6 bits) */
1156   { "disp6", SH_OPERAND_DISP6, HW_H_SINT, 16, 6,
1157     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_DISP6] } }, 
1158     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1159 /* disp6x32: Displacement (6 bits, scale 32) */
1160   { "disp6x32", SH_OPERAND_DISP6X32, HW_H_SINT, 16, 6,
1161     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_DISP6X32] } }, 
1162     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1163 /* disp10: Displacement (10 bits) */
1164   { "disp10", SH_OPERAND_DISP10, HW_H_SINT, 12, 10,
1165     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_DISP10] } }, 
1166     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1167 /* disp10x2: Displacement (10 bits, scale 2) */
1168   { "disp10x2", SH_OPERAND_DISP10X2, HW_H_SINT, 12, 10,
1169     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_DISP10X2] } }, 
1170     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1171 /* disp10x4: Displacement (10 bits, scale 4) */
1172   { "disp10x4", SH_OPERAND_DISP10X4, HW_H_SINT, 12, 10,
1173     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_DISP10X4] } }, 
1174     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1175 /* disp10x8: Displacement (10 bits, scale 8) */
1176   { "disp10x8", SH_OPERAND_DISP10X8, HW_H_SINT, 12, 10,
1177     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_DISP10X8] } }, 
1178     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1179 /* disp16: Displacement (16 bits) */
1180   { "disp16", SH_OPERAND_DISP16, HW_H_SINT, 6, 16,
1181     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_DISP16] } }, 
1182     { 0|A(PCREL_ADDR), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1183 /* imm6: Immediate (6 bits) */
1184   { "imm6", SH_OPERAND_IMM6, HW_H_SINT, 16, 6,
1185     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_IMM6] } }, 
1186     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1187 /* imm10: Immediate (10 bits) */
1188   { "imm10", SH_OPERAND_IMM10, HW_H_SINT, 12, 10,
1189     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_IMM10] } }, 
1190     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1191 /* imm16: Immediate (16 bits) */
1192   { "imm16", SH_OPERAND_IMM16, HW_H_SINT, 6, 16,
1193     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_IMM16] } }, 
1194     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1195 /* uimm6: Immediate (6 bits) */
1196   { "uimm6", SH_OPERAND_UIMM6, HW_H_UINT, 16, 6,
1197     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_UIMM6] } }, 
1198     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1199 /* uimm16: Unsigned immediate (16 bits) */
1200   { "uimm16", SH_OPERAND_UIMM16, HW_H_UINT, 6, 16,
1201     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_UIMM16] } }, 
1202     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1203 /* likely: Likely branch? */
1204   { "likely", SH_OPERAND_LIKELY, HW_H_UINT, 22, 1,
1205     { 0, { (const PTR) &sh_cgen_ifld_table[SH_F_LIKELY] } }, 
1206     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } } } }  },
1207 /* sentinel */
1208   { 0, 0, 0, 0, 0,
1209     { 0, { (const PTR) 0 } },
1210     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } } } } }
1211 };
1212
1213 #undef A
1214
1215
1216 /* The instruction table.  */
1217
1218 #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
1219 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
1220 #define A(a) (1 << CGEN_INSN_##a)
1221 #else
1222 #define A(a) (1 << CGEN_INSN_/**/a)
1223 #endif
1224
1225 static const CGEN_IBASE sh_cgen_insn_table[MAX_INSNS] =
1226 {
1227   /* Special null first entry.
1228      A `num' value of zero is thus invalid.
1229      Also, the special `invalid' insn resides here.  */
1230   { 0, 0, 0, 0, { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } } },
1231 /* add $rm, $rn */
1232   {
1233     SH_INSN_ADD_COMPACT, "add-compact", "add", 16,
1234     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1235   },
1236 /* add #$imm8, $rn */
1237   {
1238     SH_INSN_ADDI_COMPACT, "addi-compact", "add", 16,
1239     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
1240   },
1241 /* addc $rm, $rn */
1242   {
1243     SH_INSN_ADDC_COMPACT, "addc-compact", "addc", 16,
1244     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1245   },
1246 /* addv $rm, $rn */
1247   {
1248     SH_INSN_ADDV_COMPACT, "addv-compact", "addv", 16,
1249     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1250   },
1251 /* and $rm64, $rn64 */
1252   {
1253     SH_INSN_AND_COMPACT, "and-compact", "and", 16,
1254     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1255   },
1256 /* and #$uimm8, r0 */
1257   {
1258     SH_INSN_ANDI_COMPACT, "andi-compact", "and", 16,
1259     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1260   },
1261 /* and.b #$imm8, @(r0, gbr) */
1262   {
1263     SH_INSN_ANDB_COMPACT, "andb-compact", "and.b", 16,
1264     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_CO, 0 } } } }
1265   },
1266 /* bf $disp8 */
1267   {
1268     SH_INSN_BF_COMPACT, "bf-compact", "bf", 16,
1269     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_BR, 0 } }, { { SH4A_GROUP_BR, 0 } } } }
1270   },
1271 /* bf/s $disp8 */
1272   {
1273     SH_INSN_BFS_COMPACT, "bfs-compact", "bf/s", 16,
1274     { 0|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_SH2)|(1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH2A_NOFPU)|(1<<MACH_SH3)|(1<<MACH_SH3E)|(1<<MACH_SH4_NOFPU)|(1<<MACH_SH4)|(1<<MACH_SH4A_NOFPU)|(1<<MACH_SH4A)|(1<<MACH_SH4AL)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_BR, 0 } }, { { SH4A_GROUP_BR, 0 } } } }
1275   },
1276 /* bra $disp12 */
1277   {
1278     SH_INSN_BRA_COMPACT, "bra-compact", "bra", 16,
1279     { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_BR, 0 } }, { { SH4A_GROUP_BR, 0 } } } }
1280   },
1281 /* braf $rn */
1282   {
1283     SH_INSN_BRAF_COMPACT, "braf-compact", "braf", 16,
1284     { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_SH2)|(1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH2A_NOFPU)|(1<<MACH_SH3)|(1<<MACH_SH3E)|(1<<MACH_SH4_NOFPU)|(1<<MACH_SH4)|(1<<MACH_SH4A_NOFPU)|(1<<MACH_SH4A)|(1<<MACH_SH4AL)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_BR, 0 } } } }
1285   },
1286 /* brk */
1287   {
1288     SH_INSN_BRK_COMPACT, "brk-compact", "brk", 16,
1289     { 0, { { { (1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
1290   },
1291 /* bsr $disp12 */
1292   {
1293     SH_INSN_BSR_COMPACT, "bsr-compact", "bsr", 16,
1294     { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_BR, 0 } }, { { SH4A_GROUP_BR, 0 } } } }
1295   },
1296 /* bsrf $rn */
1297   {
1298     SH_INSN_BSRF_COMPACT, "bsrf-compact", "bsrf", 16,
1299     { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_SH2)|(1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH2A_NOFPU)|(1<<MACH_SH3)|(1<<MACH_SH3E)|(1<<MACH_SH4_NOFPU)|(1<<MACH_SH4)|(1<<MACH_SH4A_NOFPU)|(1<<MACH_SH4A)|(1<<MACH_SH4AL)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_BR, 0 } } } }
1300   },
1301 /* bt $disp8 */
1302   {
1303     SH_INSN_BT_COMPACT, "bt-compact", "bt", 16,
1304     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_BR, 0 } }, { { SH4A_GROUP_BR, 0 } } } }
1305   },
1306 /* bt/s $disp8 */
1307   {
1308     SH_INSN_BTS_COMPACT, "bts-compact", "bt/s", 16,
1309     { 0|A(COND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_SH2)|(1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH2A_NOFPU)|(1<<MACH_SH3)|(1<<MACH_SH3E)|(1<<MACH_SH4_NOFPU)|(1<<MACH_SH4)|(1<<MACH_SH4A_NOFPU)|(1<<MACH_SH4A)|(1<<MACH_SH4AL)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_BR, 0 } }, { { SH4A_GROUP_BR, 0 } } } }
1310   },
1311 /* clrmac */
1312   {
1313     SH_INSN_CLRMAC_COMPACT, "clrmac-compact", "clrmac", 16,
1314     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1315   },
1316 /* clrs */
1317   {
1318     SH_INSN_CLRS_COMPACT, "clrs-compact", "clrs", 16,
1319     { 0, { { { (1<<MACH_SH3)|(1<<MACH_SH3E)|(1<<MACH_SH4_NOFPU)|(1<<MACH_SH4)|(1<<MACH_SH4A_NOFPU)|(1<<MACH_SH4A)|(1<<MACH_SH4AL)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1320   },
1321 /* clrt */
1322   {
1323     SH_INSN_CLRT_COMPACT, "clrt-compact", "clrt", 16,
1324     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_MT, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1325   },
1326 /* cmp/eq $rm, $rn */
1327   {
1328     SH_INSN_CMPEQ_COMPACT, "cmpeq-compact", "cmp/eq", 16,
1329     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_MT, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1330   },
1331 /* cmp/eq #$imm8, r0 */
1332   {
1333     SH_INSN_CMPEQI_COMPACT, "cmpeqi-compact", "cmp/eq", 16,
1334     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_MT, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1335   },
1336 /* cmp/ge $rm, $rn */
1337   {
1338     SH_INSN_CMPGE_COMPACT, "cmpge-compact", "cmp/ge", 16,
1339     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_MT, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1340   },
1341 /* cmp/gt $rm, $rn */
1342   {
1343     SH_INSN_CMPGT_COMPACT, "cmpgt-compact", "cmp/gt", 16,
1344     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_MT, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1345   },
1346 /* cmp/hi $rm, $rn */
1347   {
1348     SH_INSN_CMPHI_COMPACT, "cmphi-compact", "cmp/hi", 16,
1349     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_MT, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1350   },
1351 /* cmp/hs $rm, $rn */
1352   {
1353     SH_INSN_CMPHS_COMPACT, "cmphs-compact", "cmp/hs", 16,
1354     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_MT, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1355   },
1356 /* cmp/pl $rn */
1357   {
1358     SH_INSN_CMPPL_COMPACT, "cmppl-compact", "cmp/pl", 16,
1359     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_MT, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1360   },
1361 /* cmp/pz $rn */
1362   {
1363     SH_INSN_CMPPZ_COMPACT, "cmppz-compact", "cmp/pz", 16,
1364     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_MT, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1365   },
1366 /* cmp/str $rm, $rn */
1367   {
1368     SH_INSN_CMPSTR_COMPACT, "cmpstr-compact", "cmp/str", 16,
1369     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_MT, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1370   },
1371 /* div0s $rm, $rn */
1372   {
1373     SH_INSN_DIV0S_COMPACT, "div0s-compact", "div0s", 16,
1374     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1375   },
1376 /* div0u */
1377   {
1378     SH_INSN_DIV0U_COMPACT, "div0u-compact", "div0u", 16,
1379     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1380   },
1381 /* div1 $rm, $rn */
1382   {
1383     SH_INSN_DIV1_COMPACT, "div1-compact", "div1", 16,
1384     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1385   },
1386 /* divu r0, $rn */
1387   {
1388     SH_INSN_DIVU_COMPACT, "divu-compact", "divu", 16,
1389     { 0, { { { (1<<MACH_SH2A_NOFPU)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH4)|(1<<MACH_SH4_NOFPU)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
1390   },
1391 /* mulr r0, $rn */
1392   {
1393     SH_INSN_MULR_COMPACT, "mulr-compact", "mulr", 16,
1394     { 0, { { { (1<<MACH_SH2A_NOFPU)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH4)|(1<<MACH_SH4_NOFPU)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
1395   },
1396 /* dmuls.l $rm, $rn */
1397   {
1398     SH_INSN_DMULSL_COMPACT, "dmulsl-compact", "dmuls.l", 16,
1399     { 0, { { { (1<<MACH_SH2)|(1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH2A_NOFPU)|(1<<MACH_SH3)|(1<<MACH_SH3E)|(1<<MACH_SH4_NOFPU)|(1<<MACH_SH4)|(1<<MACH_SH4A_NOFPU)|(1<<MACH_SH4A)|(1<<MACH_SH4AL)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1400   },
1401 /* dmulu.l $rm, $rn */
1402   {
1403     SH_INSN_DMULUL_COMPACT, "dmulul-compact", "dmulu.l", 16,
1404     { 0, { { { (1<<MACH_SH2)|(1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH2A_NOFPU)|(1<<MACH_SH3)|(1<<MACH_SH3E)|(1<<MACH_SH4_NOFPU)|(1<<MACH_SH4)|(1<<MACH_SH4A_NOFPU)|(1<<MACH_SH4A)|(1<<MACH_SH4AL)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1405   },
1406 /* dt $rn */
1407   {
1408     SH_INSN_DT_COMPACT, "dt-compact", "dt", 16,
1409     { 0, { { { (1<<MACH_SH2)|(1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH2A_NOFPU)|(1<<MACH_SH3)|(1<<MACH_SH3E)|(1<<MACH_SH4_NOFPU)|(1<<MACH_SH4)|(1<<MACH_SH4A_NOFPU)|(1<<MACH_SH4A)|(1<<MACH_SH4AL)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1410   },
1411 /* exts.b $rm, $rn */
1412   {
1413     SH_INSN_EXTSB_COMPACT, "extsb-compact", "exts.b", 16,
1414     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1415   },
1416 /* exts.w $rm, $rn */
1417   {
1418     SH_INSN_EXTSW_COMPACT, "extsw-compact", "exts.w", 16,
1419     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1420   },
1421 /* extu.b $rm, $rn */
1422   {
1423     SH_INSN_EXTUB_COMPACT, "extub-compact", "extu.b", 16,
1424     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1425   },
1426 /* extu.w $rm, $rn */
1427   {
1428     SH_INSN_EXTUW_COMPACT, "extuw-compact", "extu.w", 16,
1429     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1430   },
1431 /* fabs $fsdn */
1432   {
1433     SH_INSN_FABS_COMPACT, "fabs-compact", "fabs", 16,
1434     { 0|A(FP_INSN), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1435   },
1436 /* fadd $fsdm, $fsdn */
1437   {
1438     SH_INSN_FADD_COMPACT, "fadd-compact", "fadd", 16,
1439     { 0|A(FP_INSN), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_FE, 0 } }, { { SH4A_GROUP_FE, 0 } } } }
1440   },
1441 /* fcmp/eq $fsdm, $fsdn */
1442   {
1443     SH_INSN_FCMPEQ_COMPACT, "fcmpeq-compact", "fcmp/eq", 16,
1444     { 0|A(FP_INSN), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_FE, 0 } }, { { SH4A_GROUP_FE, 0 } } } }
1445   },
1446 /* fcmp/gt $fsdm, $fsdn */
1447   {
1448     SH_INSN_FCMPGT_COMPACT, "fcmpgt-compact", "fcmp/gt", 16,
1449     { 0|A(FP_INSN), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_FE, 0 } }, { { SH4A_GROUP_FE, 0 } } } }
1450   },
1451 /* fcnvds $drn, fpul */
1452   {
1453     SH_INSN_FCNVDS_COMPACT, "fcnvds-compact", "fcnvds", 16,
1454     { 0|A(FP_INSN), { { { (1<<MACH_SH2A_FPU)|(1<<MACH_SH4)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_FE, 0 } }, { { SH4A_GROUP_FE, 0 } } } }
1455   },
1456 /* fcnvsd fpul, $drn */
1457   {
1458     SH_INSN_FCNVSD_COMPACT, "fcnvsd-compact", "fcnvsd", 16,
1459     { 0|A(FP_INSN), { { { (1<<MACH_SH2A_FPU)|(1<<MACH_SH4)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_FE, 0 } }, { { SH4A_GROUP_FE, 0 } } } }
1460   },
1461 /* fdiv $fsdm, $fsdn */
1462   {
1463     SH_INSN_FDIV_COMPACT, "fdiv-compact", "fdiv", 16,
1464     { 0|A(FP_INSN), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_FE, 0 } }, { { SH4A_GROUP_FE, 0 } } } }
1465   },
1466 /* fipr $fvm, $fvn */
1467   {
1468     SH_INSN_FIPR_COMPACT, "fipr-compact", "fipr", 16,
1469     { 0|A(FP_INSN), { { { (1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_FE, 0 } }, { { SH4A_GROUP_FE, 0 } } } }
1470   },
1471 /* flds $frn, fpul */
1472   {
1473     SH_INSN_FLDS_COMPACT, "flds-compact", "flds", 16,
1474     { 0|A(FP_INSN), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1475   },
1476 /* fldi0 $frn */
1477   {
1478     SH_INSN_FLDI0_COMPACT, "fldi0-compact", "fldi0", 16,
1479     { 0|A(FP_INSN), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1480   },
1481 /* fldi1 $frn */
1482   {
1483     SH_INSN_FLDI1_COMPACT, "fldi1-compact", "fldi1", 16,
1484     { 0|A(FP_INSN), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1485   },
1486 /* float fpul, $fsdn */
1487   {
1488     SH_INSN_FLOAT_COMPACT, "float-compact", "float", 16,
1489     { 0|A(FP_INSN), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_FE, 0 } }, { { SH4A_GROUP_FE, 0 } } } }
1490   },
1491 /* fmac fr0, $frm, $frn */
1492   {
1493     SH_INSN_FMAC_COMPACT, "fmac-compact", "fmac", 16,
1494     { 0|A(FP_INSN), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_FE, 0 } }, { { SH4A_GROUP_FE, 0 } } } }
1495   },
1496 /* fmov $fmovm, $fmovn */
1497   {
1498     SH_INSN_FMOV1_COMPACT, "fmov1-compact", "fmov", 16,
1499     { 0|A(FP_INSN), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1500   },
1501 /* fmov @$rm, $fmovn */
1502   {
1503     SH_INSN_FMOV2_COMPACT, "fmov2-compact", "fmov", 16,
1504     { 0|A(FP_INSN), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1505   },
1506 /* fmov @${rm}+, fmovn */
1507   {
1508     SH_INSN_FMOV3_COMPACT, "fmov3-compact", "fmov", 16,
1509     { 0|A(FP_INSN), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1510   },
1511 /* fmov @(r0, $rm), $fmovn */
1512   {
1513     SH_INSN_FMOV4_COMPACT, "fmov4-compact", "fmov", 16,
1514     { 0|A(FP_INSN), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1515   },
1516 /* fmov $fmovm, @$rn */
1517   {
1518     SH_INSN_FMOV5_COMPACT, "fmov5-compact", "fmov", 16,
1519     { 0|A(FP_INSN), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1520   },
1521 /* fmov $fmovm, @-$rn */
1522   {
1523     SH_INSN_FMOV6_COMPACT, "fmov6-compact", "fmov", 16,
1524     { 0|A(FP_INSN), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1525   },
1526 /* fmov $fmovm, @(r0, $rn) */
1527   {
1528     SH_INSN_FMOV7_COMPACT, "fmov7-compact", "fmov", 16,
1529     { 0|A(FP_INSN), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1530   },
1531 /* fmov.d @($imm12x8, $rm), $drn */
1532   {
1533     SH_INSN_FMOV8_COMPACT, "fmov8-compact", "fmov.d", 32,
1534     { 0|A(32_BIT_INSN), { { { (1<<MACH_SH2A_FPU)|(1<<MACH_SH4)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
1535   },
1536 /* mov.l $drm, @($imm12x8, $rn) */
1537   {
1538     SH_INSN_FMOV9_COMPACT, "fmov9-compact", "mov.l", 32,
1539     { 0|A(32_BIT_INSN), { { { (1<<MACH_SH2A_FPU)|(1<<MACH_SH4)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
1540   },
1541 /* fmul $fsdm, $fsdn */
1542   {
1543     SH_INSN_FMUL_COMPACT, "fmul-compact", "fmul", 16,
1544     { 0|A(FP_INSN), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_FE, 0 } }, { { SH4A_GROUP_FE, 0 } } } }
1545   },
1546 /* fneg $fsdn */
1547   {
1548     SH_INSN_FNEG_COMPACT, "fneg-compact", "fneg", 16,
1549     { 0|A(FP_INSN), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1550   },
1551 /* frchg */
1552   {
1553     SH_INSN_FRCHG_COMPACT, "frchg-compact", "frchg", 16,
1554     { 0|A(FP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_FE, 0 } }, { { SH4A_GROUP_FE, 0 } } } }
1555   },
1556 /* fschg */
1557   {
1558     SH_INSN_FSCHG_COMPACT, "fschg-compact", "fschg", 16,
1559     { 0|A(FP_INSN), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_FE, 0 } }, { { SH4A_GROUP_FE, 0 } } } }
1560   },
1561 /* fsqrt $fsdn */
1562   {
1563     SH_INSN_FSQRT_COMPACT, "fsqrt-compact", "fsqrt", 16,
1564     { 0|A(FP_INSN), { { { (1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_FE, 0 } }, { { SH4A_GROUP_FE, 0 } } } }
1565   },
1566 /* fsts fpul, $frn */
1567   {
1568     SH_INSN_FSTS_COMPACT, "fsts-compact", "fsts", 16,
1569     { 0|A(FP_INSN), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1570   },
1571 /* fsub $fsdm, $fsdn */
1572   {
1573     SH_INSN_FSUB_COMPACT, "fsub-compact", "fsub", 16,
1574     { 0|A(FP_INSN), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_FE, 0 } }, { { SH4A_GROUP_FE, 0 } } } }
1575   },
1576 /* ftrc $fsdn, fpul */
1577   {
1578     SH_INSN_FTRC_COMPACT, "ftrc-compact", "ftrc", 16,
1579     { 0|A(FP_INSN), { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_FE, 0 } }, { { SH4A_GROUP_FE, 0 } } } }
1580   },
1581 /* ftrv xmtrx, $fvn */
1582   {
1583     SH_INSN_FTRV_COMPACT, "ftrv-compact", "ftrv", 16,
1584     { 0|A(FP_INSN), { { { (1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_FE, 0 } }, { { SH4A_GROUP_FE, 0 } } } }
1585   },
1586 /* jmp @$rn */
1587   {
1588     SH_INSN_JMP_COMPACT, "jmp-compact", "jmp", 16,
1589     { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_BR, 0 } } } }
1590   },
1591 /* jsr @$rn */
1592   {
1593     SH_INSN_JSR_COMPACT, "jsr-compact", "jsr", 16,
1594     { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_BR, 0 } } } }
1595   },
1596 /* ldc $rn, gbr */
1597   {
1598     SH_INSN_LDC_GBR_COMPACT, "ldc-gbr-compact", "ldc", 16,
1599     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1600   },
1601 /* ldc $rn, vbr */
1602   {
1603     SH_INSN_LDC_VBR_COMPACT, "ldc-vbr-compact", "ldc", 16,
1604     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1605   },
1606 /* ldc $rn, sr */
1607   {
1608     SH_INSN_LDC_SR_COMPACT, "ldc-sr-compact", "ldc", 16,
1609     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_CO, 0 } } } }
1610   },
1611 /* ldc.l @${rn}+, gbr */
1612   {
1613     SH_INSN_LDCL_GBR_COMPACT, "ldcl-gbr-compact", "ldc.l", 16,
1614     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1615   },
1616 /* ldc.l @${rn}+, vbr */
1617   {
1618     SH_INSN_LDCL_VBR_COMPACT, "ldcl-vbr-compact", "ldc.l", 16,
1619     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1620   },
1621 /* lds $rn, fpscr */
1622   {
1623     SH_INSN_LDS_FPSCR_COMPACT, "lds-fpscr-compact", "lds", 16,
1624     { 0, { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1625   },
1626 /* lds.l @${rn}+, fpscr */
1627   {
1628     SH_INSN_LDSL_FPSCR_COMPACT, "ldsl-fpscr-compact", "lds.l", 16,
1629     { 0, { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1630   },
1631 /* lds $rn, fpul */
1632   {
1633     SH_INSN_LDS_FPUL_COMPACT, "lds-fpul-compact", "lds", 16,
1634     { 0, { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1635   },
1636 /* lds.l @${rn}+, fpul */
1637   {
1638     SH_INSN_LDSL_FPUL_COMPACT, "ldsl-fpul-compact", "lds.l", 16,
1639     { 0, { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1640   },
1641 /* lds $rn, mach */
1642   {
1643     SH_INSN_LDS_MACH_COMPACT, "lds-mach-compact", "lds", 16,
1644     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1645   },
1646 /* lds.l @${rn}+, mach */
1647   {
1648     SH_INSN_LDSL_MACH_COMPACT, "ldsl-mach-compact", "lds.l", 16,
1649     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1650   },
1651 /* lds $rn, macl */
1652   {
1653     SH_INSN_LDS_MACL_COMPACT, "lds-macl-compact", "lds", 16,
1654     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1655   },
1656 /* lds.l @${rn}+, macl */
1657   {
1658     SH_INSN_LDSL_MACL_COMPACT, "ldsl-macl-compact", "lds.l", 16,
1659     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1660   },
1661 /* lds $rn, pr */
1662   {
1663     SH_INSN_LDS_PR_COMPACT, "lds-pr-compact", "lds", 16,
1664     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1665   },
1666 /* lds.l @${rn}+, pr */
1667   {
1668     SH_INSN_LDSL_PR_COMPACT, "ldsl-pr-compact", "lds.l", 16,
1669     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1670   },
1671 /* mac.l @${rm}+, @${rn}+ */
1672   {
1673     SH_INSN_MACL_COMPACT, "macl-compact", "mac.l", 16,
1674     { 0, { { { (1<<MACH_SH2)|(1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH2A_NOFPU)|(1<<MACH_SH3)|(1<<MACH_SH3E)|(1<<MACH_SH4_NOFPU)|(1<<MACH_SH4)|(1<<MACH_SH4A_NOFPU)|(1<<MACH_SH4A)|(1<<MACH_SH4AL)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_CO, 0 } } } }
1675   },
1676 /* mac.w @${rm}+, @${rn}+ */
1677   {
1678     SH_INSN_MACW_COMPACT, "macw-compact", "mac.w", 16,
1679     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_CO, 0 } } } }
1680   },
1681 /* mov $rm64, $rn64 */
1682   {
1683     SH_INSN_MOV_COMPACT, "mov-compact", "mov", 16,
1684     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_MT, 0 } }, { { SH4A_GROUP_MT, 0 } } } }
1685   },
1686 /* mov #$imm8, $rn */
1687   {
1688     SH_INSN_MOVI_COMPACT, "movi-compact", "mov", 16,
1689     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_MT, 0 } } } }
1690   },
1691 /* movi20 #$imm20, $rn */
1692   {
1693     SH_INSN_MOVI20_COMPACT, "movi20-compact", "movi20", 32,
1694     { 0|A(32_BIT_INSN), { { { (1<<MACH_SH2A_NOFPU)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH4)|(1<<MACH_SH4_NOFPU)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
1695   },
1696 /* mov.b $rm, @$rn */
1697   {
1698     SH_INSN_MOVB1_COMPACT, "movb1-compact", "mov.b", 16,
1699     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1700   },
1701 /* mov.b $rm, @-$rn */
1702   {
1703     SH_INSN_MOVB2_COMPACT, "movb2-compact", "mov.b", 16,
1704     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1705   },
1706 /* mov.b $rm, @(r0,$rn) */
1707   {
1708     SH_INSN_MOVB3_COMPACT, "movb3-compact", "mov.b", 16,
1709     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1710   },
1711 /* mov.b r0, @($imm8, gbr) */
1712   {
1713     SH_INSN_MOVB4_COMPACT, "movb4-compact", "mov.b", 16,
1714     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1715   },
1716 /* mov.b r0, @($imm4, $rm) */
1717   {
1718     SH_INSN_MOVB5_COMPACT, "movb5-compact", "mov.b", 16,
1719     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1720   },
1721 /* mov.b @$rm, $rn */
1722   {
1723     SH_INSN_MOVB6_COMPACT, "movb6-compact", "mov.b", 16,
1724     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1725   },
1726 /* mov.b @${rm}+, $rn */
1727   {
1728     SH_INSN_MOVB7_COMPACT, "movb7-compact", "mov.b", 16,
1729     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1730   },
1731 /* mov.b @(r0, $rm), $rn */
1732   {
1733     SH_INSN_MOVB8_COMPACT, "movb8-compact", "mov.b", 16,
1734     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1735   },
1736 /* mov.b @($imm8, gbr), r0 */
1737   {
1738     SH_INSN_MOVB9_COMPACT, "movb9-compact", "mov.b", 16,
1739     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1740   },
1741 /* mov.b @($imm4, $rm), r0 */
1742   {
1743     SH_INSN_MOVB10_COMPACT, "movb10-compact", "mov.b", 16,
1744     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1745   },
1746 /* mov.l $rm, @$rn */
1747   {
1748     SH_INSN_MOVL1_COMPACT, "movl1-compact", "mov.l", 16,
1749     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1750   },
1751 /* mov.l $rm, @-$rn */
1752   {
1753     SH_INSN_MOVL2_COMPACT, "movl2-compact", "mov.l", 16,
1754     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1755   },
1756 /* mov.l $rm, @(r0, $rn) */
1757   {
1758     SH_INSN_MOVL3_COMPACT, "movl3-compact", "mov.l", 16,
1759     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1760   },
1761 /* mov.l r0, @($imm8x4, gbr) */
1762   {
1763     SH_INSN_MOVL4_COMPACT, "movl4-compact", "mov.l", 16,
1764     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1765   },
1766 /* mov.l $rm, @($imm4x4, $rn) */
1767   {
1768     SH_INSN_MOVL5_COMPACT, "movl5-compact", "mov.l", 16,
1769     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1770   },
1771 /* mov.l @$rm, $rn */
1772   {
1773     SH_INSN_MOVL6_COMPACT, "movl6-compact", "mov.l", 16,
1774     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1775   },
1776 /* mov.l @${rm}+, $rn */
1777   {
1778     SH_INSN_MOVL7_COMPACT, "movl7-compact", "mov.l", 16,
1779     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1780   },
1781 /* mov.l @(r0, $rm), $rn */
1782   {
1783     SH_INSN_MOVL8_COMPACT, "movl8-compact", "mov.l", 16,
1784     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1785   },
1786 /* mov.l @($imm8x4, gbr), r0 */
1787   {
1788     SH_INSN_MOVL9_COMPACT, "movl9-compact", "mov.l", 16,
1789     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1790   },
1791 /* mov.l @($imm8x4, pc), $rn */
1792   {
1793     SH_INSN_MOVL10_COMPACT, "movl10-compact", "mov.l", 16,
1794     { 0|A(ILLSLOT), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1795   },
1796 /* mov.l @($imm4x4, $rm), $rn */
1797   {
1798     SH_INSN_MOVL11_COMPACT, "movl11-compact", "mov.l", 16,
1799     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1800   },
1801 /* mov.l @($imm12x4, $rm), $rn */
1802   {
1803     SH_INSN_MOVL12_COMPACT, "movl12-compact", "mov.l", 32,
1804     { 0|A(32_BIT_INSN), { { { (1<<MACH_SH2A_NOFPU)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH4)|(1<<MACH_SH4_NOFPU)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
1805   },
1806 /* mov.l $rm, @($imm12x4, $rn) */
1807   {
1808     SH_INSN_MOVL13_COMPACT, "movl13-compact", "mov.l", 32,
1809     { 0|A(32_BIT_INSN), { { { (1<<MACH_SH2A_NOFPU)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH4)|(1<<MACH_SH4_NOFPU)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
1810   },
1811 /* mov.w $rm, @$rn */
1812   {
1813     SH_INSN_MOVW1_COMPACT, "movw1-compact", "mov.w", 16,
1814     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1815   },
1816 /* mov.w $rm, @-$rn */
1817   {
1818     SH_INSN_MOVW2_COMPACT, "movw2-compact", "mov.w", 16,
1819     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1820   },
1821 /* mov.w $rm, @(r0, $rn) */
1822   {
1823     SH_INSN_MOVW3_COMPACT, "movw3-compact", "mov.w", 16,
1824     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1825   },
1826 /* mov.w r0, @($imm8x2, gbr) */
1827   {
1828     SH_INSN_MOVW4_COMPACT, "movw4-compact", "mov.w", 16,
1829     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1830   },
1831 /* mov.w r0, @($imm4x2, $rm) */
1832   {
1833     SH_INSN_MOVW5_COMPACT, "movw5-compact", "mov.w", 16,
1834     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1835   },
1836 /* mov.w @$rm, $rn */
1837   {
1838     SH_INSN_MOVW6_COMPACT, "movw6-compact", "mov.w", 16,
1839     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1840   },
1841 /* mov.w @${rm}+, $rn */
1842   {
1843     SH_INSN_MOVW7_COMPACT, "movw7-compact", "mov.w", 16,
1844     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1845   },
1846 /* mov.w @(r0, $rm), $rn */
1847   {
1848     SH_INSN_MOVW8_COMPACT, "movw8-compact", "mov.w", 16,
1849     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1850   },
1851 /* mov.w @($imm8x2, gbr), r0 */
1852   {
1853     SH_INSN_MOVW9_COMPACT, "movw9-compact", "mov.w", 16,
1854     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1855   },
1856 /* mov.w @($imm8x2, pc), $rn */
1857   {
1858     SH_INSN_MOVW10_COMPACT, "movw10-compact", "mov.w", 16,
1859     { 0|A(ILLSLOT), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1860   },
1861 /* mov.w @($imm4x2, $rm), r0 */
1862   {
1863     SH_INSN_MOVW11_COMPACT, "movw11-compact", "mov.w", 16,
1864     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1865   },
1866 /* mova @($imm8x4, pc), r0 */
1867   {
1868     SH_INSN_MOVA_COMPACT, "mova-compact", "mova", 16,
1869     { 0|A(ILLSLOT), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1870   },
1871 /* movca.l r0, @$rn */
1872   {
1873     SH_INSN_MOVCAL_COMPACT, "movcal-compact", "movca.l", 16,
1874     { 0, { { { (1<<MACH_SH4_NOFPU)|(1<<MACH_SH4)|(1<<MACH_SH4A_NOFPU)|(1<<MACH_SH4A)|(1<<MACH_SH4AL)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1875   },
1876 /* movco.l r0, @$rn */
1877   {
1878     SH_INSN_MOVCOL_COMPACT, "movcol-compact", "movco.l", 16,
1879     { 0, { { { (1<<MACH_SH4A_NOFPU)|(1<<MACH_SH4A)|(1<<MACH_SH4AL)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_CO, 0 } } } }
1880   },
1881 /* movt $rn */
1882   {
1883     SH_INSN_MOVT_COMPACT, "movt-compact", "movt", 16,
1884     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1885   },
1886 /* movua.l @$rn, r0 */
1887   {
1888     SH_INSN_MOVUAL_COMPACT, "movual-compact", "movua.l", 16,
1889     { 0, { { { (1<<MACH_SH4A_NOFPU)|(1<<MACH_SH4A)|(1<<MACH_SH4AL)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1890   },
1891 /* movua.l @$rn+, r0 */
1892   {
1893     SH_INSN_MOVUAL2_COMPACT, "movual2-compact", "movua.l", 16,
1894     { 0, { { { (1<<MACH_SH4A_NOFPU)|(1<<MACH_SH4A)|(1<<MACH_SH4AL)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1895   },
1896 /* mul.l $rm, $rn */
1897   {
1898     SH_INSN_MULL_COMPACT, "mull-compact", "mul.l", 16,
1899     { 0, { { { (1<<MACH_SH2)|(1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH2A_NOFPU)|(1<<MACH_SH3)|(1<<MACH_SH3E)|(1<<MACH_SH4_NOFPU)|(1<<MACH_SH4)|(1<<MACH_SH4A_NOFPU)|(1<<MACH_SH4A)|(1<<MACH_SH4AL)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1900   },
1901 /* muls.w $rm, $rn */
1902   {
1903     SH_INSN_MULSW_COMPACT, "mulsw-compact", "muls.w", 16,
1904     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1905   },
1906 /* mulu.w $rm, $rn */
1907   {
1908     SH_INSN_MULUW_COMPACT, "muluw-compact", "mulu.w", 16,
1909     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1910   },
1911 /* neg $rm, $rn */
1912   {
1913     SH_INSN_NEG_COMPACT, "neg-compact", "neg", 16,
1914     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1915   },
1916 /* negc $rm, $rn */
1917   {
1918     SH_INSN_NEGC_COMPACT, "negc-compact", "negc", 16,
1919     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1920   },
1921 /* nop */
1922   {
1923     SH_INSN_NOP_COMPACT, "nop-compact", "nop", 16,
1924     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_MT, 0 } }, { { SH4A_GROUP_MT, 0 } } } }
1925   },
1926 /* not $rm64, $rn64 */
1927   {
1928     SH_INSN_NOT_COMPACT, "not-compact", "not", 16,
1929     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1930   },
1931 /* ocbi @$rn */
1932   {
1933     SH_INSN_OCBI_COMPACT, "ocbi-compact", "ocbi", 16,
1934     { 0, { { { (1<<MACH_SH4_NOFPU)|(1<<MACH_SH4)|(1<<MACH_SH4A_NOFPU)|(1<<MACH_SH4A)|(1<<MACH_SH4AL)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1935   },
1936 /* ocbp @$rn */
1937   {
1938     SH_INSN_OCBP_COMPACT, "ocbp-compact", "ocbp", 16,
1939     { 0, { { { (1<<MACH_SH4_NOFPU)|(1<<MACH_SH4)|(1<<MACH_SH4A_NOFPU)|(1<<MACH_SH4A)|(1<<MACH_SH4AL)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1940   },
1941 /* ocbwb @$rn */
1942   {
1943     SH_INSN_OCBWB_COMPACT, "ocbwb-compact", "ocbwb", 16,
1944     { 0, { { { (1<<MACH_SH4_NOFPU)|(1<<MACH_SH4)|(1<<MACH_SH4A_NOFPU)|(1<<MACH_SH4A)|(1<<MACH_SH4AL)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1945   },
1946 /* or $rm64, $rn64 */
1947   {
1948     SH_INSN_OR_COMPACT, "or-compact", "or", 16,
1949     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1950   },
1951 /* or #$uimm8, r0 */
1952   {
1953     SH_INSN_ORI_COMPACT, "ori-compact", "or", 16,
1954     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1955   },
1956 /* or.b #$imm8, @(r0, gbr) */
1957   {
1958     SH_INSN_ORB_COMPACT, "orb-compact", "or.b", 16,
1959     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_CO, 0 } } } }
1960   },
1961 /* pref @$rn */
1962   {
1963     SH_INSN_PREF_COMPACT, "pref-compact", "pref", 16,
1964     { 0, { { { (1<<MACH_SH3)|(1<<MACH_SH3E)|(1<<MACH_SH4_NOFPU)|(1<<MACH_SH4)|(1<<MACH_SH4A_NOFPU)|(1<<MACH_SH4A)|(1<<MACH_SH4AL)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
1965   },
1966 /* rotcl $rn */
1967   {
1968     SH_INSN_ROTCL_COMPACT, "rotcl-compact", "rotcl", 16,
1969     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1970   },
1971 /* rotcr $rn */
1972   {
1973     SH_INSN_ROTCR_COMPACT, "rotcr-compact", "rotcr", 16,
1974     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1975   },
1976 /* rotl $rn */
1977   {
1978     SH_INSN_ROTL_COMPACT, "rotl-compact", "rotl", 16,
1979     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1980   },
1981 /* rotr $rn */
1982   {
1983     SH_INSN_ROTR_COMPACT, "rotr-compact", "rotr", 16,
1984     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1985   },
1986 /* rts */
1987   {
1988     SH_INSN_RTS_COMPACT, "rts-compact", "rts", 16,
1989     { 0|A(UNCOND_CTI)|A(DELAY_SLOT), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_BR, 0 } } } }
1990   },
1991 /* sets */
1992   {
1993     SH_INSN_SETS_COMPACT, "sets-compact", "sets", 16,
1994     { 0, { { { (1<<MACH_SH3)|(1<<MACH_SH3E)|(1<<MACH_SH4_NOFPU)|(1<<MACH_SH4)|(1<<MACH_SH4A_NOFPU)|(1<<MACH_SH4A)|(1<<MACH_SH4AL)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
1995   },
1996 /* sett */
1997   {
1998     SH_INSN_SETT_COMPACT, "sett-compact", "sett", 16,
1999     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_MT, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2000   },
2001 /* shad $rm, $rn */
2002   {
2003     SH_INSN_SHAD_COMPACT, "shad-compact", "shad", 16,
2004     { 0, { { { (1<<MACH_SH2A_NOFPU)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3)|(1<<MACH_SH3E)|(1<<MACH_SH4_NOFPU)|(1<<MACH_SH4)|(1<<MACH_SH4A_NOFPU)|(1<<MACH_SH4A)|(1<<MACH_SH4AL)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2005   },
2006 /* shal $rn */
2007   {
2008     SH_INSN_SHAL_COMPACT, "shal-compact", "shal", 16,
2009     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2010   },
2011 /* shar $rn */
2012   {
2013     SH_INSN_SHAR_COMPACT, "shar-compact", "shar", 16,
2014     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2015   },
2016 /* shld $rm, $rn */
2017   {
2018     SH_INSN_SHLD_COMPACT, "shld-compact", "shld", 16,
2019     { 0, { { { (1<<MACH_SH3)|(1<<MACH_SH3E)|(1<<MACH_SH4_NOFPU)|(1<<MACH_SH4)|(1<<MACH_SH4A_NOFPU)|(1<<MACH_SH4A)|(1<<MACH_SH4AL)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2020   },
2021 /* shll $rn */
2022   {
2023     SH_INSN_SHLL_COMPACT, "shll-compact", "shll", 16,
2024     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2025   },
2026 /* shll2 $rn */
2027   {
2028     SH_INSN_SHLL2_COMPACT, "shll2-compact", "shll2", 16,
2029     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2030   },
2031 /* shll8 $rn */
2032   {
2033     SH_INSN_SHLL8_COMPACT, "shll8-compact", "shll8", 16,
2034     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2035   },
2036 /* shll16 $rn */
2037   {
2038     SH_INSN_SHLL16_COMPACT, "shll16-compact", "shll16", 16,
2039     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2040   },
2041 /* shlr $rn */
2042   {
2043     SH_INSN_SHLR_COMPACT, "shlr-compact", "shlr", 16,
2044     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2045   },
2046 /* shlr2 $rn */
2047   {
2048     SH_INSN_SHLR2_COMPACT, "shlr2-compact", "shlr2", 16,
2049     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2050   },
2051 /* shlr8 $rn */
2052   {
2053     SH_INSN_SHLR8_COMPACT, "shlr8-compact", "shlr8", 16,
2054     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2055   },
2056 /* shlr16 $rn */
2057   {
2058     SH_INSN_SHLR16_COMPACT, "shlr16-compact", "shlr16", 16,
2059     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2060   },
2061 /* stc gbr, $rn */
2062   {
2063     SH_INSN_STC_GBR_COMPACT, "stc-gbr-compact", "stc", 16,
2064     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2065   },
2066 /* stc vbr, $rn */
2067   {
2068     SH_INSN_STC_VBR_COMPACT, "stc-vbr-compact", "stc", 16,
2069     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2070   },
2071 /* stc.l gbr, @-$rn */
2072   {
2073     SH_INSN_STCL_GBR_COMPACT, "stcl-gbr-compact", "stc.l", 16,
2074     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2075   },
2076 /* stc.l vbr, @-$rn */
2077   {
2078     SH_INSN_STCL_VBR_COMPACT, "stcl-vbr-compact", "stc.l", 16,
2079     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2080   },
2081 /* sts fpscr, $rn */
2082   {
2083     SH_INSN_STS_FPSCR_COMPACT, "sts-fpscr-compact", "sts", 16,
2084     { 0, { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
2085   },
2086 /* sts.l fpscr, @-$rn */
2087   {
2088     SH_INSN_STSL_FPSCR_COMPACT, "stsl-fpscr-compact", "sts.l", 16,
2089     { 0, { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
2090   },
2091 /* sts fpul, $rn */
2092   {
2093     SH_INSN_STS_FPUL_COMPACT, "sts-fpul-compact", "sts", 16,
2094     { 0, { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_LS, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
2095   },
2096 /* sts.l fpul, @-$rn */
2097   {
2098     SH_INSN_STSL_FPUL_COMPACT, "stsl-fpul-compact", "sts.l", 16,
2099     { 0, { { { (1<<MACH_SH2E)|(1<<MACH_SH2A_FPU)|(1<<MACH_SH3E)|(1<<MACH_SH4)|(1<<MACH_SH4A)|(1<<MACH_SH5), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
2100   },
2101 /* sts mach, $rn */
2102   {
2103     SH_INSN_STS_MACH_COMPACT, "sts-mach-compact", "sts", 16,
2104     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
2105   },
2106 /* sts.l mach, @-$rn */
2107   {
2108     SH_INSN_STSL_MACH_COMPACT, "stsl-mach-compact", "sts.l", 16,
2109     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
2110   },
2111 /* sts macl, $rn */
2112   {
2113     SH_INSN_STS_MACL_COMPACT, "sts-macl-compact", "sts", 16,
2114     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
2115   },
2116 /* sts.l macl, @-$rn */
2117   {
2118     SH_INSN_STSL_MACL_COMPACT, "stsl-macl-compact", "sts.l", 16,
2119     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
2120   },
2121 /* sts pr, $rn */
2122   {
2123     SH_INSN_STS_PR_COMPACT, "sts-pr-compact", "sts", 16,
2124     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
2125   },
2126 /* sts.l pr, @-$rn */
2127   {
2128     SH_INSN_STSL_PR_COMPACT, "stsl-pr-compact", "sts.l", 16,
2129     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_LS, 0 } } } }
2130   },
2131 /* sub $rm, $rn */
2132   {
2133     SH_INSN_SUB_COMPACT, "sub-compact", "sub", 16,
2134     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2135   },
2136 /* subc $rm, $rn */
2137   {
2138     SH_INSN_SUBC_COMPACT, "subc-compact", "subc", 16,
2139     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2140   },
2141 /* subv $rm, $rn */
2142   {
2143     SH_INSN_SUBV_COMPACT, "subv-compact", "subv", 16,
2144     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2145   },
2146 /* swap.b $rm, $rn */
2147   {
2148     SH_INSN_SWAPB_COMPACT, "swapb-compact", "swap.b", 16,
2149     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2150   },
2151 /* swap.w $rm, $rn */
2152   {
2153     SH_INSN_SWAPW_COMPACT, "swapw-compact", "swap.w", 16,
2154     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2155   },
2156 /* tas.b @$rn */
2157   {
2158     SH_INSN_TASB_COMPACT, "tasb-compact", "tas.b", 16,
2159     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_CO, 0 } } } }
2160   },
2161 /* trapa #$uimm8 */
2162   {
2163     SH_INSN_TRAPA_COMPACT, "trapa-compact", "trapa", 16,
2164     { 0|A(ILLSLOT), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_CO, 0 } } } }
2165   },
2166 /* tst $rm, $rn */
2167   {
2168     SH_INSN_TST_COMPACT, "tst-compact", "tst", 16,
2169     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_MT, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2170   },
2171 /* tst #$uimm8, r0 */
2172   {
2173     SH_INSN_TSTI_COMPACT, "tsti-compact", "tst", 16,
2174     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_MT, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2175   },
2176 /* tst.b #$imm8, @(r0, gbr) */
2177   {
2178     SH_INSN_TSTB_COMPACT, "tstb-compact", "tst.b", 16,
2179     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_CO, 0 } } } }
2180   },
2181 /* xor $rm64, $rn64 */
2182   {
2183     SH_INSN_XOR_COMPACT, "xor-compact", "xor", 16,
2184     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2185   },
2186 /* xor #$uimm8, r0 */
2187   {
2188     SH_INSN_XORI_COMPACT, "xori-compact", "xor", 16,
2189     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2190   },
2191 /* xor.b #$imm8, @(r0, gbr) */
2192   {
2193     SH_INSN_XORB_COMPACT, "xorb-compact", "xor.b", 16,
2194     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_CO, 0 } }, { { SH4A_GROUP_CO, 0 } } } }
2195   },
2196 /* xtrct $rm, $rn */
2197   {
2198     SH_INSN_XTRCT_COMPACT, "xtrct-compact", "xtrct", 16,
2199     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x80" } }, { { SH4_GROUP_EX, 0 } }, { { SH4A_GROUP_EX, 0 } } } }
2200   },
2201 /* add $rm, $rn, $rd */
2202   {
2203     SH_INSN_ADD, "add", "add", 32,
2204     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2205   },
2206 /* add.l $rm, $rn, $rd */
2207   {
2208     SH_INSN_ADDL, "addl", "add.l", 32,
2209     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2210   },
2211 /* addi $rm, $disp10, $rd */
2212   {
2213     SH_INSN_ADDI, "addi", "addi", 32,
2214     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2215   },
2216 /* addi.l $rm, $disp10, $rd */
2217   {
2218     SH_INSN_ADDIL, "addil", "addi.l", 32,
2219     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2220   },
2221 /* addz.l $rm, $rn, $rd */
2222   {
2223     SH_INSN_ADDZL, "addzl", "addz.l", 32,
2224     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2225   },
2226 /* alloco $rm, $disp6x32 */
2227   {
2228     SH_INSN_ALLOCO, "alloco", "alloco", 32,
2229     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2230   },
2231 /* and $rm, $rn, $rd */
2232   {
2233     SH_INSN_AND, "and", "and", 32,
2234     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2235   },
2236 /* andc $rm, $rn, $rd */
2237   {
2238     SH_INSN_ANDC, "andc", "andc", 32,
2239     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2240   },
2241 /* andi $rm, $disp10, $rd */
2242   {
2243     SH_INSN_ANDI, "andi", "andi", 32,
2244     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2245   },
2246 /* beq$likely $rm, $rn, $tra */
2247   {
2248     SH_INSN_BEQ, "beq", "beq", 32,
2249     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2250   },
2251 /* beqi$likely $rm, $imm6, $tra */
2252   {
2253     SH_INSN_BEQI, "beqi", "beqi", 32,
2254     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2255   },
2256 /* bge$likely $rm, $rn, $tra */
2257   {
2258     SH_INSN_BGE, "bge", "bge", 32,
2259     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2260   },
2261 /* bgeu$likely $rm, $rn, $tra */
2262   {
2263     SH_INSN_BGEU, "bgeu", "bgeu", 32,
2264     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2265   },
2266 /* bgt$likely $rm, $rn, $tra */
2267   {
2268     SH_INSN_BGT, "bgt", "bgt", 32,
2269     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2270   },
2271 /* bgtu$likely $rm, $rn, $tra */
2272   {
2273     SH_INSN_BGTU, "bgtu", "bgtu", 32,
2274     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2275   },
2276 /* blink $trb, $rd */
2277   {
2278     SH_INSN_BLINK, "blink", "blink", 32,
2279     { 0|A(UNCOND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2280   },
2281 /* bne$likely $rm, $rn, $tra */
2282   {
2283     SH_INSN_BNE, "bne", "bne", 32,
2284     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2285   },
2286 /* bnei$likely $rm, $imm6, $tra */
2287   {
2288     SH_INSN_BNEI, "bnei", "bnei", 32,
2289     { 0|A(COND_CTI), { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2290   },
2291 /* brk */
2292   {
2293     SH_INSN_BRK, "brk", "brk", 32,
2294     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2295   },
2296 /* byterev $rm, $rd */
2297   {
2298     SH_INSN_BYTEREV, "byterev", "byterev", 32,
2299     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2300   },
2301 /* cmpeq $rm, $rn, $rd */
2302   {
2303     SH_INSN_CMPEQ, "cmpeq", "cmpeq", 32,
2304     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2305   },
2306 /* cmpgt $rm, $rn, $rd */
2307   {
2308     SH_INSN_CMPGT, "cmpgt", "cmpgt", 32,
2309     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2310   },
2311 /* cmpgtu $rm,$rn, $rd */
2312   {
2313     SH_INSN_CMPGTU, "cmpgtu", "cmpgtu", 32,
2314     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2315   },
2316 /* cmveq $rm, $rn, $rd */
2317   {
2318     SH_INSN_CMVEQ, "cmveq", "cmveq", 32,
2319     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2320   },
2321 /* cmvne $rm, $rn, $rd */
2322   {
2323     SH_INSN_CMVNE, "cmvne", "cmvne", 32,
2324     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2325   },
2326 /* fabs.d $drgh, $drf */
2327   {
2328     SH_INSN_FABSD, "fabsd", "fabs.d", 32,
2329     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2330   },
2331 /* fabs.s $frgh, $frf */
2332   {
2333     SH_INSN_FABSS, "fabss", "fabs.s", 32,
2334     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2335   },
2336 /* fadd.d $drg, $drh, $drf */
2337   {
2338     SH_INSN_FADDD, "faddd", "fadd.d", 32,
2339     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2340   },
2341 /* fadd.s $frg, $frh, $frf */
2342   {
2343     SH_INSN_FADDS, "fadds", "fadd.s", 32,
2344     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2345   },
2346 /* fcmpeq.d $drg, $drh, $rd */
2347   {
2348     SH_INSN_FCMPEQD, "fcmpeqd", "fcmpeq.d", 32,
2349     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2350   },
2351 /* fcmpeq.s $frg, $frh, $rd */
2352   {
2353     SH_INSN_FCMPEQS, "fcmpeqs", "fcmpeq.s", 32,
2354     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2355   },
2356 /* fcmpge.d $drg, $drh, $rd */
2357   {
2358     SH_INSN_FCMPGED, "fcmpged", "fcmpge.d", 32,
2359     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2360   },
2361 /* fcmpge.s $frg, $frh, $rd */
2362   {
2363     SH_INSN_FCMPGES, "fcmpges", "fcmpge.s", 32,
2364     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2365   },
2366 /* fcmpgt.d $drg, $drh, $rd */
2367   {
2368     SH_INSN_FCMPGTD, "fcmpgtd", "fcmpgt.d", 32,
2369     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2370   },
2371 /* fcmpgt.s $frg, $frh, $rd */
2372   {
2373     SH_INSN_FCMPGTS, "fcmpgts", "fcmpgt.s", 32,
2374     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2375   },
2376 /* fcmpun.d $drg, $drh, $rd */
2377   {
2378     SH_INSN_FCMPUND, "fcmpund", "fcmpun.d", 32,
2379     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2380   },
2381 /* fcmpun.s $frg, $frh, $rd */
2382   {
2383     SH_INSN_FCMPUNS, "fcmpuns", "fcmpun.s", 32,
2384     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2385   },
2386 /* fcnv.ds $drgh, $frf */
2387   {
2388     SH_INSN_FCNVDS, "fcnvds", "fcnv.ds", 32,
2389     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2390   },
2391 /* fcnv.sd $frgh, $drf */
2392   {
2393     SH_INSN_FCNVSD, "fcnvsd", "fcnv.sd", 32,
2394     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2395   },
2396 /* fdiv.d $drg, $drh, $drf */
2397   {
2398     SH_INSN_FDIVD, "fdivd", "fdiv.d", 32,
2399     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2400   },
2401 /* fdiv.s $frg, $frh, $frf */
2402   {
2403     SH_INSN_FDIVS, "fdivs", "fdiv.s", 32,
2404     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2405   },
2406 /* fgetscr $frf */
2407   {
2408     SH_INSN_FGETSCR, "fgetscr", "fgetscr", 32,
2409     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2410   },
2411 /* fipr.s $fvg, $fvh, $frf */
2412   {
2413     SH_INSN_FIPRS, "fiprs", "fipr.s", 32,
2414     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2415   },
2416 /* fld.d $rm, $disp10x8, $drf */
2417   {
2418     SH_INSN_FLDD, "fldd", "fld.d", 32,
2419     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2420   },
2421 /* fld.p $rm, $disp10x8, $fpf */
2422   {
2423     SH_INSN_FLDP, "fldp", "fld.p", 32,
2424     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2425   },
2426 /* fld.s $rm, $disp10x4, $frf */
2427   {
2428     SH_INSN_FLDS, "flds", "fld.s", 32,
2429     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2430   },
2431 /* fldx.d $rm, $rn, $drf */
2432   {
2433     SH_INSN_FLDXD, "fldxd", "fldx.d", 32,
2434     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2435   },
2436 /* fldx.p $rm, $rn, $fpf */
2437   {
2438     SH_INSN_FLDXP, "fldxp", "fldx.p", 32,
2439     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2440   },
2441 /* fldx.s $rm, $rn, $frf */
2442   {
2443     SH_INSN_FLDXS, "fldxs", "fldx.s", 32,
2444     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2445   },
2446 /* float.ld $frgh, $drf */
2447   {
2448     SH_INSN_FLOATLD, "floatld", "float.ld", 32,
2449     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2450   },
2451 /* float.ls $frgh, $frf */
2452   {
2453     SH_INSN_FLOATLS, "floatls", "float.ls", 32,
2454     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2455   },
2456 /* float.qd $drgh, $drf */
2457   {
2458     SH_INSN_FLOATQD, "floatqd", "float.qd", 32,
2459     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2460   },
2461 /* float.qs $drgh, $frf */
2462   {
2463     SH_INSN_FLOATQS, "floatqs", "float.qs", 32,
2464     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2465   },
2466 /* fmac.s $frg, $frh, $frf */
2467   {
2468     SH_INSN_FMACS, "fmacs", "fmac.s", 32,
2469     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2470   },
2471 /* fmov.d $drgh, $drf */
2472   {
2473     SH_INSN_FMOVD, "fmovd", "fmov.d", 32,
2474     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2475   },
2476 /* fmov.dq $drgh, $rd */
2477   {
2478     SH_INSN_FMOVDQ, "fmovdq", "fmov.dq", 32,
2479     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2480   },
2481 /* fmov.ls $rm, $frf */
2482   {
2483     SH_INSN_FMOVLS, "fmovls", "fmov.ls", 32,
2484     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2485   },
2486 /* fmov.qd $rm, $drf */
2487   {
2488     SH_INSN_FMOVQD, "fmovqd", "fmov.qd", 32,
2489     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2490   },
2491 /* fmov.s $frgh, $frf */
2492   {
2493     SH_INSN_FMOVS, "fmovs", "fmov.s", 32,
2494     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2495   },
2496 /* fmov.sl $frgh, $rd */
2497   {
2498     SH_INSN_FMOVSL, "fmovsl", "fmov.sl", 32,
2499     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2500   },
2501 /* fmul.d $drg, $drh, $drf */
2502   {
2503     SH_INSN_FMULD, "fmuld", "fmul.d", 32,
2504     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2505   },
2506 /* fmul.s $frg, $frh, $frf */
2507   {
2508     SH_INSN_FMULS, "fmuls", "fmul.s", 32,
2509     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2510   },
2511 /* fneg.d $drgh, $drf */
2512   {
2513     SH_INSN_FNEGD, "fnegd", "fneg.d", 32,
2514     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2515   },
2516 /* fneg.s $frgh, $frf */
2517   {
2518     SH_INSN_FNEGS, "fnegs", "fneg.s", 32,
2519     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2520   },
2521 /* fputscr $frgh */
2522   {
2523     SH_INSN_FPUTSCR, "fputscr", "fputscr", 32,
2524     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2525   },
2526 /* fsqrt.d $drgh, $drf */
2527   {
2528     SH_INSN_FSQRTD, "fsqrtd", "fsqrt.d", 32,
2529     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2530   },
2531 /* fsqrt.s $frgh, $frf */
2532   {
2533     SH_INSN_FSQRTS, "fsqrts", "fsqrt.s", 32,
2534     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2535   },
2536 /* fst.d $rm, $disp10x8, $drf */
2537   {
2538     SH_INSN_FSTD, "fstd", "fst.d", 32,
2539     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2540   },
2541 /* fst.p $rm, $disp10x8, $fpf */
2542   {
2543     SH_INSN_FSTP, "fstp", "fst.p", 32,
2544     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2545   },
2546 /* fst.s $rm, $disp10x4, $frf */
2547   {
2548     SH_INSN_FSTS, "fsts", "fst.s", 32,
2549     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2550   },
2551 /* fstx.d $rm, $rn, $drf */
2552   {
2553     SH_INSN_FSTXD, "fstxd", "fstx.d", 32,
2554     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2555   },
2556 /* fstx.p $rm, $rn, $fpf */
2557   {
2558     SH_INSN_FSTXP, "fstxp", "fstx.p", 32,
2559     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2560   },
2561 /* fstx.s $rm, $rn, $frf */
2562   {
2563     SH_INSN_FSTXS, "fstxs", "fstx.s", 32,
2564     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2565   },
2566 /* fsub.d $drg, $drh, $drf */
2567   {
2568     SH_INSN_FSUBD, "fsubd", "fsub.d", 32,
2569     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2570   },
2571 /* fsub.s $frg, $frh, $frf */
2572   {
2573     SH_INSN_FSUBS, "fsubs", "fsub.s", 32,
2574     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2575   },
2576 /* ftrc.dl $drgh, $frf */
2577   {
2578     SH_INSN_FTRCDL, "ftrcdl", "ftrc.dl", 32,
2579     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2580   },
2581 /* ftrc.sl $frgh, $frf */
2582   {
2583     SH_INSN_FTRCSL, "ftrcsl", "ftrc.sl", 32,
2584     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2585   },
2586 /* ftrc.dq $drgh, $drf */
2587   {
2588     SH_INSN_FTRCDQ, "ftrcdq", "ftrc.dq", 32,
2589     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2590   },
2591 /* ftrc.sq $frgh, $drf */
2592   {
2593     SH_INSN_FTRCSQ, "ftrcsq", "ftrc.sq", 32,
2594     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2595   },
2596 /* ftrv.s $mtrxg, $fvh, $fvf */
2597   {
2598     SH_INSN_FTRVS, "ftrvs", "ftrv.s", 32,
2599     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2600   },
2601 /* getcfg $rm, $disp6, $rd */
2602   {
2603     SH_INSN_GETCFG, "getcfg", "getcfg", 32,
2604     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2605   },
2606 /* getcon $crk, $rd */
2607   {
2608     SH_INSN_GETCON, "getcon", "getcon", 32,
2609     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2610   },
2611 /* gettr $trb, $rd */
2612   {
2613     SH_INSN_GETTR, "gettr", "gettr", 32,
2614     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2615   },
2616 /* icbi $rm, $disp6x32 */
2617   {
2618     SH_INSN_ICBI, "icbi", "icbi", 32,
2619     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2620   },
2621 /* ld.b $rm, $disp10, $rd */
2622   {
2623     SH_INSN_LDB, "ldb", "ld.b", 32,
2624     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2625   },
2626 /* ld.l $rm, $disp10x4, $rd */
2627   {
2628     SH_INSN_LDL, "ldl", "ld.l", 32,
2629     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2630   },
2631 /* ld.q $rm, $disp10x8, $rd */
2632   {
2633     SH_INSN_LDQ, "ldq", "ld.q", 32,
2634     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2635   },
2636 /* ld.ub $rm, $disp10, $rd */
2637   {
2638     SH_INSN_LDUB, "ldub", "ld.ub", 32,
2639     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2640   },
2641 /* ld.uw $rm, $disp10x2, $rd */
2642   {
2643     SH_INSN_LDUW, "lduw", "ld.uw", 32,
2644     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2645   },
2646 /* ld.w $rm, $disp10x2, $rd */
2647   {
2648     SH_INSN_LDW, "ldw", "ld.w", 32,
2649     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2650   },
2651 /* ldhi.l $rm, $disp6, $rd */
2652   {
2653     SH_INSN_LDHIL, "ldhil", "ldhi.l", 32,
2654     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2655   },
2656 /* ldhi.q $rm, $disp6, $rd */
2657   {
2658     SH_INSN_LDHIQ, "ldhiq", "ldhi.q", 32,
2659     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2660   },
2661 /* ldlo.l $rm, $disp6, $rd */
2662   {
2663     SH_INSN_LDLOL, "ldlol", "ldlo.l", 32,
2664     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2665   },
2666 /* ldlo.q $rm, $disp6, $rd */
2667   {
2668     SH_INSN_LDLOQ, "ldloq", "ldlo.q", 32,
2669     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2670   },
2671 /* ldx.b $rm, $rn, $rd */
2672   {
2673     SH_INSN_LDXB, "ldxb", "ldx.b", 32,
2674     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2675   },
2676 /* ldx.l $rm, $rn, $rd */
2677   {
2678     SH_INSN_LDXL, "ldxl", "ldx.l", 32,
2679     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2680   },
2681 /* ldx.q $rm, $rn, $rd */
2682   {
2683     SH_INSN_LDXQ, "ldxq", "ldx.q", 32,
2684     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2685   },
2686 /* ldx.ub $rm, $rn, $rd */
2687   {
2688     SH_INSN_LDXUB, "ldxub", "ldx.ub", 32,
2689     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2690   },
2691 /* ldx.uw $rm, $rn, $rd */
2692   {
2693     SH_INSN_LDXUW, "ldxuw", "ldx.uw", 32,
2694     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2695   },
2696 /* ldx.w $rm, $rn, $rd */
2697   {
2698     SH_INSN_LDXW, "ldxw", "ldx.w", 32,
2699     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2700   },
2701 /* mabs.l $rm, $rd */
2702   {
2703     SH_INSN_MABSL, "mabsl", "mabs.l", 32,
2704     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2705   },
2706 /* mabs.w $rm, $rd */
2707   {
2708     SH_INSN_MABSW, "mabsw", "mabs.w", 32,
2709     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2710   },
2711 /* madd.l $rm, $rn, $rd */
2712   {
2713     SH_INSN_MADDL, "maddl", "madd.l", 32,
2714     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2715   },
2716 /* madd.w $rm, $rn, $rd */
2717   {
2718     SH_INSN_MADDW, "maddw", "madd.w", 32,
2719     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2720   },
2721 /* madds.l $rm, $rn, $rd */
2722   {
2723     SH_INSN_MADDSL, "maddsl", "madds.l", 32,
2724     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2725   },
2726 /* madds.ub $rm, $rn, $rd */
2727   {
2728     SH_INSN_MADDSUB, "maddsub", "madds.ub", 32,
2729     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2730   },
2731 /* madds.w $rm, $rn, $rd */
2732   {
2733     SH_INSN_MADDSW, "maddsw", "madds.w", 32,
2734     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2735   },
2736 /* mcmpeq.b $rm, $rn, $rd */
2737   {
2738     SH_INSN_MCMPEQB, "mcmpeqb", "mcmpeq.b", 32,
2739     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2740   },
2741 /* mcmpeq.l $rm, $rn, $rd */
2742   {
2743     SH_INSN_MCMPEQL, "mcmpeql", "mcmpeq.l", 32,
2744     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2745   },
2746 /* mcmpeq.w $rm, $rn, $rd */
2747   {
2748     SH_INSN_MCMPEQW, "mcmpeqw", "mcmpeq.w", 32,
2749     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2750   },
2751 /* mcmpgt.l $rm, $rn, $rd */
2752   {
2753     SH_INSN_MCMPGTL, "mcmpgtl", "mcmpgt.l", 32,
2754     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2755   },
2756 /* mcmpgt.ub $rm, $rn, $rd */
2757   {
2758     SH_INSN_MCMPGTUB, "mcmpgtub", "mcmpgt.ub", 32,
2759     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2760   },
2761 /* mcmpgt.w $rm, $rn, $rd */
2762   {
2763     SH_INSN_MCMPGTW, "mcmpgtw", "mcmpgt.w", 32,
2764     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2765   },
2766 /* mcmv $rm, $rn, $rd */
2767   {
2768     SH_INSN_MCMV, "mcmv", "mcmv", 32,
2769     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2770   },
2771 /* mcnvs.lw $rm, $rn, $rd */
2772   {
2773     SH_INSN_MCNVSLW, "mcnvslw", "mcnvs.lw", 32,
2774     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2775   },
2776 /* mcnvs.wb $rm, $rn, $rd */
2777   {
2778     SH_INSN_MCNVSWB, "mcnvswb", "mcnvs.wb", 32,
2779     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2780   },
2781 /* mcnvs.wub $rm, $rn, $rd */
2782   {
2783     SH_INSN_MCNVSWUB, "mcnvswub", "mcnvs.wub", 32,
2784     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2785   },
2786 /* mextr1 $rm, $rn, $rd */
2787   {
2788     SH_INSN_MEXTR1, "mextr1", "mextr1", 32,
2789     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2790   },
2791 /* mextr2 $rm, $rn, $rd */
2792   {
2793     SH_INSN_MEXTR2, "mextr2", "mextr2", 32,
2794     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2795   },
2796 /* mextr3 $rm, $rn, $rd */
2797   {
2798     SH_INSN_MEXTR3, "mextr3", "mextr3", 32,
2799     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2800   },
2801 /* mextr4 $rm, $rn, $rd */
2802   {
2803     SH_INSN_MEXTR4, "mextr4", "mextr4", 32,
2804     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2805   },
2806 /* mextr5 $rm, $rn, $rd */
2807   {
2808     SH_INSN_MEXTR5, "mextr5", "mextr5", 32,
2809     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2810   },
2811 /* mextr6 $rm, $rn, $rd */
2812   {
2813     SH_INSN_MEXTR6, "mextr6", "mextr6", 32,
2814     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2815   },
2816 /* mextr7 $rm, $rn, $rd */
2817   {
2818     SH_INSN_MEXTR7, "mextr7", "mextr7", 32,
2819     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2820   },
2821 /* mmacfx.wl $rm, $rn, $rd */
2822   {
2823     SH_INSN_MMACFXWL, "mmacfxwl", "mmacfx.wl", 32,
2824     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2825   },
2826 /* mmacnfx.wl $rm, $rn, $rd */
2827   {
2828     SH_INSN_MMACNFX_WL, "mmacnfx.wl", "mmacnfx.wl", 32,
2829     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2830   },
2831 /* mmul.l $rm, $rn, $rd */
2832   {
2833     SH_INSN_MMULL, "mmull", "mmul.l", 32,
2834     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2835   },
2836 /* mmul.w $rm, $rn, $rd */
2837   {
2838     SH_INSN_MMULW, "mmulw", "mmul.w", 32,
2839     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2840   },
2841 /* mmulfx.l $rm, $rn, $rd */
2842   {
2843     SH_INSN_MMULFXL, "mmulfxl", "mmulfx.l", 32,
2844     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2845   },
2846 /* mmulfx.w $rm, $rn, $rd */
2847   {
2848     SH_INSN_MMULFXW, "mmulfxw", "mmulfx.w", 32,
2849     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2850   },
2851 /* mmulfxrp.w $rm, $rn, $rd */
2852   {
2853     SH_INSN_MMULFXRPW, "mmulfxrpw", "mmulfxrp.w", 32,
2854     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2855   },
2856 /* mmulhi.wl $rm, $rn, $rd */
2857   {
2858     SH_INSN_MMULHIWL, "mmulhiwl", "mmulhi.wl", 32,
2859     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2860   },
2861 /* mmullo.wl $rm, $rn, $rd */
2862   {
2863     SH_INSN_MMULLOWL, "mmullowl", "mmullo.wl", 32,
2864     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2865   },
2866 /* mmulsum.wq $rm, $rn, $rd */
2867   {
2868     SH_INSN_MMULSUMWQ, "mmulsumwq", "mmulsum.wq", 32,
2869     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2870   },
2871 /* movi $imm16, $rd */
2872   {
2873     SH_INSN_MOVI, "movi", "movi", 32,
2874     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2875   },
2876 /* mperm.w $rm, $rn, $rd */
2877   {
2878     SH_INSN_MPERMW, "mpermw", "mperm.w", 32,
2879     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2880   },
2881 /* msad.ubq $rm, $rn, $rd */
2882   {
2883     SH_INSN_MSADUBQ, "msadubq", "msad.ubq", 32,
2884     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2885   },
2886 /* mshalds.l $rm, $rn, $rd */
2887   {
2888     SH_INSN_MSHALDSL, "mshaldsl", "mshalds.l", 32,
2889     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2890   },
2891 /* mshalds.w $rm, $rn, $rd */
2892   {
2893     SH_INSN_MSHALDSW, "mshaldsw", "mshalds.w", 32,
2894     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2895   },
2896 /* mshard.l $rm, $rn, $rd */
2897   {
2898     SH_INSN_MSHARDL, "mshardl", "mshard.l", 32,
2899     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2900   },
2901 /* mshard.w $rm, $rn, $rd */
2902   {
2903     SH_INSN_MSHARDW, "mshardw", "mshard.w", 32,
2904     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2905   },
2906 /* mshards.q $rm, $rn, $rd */
2907   {
2908     SH_INSN_MSHARDSQ, "mshardsq", "mshards.q", 32,
2909     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2910   },
2911 /* mshfhi.b $rm, $rn, $rd */
2912   {
2913     SH_INSN_MSHFHIB, "mshfhib", "mshfhi.b", 32,
2914     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2915   },
2916 /* mshfhi.l $rm, $rn, $rd */
2917   {
2918     SH_INSN_MSHFHIL, "mshfhil", "mshfhi.l", 32,
2919     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2920   },
2921 /* mshfhi.w $rm, $rn, $rd */
2922   {
2923     SH_INSN_MSHFHIW, "mshfhiw", "mshfhi.w", 32,
2924     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2925   },
2926 /* mshflo.b $rm, $rn, $rd */
2927   {
2928     SH_INSN_MSHFLOB, "mshflob", "mshflo.b", 32,
2929     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2930   },
2931 /* mshflo.l $rm, $rn, $rd */
2932   {
2933     SH_INSN_MSHFLOL, "mshflol", "mshflo.l", 32,
2934     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2935   },
2936 /* mshflo.w $rm, $rn, $rd */
2937   {
2938     SH_INSN_MSHFLOW, "mshflow", "mshflo.w", 32,
2939     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2940   },
2941 /* mshlld.l $rm, $rn, $rd */
2942   {
2943     SH_INSN_MSHLLDL, "mshlldl", "mshlld.l", 32,
2944     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2945   },
2946 /* mshlld.w $rm, $rn, $rd */
2947   {
2948     SH_INSN_MSHLLDW, "mshlldw", "mshlld.w", 32,
2949     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2950   },
2951 /* mshlrd.l $rm, $rn, $rd */
2952   {
2953     SH_INSN_MSHLRDL, "mshlrdl", "mshlrd.l", 32,
2954     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2955   },
2956 /* mshlrd.w $rm, $rn, $rd */
2957   {
2958     SH_INSN_MSHLRDW, "mshlrdw", "mshlrd.w", 32,
2959     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2960   },
2961 /* msub.l $rm, $rn, $rd */
2962   {
2963     SH_INSN_MSUBL, "msubl", "msub.l", 32,
2964     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2965   },
2966 /* msub.w $rm, $rn, $rd */
2967   {
2968     SH_INSN_MSUBW, "msubw", "msub.w", 32,
2969     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2970   },
2971 /* msubs.l $rm, $rn, $rd */
2972   {
2973     SH_INSN_MSUBSL, "msubsl", "msubs.l", 32,
2974     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2975   },
2976 /* msubs.ub $rm, $rn, $rd */
2977   {
2978     SH_INSN_MSUBSUB, "msubsub", "msubs.ub", 32,
2979     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2980   },
2981 /* msubs.w $rm, $rn, $rd */
2982   {
2983     SH_INSN_MSUBSW, "msubsw", "msubs.w", 32,
2984     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2985   },
2986 /* muls.l $rm, $rn, $rd */
2987   {
2988     SH_INSN_MULSL, "mulsl", "muls.l", 32,
2989     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2990   },
2991 /* mulu.l $rm, $rn, $rd */
2992   {
2993     SH_INSN_MULUL, "mulul", "mulu.l", 32,
2994     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
2995   },
2996 /* nop */
2997   {
2998     SH_INSN_NOP, "nop", "nop", 32,
2999     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3000   },
3001 /* nsb $rm, $rd */
3002   {
3003     SH_INSN_NSB, "nsb", "nsb", 32,
3004     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3005   },
3006 /* ocbi $rm, $disp6x32 */
3007   {
3008     SH_INSN_OCBI, "ocbi", "ocbi", 32,
3009     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3010   },
3011 /* ocbp $rm, $disp6x32 */
3012   {
3013     SH_INSN_OCBP, "ocbp", "ocbp", 32,
3014     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3015   },
3016 /* ocbwb $rm, $disp6x32 */
3017   {
3018     SH_INSN_OCBWB, "ocbwb", "ocbwb", 32,
3019     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3020   },
3021 /* or $rm, $rn, $rd */
3022   {
3023     SH_INSN_OR, "or", "or", 32,
3024     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3025   },
3026 /* ori $rm, $imm10, $rd */
3027   {
3028     SH_INSN_ORI, "ori", "ori", 32,
3029     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3030   },
3031 /* prefi $rm, $disp6x32 */
3032   {
3033     SH_INSN_PREFI, "prefi", "prefi", 32,
3034     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3035   },
3036 /* pta$likely $disp16, $tra */
3037   {
3038     SH_INSN_PTA, "pta", "pta", 32,
3039     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3040   },
3041 /* ptabs$likely $rn, $tra */
3042   {
3043     SH_INSN_PTABS, "ptabs", "ptabs", 32,
3044     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3045   },
3046 /* ptb$likely $disp16, $tra */
3047   {
3048     SH_INSN_PTB, "ptb", "ptb", 32,
3049     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3050   },
3051 /* ptrel$likely $rn, $tra */
3052   {
3053     SH_INSN_PTREL, "ptrel", "ptrel", 32,
3054     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3055   },
3056 /* putcfg $rm, $disp6, $rd */
3057   {
3058     SH_INSN_PUTCFG, "putcfg", "putcfg", 32,
3059     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3060   },
3061 /* putcon $rm, $crj */
3062   {
3063     SH_INSN_PUTCON, "putcon", "putcon", 32,
3064     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3065   },
3066 /* rte */
3067   {
3068     SH_INSN_RTE, "rte", "rte", 32,
3069     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3070   },
3071 /* shard $rm, $rn, $rd */
3072   {
3073     SH_INSN_SHARD, "shard", "shard", 32,
3074     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3075   },
3076 /* shard.l $rm, $rn, $rd */
3077   {
3078     SH_INSN_SHARDL, "shardl", "shard.l", 32,
3079     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3080   },
3081 /* shari $rm, $uimm6, $rd */
3082   {
3083     SH_INSN_SHARI, "shari", "shari", 32,
3084     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3085   },
3086 /* shari.l $rm, $uimm6, $rd */
3087   {
3088     SH_INSN_SHARIL, "sharil", "shari.l", 32,
3089     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3090   },
3091 /* shlld $rm, $rn, $rd */
3092   {
3093     SH_INSN_SHLLD, "shlld", "shlld", 32,
3094     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3095   },
3096 /* shlld.l $rm, $rn, $rd */
3097   {
3098     SH_INSN_SHLLDL, "shlldl", "shlld.l", 32,
3099     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3100   },
3101 /* shlli $rm, $uimm6, $rd */
3102   {
3103     SH_INSN_SHLLI, "shlli", "shlli", 32,
3104     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3105   },
3106 /* shlli.l $rm, $uimm6, $rd */
3107   {
3108     SH_INSN_SHLLIL, "shllil", "shlli.l", 32,
3109     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3110   },
3111 /* shlrd $rm, $rn, $rd */
3112   {
3113     SH_INSN_SHLRD, "shlrd", "shlrd", 32,
3114     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3115   },
3116 /* shlrd.l $rm, $rn, $rd */
3117   {
3118     SH_INSN_SHLRDL, "shlrdl", "shlrd.l", 32,
3119     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3120   },
3121 /* shlri $rm, $uimm6, $rd */
3122   {
3123     SH_INSN_SHLRI, "shlri", "shlri", 32,
3124     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3125   },
3126 /* shlri.l $rm, $uimm6, $rd */
3127   {
3128     SH_INSN_SHLRIL, "shlril", "shlri.l", 32,
3129     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3130   },
3131 /* shori $uimm16, $rd */
3132   {
3133     SH_INSN_SHORI, "shori", "shori", 32,
3134     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3135   },
3136 /* sleep */
3137   {
3138     SH_INSN_SLEEP, "sleep", "sleep", 32,
3139     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3140   },
3141 /* st.b $rm, $disp10, $rd */
3142   {
3143     SH_INSN_STB, "stb", "st.b", 32,
3144     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3145   },
3146 /* st.l $rm, $disp10x4, $rd */
3147   {
3148     SH_INSN_STL, "stl", "st.l", 32,
3149     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3150   },
3151 /* st.q $rm, $disp10x8, $rd */
3152   {
3153     SH_INSN_STQ, "stq", "st.q", 32,
3154     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3155   },
3156 /* st.w $rm, $disp10x2, $rd */
3157   {
3158     SH_INSN_STW, "stw", "st.w", 32,
3159     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3160   },
3161 /* sthi.l $rm, $disp6, $rd */
3162   {
3163     SH_INSN_STHIL, "sthil", "sthi.l", 32,
3164     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3165   },
3166 /* sthi.q $rm, $disp6, $rd */
3167   {
3168     SH_INSN_STHIQ, "sthiq", "sthi.q", 32,
3169     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3170   },
3171 /* stlo.l $rm, $disp6, $rd */
3172   {
3173     SH_INSN_STLOL, "stlol", "stlo.l", 32,
3174     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3175   },
3176 /* stlo.q $rm, $disp6, $rd */
3177   {
3178     SH_INSN_STLOQ, "stloq", "stlo.q", 32,
3179     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3180   },
3181 /* stx.b $rm, $rn, $rd */
3182   {
3183     SH_INSN_STXB, "stxb", "stx.b", 32,
3184     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3185   },
3186 /* stx.l $rm, $rn, $rd */
3187   {
3188     SH_INSN_STXL, "stxl", "stx.l", 32,
3189     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3190   },
3191 /* stx.q $rm, $rn, $rd */
3192   {
3193     SH_INSN_STXQ, "stxq", "stx.q", 32,
3194     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3195   },
3196 /* stx.w $rm, $rn, $rd */
3197   {
3198     SH_INSN_STXW, "stxw", "stx.w", 32,
3199     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3200   },
3201 /* sub $rm, $rn, $rd */
3202   {
3203     SH_INSN_SUB, "sub", "sub", 32,
3204     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3205   },
3206 /* sub.l $rm, $rn, $rd */
3207   {
3208     SH_INSN_SUBL, "subl", "sub.l", 32,
3209     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3210   },
3211 /* swap.q $rm, $rn, $rd */
3212   {
3213     SH_INSN_SWAPQ, "swapq", "swap.q", 32,
3214     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3215   },
3216 /* synci */
3217   {
3218     SH_INSN_SYNCI, "synci", "synci", 32,
3219     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3220   },
3221 /* synco */
3222   {
3223     SH_INSN_SYNCO, "synco", "synco", 32,
3224     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3225   },
3226 /* trapa $rm */
3227   {
3228     SH_INSN_TRAPA, "trapa", "trapa", 32,
3229     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3230   },
3231 /* xor $rm, $rn, $rd */
3232   {
3233     SH_INSN_XOR, "xor", "xor", 32,
3234     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3235   },
3236 /* xori $rm, $imm6, $rd */
3237   {
3238     SH_INSN_XORI, "xori", "xori", 32,
3239     { 0, { { { (1<<MACH_BASE), 0 } }, { { 1, "\x40" } }, { { SH4_GROUP_NONE, 0 } }, { { SH4A_GROUP_NONE, 0 } } } }
3240   },
3241 };
3242
3243 #undef OP
3244 #undef A
3245
3246 /* Initialize anything needed to be done once, before any cpu_open call.  */
3247
3248 static void
3249 init_tables (void)
3250 {
3251 }
3252
3253 static const CGEN_MACH * lookup_mach_via_bfd_name (const CGEN_MACH *, const char *);
3254 static void build_hw_table      (CGEN_CPU_TABLE *);
3255 static void build_ifield_table  (CGEN_CPU_TABLE *);
3256 static void build_operand_table (CGEN_CPU_TABLE *);
3257 static void build_insn_table    (CGEN_CPU_TABLE *);
3258 static void sh_cgen_rebuild_tables (CGEN_CPU_TABLE *);
3259
3260 /* Subroutine of sh_cgen_cpu_open to look up a mach via its bfd name.  */
3261
3262 static const CGEN_MACH *
3263 lookup_mach_via_bfd_name (const CGEN_MACH *table, const char *name)
3264 {
3265   while (table->name)
3266     {
3267       if (strcmp (name, table->bfd_name) == 0)
3268         return table;
3269       ++table;
3270     }
3271   abort ();
3272 }
3273
3274 /* Subroutine of sh_cgen_cpu_open to build the hardware table.  */
3275
3276 static void
3277 build_hw_table (CGEN_CPU_TABLE *cd)
3278 {
3279   int i;
3280   int machs = cd->machs;
3281   const CGEN_HW_ENTRY *init = & sh_cgen_hw_table[0];
3282   /* MAX_HW is only an upper bound on the number of selected entries.
3283      However each entry is indexed by it's enum so there can be holes in
3284      the table.  */
3285   const CGEN_HW_ENTRY **selected =
3286     (const CGEN_HW_ENTRY **) xmalloc (MAX_HW * sizeof (CGEN_HW_ENTRY *));
3287
3288   cd->hw_table.init_entries = init;
3289   cd->hw_table.entry_size = sizeof (CGEN_HW_ENTRY);
3290   memset (selected, 0, MAX_HW * sizeof (CGEN_HW_ENTRY *));
3291   /* ??? For now we just use machs to determine which ones we want.  */
3292   for (i = 0; init[i].name != NULL; ++i)
3293     if (CGEN_HW_ATTR_VALUE (&init[i], CGEN_HW_MACH)
3294         & machs)
3295       selected[init[i].type] = &init[i];
3296   cd->hw_table.entries = selected;
3297   cd->hw_table.num_entries = MAX_HW;
3298 }
3299
3300 /* Subroutine of sh_cgen_cpu_open to build the hardware table.  */
3301
3302 static void
3303 build_ifield_table (CGEN_CPU_TABLE *cd)
3304 {
3305   cd->ifld_table = & sh_cgen_ifld_table[0];
3306 }
3307
3308 /* Subroutine of sh_cgen_cpu_open to build the hardware table.  */
3309
3310 static void
3311 build_operand_table (CGEN_CPU_TABLE *cd)
3312 {
3313   int i;
3314   int machs = cd->machs;
3315   const CGEN_OPERAND *init = & sh_cgen_operand_table[0];
3316   /* MAX_OPERANDS is only an upper bound on the number of selected entries.
3317      However each entry is indexed by it's enum so there can be holes in
3318      the table.  */
3319   const CGEN_OPERAND **selected = xmalloc (MAX_OPERANDS * sizeof (* selected));
3320
3321   cd->operand_table.init_entries = init;
3322   cd->operand_table.entry_size = sizeof (CGEN_OPERAND);
3323   memset (selected, 0, MAX_OPERANDS * sizeof (CGEN_OPERAND *));
3324   /* ??? For now we just use mach to determine which ones we want.  */
3325   for (i = 0; init[i].name != NULL; ++i)
3326     if (CGEN_OPERAND_ATTR_VALUE (&init[i], CGEN_OPERAND_MACH)
3327         & machs)
3328       selected[init[i].type] = &init[i];
3329   cd->operand_table.entries = selected;
3330   cd->operand_table.num_entries = MAX_OPERANDS;
3331 }
3332
3333 /* Subroutine of sh_cgen_cpu_open to build the hardware table.
3334    ??? This could leave out insns not supported by the specified mach/isa,
3335    but that would cause errors like "foo only supported by bar" to become
3336    "unknown insn", so for now we include all insns and require the app to
3337    do the checking later.
3338    ??? On the other hand, parsing of such insns may require their hardware or
3339    operand elements to be in the table [which they mightn't be].  */
3340
3341 static void
3342 build_insn_table (CGEN_CPU_TABLE *cd)
3343 {
3344   int i;
3345   const CGEN_IBASE *ib = & sh_cgen_insn_table[0];
3346   CGEN_INSN *insns = xmalloc (MAX_INSNS * sizeof (CGEN_INSN));
3347
3348   memset (insns, 0, MAX_INSNS * sizeof (CGEN_INSN));
3349   for (i = 0; i < MAX_INSNS; ++i)
3350     insns[i].base = &ib[i];
3351   cd->insn_table.init_entries = insns;
3352   cd->insn_table.entry_size = sizeof (CGEN_IBASE);
3353   cd->insn_table.num_init_entries = MAX_INSNS;
3354 }
3355
3356 /* Subroutine of sh_cgen_cpu_open to rebuild the tables.  */
3357
3358 static void
3359 sh_cgen_rebuild_tables (CGEN_CPU_TABLE *cd)
3360 {
3361   int i;
3362   CGEN_BITSET *isas = cd->isas;
3363   unsigned int machs = cd->machs;
3364
3365   cd->int_insn_p = CGEN_INT_INSN_P;
3366
3367   /* Data derived from the isa spec.  */
3368 #define UNSET (CGEN_SIZE_UNKNOWN + 1)
3369   cd->default_insn_bitsize = UNSET;
3370   cd->base_insn_bitsize = UNSET;
3371   cd->min_insn_bitsize = 65535; /* Some ridiculously big number.  */
3372   cd->max_insn_bitsize = 0;
3373   for (i = 0; i < MAX_ISAS; ++i)
3374     if (cgen_bitset_contains (isas, i))
3375       {
3376         const CGEN_ISA *isa = & sh_cgen_isa_table[i];
3377
3378         /* Default insn sizes of all selected isas must be
3379            equal or we set the result to 0, meaning "unknown".  */
3380         if (cd->default_insn_bitsize == UNSET)
3381           cd->default_insn_bitsize = isa->default_insn_bitsize;
3382         else if (isa->default_insn_bitsize == cd->default_insn_bitsize)
3383           ; /* This is ok.  */
3384         else
3385           cd->default_insn_bitsize = CGEN_SIZE_UNKNOWN;
3386
3387         /* Base insn sizes of all selected isas must be equal
3388            or we set the result to 0, meaning "unknown".  */
3389         if (cd->base_insn_bitsize == UNSET)
3390           cd->base_insn_bitsize = isa->base_insn_bitsize;
3391         else if (isa->base_insn_bitsize == cd->base_insn_bitsize)
3392           ; /* This is ok.  */
3393         else
3394           cd->base_insn_bitsize = CGEN_SIZE_UNKNOWN;
3395
3396         /* Set min,max insn sizes.  */
3397         if (isa->min_insn_bitsize < cd->min_insn_bitsize)
3398           cd->min_insn_bitsize = isa->min_insn_bitsize;
3399         if (isa->max_insn_bitsize > cd->max_insn_bitsize)
3400           cd->max_insn_bitsize = isa->max_insn_bitsize;
3401       }
3402
3403   /* Data derived from the mach spec.  */
3404   for (i = 0; i < MAX_MACHS; ++i)
3405     if (((1 << i) & machs) != 0)
3406       {
3407         const CGEN_MACH *mach = & sh_cgen_mach_table[i];
3408
3409         if (mach->insn_chunk_bitsize != 0)
3410         {
3411           if (cd->insn_chunk_bitsize != 0 && cd->insn_chunk_bitsize != mach->insn_chunk_bitsize)
3412             {
3413               fprintf (stderr, "sh_cgen_rebuild_tables: conflicting insn-chunk-bitsize values: `%d' vs. `%d'\n",
3414                        cd->insn_chunk_bitsize, mach->insn_chunk_bitsize);
3415               abort ();
3416             }
3417
3418           cd->insn_chunk_bitsize = mach->insn_chunk_bitsize;
3419         }
3420       }
3421
3422   /* Determine which hw elements are used by MACH.  */
3423   build_hw_table (cd);
3424
3425   /* Build the ifield table.  */
3426   build_ifield_table (cd);
3427
3428   /* Determine which operands are used by MACH/ISA.  */
3429   build_operand_table (cd);
3430
3431   /* Build the instruction table.  */
3432   build_insn_table (cd);
3433 }
3434
3435 /* Initialize a cpu table and return a descriptor.
3436    It's much like opening a file, and must be the first function called.
3437    The arguments are a set of (type/value) pairs, terminated with
3438    CGEN_CPU_OPEN_END.
3439
3440    Currently supported values:
3441    CGEN_CPU_OPEN_ISAS:    bitmap of values in enum isa_attr
3442    CGEN_CPU_OPEN_MACHS:   bitmap of values in enum mach_attr
3443    CGEN_CPU_OPEN_BFDMACH: specify 1 mach using bfd name
3444    CGEN_CPU_OPEN_ENDIAN:  specify endian choice
3445    CGEN_CPU_OPEN_END:     terminates arguments
3446
3447    ??? Simultaneous multiple isas might not make sense, but it's not (yet)
3448    precluded.
3449
3450    ??? We only support ISO C stdargs here, not K&R.
3451    Laziness, plus experiment to see if anything requires K&R - eventually
3452    K&R will no longer be supported - e.g. GDB is currently trying this.  */
3453
3454 CGEN_CPU_DESC
3455 sh_cgen_cpu_open (enum cgen_cpu_open_arg arg_type, ...)
3456 {
3457   CGEN_CPU_TABLE *cd = (CGEN_CPU_TABLE *) xmalloc (sizeof (CGEN_CPU_TABLE));
3458   static int init_p;
3459   CGEN_BITSET *isas = 0;  /* 0 = "unspecified" */
3460   unsigned int machs = 0; /* 0 = "unspecified" */
3461   enum cgen_endian endian = CGEN_ENDIAN_UNKNOWN;
3462   va_list ap;
3463
3464   if (! init_p)
3465     {
3466       init_tables ();
3467       init_p = 1;
3468     }
3469
3470   memset (cd, 0, sizeof (*cd));
3471
3472   va_start (ap, arg_type);
3473   while (arg_type != CGEN_CPU_OPEN_END)
3474     {
3475       switch (arg_type)
3476         {
3477         case CGEN_CPU_OPEN_ISAS :
3478           isas = va_arg (ap, CGEN_BITSET *);
3479           break;
3480         case CGEN_CPU_OPEN_MACHS :
3481           machs = va_arg (ap, unsigned int);
3482           break;
3483         case CGEN_CPU_OPEN_BFDMACH :
3484           {
3485             const char *name = va_arg (ap, const char *);
3486             const CGEN_MACH *mach =
3487               lookup_mach_via_bfd_name (sh_cgen_mach_table, name);
3488
3489             machs |= 1 << mach->num;
3490             break;
3491           }
3492         case CGEN_CPU_OPEN_ENDIAN :
3493           endian = va_arg (ap, enum cgen_endian);
3494           break;
3495         default :
3496           fprintf (stderr, "sh_cgen_cpu_open: unsupported argument `%d'\n",
3497                    arg_type);
3498           abort (); /* ??? return NULL? */
3499         }
3500       arg_type = va_arg (ap, enum cgen_cpu_open_arg);
3501     }
3502   va_end (ap);
3503
3504   /* Mach unspecified means "all".  */
3505   if (machs == 0)
3506     machs = (1 << MAX_MACHS) - 1;
3507   /* Base mach is always selected.  */
3508   machs |= 1;
3509   if (endian == CGEN_ENDIAN_UNKNOWN)
3510     {
3511       /* ??? If target has only one, could have a default.  */
3512       fprintf (stderr, "sh_cgen_cpu_open: no endianness specified\n");
3513       abort ();
3514     }
3515
3516   cd->isas = cgen_bitset_copy (isas);
3517   cd->machs = machs;
3518   cd->endian = endian;
3519   /* FIXME: for the sparc case we can determine insn-endianness statically.
3520      The worry here is where both data and insn endian can be independently
3521      chosen, in which case this function will need another argument.
3522      Actually, will want to allow for more arguments in the future anyway.  */
3523   cd->insn_endian = endian;
3524
3525   /* Table (re)builder.  */
3526   cd->rebuild_tables = sh_cgen_rebuild_tables;
3527   sh_cgen_rebuild_tables (cd);
3528
3529   /* Default to not allowing signed overflow.  */
3530   cd->signed_overflow_ok_p = 0;
3531   
3532   return (CGEN_CPU_DESC) cd;
3533 }
3534
3535 /* Cover fn to sh_cgen_cpu_open to handle the simple case of 1 isa, 1 mach.
3536    MACH_NAME is the bfd name of the mach.  */
3537
3538 CGEN_CPU_DESC
3539 sh_cgen_cpu_open_1 (const char *mach_name, enum cgen_endian endian)
3540 {
3541   return sh_cgen_cpu_open (CGEN_CPU_OPEN_BFDMACH, mach_name,
3542                                CGEN_CPU_OPEN_ENDIAN, endian,
3543                                CGEN_CPU_OPEN_END);
3544 }
3545
3546 /* Close a cpu table.
3547    ??? This can live in a machine independent file, but there's currently
3548    no place to put this file (there's no libcgen).  libopcodes is the wrong
3549    place as some simulator ports use this but they don't use libopcodes.  */
3550
3551 void
3552 sh_cgen_cpu_close (CGEN_CPU_DESC cd)
3553 {
3554   unsigned int i;
3555   const CGEN_INSN *insns;
3556
3557   if (cd->macro_insn_table.init_entries)
3558     {
3559       insns = cd->macro_insn_table.init_entries;
3560       for (i = 0; i < cd->macro_insn_table.num_init_entries; ++i, ++insns)
3561         if (CGEN_INSN_RX ((insns)))
3562           regfree (CGEN_INSN_RX (insns));
3563     }
3564
3565   if (cd->insn_table.init_entries)
3566     {
3567       insns = cd->insn_table.init_entries;
3568       for (i = 0; i < cd->insn_table.num_init_entries; ++i, ++insns)
3569         if (CGEN_INSN_RX (insns))
3570           regfree (CGEN_INSN_RX (insns));
3571     }  
3572
3573   if (cd->macro_insn_table.init_entries)
3574     free ((CGEN_INSN *) cd->macro_insn_table.init_entries);
3575
3576   if (cd->insn_table.init_entries)
3577     free ((CGEN_INSN *) cd->insn_table.init_entries);
3578
3579   if (cd->hw_table.entries)
3580     free ((CGEN_HW_ENTRY *) cd->hw_table.entries);
3581
3582   if (cd->operand_table.entries)
3583     free ((CGEN_HW_ENTRY *) cd->operand_table.entries);
3584
3585   free (cd);
3586 }
3587