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