*** empty log message ***
[deliverable/binutils-gdb.git] / sim / sh64 / decode-compact.c
CommitLineData
cbb38b47
BE
1/* Simulator instruction decoder for sh64_compact.
2
3THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
6
7This file is part of the GNU Simulators.
8
9This program is free software; you can redistribute it and/or modify
10it under the terms of the GNU General Public License as published by
11the Free Software Foundation; either version 2, or (at your option)
12any later version.
13
14This program is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17GNU General Public License for more details.
18
19You should have received a copy of the GNU General Public License along
20with this program; if not, write to the Free Software Foundation, Inc.,
2159 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
23*/
24
25#define WANT_CPU sh64
26#define WANT_CPU_SH64
27
28#include "sim-main.h"
29#include "sim-assert.h"
30
31/* The instruction descriptor array.
32 This is computed at runtime. Space for it is not malloc'd to save a
33 teensy bit of cpu in the decoder. Moving it to malloc space is trivial
34 but won't be done until necessary (we don't currently support the runtime
35 addition of instructions nor an SMP machine with different cpus). */
36static IDESC sh64_compact_insn_data[SH64_COMPACT_INSN_MAX];
37
38/* Commas between elements are contained in the macros.
39 Some of these are conditionally compiled out. */
40
41static const struct insn_sem sh64_compact_insn_sem[] =
42{
43 { VIRTUAL_INSN_X_INVALID, SH64_COMPACT_INSN_X_INVALID, SH64_COMPACT_SFMT_EMPTY },
44 { VIRTUAL_INSN_X_AFTER, SH64_COMPACT_INSN_X_AFTER, SH64_COMPACT_SFMT_EMPTY },
45 { VIRTUAL_INSN_X_BEFORE, SH64_COMPACT_INSN_X_BEFORE, SH64_COMPACT_SFMT_EMPTY },
46 { VIRTUAL_INSN_X_CTI_CHAIN, SH64_COMPACT_INSN_X_CTI_CHAIN, SH64_COMPACT_SFMT_EMPTY },
47 { VIRTUAL_INSN_X_CHAIN, SH64_COMPACT_INSN_X_CHAIN, SH64_COMPACT_SFMT_EMPTY },
48 { VIRTUAL_INSN_X_BEGIN, SH64_COMPACT_INSN_X_BEGIN, SH64_COMPACT_SFMT_EMPTY },
49 { SH_INSN_ADD_COMPACT, SH64_COMPACT_INSN_ADD_COMPACT, SH64_COMPACT_SFMT_ADD_COMPACT },
50 { SH_INSN_ADDI_COMPACT, SH64_COMPACT_INSN_ADDI_COMPACT, SH64_COMPACT_SFMT_ADDI_COMPACT },
51 { SH_INSN_ADDC_COMPACT, SH64_COMPACT_INSN_ADDC_COMPACT, SH64_COMPACT_SFMT_ADDC_COMPACT },
52 { SH_INSN_ADDV_COMPACT, SH64_COMPACT_INSN_ADDV_COMPACT, SH64_COMPACT_SFMT_ADDV_COMPACT },
53 { SH_INSN_AND_COMPACT, SH64_COMPACT_INSN_AND_COMPACT, SH64_COMPACT_SFMT_AND_COMPACT },
54 { SH_INSN_ANDI_COMPACT, SH64_COMPACT_INSN_ANDI_COMPACT, SH64_COMPACT_SFMT_ANDI_COMPACT },
55 { SH_INSN_ANDB_COMPACT, SH64_COMPACT_INSN_ANDB_COMPACT, SH64_COMPACT_SFMT_ANDB_COMPACT },
56 { SH_INSN_BF_COMPACT, SH64_COMPACT_INSN_BF_COMPACT, SH64_COMPACT_SFMT_BF_COMPACT },
57 { SH_INSN_BFS_COMPACT, SH64_COMPACT_INSN_BFS_COMPACT, SH64_COMPACT_SFMT_BF_COMPACT },
58 { SH_INSN_BRA_COMPACT, SH64_COMPACT_INSN_BRA_COMPACT, SH64_COMPACT_SFMT_BRA_COMPACT },
59 { SH_INSN_BRAF_COMPACT, SH64_COMPACT_INSN_BRAF_COMPACT, SH64_COMPACT_SFMT_BRAF_COMPACT },
60 { SH_INSN_BRK_COMPACT, SH64_COMPACT_INSN_BRK_COMPACT, SH64_COMPACT_SFMT_BRK_COMPACT },
61 { SH_INSN_BSR_COMPACT, SH64_COMPACT_INSN_BSR_COMPACT, SH64_COMPACT_SFMT_BSR_COMPACT },
62 { SH_INSN_BSRF_COMPACT, SH64_COMPACT_INSN_BSRF_COMPACT, SH64_COMPACT_SFMT_BSRF_COMPACT },
63 { SH_INSN_BT_COMPACT, SH64_COMPACT_INSN_BT_COMPACT, SH64_COMPACT_SFMT_BF_COMPACT },
64 { SH_INSN_BTS_COMPACT, SH64_COMPACT_INSN_BTS_COMPACT, SH64_COMPACT_SFMT_BF_COMPACT },
65 { SH_INSN_CLRMAC_COMPACT, SH64_COMPACT_INSN_CLRMAC_COMPACT, SH64_COMPACT_SFMT_CLRMAC_COMPACT },
66 { SH_INSN_CLRS_COMPACT, SH64_COMPACT_INSN_CLRS_COMPACT, SH64_COMPACT_SFMT_CLRS_COMPACT },
67 { SH_INSN_CLRT_COMPACT, SH64_COMPACT_INSN_CLRT_COMPACT, SH64_COMPACT_SFMT_CLRT_COMPACT },
68 { SH_INSN_CMPEQ_COMPACT, SH64_COMPACT_INSN_CMPEQ_COMPACT, SH64_COMPACT_SFMT_CMPEQ_COMPACT },
69 { SH_INSN_CMPEQI_COMPACT, SH64_COMPACT_INSN_CMPEQI_COMPACT, SH64_COMPACT_SFMT_CMPEQI_COMPACT },
70 { SH_INSN_CMPGE_COMPACT, SH64_COMPACT_INSN_CMPGE_COMPACT, SH64_COMPACT_SFMT_CMPEQ_COMPACT },
71 { SH_INSN_CMPGT_COMPACT, SH64_COMPACT_INSN_CMPGT_COMPACT, SH64_COMPACT_SFMT_CMPEQ_COMPACT },
72 { SH_INSN_CMPHI_COMPACT, SH64_COMPACT_INSN_CMPHI_COMPACT, SH64_COMPACT_SFMT_CMPEQ_COMPACT },
73 { SH_INSN_CMPHS_COMPACT, SH64_COMPACT_INSN_CMPHS_COMPACT, SH64_COMPACT_SFMT_CMPEQ_COMPACT },
74 { SH_INSN_CMPPL_COMPACT, SH64_COMPACT_INSN_CMPPL_COMPACT, SH64_COMPACT_SFMT_CMPPL_COMPACT },
75 { SH_INSN_CMPPZ_COMPACT, SH64_COMPACT_INSN_CMPPZ_COMPACT, SH64_COMPACT_SFMT_CMPPL_COMPACT },
76 { SH_INSN_CMPSTR_COMPACT, SH64_COMPACT_INSN_CMPSTR_COMPACT, SH64_COMPACT_SFMT_CMPEQ_COMPACT },
77 { SH_INSN_DIV0S_COMPACT, SH64_COMPACT_INSN_DIV0S_COMPACT, SH64_COMPACT_SFMT_DIV0S_COMPACT },
78 { SH_INSN_DIV0U_COMPACT, SH64_COMPACT_INSN_DIV0U_COMPACT, SH64_COMPACT_SFMT_DIV0U_COMPACT },
79 { SH_INSN_DIV1_COMPACT, SH64_COMPACT_INSN_DIV1_COMPACT, SH64_COMPACT_SFMT_DIV1_COMPACT },
80 { SH_INSN_DMULSL_COMPACT, SH64_COMPACT_INSN_DMULSL_COMPACT, SH64_COMPACT_SFMT_DMULSL_COMPACT },
81 { SH_INSN_DMULUL_COMPACT, SH64_COMPACT_INSN_DMULUL_COMPACT, SH64_COMPACT_SFMT_DMULSL_COMPACT },
82 { SH_INSN_DT_COMPACT, SH64_COMPACT_INSN_DT_COMPACT, SH64_COMPACT_SFMT_DT_COMPACT },
83 { SH_INSN_EXTSB_COMPACT, SH64_COMPACT_INSN_EXTSB_COMPACT, SH64_COMPACT_SFMT_EXTSB_COMPACT },
84 { SH_INSN_EXTSW_COMPACT, SH64_COMPACT_INSN_EXTSW_COMPACT, SH64_COMPACT_SFMT_EXTSB_COMPACT },
85 { SH_INSN_EXTUB_COMPACT, SH64_COMPACT_INSN_EXTUB_COMPACT, SH64_COMPACT_SFMT_EXTSB_COMPACT },
86 { SH_INSN_EXTUW_COMPACT, SH64_COMPACT_INSN_EXTUW_COMPACT, SH64_COMPACT_SFMT_EXTSB_COMPACT },
87 { SH_INSN_FABS_COMPACT, SH64_COMPACT_INSN_FABS_COMPACT, SH64_COMPACT_SFMT_FABS_COMPACT },
88 { SH_INSN_FADD_COMPACT, SH64_COMPACT_INSN_FADD_COMPACT, SH64_COMPACT_SFMT_FADD_COMPACT },
89 { SH_INSN_FCMPEQ_COMPACT, SH64_COMPACT_INSN_FCMPEQ_COMPACT, SH64_COMPACT_SFMT_FCMPEQ_COMPACT },
90 { SH_INSN_FCMPGT_COMPACT, SH64_COMPACT_INSN_FCMPGT_COMPACT, SH64_COMPACT_SFMT_FCMPEQ_COMPACT },
91 { SH_INSN_FCNVDS_COMPACT, SH64_COMPACT_INSN_FCNVDS_COMPACT, SH64_COMPACT_SFMT_FCNVDS_COMPACT },
92 { SH_INSN_FCNVSD_COMPACT, SH64_COMPACT_INSN_FCNVSD_COMPACT, SH64_COMPACT_SFMT_FCNVSD_COMPACT },
93 { SH_INSN_FDIV_COMPACT, SH64_COMPACT_INSN_FDIV_COMPACT, SH64_COMPACT_SFMT_FADD_COMPACT },
94 { SH_INSN_FIPR_COMPACT, SH64_COMPACT_INSN_FIPR_COMPACT, SH64_COMPACT_SFMT_FIPR_COMPACT },
95 { SH_INSN_FLDS_COMPACT, SH64_COMPACT_INSN_FLDS_COMPACT, SH64_COMPACT_SFMT_FLDS_COMPACT },
96 { SH_INSN_FLDI0_COMPACT, SH64_COMPACT_INSN_FLDI0_COMPACT, SH64_COMPACT_SFMT_FLDI0_COMPACT },
97 { SH_INSN_FLDI1_COMPACT, SH64_COMPACT_INSN_FLDI1_COMPACT, SH64_COMPACT_SFMT_FLDI0_COMPACT },
98 { SH_INSN_FLOAT_COMPACT, SH64_COMPACT_INSN_FLOAT_COMPACT, SH64_COMPACT_SFMT_FLOAT_COMPACT },
99 { SH_INSN_FMAC_COMPACT, SH64_COMPACT_INSN_FMAC_COMPACT, SH64_COMPACT_SFMT_FMAC_COMPACT },
100 { SH_INSN_FMOV1_COMPACT, SH64_COMPACT_INSN_FMOV1_COMPACT, SH64_COMPACT_SFMT_FMOV1_COMPACT },
101 { SH_INSN_FMOV2_COMPACT, SH64_COMPACT_INSN_FMOV2_COMPACT, SH64_COMPACT_SFMT_FMOV2_COMPACT },
102 { SH_INSN_FMOV3_COMPACT, SH64_COMPACT_INSN_FMOV3_COMPACT, SH64_COMPACT_SFMT_FMOV3_COMPACT },
103 { SH_INSN_FMOV4_COMPACT, SH64_COMPACT_INSN_FMOV4_COMPACT, SH64_COMPACT_SFMT_FMOV4_COMPACT },
104 { SH_INSN_FMOV5_COMPACT, SH64_COMPACT_INSN_FMOV5_COMPACT, SH64_COMPACT_SFMT_FMOV5_COMPACT },
105 { SH_INSN_FMOV6_COMPACT, SH64_COMPACT_INSN_FMOV6_COMPACT, SH64_COMPACT_SFMT_FMOV6_COMPACT },
106 { SH_INSN_FMOV7_COMPACT, SH64_COMPACT_INSN_FMOV7_COMPACT, SH64_COMPACT_SFMT_FMOV7_COMPACT },
107 { SH_INSN_FMUL_COMPACT, SH64_COMPACT_INSN_FMUL_COMPACT, SH64_COMPACT_SFMT_FADD_COMPACT },
108 { SH_INSN_FNEG_COMPACT, SH64_COMPACT_INSN_FNEG_COMPACT, SH64_COMPACT_SFMT_FABS_COMPACT },
109 { SH_INSN_FRCHG_COMPACT, SH64_COMPACT_INSN_FRCHG_COMPACT, SH64_COMPACT_SFMT_FRCHG_COMPACT },
110 { SH_INSN_FSCHG_COMPACT, SH64_COMPACT_INSN_FSCHG_COMPACT, SH64_COMPACT_SFMT_FSCHG_COMPACT },
111 { SH_INSN_FSQRT_COMPACT, SH64_COMPACT_INSN_FSQRT_COMPACT, SH64_COMPACT_SFMT_FABS_COMPACT },
112 { SH_INSN_FSTS_COMPACT, SH64_COMPACT_INSN_FSTS_COMPACT, SH64_COMPACT_SFMT_FSTS_COMPACT },
113 { SH_INSN_FSUB_COMPACT, SH64_COMPACT_INSN_FSUB_COMPACT, SH64_COMPACT_SFMT_FADD_COMPACT },
114 { SH_INSN_FTRC_COMPACT, SH64_COMPACT_INSN_FTRC_COMPACT, SH64_COMPACT_SFMT_FTRC_COMPACT },
115 { SH_INSN_FTRV_COMPACT, SH64_COMPACT_INSN_FTRV_COMPACT, SH64_COMPACT_SFMT_FTRV_COMPACT },
116 { SH_INSN_JMP_COMPACT, SH64_COMPACT_INSN_JMP_COMPACT, SH64_COMPACT_SFMT_JMP_COMPACT },
117 { SH_INSN_JSR_COMPACT, SH64_COMPACT_INSN_JSR_COMPACT, SH64_COMPACT_SFMT_BSRF_COMPACT },
118 { SH_INSN_LDC_COMPACT, SH64_COMPACT_INSN_LDC_COMPACT, SH64_COMPACT_SFMT_LDC_COMPACT },
119 { SH_INSN_LDCL_COMPACT, SH64_COMPACT_INSN_LDCL_COMPACT, SH64_COMPACT_SFMT_LDCL_COMPACT },
120 { SH_INSN_LDS_FPSCR_COMPACT, SH64_COMPACT_INSN_LDS_FPSCR_COMPACT, SH64_COMPACT_SFMT_LDS_FPSCR_COMPACT },
121 { SH_INSN_LDSL_FPSCR_COMPACT, SH64_COMPACT_INSN_LDSL_FPSCR_COMPACT, SH64_COMPACT_SFMT_LDSL_FPSCR_COMPACT },
122 { SH_INSN_LDS_FPUL_COMPACT, SH64_COMPACT_INSN_LDS_FPUL_COMPACT, SH64_COMPACT_SFMT_LDS_FPUL_COMPACT },
123 { SH_INSN_LDSL_FPUL_COMPACT, SH64_COMPACT_INSN_LDSL_FPUL_COMPACT, SH64_COMPACT_SFMT_LDSL_FPUL_COMPACT },
124 { SH_INSN_LDS_MACH_COMPACT, SH64_COMPACT_INSN_LDS_MACH_COMPACT, SH64_COMPACT_SFMT_LDS_MACH_COMPACT },
125 { SH_INSN_LDSL_MACH_COMPACT, SH64_COMPACT_INSN_LDSL_MACH_COMPACT, SH64_COMPACT_SFMT_LDSL_MACH_COMPACT },
126 { SH_INSN_LDS_MACL_COMPACT, SH64_COMPACT_INSN_LDS_MACL_COMPACT, SH64_COMPACT_SFMT_LDS_MACL_COMPACT },
127 { SH_INSN_LDSL_MACL_COMPACT, SH64_COMPACT_INSN_LDSL_MACL_COMPACT, SH64_COMPACT_SFMT_LDSL_MACL_COMPACT },
128 { SH_INSN_LDS_PR_COMPACT, SH64_COMPACT_INSN_LDS_PR_COMPACT, SH64_COMPACT_SFMT_LDS_PR_COMPACT },
129 { SH_INSN_LDSL_PR_COMPACT, SH64_COMPACT_INSN_LDSL_PR_COMPACT, SH64_COMPACT_SFMT_LDSL_PR_COMPACT },
130 { SH_INSN_MACL_COMPACT, SH64_COMPACT_INSN_MACL_COMPACT, SH64_COMPACT_SFMT_MACL_COMPACT },
131 { SH_INSN_MACW_COMPACT, SH64_COMPACT_INSN_MACW_COMPACT, SH64_COMPACT_SFMT_MACW_COMPACT },
132 { SH_INSN_MOV_COMPACT, SH64_COMPACT_INSN_MOV_COMPACT, SH64_COMPACT_SFMT_MOV_COMPACT },
133 { SH_INSN_MOVI_COMPACT, SH64_COMPACT_INSN_MOVI_COMPACT, SH64_COMPACT_SFMT_MOVI_COMPACT },
134 { SH_INSN_MOVB1_COMPACT, SH64_COMPACT_INSN_MOVB1_COMPACT, SH64_COMPACT_SFMT_MOVB1_COMPACT },
135 { SH_INSN_MOVB2_COMPACT, SH64_COMPACT_INSN_MOVB2_COMPACT, SH64_COMPACT_SFMT_MOVB2_COMPACT },
136 { SH_INSN_MOVB3_COMPACT, SH64_COMPACT_INSN_MOVB3_COMPACT, SH64_COMPACT_SFMT_MOVB3_COMPACT },
137 { SH_INSN_MOVB4_COMPACT, SH64_COMPACT_INSN_MOVB4_COMPACT, SH64_COMPACT_SFMT_MOVB4_COMPACT },
138 { SH_INSN_MOVB5_COMPACT, SH64_COMPACT_INSN_MOVB5_COMPACT, SH64_COMPACT_SFMT_MOVB5_COMPACT },
139 { SH_INSN_MOVB6_COMPACT, SH64_COMPACT_INSN_MOVB6_COMPACT, SH64_COMPACT_SFMT_MOVB6_COMPACT },
140 { SH_INSN_MOVB7_COMPACT, SH64_COMPACT_INSN_MOVB7_COMPACT, SH64_COMPACT_SFMT_MOVB7_COMPACT },
141 { SH_INSN_MOVB8_COMPACT, SH64_COMPACT_INSN_MOVB8_COMPACT, SH64_COMPACT_SFMT_MOVB8_COMPACT },
142 { SH_INSN_MOVB9_COMPACT, SH64_COMPACT_INSN_MOVB9_COMPACT, SH64_COMPACT_SFMT_MOVB9_COMPACT },
143 { SH_INSN_MOVB10_COMPACT, SH64_COMPACT_INSN_MOVB10_COMPACT, SH64_COMPACT_SFMT_MOVB10_COMPACT },
144 { SH_INSN_MOVL1_COMPACT, SH64_COMPACT_INSN_MOVL1_COMPACT, SH64_COMPACT_SFMT_MOVB1_COMPACT },
145 { SH_INSN_MOVL2_COMPACT, SH64_COMPACT_INSN_MOVL2_COMPACT, SH64_COMPACT_SFMT_MOVB2_COMPACT },
146 { SH_INSN_MOVL3_COMPACT, SH64_COMPACT_INSN_MOVL3_COMPACT, SH64_COMPACT_SFMT_MOVB3_COMPACT },
147 { SH_INSN_MOVL4_COMPACT, SH64_COMPACT_INSN_MOVL4_COMPACT, SH64_COMPACT_SFMT_MOVL4_COMPACT },
148 { SH_INSN_MOVL5_COMPACT, SH64_COMPACT_INSN_MOVL5_COMPACT, SH64_COMPACT_SFMT_MOVL5_COMPACT },
149 { SH_INSN_MOVL6_COMPACT, SH64_COMPACT_INSN_MOVL6_COMPACT, SH64_COMPACT_SFMT_MOVB6_COMPACT },
150 { SH_INSN_MOVL7_COMPACT, SH64_COMPACT_INSN_MOVL7_COMPACT, SH64_COMPACT_SFMT_MOVL7_COMPACT },
151 { SH_INSN_MOVL8_COMPACT, SH64_COMPACT_INSN_MOVL8_COMPACT, SH64_COMPACT_SFMT_MOVB8_COMPACT },
152 { SH_INSN_MOVL9_COMPACT, SH64_COMPACT_INSN_MOVL9_COMPACT, SH64_COMPACT_SFMT_MOVL9_COMPACT },
153 { SH_INSN_MOVL10_COMPACT, SH64_COMPACT_INSN_MOVL10_COMPACT, SH64_COMPACT_SFMT_MOVL10_COMPACT },
154 { SH_INSN_MOVL11_COMPACT, SH64_COMPACT_INSN_MOVL11_COMPACT, SH64_COMPACT_SFMT_MOVL11_COMPACT },
155 { SH_INSN_MOVW1_COMPACT, SH64_COMPACT_INSN_MOVW1_COMPACT, SH64_COMPACT_SFMT_MOVB1_COMPACT },
156 { SH_INSN_MOVW2_COMPACT, SH64_COMPACT_INSN_MOVW2_COMPACT, SH64_COMPACT_SFMT_MOVB2_COMPACT },
157 { SH_INSN_MOVW3_COMPACT, SH64_COMPACT_INSN_MOVW3_COMPACT, SH64_COMPACT_SFMT_MOVB3_COMPACT },
158 { SH_INSN_MOVW4_COMPACT, SH64_COMPACT_INSN_MOVW4_COMPACT, SH64_COMPACT_SFMT_MOVW4_COMPACT },
159 { SH_INSN_MOVW5_COMPACT, SH64_COMPACT_INSN_MOVW5_COMPACT, SH64_COMPACT_SFMT_MOVW5_COMPACT },
160 { SH_INSN_MOVW6_COMPACT, SH64_COMPACT_INSN_MOVW6_COMPACT, SH64_COMPACT_SFMT_MOVB6_COMPACT },
161 { SH_INSN_MOVW7_COMPACT, SH64_COMPACT_INSN_MOVW7_COMPACT, SH64_COMPACT_SFMT_MOVB7_COMPACT },
162 { SH_INSN_MOVW8_COMPACT, SH64_COMPACT_INSN_MOVW8_COMPACT, SH64_COMPACT_SFMT_MOVB8_COMPACT },
163 { SH_INSN_MOVW9_COMPACT, SH64_COMPACT_INSN_MOVW9_COMPACT, SH64_COMPACT_SFMT_MOVW9_COMPACT },
164 { SH_INSN_MOVW10_COMPACT, SH64_COMPACT_INSN_MOVW10_COMPACT, SH64_COMPACT_SFMT_MOVW10_COMPACT },
165 { SH_INSN_MOVW11_COMPACT, SH64_COMPACT_INSN_MOVW11_COMPACT, SH64_COMPACT_SFMT_MOVW11_COMPACT },
166 { SH_INSN_MOVA_COMPACT, SH64_COMPACT_INSN_MOVA_COMPACT, SH64_COMPACT_SFMT_MOVA_COMPACT },
167 { SH_INSN_MOVCAL_COMPACT, SH64_COMPACT_INSN_MOVCAL_COMPACT, SH64_COMPACT_SFMT_MOVCAL_COMPACT },
168 { SH_INSN_MOVT_COMPACT, SH64_COMPACT_INSN_MOVT_COMPACT, SH64_COMPACT_SFMT_MOVT_COMPACT },
169 { SH_INSN_MULL_COMPACT, SH64_COMPACT_INSN_MULL_COMPACT, SH64_COMPACT_SFMT_MULL_COMPACT },
170 { SH_INSN_MULSW_COMPACT, SH64_COMPACT_INSN_MULSW_COMPACT, SH64_COMPACT_SFMT_MULL_COMPACT },
171 { SH_INSN_MULUW_COMPACT, SH64_COMPACT_INSN_MULUW_COMPACT, SH64_COMPACT_SFMT_MULL_COMPACT },
172 { SH_INSN_NEG_COMPACT, SH64_COMPACT_INSN_NEG_COMPACT, SH64_COMPACT_SFMT_EXTSB_COMPACT },
173 { SH_INSN_NEGC_COMPACT, SH64_COMPACT_INSN_NEGC_COMPACT, SH64_COMPACT_SFMT_NEGC_COMPACT },
174 { SH_INSN_NOP_COMPACT, SH64_COMPACT_INSN_NOP_COMPACT, SH64_COMPACT_SFMT_NOP_COMPACT },
175 { SH_INSN_NOT_COMPACT, SH64_COMPACT_INSN_NOT_COMPACT, SH64_COMPACT_SFMT_MOV_COMPACT },
176 { SH_INSN_OCBI_COMPACT, SH64_COMPACT_INSN_OCBI_COMPACT, SH64_COMPACT_SFMT_NOP_COMPACT },
177 { SH_INSN_OCBP_COMPACT, SH64_COMPACT_INSN_OCBP_COMPACT, SH64_COMPACT_SFMT_NOP_COMPACT },
178 { SH_INSN_OCBWB_COMPACT, SH64_COMPACT_INSN_OCBWB_COMPACT, SH64_COMPACT_SFMT_NOP_COMPACT },
179 { SH_INSN_OR_COMPACT, SH64_COMPACT_INSN_OR_COMPACT, SH64_COMPACT_SFMT_AND_COMPACT },
180 { SH_INSN_ORI_COMPACT, SH64_COMPACT_INSN_ORI_COMPACT, SH64_COMPACT_SFMT_ANDI_COMPACT },
181 { SH_INSN_ORB_COMPACT, SH64_COMPACT_INSN_ORB_COMPACT, SH64_COMPACT_SFMT_ANDB_COMPACT },
182 { SH_INSN_PREF_COMPACT, SH64_COMPACT_INSN_PREF_COMPACT, SH64_COMPACT_SFMT_NOP_COMPACT },
183 { SH_INSN_ROTCL_COMPACT, SH64_COMPACT_INSN_ROTCL_COMPACT, SH64_COMPACT_SFMT_ROTCL_COMPACT },
184 { SH_INSN_ROTCR_COMPACT, SH64_COMPACT_INSN_ROTCR_COMPACT, SH64_COMPACT_SFMT_ROTCL_COMPACT },
185 { SH_INSN_ROTL_COMPACT, SH64_COMPACT_INSN_ROTL_COMPACT, SH64_COMPACT_SFMT_DT_COMPACT },
186 { SH_INSN_ROTR_COMPACT, SH64_COMPACT_INSN_ROTR_COMPACT, SH64_COMPACT_SFMT_DT_COMPACT },
187 { SH_INSN_RTS_COMPACT, SH64_COMPACT_INSN_RTS_COMPACT, SH64_COMPACT_SFMT_RTS_COMPACT },
188 { SH_INSN_SETS_COMPACT, SH64_COMPACT_INSN_SETS_COMPACT, SH64_COMPACT_SFMT_CLRS_COMPACT },
189 { SH_INSN_SETT_COMPACT, SH64_COMPACT_INSN_SETT_COMPACT, SH64_COMPACT_SFMT_CLRT_COMPACT },
190 { SH_INSN_SHAD_COMPACT, SH64_COMPACT_INSN_SHAD_COMPACT, SH64_COMPACT_SFMT_SHAD_COMPACT },
191 { SH_INSN_SHAL_COMPACT, SH64_COMPACT_INSN_SHAL_COMPACT, SH64_COMPACT_SFMT_DT_COMPACT },
192 { SH_INSN_SHAR_COMPACT, SH64_COMPACT_INSN_SHAR_COMPACT, SH64_COMPACT_SFMT_DT_COMPACT },
193 { SH_INSN_SHLD_COMPACT, SH64_COMPACT_INSN_SHLD_COMPACT, SH64_COMPACT_SFMT_SHAD_COMPACT },
194 { SH_INSN_SHLL_COMPACT, SH64_COMPACT_INSN_SHLL_COMPACT, SH64_COMPACT_SFMT_DT_COMPACT },
195 { SH_INSN_SHLL2_COMPACT, SH64_COMPACT_INSN_SHLL2_COMPACT, SH64_COMPACT_SFMT_SHLL2_COMPACT },
196 { SH_INSN_SHLL8_COMPACT, SH64_COMPACT_INSN_SHLL8_COMPACT, SH64_COMPACT_SFMT_SHLL2_COMPACT },
197 { SH_INSN_SHLL16_COMPACT, SH64_COMPACT_INSN_SHLL16_COMPACT, SH64_COMPACT_SFMT_SHLL2_COMPACT },
198 { SH_INSN_SHLR_COMPACT, SH64_COMPACT_INSN_SHLR_COMPACT, SH64_COMPACT_SFMT_DT_COMPACT },
199 { SH_INSN_SHLR2_COMPACT, SH64_COMPACT_INSN_SHLR2_COMPACT, SH64_COMPACT_SFMT_SHLL2_COMPACT },
200 { SH_INSN_SHLR8_COMPACT, SH64_COMPACT_INSN_SHLR8_COMPACT, SH64_COMPACT_SFMT_SHLL2_COMPACT },
201 { SH_INSN_SHLR16_COMPACT, SH64_COMPACT_INSN_SHLR16_COMPACT, SH64_COMPACT_SFMT_SHLL2_COMPACT },
202 { SH_INSN_STC_GBR_COMPACT, SH64_COMPACT_INSN_STC_GBR_COMPACT, SH64_COMPACT_SFMT_STC_GBR_COMPACT },
203 { SH_INSN_STCL_GBR_COMPACT, SH64_COMPACT_INSN_STCL_GBR_COMPACT, SH64_COMPACT_SFMT_STCL_GBR_COMPACT },
204 { SH_INSN_STS_FPSCR_COMPACT, SH64_COMPACT_INSN_STS_FPSCR_COMPACT, SH64_COMPACT_SFMT_STS_FPSCR_COMPACT },
205 { SH_INSN_STSL_FPSCR_COMPACT, SH64_COMPACT_INSN_STSL_FPSCR_COMPACT, SH64_COMPACT_SFMT_STSL_FPSCR_COMPACT },
206 { SH_INSN_STS_FPUL_COMPACT, SH64_COMPACT_INSN_STS_FPUL_COMPACT, SH64_COMPACT_SFMT_STS_FPUL_COMPACT },
207 { SH_INSN_STSL_FPUL_COMPACT, SH64_COMPACT_INSN_STSL_FPUL_COMPACT, SH64_COMPACT_SFMT_STSL_FPUL_COMPACT },
208 { SH_INSN_STS_MACH_COMPACT, SH64_COMPACT_INSN_STS_MACH_COMPACT, SH64_COMPACT_SFMT_STS_MACH_COMPACT },
209 { SH_INSN_STSL_MACH_COMPACT, SH64_COMPACT_INSN_STSL_MACH_COMPACT, SH64_COMPACT_SFMT_STSL_MACH_COMPACT },
210 { SH_INSN_STS_MACL_COMPACT, SH64_COMPACT_INSN_STS_MACL_COMPACT, SH64_COMPACT_SFMT_STS_MACL_COMPACT },
211 { SH_INSN_STSL_MACL_COMPACT, SH64_COMPACT_INSN_STSL_MACL_COMPACT, SH64_COMPACT_SFMT_STSL_MACL_COMPACT },
212 { SH_INSN_STS_PR_COMPACT, SH64_COMPACT_INSN_STS_PR_COMPACT, SH64_COMPACT_SFMT_STS_PR_COMPACT },
213 { SH_INSN_STSL_PR_COMPACT, SH64_COMPACT_INSN_STSL_PR_COMPACT, SH64_COMPACT_SFMT_STSL_PR_COMPACT },
214 { SH_INSN_SUB_COMPACT, SH64_COMPACT_INSN_SUB_COMPACT, SH64_COMPACT_SFMT_ADD_COMPACT },
215 { SH_INSN_SUBC_COMPACT, SH64_COMPACT_INSN_SUBC_COMPACT, SH64_COMPACT_SFMT_ADDC_COMPACT },
216 { SH_INSN_SUBV_COMPACT, SH64_COMPACT_INSN_SUBV_COMPACT, SH64_COMPACT_SFMT_ADDV_COMPACT },
217 { SH_INSN_SWAPB_COMPACT, SH64_COMPACT_INSN_SWAPB_COMPACT, SH64_COMPACT_SFMT_EXTSB_COMPACT },
218 { SH_INSN_SWAPW_COMPACT, SH64_COMPACT_INSN_SWAPW_COMPACT, SH64_COMPACT_SFMT_EXTSB_COMPACT },
219 { SH_INSN_TASB_COMPACT, SH64_COMPACT_INSN_TASB_COMPACT, SH64_COMPACT_SFMT_TASB_COMPACT },
220 { SH_INSN_TRAPA_COMPACT, SH64_COMPACT_INSN_TRAPA_COMPACT, SH64_COMPACT_SFMT_TRAPA_COMPACT },
221 { SH_INSN_TST_COMPACT, SH64_COMPACT_INSN_TST_COMPACT, SH64_COMPACT_SFMT_CMPEQ_COMPACT },
222 { SH_INSN_TSTI_COMPACT, SH64_COMPACT_INSN_TSTI_COMPACT, SH64_COMPACT_SFMT_TSTI_COMPACT },
223 { SH_INSN_TSTB_COMPACT, SH64_COMPACT_INSN_TSTB_COMPACT, SH64_COMPACT_SFMT_TSTB_COMPACT },
224 { SH_INSN_XOR_COMPACT, SH64_COMPACT_INSN_XOR_COMPACT, SH64_COMPACT_SFMT_AND_COMPACT },
225 { SH_INSN_XORI_COMPACT, SH64_COMPACT_INSN_XORI_COMPACT, SH64_COMPACT_SFMT_XORI_COMPACT },
226 { SH_INSN_XORB_COMPACT, SH64_COMPACT_INSN_XORB_COMPACT, SH64_COMPACT_SFMT_ANDB_COMPACT },
227 { SH_INSN_XTRCT_COMPACT, SH64_COMPACT_INSN_XTRCT_COMPACT, SH64_COMPACT_SFMT_ADD_COMPACT },
228};
229
230static const struct insn_sem sh64_compact_insn_sem_invalid = {
231 VIRTUAL_INSN_X_INVALID, SH64_COMPACT_INSN_X_INVALID, SH64_COMPACT_SFMT_EMPTY
232};
233
234/* Initialize an IDESC from the compile-time computable parts. */
235
236static INLINE void
237init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t)
238{
239 const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries;
240
241 id->num = t->index;
242 id->sfmt = t->sfmt;
243 if ((int) t->type <= 0)
244 id->idata = & cgen_virtual_insn_table[- (int) t->type];
245 else
246 id->idata = & insn_table[t->type];
247 id->attrs = CGEN_INSN_ATTRS (id->idata);
248 /* Oh my god, a magic number. */
249 id->length = CGEN_INSN_BITSIZE (id->idata) / 8;
250
251#if WITH_PROFILE_MODEL_P
252 id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index];
253 {
254 SIM_DESC sd = CPU_STATE (cpu);
255 SIM_ASSERT (t->index == id->timing->num);
256 }
257#endif
258
259 /* Semantic pointers are initialized elsewhere. */
260}
261
262/* Initialize the instruction descriptor table. */
263
264void
265sh64_compact_init_idesc_table (SIM_CPU *cpu)
266{
267 IDESC *id,*tabend;
268 const struct insn_sem *t,*tend;
269 int tabsize = SH64_COMPACT_INSN_MAX;
270 IDESC *table = sh64_compact_insn_data;
271
272 memset (table, 0, tabsize * sizeof (IDESC));
273
274 /* First set all entries to the `invalid insn'. */
275 t = & sh64_compact_insn_sem_invalid;
276 for (id = table, tabend = table + tabsize; id < tabend; ++id)
277 init_idesc (cpu, id, t);
278
279 /* Now fill in the values for the chosen cpu. */
280 for (t = sh64_compact_insn_sem, tend = t + sizeof (sh64_compact_insn_sem) / sizeof (*t);
281 t != tend; ++t)
282 {
283 init_idesc (cpu, & table[t->index], t);
284 }
285
286 /* Link the IDESC table into the cpu. */
287 CPU_IDESC (cpu) = table;
288}
289
290/* Given an instruction, return a pointer to its IDESC entry. */
291
292const IDESC *
293sh64_compact_decode (SIM_CPU *current_cpu, IADDR pc,
294 CGEN_INSN_INT base_insn, CGEN_INSN_INT entire_insn,
295 ARGBUF *abuf)
296{
297 /* Result of decoder. */
298 SH64_COMPACT_INSN_TYPE itype;
299
300 {
301 CGEN_INSN_INT insn = base_insn;
302
303 {
304 unsigned int val = (((insn >> 8) & (15 << 4)) | ((insn >> 0) & (15 << 0)));
305 switch (val)
306 {
307 case 2 : itype = SH64_COMPACT_INSN_STC_GBR_COMPACT; goto extract_sfmt_stc_gbr_compact; case 3 :
308 {
309 unsigned int val = (((insn >> 4) & (15 << 0)));
310 switch (val)
311 {
312 case 0 : itype = SH64_COMPACT_INSN_BSRF_COMPACT; goto extract_sfmt_bsrf_compact; case 2 : itype = SH64_COMPACT_INSN_BRAF_COMPACT; goto extract_sfmt_braf_compact; case 8 : itype = SH64_COMPACT_INSN_PREF_COMPACT; goto extract_sfmt_nop_compact; case 9 : itype = SH64_COMPACT_INSN_OCBI_COMPACT; goto extract_sfmt_nop_compact; case 10 : itype = SH64_COMPACT_INSN_OCBP_COMPACT; goto extract_sfmt_nop_compact; case 11 : itype = SH64_COMPACT_INSN_OCBWB_COMPACT; goto extract_sfmt_nop_compact; case 12 : itype = SH64_COMPACT_INSN_MOVCAL_COMPACT; goto extract_sfmt_movcal_compact; default : itype = SH64_COMPACT_INSN_X_INVALID; goto extract_sfmt_empty;
313 }
314 }
315 case 4 : itype = SH64_COMPACT_INSN_MOVB3_COMPACT; goto extract_sfmt_movb3_compact; case 5 : itype = SH64_COMPACT_INSN_MOVW3_COMPACT; goto extract_sfmt_movb3_compact; case 6 : itype = SH64_COMPACT_INSN_MOVL3_COMPACT; goto extract_sfmt_movb3_compact; case 7 : itype = SH64_COMPACT_INSN_MULL_COMPACT; goto extract_sfmt_mull_compact; case 8 :
316 {
317 unsigned int val = (((insn >> 4) & (7 << 0)));
318 switch (val)
319 {
320 case 0 : itype = SH64_COMPACT_INSN_CLRT_COMPACT; goto extract_sfmt_clrt_compact; case 1 : itype = SH64_COMPACT_INSN_SETT_COMPACT; goto extract_sfmt_clrt_compact; case 2 : itype = SH64_COMPACT_INSN_CLRMAC_COMPACT; goto extract_sfmt_clrmac_compact; case 4 : itype = SH64_COMPACT_INSN_CLRS_COMPACT; goto extract_sfmt_clrs_compact; case 5 : itype = SH64_COMPACT_INSN_SETS_COMPACT; goto extract_sfmt_clrs_compact; default : itype = SH64_COMPACT_INSN_X_INVALID; goto extract_sfmt_empty;
321 }
322 }
323 case 9 :
324 {
325 unsigned int val = (((insn >> 4) & (3 << 0)));
326 switch (val)
327 {
328 case 0 : itype = SH64_COMPACT_INSN_NOP_COMPACT; goto extract_sfmt_nop_compact; case 1 : itype = SH64_COMPACT_INSN_DIV0U_COMPACT; goto extract_sfmt_div0u_compact; case 2 : itype = SH64_COMPACT_INSN_MOVT_COMPACT; goto extract_sfmt_movt_compact; default : itype = SH64_COMPACT_INSN_X_INVALID; goto extract_sfmt_empty;
329 }
330 }
331 case 10 :
332 {
333 unsigned int val = (((insn >> 4) & (7 << 0)));
334 switch (val)
335 {
336 case 0 : itype = SH64_COMPACT_INSN_STS_MACH_COMPACT; goto extract_sfmt_sts_mach_compact; case 1 : itype = SH64_COMPACT_INSN_STS_MACL_COMPACT; goto extract_sfmt_sts_macl_compact; case 2 : itype = SH64_COMPACT_INSN_STS_PR_COMPACT; goto extract_sfmt_sts_pr_compact; case 5 : itype = SH64_COMPACT_INSN_STS_FPUL_COMPACT; goto extract_sfmt_sts_fpul_compact; case 6 : itype = SH64_COMPACT_INSN_STS_FPSCR_COMPACT; goto extract_sfmt_sts_fpscr_compact; default : itype = SH64_COMPACT_INSN_X_INVALID; goto extract_sfmt_empty;
337 }
338 }
339 case 11 :
340 {
341 unsigned int val = (((insn >> 4) & (3 << 0)));
342 switch (val)
343 {
344 case 0 : itype = SH64_COMPACT_INSN_RTS_COMPACT; goto extract_sfmt_rts_compact; case 3 : itype = SH64_COMPACT_INSN_BRK_COMPACT; goto extract_sfmt_brk_compact; default : itype = SH64_COMPACT_INSN_X_INVALID; goto extract_sfmt_empty;
345 }
346 }
347 case 12 : itype = SH64_COMPACT_INSN_MOVB8_COMPACT; goto extract_sfmt_movb8_compact; case 13 : itype = SH64_COMPACT_INSN_MOVW8_COMPACT; goto extract_sfmt_movb8_compact; case 14 : itype = SH64_COMPACT_INSN_MOVL8_COMPACT; goto extract_sfmt_movb8_compact; case 15 : itype = SH64_COMPACT_INSN_MACL_COMPACT; goto extract_sfmt_macl_compact; case 16 : /* fall through */
348 case 17 : /* fall through */
349 case 18 : /* fall through */
350 case 19 : /* fall through */
351 case 20 : /* fall through */
352 case 21 : /* fall through */
353 case 22 : /* fall through */
354 case 23 : /* fall through */
355 case 24 : /* fall through */
356 case 25 : /* fall through */
357 case 26 : /* fall through */
358 case 27 : /* fall through */
359 case 28 : /* fall through */
360 case 29 : /* fall through */
361 case 30 : /* fall through */
362 case 31 : itype = SH64_COMPACT_INSN_MOVL5_COMPACT; goto extract_sfmt_movl5_compact; case 32 : itype = SH64_COMPACT_INSN_MOVB1_COMPACT; goto extract_sfmt_movb1_compact; case 33 : itype = SH64_COMPACT_INSN_MOVW1_COMPACT; goto extract_sfmt_movb1_compact; case 34 : itype = SH64_COMPACT_INSN_MOVL1_COMPACT; goto extract_sfmt_movb1_compact; case 36 : itype = SH64_COMPACT_INSN_MOVB2_COMPACT; goto extract_sfmt_movb2_compact; case 37 : itype = SH64_COMPACT_INSN_MOVW2_COMPACT; goto extract_sfmt_movb2_compact; case 38 : itype = SH64_COMPACT_INSN_MOVL2_COMPACT; goto extract_sfmt_movb2_compact; case 39 : itype = SH64_COMPACT_INSN_DIV0S_COMPACT; goto extract_sfmt_div0s_compact; case 40 : itype = SH64_COMPACT_INSN_TST_COMPACT; goto extract_sfmt_cmpeq_compact; case 41 : itype = SH64_COMPACT_INSN_AND_COMPACT; goto extract_sfmt_and_compact; case 42 : itype = SH64_COMPACT_INSN_XOR_COMPACT; goto extract_sfmt_and_compact; case 43 : itype = SH64_COMPACT_INSN_OR_COMPACT; goto extract_sfmt_and_compact; case 44 : itype = SH64_COMPACT_INSN_CMPSTR_COMPACT; goto extract_sfmt_cmpeq_compact; case 45 : itype = SH64_COMPACT_INSN_XTRCT_COMPACT; goto extract_sfmt_add_compact; case 46 : itype = SH64_COMPACT_INSN_MULUW_COMPACT; goto extract_sfmt_mull_compact; case 47 : itype = SH64_COMPACT_INSN_MULSW_COMPACT; goto extract_sfmt_mull_compact; case 48 : itype = SH64_COMPACT_INSN_CMPEQ_COMPACT; goto extract_sfmt_cmpeq_compact; case 50 : itype = SH64_COMPACT_INSN_CMPHS_COMPACT; goto extract_sfmt_cmpeq_compact; case 51 : itype = SH64_COMPACT_INSN_CMPGE_COMPACT; goto extract_sfmt_cmpeq_compact; case 52 : itype = SH64_COMPACT_INSN_DIV1_COMPACT; goto extract_sfmt_div1_compact; case 53 : itype = SH64_COMPACT_INSN_DMULUL_COMPACT; goto extract_sfmt_dmulsl_compact; case 54 : itype = SH64_COMPACT_INSN_CMPHI_COMPACT; goto extract_sfmt_cmpeq_compact; case 55 : itype = SH64_COMPACT_INSN_CMPGT_COMPACT; goto extract_sfmt_cmpeq_compact; case 56 : itype = SH64_COMPACT_INSN_SUB_COMPACT; goto extract_sfmt_add_compact; case 58 : itype = SH64_COMPACT_INSN_SUBC_COMPACT; goto extract_sfmt_addc_compact; case 59 : itype = SH64_COMPACT_INSN_SUBV_COMPACT; goto extract_sfmt_addv_compact; case 60 : itype = SH64_COMPACT_INSN_ADD_COMPACT; goto extract_sfmt_add_compact; case 61 : itype = SH64_COMPACT_INSN_DMULSL_COMPACT; goto extract_sfmt_dmulsl_compact; case 62 : itype = SH64_COMPACT_INSN_ADDC_COMPACT; goto extract_sfmt_addc_compact; case 63 : itype = SH64_COMPACT_INSN_ADDV_COMPACT; goto extract_sfmt_addv_compact; case 64 :
363 {
364 unsigned int val = (((insn >> 4) & (3 << 0)));
365 switch (val)
366 {
367 case 0 : itype = SH64_COMPACT_INSN_SHLL_COMPACT; goto extract_sfmt_dt_compact; case 1 : itype = SH64_COMPACT_INSN_DT_COMPACT; goto extract_sfmt_dt_compact; case 2 : itype = SH64_COMPACT_INSN_SHAL_COMPACT; goto extract_sfmt_dt_compact; default : itype = SH64_COMPACT_INSN_X_INVALID; goto extract_sfmt_empty;
368 }
369 }
370 case 65 :
371 {
372 unsigned int val = (((insn >> 4) & (3 << 0)));
373 switch (val)
374 {
375 case 0 : itype = SH64_COMPACT_INSN_SHLR_COMPACT; goto extract_sfmt_dt_compact; case 1 : itype = SH64_COMPACT_INSN_CMPPZ_COMPACT; goto extract_sfmt_cmppl_compact; case 2 : itype = SH64_COMPACT_INSN_SHAR_COMPACT; goto extract_sfmt_dt_compact; default : itype = SH64_COMPACT_INSN_X_INVALID; goto extract_sfmt_empty;
376 }
377 }
378 case 66 :
379 {
380 unsigned int val = (((insn >> 4) & (7 << 0)));
381 switch (val)
382 {
383 case 0 : itype = SH64_COMPACT_INSN_STSL_MACH_COMPACT; goto extract_sfmt_stsl_mach_compact; case 1 : itype = SH64_COMPACT_INSN_STSL_MACL_COMPACT; goto extract_sfmt_stsl_macl_compact; case 2 : itype = SH64_COMPACT_INSN_STSL_PR_COMPACT; goto extract_sfmt_stsl_pr_compact; case 5 : itype = SH64_COMPACT_INSN_STSL_FPUL_COMPACT; goto extract_sfmt_stsl_fpul_compact; case 6 : itype = SH64_COMPACT_INSN_STSL_FPSCR_COMPACT; goto extract_sfmt_stsl_fpscr_compact; default : itype = SH64_COMPACT_INSN_X_INVALID; goto extract_sfmt_empty;
384 }
385 }
386 case 67 : itype = SH64_COMPACT_INSN_STCL_GBR_COMPACT; goto extract_sfmt_stcl_gbr_compact; case 68 :
387 {
388 unsigned int val = (((insn >> 5) & (1 << 0)));
389 switch (val)
390 {
391 case 0 : itype = SH64_COMPACT_INSN_ROTL_COMPACT; goto extract_sfmt_dt_compact; case 1 : itype = SH64_COMPACT_INSN_ROTCL_COMPACT; goto extract_sfmt_rotcl_compact; default : itype = SH64_COMPACT_INSN_X_INVALID; goto extract_sfmt_empty;
392 }
393 }
394 case 69 :
395 {
396 unsigned int val = (((insn >> 4) & (3 << 0)));
397 switch (val)
398 {
399 case 0 : itype = SH64_COMPACT_INSN_ROTR_COMPACT; goto extract_sfmt_dt_compact; case 1 : itype = SH64_COMPACT_INSN_CMPPL_COMPACT; goto extract_sfmt_cmppl_compact; case 2 : itype = SH64_COMPACT_INSN_ROTCR_COMPACT; goto extract_sfmt_rotcl_compact; default : itype = SH64_COMPACT_INSN_X_INVALID; goto extract_sfmt_empty;
400 }
401 }
402 case 70 :
403 {
404 unsigned int val = (((insn >> 4) & (7 << 0)));
405 switch (val)
406 {
407 case 0 : itype = SH64_COMPACT_INSN_LDSL_MACH_COMPACT; goto extract_sfmt_ldsl_mach_compact; case 1 : itype = SH64_COMPACT_INSN_LDSL_MACL_COMPACT; goto extract_sfmt_ldsl_macl_compact; case 2 : itype = SH64_COMPACT_INSN_LDSL_PR_COMPACT; goto extract_sfmt_ldsl_pr_compact; case 5 : itype = SH64_COMPACT_INSN_LDSL_FPUL_COMPACT; goto extract_sfmt_ldsl_fpul_compact; case 6 : itype = SH64_COMPACT_INSN_LDSL_FPSCR_COMPACT; goto extract_sfmt_ldsl_fpscr_compact; default : itype = SH64_COMPACT_INSN_X_INVALID; goto extract_sfmt_empty;
408 }
409 }
410 case 71 : itype = SH64_COMPACT_INSN_LDCL_COMPACT; goto extract_sfmt_ldcl_compact; case 72 :
411 {
412 unsigned int val = (((insn >> 4) & (3 << 0)));
413 switch (val)
414 {
415 case 0 : itype = SH64_COMPACT_INSN_SHLL2_COMPACT; goto extract_sfmt_shll2_compact; case 1 : itype = SH64_COMPACT_INSN_SHLL8_COMPACT; goto extract_sfmt_shll2_compact; case 2 : itype = SH64_COMPACT_INSN_SHLL16_COMPACT; goto extract_sfmt_shll2_compact; default : itype = SH64_COMPACT_INSN_X_INVALID; goto extract_sfmt_empty;
416 }
417 }
418 case 73 :
419 {
420 unsigned int val = (((insn >> 4) & (3 << 0)));
421 switch (val)
422 {
423 case 0 : itype = SH64_COMPACT_INSN_SHLR2_COMPACT; goto extract_sfmt_shll2_compact; case 1 : itype = SH64_COMPACT_INSN_SHLR8_COMPACT; goto extract_sfmt_shll2_compact; case 2 : itype = SH64_COMPACT_INSN_SHLR16_COMPACT; goto extract_sfmt_shll2_compact; default : itype = SH64_COMPACT_INSN_X_INVALID; goto extract_sfmt_empty;
424 }
425 }
426 case 74 :
427 {
428 unsigned int val = (((insn >> 4) & (7 << 0)));
429 switch (val)
430 {
431 case 0 : itype = SH64_COMPACT_INSN_LDS_MACH_COMPACT; goto extract_sfmt_lds_mach_compact; case 1 : itype = SH64_COMPACT_INSN_LDS_MACL_COMPACT; goto extract_sfmt_lds_macl_compact; case 2 : itype = SH64_COMPACT_INSN_LDS_PR_COMPACT; goto extract_sfmt_lds_pr_compact; case 5 : itype = SH64_COMPACT_INSN_LDS_FPUL_COMPACT; goto extract_sfmt_lds_fpul_compact; case 6 : itype = SH64_COMPACT_INSN_LDS_FPSCR_COMPACT; goto extract_sfmt_lds_fpscr_compact; default : itype = SH64_COMPACT_INSN_X_INVALID; goto extract_sfmt_empty;
432 }
433 }
434 case 75 :
435 {
436 unsigned int val = (((insn >> 4) & (3 << 0)));
437 switch (val)
438 {
439 case 0 : itype = SH64_COMPACT_INSN_JSR_COMPACT; goto extract_sfmt_bsrf_compact; case 1 : itype = SH64_COMPACT_INSN_TASB_COMPACT; goto extract_sfmt_tasb_compact; case 2 : itype = SH64_COMPACT_INSN_JMP_COMPACT; goto extract_sfmt_jmp_compact; default : itype = SH64_COMPACT_INSN_X_INVALID; goto extract_sfmt_empty;
440 }
441 }
442 case 76 : itype = SH64_COMPACT_INSN_SHAD_COMPACT; goto extract_sfmt_shad_compact; case 77 : itype = SH64_COMPACT_INSN_SHLD_COMPACT; goto extract_sfmt_shad_compact; case 78 : itype = SH64_COMPACT_INSN_LDC_COMPACT; goto extract_sfmt_ldc_compact; case 79 : itype = SH64_COMPACT_INSN_MACW_COMPACT; goto extract_sfmt_macw_compact; case 80 : /* fall through */
443 case 81 : /* fall through */
444 case 82 : /* fall through */
445 case 83 : /* fall through */
446 case 84 : /* fall through */
447 case 85 : /* fall through */
448 case 86 : /* fall through */
449 case 87 : /* fall through */
450 case 88 : /* fall through */
451 case 89 : /* fall through */
452 case 90 : /* fall through */
453 case 91 : /* fall through */
454 case 92 : /* fall through */
455 case 93 : /* fall through */
456 case 94 : /* fall through */
457 case 95 : itype = SH64_COMPACT_INSN_MOVL11_COMPACT; goto extract_sfmt_movl11_compact; case 96 : itype = SH64_COMPACT_INSN_MOVB6_COMPACT; goto extract_sfmt_movb6_compact; case 97 : itype = SH64_COMPACT_INSN_MOVW6_COMPACT; goto extract_sfmt_movb6_compact; case 98 : itype = SH64_COMPACT_INSN_MOVL6_COMPACT; goto extract_sfmt_movb6_compact; case 99 : itype = SH64_COMPACT_INSN_MOV_COMPACT; goto extract_sfmt_mov_compact; case 100 : itype = SH64_COMPACT_INSN_MOVB7_COMPACT; goto extract_sfmt_movb7_compact; case 101 : itype = SH64_COMPACT_INSN_MOVW7_COMPACT; goto extract_sfmt_movb7_compact; case 102 : itype = SH64_COMPACT_INSN_MOVL7_COMPACT; goto extract_sfmt_movl7_compact; case 103 : itype = SH64_COMPACT_INSN_NOT_COMPACT; goto extract_sfmt_mov_compact; case 104 : itype = SH64_COMPACT_INSN_SWAPB_COMPACT; goto extract_sfmt_extsb_compact; case 105 : itype = SH64_COMPACT_INSN_SWAPW_COMPACT; goto extract_sfmt_extsb_compact; case 106 : itype = SH64_COMPACT_INSN_NEGC_COMPACT; goto extract_sfmt_negc_compact; case 107 : itype = SH64_COMPACT_INSN_NEG_COMPACT; goto extract_sfmt_extsb_compact; case 108 : itype = SH64_COMPACT_INSN_EXTUB_COMPACT; goto extract_sfmt_extsb_compact; case 109 : itype = SH64_COMPACT_INSN_EXTUW_COMPACT; goto extract_sfmt_extsb_compact; case 110 : itype = SH64_COMPACT_INSN_EXTSB_COMPACT; goto extract_sfmt_extsb_compact; case 111 : itype = SH64_COMPACT_INSN_EXTSW_COMPACT; goto extract_sfmt_extsb_compact; case 112 : /* fall through */
458 case 113 : /* fall through */
459 case 114 : /* fall through */
460 case 115 : /* fall through */
461 case 116 : /* fall through */
462 case 117 : /* fall through */
463 case 118 : /* fall through */
464 case 119 : /* fall through */
465 case 120 : /* fall through */
466 case 121 : /* fall through */
467 case 122 : /* fall through */
468 case 123 : /* fall through */
469 case 124 : /* fall through */
470 case 125 : /* fall through */
471 case 126 : /* fall through */
472 case 127 : itype = SH64_COMPACT_INSN_ADDI_COMPACT; goto extract_sfmt_addi_compact; case 128 : /* fall through */
473 case 129 : /* fall through */
474 case 130 : /* fall through */
475 case 131 : /* fall through */
476 case 132 : /* fall through */
477 case 133 : /* fall through */
478 case 134 : /* fall through */
479 case 135 : /* fall through */
480 case 136 : /* fall through */
481 case 137 : /* fall through */
482 case 138 : /* fall through */
483 case 139 : /* fall through */
484 case 140 : /* fall through */
485 case 141 : /* fall through */
486 case 142 : /* fall through */
487 case 143 :
488 {
489 unsigned int val = (((insn >> 8) & (15 << 0)));
490 switch (val)
491 {
492 case 0 : itype = SH64_COMPACT_INSN_MOVB5_COMPACT; goto extract_sfmt_movb5_compact; case 1 : itype = SH64_COMPACT_INSN_MOVW5_COMPACT; goto extract_sfmt_movw5_compact; case 4 : itype = SH64_COMPACT_INSN_MOVB10_COMPACT; goto extract_sfmt_movb10_compact; case 5 : itype = SH64_COMPACT_INSN_MOVW11_COMPACT; goto extract_sfmt_movw11_compact; case 8 : itype = SH64_COMPACT_INSN_CMPEQI_COMPACT; goto extract_sfmt_cmpeqi_compact; case 9 : itype = SH64_COMPACT_INSN_BT_COMPACT; goto extract_sfmt_bf_compact; case 11 : itype = SH64_COMPACT_INSN_BF_COMPACT; goto extract_sfmt_bf_compact; case 13 : itype = SH64_COMPACT_INSN_BTS_COMPACT; goto extract_sfmt_bf_compact; case 15 : itype = SH64_COMPACT_INSN_BFS_COMPACT; goto extract_sfmt_bf_compact; default : itype = SH64_COMPACT_INSN_X_INVALID; goto extract_sfmt_empty;
493 }
494 }
495 case 144 : /* fall through */
496 case 145 : /* fall through */
497 case 146 : /* fall through */
498 case 147 : /* fall through */
499 case 148 : /* fall through */
500 case 149 : /* fall through */
501 case 150 : /* fall through */
502 case 151 : /* fall through */
503 case 152 : /* fall through */
504 case 153 : /* fall through */
505 case 154 : /* fall through */
506 case 155 : /* fall through */
507 case 156 : /* fall through */
508 case 157 : /* fall through */
509 case 158 : /* fall through */
510 case 159 : itype = SH64_COMPACT_INSN_MOVW10_COMPACT; goto extract_sfmt_movw10_compact; case 160 : /* fall through */
511 case 161 : /* fall through */
512 case 162 : /* fall through */
513 case 163 : /* fall through */
514 case 164 : /* fall through */
515 case 165 : /* fall through */
516 case 166 : /* fall through */
517 case 167 : /* fall through */
518 case 168 : /* fall through */
519 case 169 : /* fall through */
520 case 170 : /* fall through */
521 case 171 : /* fall through */
522 case 172 : /* fall through */
523 case 173 : /* fall through */
524 case 174 : /* fall through */
525 case 175 : itype = SH64_COMPACT_INSN_BRA_COMPACT; goto extract_sfmt_bra_compact; case 176 : /* fall through */
526 case 177 : /* fall through */
527 case 178 : /* fall through */
528 case 179 : /* fall through */
529 case 180 : /* fall through */
530 case 181 : /* fall through */
531 case 182 : /* fall through */
532 case 183 : /* fall through */
533 case 184 : /* fall through */
534 case 185 : /* fall through */
535 case 186 : /* fall through */
536 case 187 : /* fall through */
537 case 188 : /* fall through */
538 case 189 : /* fall through */
539 case 190 : /* fall through */
540 case 191 : itype = SH64_COMPACT_INSN_BSR_COMPACT; goto extract_sfmt_bsr_compact; case 192 : /* fall through */
541 case 193 : /* fall through */
542 case 194 : /* fall through */
543 case 195 : /* fall through */
544 case 196 : /* fall through */
545 case 197 : /* fall through */
546 case 198 : /* fall through */
547 case 199 : /* fall through */
548 case 200 : /* fall through */
549 case 201 : /* fall through */
550 case 202 : /* fall through */
551 case 203 : /* fall through */
552 case 204 : /* fall through */
553 case 205 : /* fall through */
554 case 206 : /* fall through */
555 case 207 :
556 {
557 unsigned int val = (((insn >> 8) & (15 << 0)));
558 switch (val)
559 {
560 case 0 : itype = SH64_COMPACT_INSN_MOVB4_COMPACT; goto extract_sfmt_movb4_compact; case 1 : itype = SH64_COMPACT_INSN_MOVW4_COMPACT; goto extract_sfmt_movw4_compact; case 2 : itype = SH64_COMPACT_INSN_MOVL4_COMPACT; goto extract_sfmt_movl4_compact; case 3 : itype = SH64_COMPACT_INSN_TRAPA_COMPACT; goto extract_sfmt_trapa_compact; case 4 : itype = SH64_COMPACT_INSN_MOVB9_COMPACT; goto extract_sfmt_movb9_compact; case 5 : itype = SH64_COMPACT_INSN_MOVW9_COMPACT; goto extract_sfmt_movw9_compact; case 6 : itype = SH64_COMPACT_INSN_MOVL9_COMPACT; goto extract_sfmt_movl9_compact; case 7 : itype = SH64_COMPACT_INSN_MOVA_COMPACT; goto extract_sfmt_mova_compact; case 8 : itype = SH64_COMPACT_INSN_TSTI_COMPACT; goto extract_sfmt_tsti_compact; case 9 : itype = SH64_COMPACT_INSN_ANDI_COMPACT; goto extract_sfmt_andi_compact; case 10 : itype = SH64_COMPACT_INSN_XORI_COMPACT; goto extract_sfmt_xori_compact; case 11 : itype = SH64_COMPACT_INSN_ORI_COMPACT; goto extract_sfmt_andi_compact; case 12 : itype = SH64_COMPACT_INSN_TSTB_COMPACT; goto extract_sfmt_tstb_compact; case 13 : itype = SH64_COMPACT_INSN_ANDB_COMPACT; goto extract_sfmt_andb_compact; case 14 : itype = SH64_COMPACT_INSN_XORB_COMPACT; goto extract_sfmt_andb_compact; case 15 : itype = SH64_COMPACT_INSN_ORB_COMPACT; goto extract_sfmt_andb_compact; default : itype = SH64_COMPACT_INSN_X_INVALID; goto extract_sfmt_empty;
561 }
562 }
563 case 208 : /* fall through */
564 case 209 : /* fall through */
565 case 210 : /* fall through */
566 case 211 : /* fall through */
567 case 212 : /* fall through */
568 case 213 : /* fall through */
569 case 214 : /* fall through */
570 case 215 : /* fall through */
571 case 216 : /* fall through */
572 case 217 : /* fall through */
573 case 218 : /* fall through */
574 case 219 : /* fall through */
575 case 220 : /* fall through */
576 case 221 : /* fall through */
577 case 222 : /* fall through */
578 case 223 : itype = SH64_COMPACT_INSN_MOVL10_COMPACT; goto extract_sfmt_movl10_compact; case 224 : /* fall through */
579 case 225 : /* fall through */
580 case 226 : /* fall through */
581 case 227 : /* fall through */
582 case 228 : /* fall through */
583 case 229 : /* fall through */
584 case 230 : /* fall through */
585 case 231 : /* fall through */
586 case 232 : /* fall through */
587 case 233 : /* fall through */
588 case 234 : /* fall through */
589 case 235 : /* fall through */
590 case 236 : /* fall through */
591 case 237 : /* fall through */
592 case 238 : /* fall through */
593 case 239 : itype = SH64_COMPACT_INSN_MOVI_COMPACT; goto extract_sfmt_movi_compact; case 240 : itype = SH64_COMPACT_INSN_FADD_COMPACT; goto extract_sfmt_fadd_compact; case 241 : itype = SH64_COMPACT_INSN_FSUB_COMPACT; goto extract_sfmt_fadd_compact; case 242 : itype = SH64_COMPACT_INSN_FMUL_COMPACT; goto extract_sfmt_fadd_compact; case 243 : itype = SH64_COMPACT_INSN_FDIV_COMPACT; goto extract_sfmt_fadd_compact; case 244 : itype = SH64_COMPACT_INSN_FCMPEQ_COMPACT; goto extract_sfmt_fcmpeq_compact; case 245 : itype = SH64_COMPACT_INSN_FCMPGT_COMPACT; goto extract_sfmt_fcmpeq_compact; case 246 : itype = SH64_COMPACT_INSN_FMOV4_COMPACT; goto extract_sfmt_fmov4_compact; case 247 : itype = SH64_COMPACT_INSN_FMOV7_COMPACT; goto extract_sfmt_fmov7_compact; case 248 : itype = SH64_COMPACT_INSN_FMOV2_COMPACT; goto extract_sfmt_fmov2_compact; case 249 : itype = SH64_COMPACT_INSN_FMOV3_COMPACT; goto extract_sfmt_fmov3_compact; case 250 : itype = SH64_COMPACT_INSN_FMOV5_COMPACT; goto extract_sfmt_fmov5_compact; case 251 : itype = SH64_COMPACT_INSN_FMOV6_COMPACT; goto extract_sfmt_fmov6_compact; case 252 : itype = SH64_COMPACT_INSN_FMOV1_COMPACT; goto extract_sfmt_fmov1_compact; case 253 :
594 {
595 unsigned int val = (((insn >> 4) & (15 << 0)));
596 switch (val)
597 {
598 case 0 : itype = SH64_COMPACT_INSN_FSTS_COMPACT; goto extract_sfmt_fsts_compact; case 1 : itype = SH64_COMPACT_INSN_FLDS_COMPACT; goto extract_sfmt_flds_compact; case 2 : itype = SH64_COMPACT_INSN_FLOAT_COMPACT; goto extract_sfmt_float_compact; case 3 : itype = SH64_COMPACT_INSN_FTRC_COMPACT; goto extract_sfmt_ftrc_compact; case 4 : itype = SH64_COMPACT_INSN_FNEG_COMPACT; goto extract_sfmt_fabs_compact; case 5 : itype = SH64_COMPACT_INSN_FABS_COMPACT; goto extract_sfmt_fabs_compact; case 6 : itype = SH64_COMPACT_INSN_FSQRT_COMPACT; goto extract_sfmt_fabs_compact; case 8 : itype = SH64_COMPACT_INSN_FLDI0_COMPACT; goto extract_sfmt_fldi0_compact; case 9 : itype = SH64_COMPACT_INSN_FLDI1_COMPACT; goto extract_sfmt_fldi0_compact; case 10 : itype = SH64_COMPACT_INSN_FCNVSD_COMPACT; goto extract_sfmt_fcnvsd_compact; case 11 : itype = SH64_COMPACT_INSN_FCNVDS_COMPACT; goto extract_sfmt_fcnvds_compact; case 14 : itype = SH64_COMPACT_INSN_FIPR_COMPACT; goto extract_sfmt_fipr_compact; case 15 :
599 {
600 unsigned int val = (((insn >> 9) & (1 << 0)));
601 switch (val)
602 {
603 case 0 : itype = SH64_COMPACT_INSN_FTRV_COMPACT; goto extract_sfmt_ftrv_compact; case 1 :
604 {
605 unsigned int val = (((insn >> 11) & (1 << 0)));
606 switch (val)
607 {
608 case 0 : itype = SH64_COMPACT_INSN_FSCHG_COMPACT; goto extract_sfmt_fschg_compact; case 1 : itype = SH64_COMPACT_INSN_FRCHG_COMPACT; goto extract_sfmt_frchg_compact; default : itype = SH64_COMPACT_INSN_X_INVALID; goto extract_sfmt_empty;
609 }
610 }
611 default : itype = SH64_COMPACT_INSN_X_INVALID; goto extract_sfmt_empty;
612 }
613 }
614 default : itype = SH64_COMPACT_INSN_X_INVALID; goto extract_sfmt_empty;
615 }
616 }
617 case 254 : itype = SH64_COMPACT_INSN_FMAC_COMPACT; goto extract_sfmt_fmac_compact; default : itype = SH64_COMPACT_INSN_X_INVALID; goto extract_sfmt_empty;
618 }
619 }
620 }
621
622 /* The instruction has been decoded, now extract the fields. */
623
624 extract_sfmt_empty:
625 {
626 const IDESC *idesc = &sh64_compact_insn_data[itype];
627#define FLD(f) abuf->fields.fmt_empty.f
628
629
630 /* Record the fields for the semantic handler. */
631 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0));
632
633#undef FLD
634 return idesc;
635 }
636
637 extract_sfmt_add_compact:
638 {
639 const IDESC *idesc = &sh64_compact_insn_data[itype];
640 CGEN_INSN_INT insn = entire_insn;
641#define FLD(f) abuf->fields.sfmt_movl5_compact.f
642 UINT f_rn;
643 UINT f_rm;
644
645 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
646 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
647
648 /* Record the fields for the semantic handler. */
649 FLD (f_rm) = f_rm;
650 FLD (f_rn) = f_rn;
651 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
652
653#undef FLD
654 return idesc;
655 }
656
657 extract_sfmt_addi_compact:
658 {
659 const IDESC *idesc = &sh64_compact_insn_data[itype];
660 CGEN_INSN_INT insn = entire_insn;
661#define FLD(f) abuf->fields.sfmt_addi_compact.f
662 UINT f_rn;
663 UINT f_imm8;
664
665 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
666 f_imm8 = EXTRACT_LSB0_UINT (insn, 16, 7, 8);
667
668 /* Record the fields for the semantic handler. */
669 FLD (f_imm8) = f_imm8;
670 FLD (f_rn) = f_rn;
671 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addi_compact", "f_imm8 0x%x", 'x', f_imm8, "f_rn 0x%x", 'x', f_rn, (char *) 0));
672
673#undef FLD
674 return idesc;
675 }
676
677 extract_sfmt_addc_compact:
678 {
679 const IDESC *idesc = &sh64_compact_insn_data[itype];
680 CGEN_INSN_INT insn = entire_insn;
681#define FLD(f) abuf->fields.sfmt_movl5_compact.f
682 UINT f_rn;
683 UINT f_rm;
684
685 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
686 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
687
688 /* Record the fields for the semantic handler. */
689 FLD (f_rm) = f_rm;
690 FLD (f_rn) = f_rn;
691 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addc_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
692
693#undef FLD
694 return idesc;
695 }
696
697 extract_sfmt_addv_compact:
698 {
699 const IDESC *idesc = &sh64_compact_insn_data[itype];
700 CGEN_INSN_INT insn = entire_insn;
701#define FLD(f) abuf->fields.sfmt_movl5_compact.f
702 UINT f_rn;
703 UINT f_rm;
704
705 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
706 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
707
708 /* Record the fields for the semantic handler. */
709 FLD (f_rm) = f_rm;
710 FLD (f_rn) = f_rn;
711 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addv_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
712
713#undef FLD
714 return idesc;
715 }
716
717 extract_sfmt_and_compact:
718 {
719 const IDESC *idesc = &sh64_compact_insn_data[itype];
720 CGEN_INSN_INT insn = entire_insn;
721#define FLD(f) abuf->fields.sfmt_movl5_compact.f
722 UINT f_rn;
723 UINT f_rm;
724
725 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
726 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
727
728 /* Record the fields for the semantic handler. */
729 FLD (f_rm) = f_rm;
730 FLD (f_rn) = f_rn;
731 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_and_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
732
733#undef FLD
734 return idesc;
735 }
736
737 extract_sfmt_andi_compact:
738 {
739 const IDESC *idesc = &sh64_compact_insn_data[itype];
740 CGEN_INSN_INT insn = entire_insn;
741#define FLD(f) abuf->fields.sfmt_addi_compact.f
742 UINT f_imm8;
743
744 f_imm8 = EXTRACT_LSB0_UINT (insn, 16, 7, 8);
745
746 /* Record the fields for the semantic handler. */
747 FLD (f_imm8) = f_imm8;
748 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andi_compact", "f_imm8 0x%x", 'x', f_imm8, (char *) 0));
749
750#undef FLD
751 return idesc;
752 }
753
754 extract_sfmt_andb_compact:
755 {
756 const IDESC *idesc = &sh64_compact_insn_data[itype];
757 CGEN_INSN_INT insn = entire_insn;
758#define FLD(f) abuf->fields.sfmt_addi_compact.f
759 UINT f_imm8;
760
761 f_imm8 = EXTRACT_LSB0_UINT (insn, 16, 7, 8);
762
763 /* Record the fields for the semantic handler. */
764 FLD (f_imm8) = f_imm8;
765 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andb_compact", "f_imm8 0x%x", 'x', f_imm8, (char *) 0));
766
767#undef FLD
768 return idesc;
769 }
770
771 extract_sfmt_bf_compact:
772 {
773 const IDESC *idesc = &sh64_compact_insn_data[itype];
774 CGEN_INSN_INT insn = entire_insn;
775#define FLD(f) abuf->fields.sfmt_bf_compact.f
776 SI f_disp8;
777
778 f_disp8 = ((((EXTRACT_LSB0_INT (insn, 16, 7, 8)) << (1))) + (((pc) + (4))));
779
780 /* Record the fields for the semantic handler. */
781 FLD (i_disp8) = f_disp8;
782 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bf_compact", "disp8 0x%x", 'x', f_disp8, (char *) 0));
783
784#undef FLD
785 return idesc;
786 }
787
788 extract_sfmt_bra_compact:
789 {
790 const IDESC *idesc = &sh64_compact_insn_data[itype];
791 CGEN_INSN_INT insn = entire_insn;
792#define FLD(f) abuf->fields.sfmt_bra_compact.f
793 SI f_disp12;
794
795 f_disp12 = ((((EXTRACT_LSB0_INT (insn, 16, 11, 12)) << (1))) + (((pc) + (4))));
796
797 /* Record the fields for the semantic handler. */
798 FLD (i_disp12) = f_disp12;
799 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bra_compact", "disp12 0x%x", 'x', f_disp12, (char *) 0));
800
801#undef FLD
802 return idesc;
803 }
804
805 extract_sfmt_braf_compact:
806 {
807 const IDESC *idesc = &sh64_compact_insn_data[itype];
808 CGEN_INSN_INT insn = entire_insn;
809#define FLD(f) abuf->fields.sfmt_movw10_compact.f
810 UINT f_rn;
811
812 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
813
814 /* Record the fields for the semantic handler. */
815 FLD (f_rn) = f_rn;
816 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_braf_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
817
818#undef FLD
819 return idesc;
820 }
821
822 extract_sfmt_brk_compact:
823 {
824 const IDESC *idesc = &sh64_compact_insn_data[itype];
825#define FLD(f) abuf->fields.fmt_empty.f
826
827
828 /* Record the fields for the semantic handler. */
829 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_brk_compact", (char *) 0));
830
831#undef FLD
832 return idesc;
833 }
834
835 extract_sfmt_bsr_compact:
836 {
837 const IDESC *idesc = &sh64_compact_insn_data[itype];
838 CGEN_INSN_INT insn = entire_insn;
839#define FLD(f) abuf->fields.sfmt_bra_compact.f
840 SI f_disp12;
841
842 f_disp12 = ((((EXTRACT_LSB0_INT (insn, 16, 11, 12)) << (1))) + (((pc) + (4))));
843
844 /* Record the fields for the semantic handler. */
845 FLD (i_disp12) = f_disp12;
846 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bsr_compact", "disp12 0x%x", 'x', f_disp12, (char *) 0));
847
848#undef FLD
849 return idesc;
850 }
851
852 extract_sfmt_bsrf_compact:
853 {
854 const IDESC *idesc = &sh64_compact_insn_data[itype];
855 CGEN_INSN_INT insn = entire_insn;
856#define FLD(f) abuf->fields.sfmt_movw10_compact.f
857 UINT f_rn;
858
859 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
860
861 /* Record the fields for the semantic handler. */
862 FLD (f_rn) = f_rn;
863 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bsrf_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
864
865#undef FLD
866 return idesc;
867 }
868
869 extract_sfmt_clrmac_compact:
870 {
871 const IDESC *idesc = &sh64_compact_insn_data[itype];
872#define FLD(f) abuf->fields.fmt_empty.f
873
874
875 /* Record the fields for the semantic handler. */
876 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_clrmac_compact", (char *) 0));
877
878#undef FLD
879 return idesc;
880 }
881
882 extract_sfmt_clrs_compact:
883 {
884 const IDESC *idesc = &sh64_compact_insn_data[itype];
885#define FLD(f) abuf->fields.fmt_empty.f
886
887
888 /* Record the fields for the semantic handler. */
889 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_clrs_compact", (char *) 0));
890
891#undef FLD
892 return idesc;
893 }
894
895 extract_sfmt_clrt_compact:
896 {
897 const IDESC *idesc = &sh64_compact_insn_data[itype];
898#define FLD(f) abuf->fields.fmt_empty.f
899
900
901 /* Record the fields for the semantic handler. */
902 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_clrt_compact", (char *) 0));
903
904#undef FLD
905 return idesc;
906 }
907
908 extract_sfmt_cmpeq_compact:
909 {
910 const IDESC *idesc = &sh64_compact_insn_data[itype];
911 CGEN_INSN_INT insn = entire_insn;
912#define FLD(f) abuf->fields.sfmt_movl5_compact.f
913 UINT f_rn;
914 UINT f_rm;
915
916 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
917 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
918
919 /* Record the fields for the semantic handler. */
920 FLD (f_rm) = f_rm;
921 FLD (f_rn) = f_rn;
922 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpeq_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
923
924#undef FLD
925 return idesc;
926 }
927
928 extract_sfmt_cmpeqi_compact:
929 {
930 const IDESC *idesc = &sh64_compact_insn_data[itype];
931 CGEN_INSN_INT insn = entire_insn;
932#define FLD(f) abuf->fields.sfmt_addi_compact.f
933 UINT f_imm8;
934
935 f_imm8 = EXTRACT_LSB0_UINT (insn, 16, 7, 8);
936
937 /* Record the fields for the semantic handler. */
938 FLD (f_imm8) = f_imm8;
939 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpeqi_compact", "f_imm8 0x%x", 'x', f_imm8, (char *) 0));
940
941#undef FLD
942 return idesc;
943 }
944
945 extract_sfmt_cmppl_compact:
946 {
947 const IDESC *idesc = &sh64_compact_insn_data[itype];
948 CGEN_INSN_INT insn = entire_insn;
949#define FLD(f) abuf->fields.sfmt_movw10_compact.f
950 UINT f_rn;
951
952 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
953
954 /* Record the fields for the semantic handler. */
955 FLD (f_rn) = f_rn;
956 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmppl_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
957
958#undef FLD
959 return idesc;
960 }
961
962 extract_sfmt_div0s_compact:
963 {
964 const IDESC *idesc = &sh64_compact_insn_data[itype];
965 CGEN_INSN_INT insn = entire_insn;
966#define FLD(f) abuf->fields.sfmt_movl5_compact.f
967 UINT f_rn;
968 UINT f_rm;
969
970 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
971 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
972
973 /* Record the fields for the semantic handler. */
974 FLD (f_rm) = f_rm;
975 FLD (f_rn) = f_rn;
976 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div0s_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
977
978#undef FLD
979 return idesc;
980 }
981
982 extract_sfmt_div0u_compact:
983 {
984 const IDESC *idesc = &sh64_compact_insn_data[itype];
985#define FLD(f) abuf->fields.fmt_empty.f
986
987
988 /* Record the fields for the semantic handler. */
989 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div0u_compact", (char *) 0));
990
991#undef FLD
992 return idesc;
993 }
994
995 extract_sfmt_div1_compact:
996 {
997 const IDESC *idesc = &sh64_compact_insn_data[itype];
998 CGEN_INSN_INT insn = entire_insn;
999#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1000 UINT f_rn;
1001 UINT f_rm;
1002
1003 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1004 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1005
1006 /* Record the fields for the semantic handler. */
1007 FLD (f_rm) = f_rm;
1008 FLD (f_rn) = f_rn;
1009 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div1_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
1010
1011#undef FLD
1012 return idesc;
1013 }
1014
1015 extract_sfmt_dmulsl_compact:
1016 {
1017 const IDESC *idesc = &sh64_compact_insn_data[itype];
1018 CGEN_INSN_INT insn = entire_insn;
1019#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1020 UINT f_rn;
1021 UINT f_rm;
1022
1023 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1024 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1025
1026 /* Record the fields for the semantic handler. */
1027 FLD (f_rm) = f_rm;
1028 FLD (f_rn) = f_rn;
1029 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmulsl_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
1030
1031#undef FLD
1032 return idesc;
1033 }
1034
1035 extract_sfmt_dt_compact:
1036 {
1037 const IDESC *idesc = &sh64_compact_insn_data[itype];
1038 CGEN_INSN_INT insn = entire_insn;
1039#define FLD(f) abuf->fields.sfmt_movw10_compact.f
1040 UINT f_rn;
1041
1042 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1043
1044 /* Record the fields for the semantic handler. */
1045 FLD (f_rn) = f_rn;
1046 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dt_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
1047
1048#undef FLD
1049 return idesc;
1050 }
1051
1052 extract_sfmt_extsb_compact:
1053 {
1054 const IDESC *idesc = &sh64_compact_insn_data[itype];
1055 CGEN_INSN_INT insn = entire_insn;
1056#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1057 UINT f_rn;
1058 UINT f_rm;
1059
1060 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1061 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1062
1063 /* Record the fields for the semantic handler. */
1064 FLD (f_rm) = f_rm;
1065 FLD (f_rn) = f_rn;
1066 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extsb_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
1067
1068#undef FLD
1069 return idesc;
1070 }
1071
1072 extract_sfmt_fabs_compact:
1073 {
1074 const IDESC *idesc = &sh64_compact_insn_data[itype];
1075 CGEN_INSN_INT insn = entire_insn;
1076#define FLD(f) abuf->fields.sfmt_movw10_compact.f
1077 UINT f_rn;
1078
1079 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1080
1081 /* Record the fields for the semantic handler. */
1082 FLD (f_rn) = f_rn;
1083 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fabs_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
1084
1085#undef FLD
1086 return idesc;
1087 }
1088
1089 extract_sfmt_fadd_compact:
1090 {
1091 const IDESC *idesc = &sh64_compact_insn_data[itype];
1092 CGEN_INSN_INT insn = entire_insn;
1093#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1094 UINT f_rn;
1095 UINT f_rm;
1096
1097 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1098 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1099
1100 /* Record the fields for the semantic handler. */
1101 FLD (f_rm) = f_rm;
1102 FLD (f_rn) = f_rn;
1103 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fadd_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
1104
1105#undef FLD
1106 return idesc;
1107 }
1108
1109 extract_sfmt_fcmpeq_compact:
1110 {
1111 const IDESC *idesc = &sh64_compact_insn_data[itype];
1112 CGEN_INSN_INT insn = entire_insn;
1113#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1114 UINT f_rn;
1115 UINT f_rm;
1116
1117 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1118 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1119
1120 /* Record the fields for the semantic handler. */
1121 FLD (f_rm) = f_rm;
1122 FLD (f_rn) = f_rn;
1123 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fcmpeq_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
1124
1125#undef FLD
1126 return idesc;
1127 }
1128
1129 extract_sfmt_fcnvds_compact:
1130 {
1131 const IDESC *idesc = &sh64_compact_insn_data[itype];
1132 CGEN_INSN_INT insn = entire_insn;
1133#define FLD(f) abuf->fields.sfmt_fcnvds_compact.f
1134 SI f_dn;
1135
1136 f_dn = ((EXTRACT_LSB0_UINT (insn, 16, 11, 3)) << (1));
1137
1138 /* Record the fields for the semantic handler. */
1139 FLD (f_dn) = f_dn;
1140 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fcnvds_compact", "f_dn 0x%x", 'x', f_dn, (char *) 0));
1141
1142#undef FLD
1143 return idesc;
1144 }
1145
1146 extract_sfmt_fcnvsd_compact:
1147 {
1148 const IDESC *idesc = &sh64_compact_insn_data[itype];
1149 CGEN_INSN_INT insn = entire_insn;
1150#define FLD(f) abuf->fields.sfmt_fcnvds_compact.f
1151 SI f_dn;
1152
1153 f_dn = ((EXTRACT_LSB0_UINT (insn, 16, 11, 3)) << (1));
1154
1155 /* Record the fields for the semantic handler. */
1156 FLD (f_dn) = f_dn;
1157 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fcnvsd_compact", "f_dn 0x%x", 'x', f_dn, (char *) 0));
1158
1159#undef FLD
1160 return idesc;
1161 }
1162
1163 extract_sfmt_fipr_compact:
1164 {
1165 const IDESC *idesc = &sh64_compact_insn_data[itype];
1166 CGEN_INSN_INT insn = entire_insn;
1167#define FLD(f) abuf->fields.sfmt_fipr_compact.f
1168 SI f_vn;
1169 SI f_vm;
1170
1171 f_vn = ((EXTRACT_LSB0_UINT (insn, 16, 11, 2)) << (2));
1172 f_vm = ((EXTRACT_LSB0_UINT (insn, 16, 9, 2)) << (2));
1173
1174 /* Record the fields for the semantic handler. */
1175 FLD (f_vm) = f_vm;
1176 FLD (f_vn) = f_vn;
1177 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fipr_compact", "f_vm 0x%x", 'x', f_vm, "f_vn 0x%x", 'x', f_vn, (char *) 0));
1178
1179#undef FLD
1180 return idesc;
1181 }
1182
1183 extract_sfmt_flds_compact:
1184 {
1185 const IDESC *idesc = &sh64_compact_insn_data[itype];
1186 CGEN_INSN_INT insn = entire_insn;
1187#define FLD(f) abuf->fields.sfmt_movw10_compact.f
1188 UINT f_rn;
1189
1190 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1191
1192 /* Record the fields for the semantic handler. */
1193 FLD (f_rn) = f_rn;
1194 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_flds_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
1195
1196#undef FLD
1197 return idesc;
1198 }
1199
1200 extract_sfmt_fldi0_compact:
1201 {
1202 const IDESC *idesc = &sh64_compact_insn_data[itype];
1203 CGEN_INSN_INT insn = entire_insn;
1204#define FLD(f) abuf->fields.sfmt_movw10_compact.f
1205 UINT f_rn;
1206
1207 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1208
1209 /* Record the fields for the semantic handler. */
1210 FLD (f_rn) = f_rn;
1211 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fldi0_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
1212
1213#undef FLD
1214 return idesc;
1215 }
1216
1217 extract_sfmt_float_compact:
1218 {
1219 const IDESC *idesc = &sh64_compact_insn_data[itype];
1220 CGEN_INSN_INT insn = entire_insn;
1221#define FLD(f) abuf->fields.sfmt_movw10_compact.f
1222 UINT f_rn;
1223
1224 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1225
1226 /* Record the fields for the semantic handler. */
1227 FLD (f_rn) = f_rn;
1228 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_float_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
1229
1230#undef FLD
1231 return idesc;
1232 }
1233
1234 extract_sfmt_fmac_compact:
1235 {
1236 const IDESC *idesc = &sh64_compact_insn_data[itype];
1237 CGEN_INSN_INT insn = entire_insn;
1238#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1239 UINT f_rn;
1240 UINT f_rm;
1241
1242 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1243 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1244
1245 /* Record the fields for the semantic handler. */
1246 FLD (f_rm) = f_rm;
1247 FLD (f_rn) = f_rn;
1248 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fmac_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
1249
1250#undef FLD
1251 return idesc;
1252 }
1253
1254 extract_sfmt_fmov1_compact:
1255 {
1256 const IDESC *idesc = &sh64_compact_insn_data[itype];
1257 CGEN_INSN_INT insn = entire_insn;
1258#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1259 UINT f_rn;
1260 UINT f_rm;
1261
1262 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1263 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1264
1265 /* Record the fields for the semantic handler. */
1266 FLD (f_rm) = f_rm;
1267 FLD (f_rn) = f_rn;
1268 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fmov1_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
1269
1270#undef FLD
1271 return idesc;
1272 }
1273
1274 extract_sfmt_fmov2_compact:
1275 {
1276 const IDESC *idesc = &sh64_compact_insn_data[itype];
1277 CGEN_INSN_INT insn = entire_insn;
1278#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1279 UINT f_rn;
1280 UINT f_rm;
1281
1282 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1283 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1284
1285 /* Record the fields for the semantic handler. */
1286 FLD (f_rn) = f_rn;
1287 FLD (f_rm) = f_rm;
1288 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fmov2_compact", "f_rn 0x%x", 'x', f_rn, "f_rm 0x%x", 'x', f_rm, (char *) 0));
1289
1290#undef FLD
1291 return idesc;
1292 }
1293
1294 extract_sfmt_fmov3_compact:
1295 {
1296 const IDESC *idesc = &sh64_compact_insn_data[itype];
1297 CGEN_INSN_INT insn = entire_insn;
1298#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1299 UINT f_rn;
1300 UINT f_rm;
1301
1302 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1303 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1304
1305 /* Record the fields for the semantic handler. */
1306 FLD (f_rn) = f_rn;
1307 FLD (f_rm) = f_rm;
1308 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fmov3_compact", "f_rn 0x%x", 'x', f_rn, "f_rm 0x%x", 'x', f_rm, (char *) 0));
1309
1310#undef FLD
1311 return idesc;
1312 }
1313
1314 extract_sfmt_fmov4_compact:
1315 {
1316 const IDESC *idesc = &sh64_compact_insn_data[itype];
1317 CGEN_INSN_INT insn = entire_insn;
1318#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1319 UINT f_rn;
1320 UINT f_rm;
1321
1322 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1323 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1324
1325 /* Record the fields for the semantic handler. */
1326 FLD (f_rn) = f_rn;
1327 FLD (f_rm) = f_rm;
1328 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fmov4_compact", "f_rn 0x%x", 'x', f_rn, "f_rm 0x%x", 'x', f_rm, (char *) 0));
1329
1330#undef FLD
1331 return idesc;
1332 }
1333
1334 extract_sfmt_fmov5_compact:
1335 {
1336 const IDESC *idesc = &sh64_compact_insn_data[itype];
1337 CGEN_INSN_INT insn = entire_insn;
1338#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1339 UINT f_rn;
1340 UINT f_rm;
1341
1342 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1343 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1344
1345 /* Record the fields for the semantic handler. */
1346 FLD (f_rm) = f_rm;
1347 FLD (f_rn) = f_rn;
1348 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fmov5_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
1349
1350#undef FLD
1351 return idesc;
1352 }
1353
1354 extract_sfmt_fmov6_compact:
1355 {
1356 const IDESC *idesc = &sh64_compact_insn_data[itype];
1357 CGEN_INSN_INT insn = entire_insn;
1358#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1359 UINT f_rn;
1360 UINT f_rm;
1361
1362 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1363 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1364
1365 /* Record the fields for the semantic handler. */
1366 FLD (f_rm) = f_rm;
1367 FLD (f_rn) = f_rn;
1368 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fmov6_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
1369
1370#undef FLD
1371 return idesc;
1372 }
1373
1374 extract_sfmt_fmov7_compact:
1375 {
1376 const IDESC *idesc = &sh64_compact_insn_data[itype];
1377 CGEN_INSN_INT insn = entire_insn;
1378#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1379 UINT f_rn;
1380 UINT f_rm;
1381
1382 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1383 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1384
1385 /* Record the fields for the semantic handler. */
1386 FLD (f_rm) = f_rm;
1387 FLD (f_rn) = f_rn;
1388 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fmov7_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
1389
1390#undef FLD
1391 return idesc;
1392 }
1393
1394 extract_sfmt_frchg_compact:
1395 {
1396 const IDESC *idesc = &sh64_compact_insn_data[itype];
1397#define FLD(f) abuf->fields.fmt_empty.f
1398
1399
1400 /* Record the fields for the semantic handler. */
1401 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_frchg_compact", (char *) 0));
1402
1403#undef FLD
1404 return idesc;
1405 }
1406
1407 extract_sfmt_fschg_compact:
1408 {
1409 const IDESC *idesc = &sh64_compact_insn_data[itype];
1410#define FLD(f) abuf->fields.fmt_empty.f
1411
1412
1413 /* Record the fields for the semantic handler. */
1414 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fschg_compact", (char *) 0));
1415
1416#undef FLD
1417 return idesc;
1418 }
1419
1420 extract_sfmt_fsts_compact:
1421 {
1422 const IDESC *idesc = &sh64_compact_insn_data[itype];
1423 CGEN_INSN_INT insn = entire_insn;
1424#define FLD(f) abuf->fields.sfmt_movw10_compact.f
1425 UINT f_rn;
1426
1427 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1428
1429 /* Record the fields for the semantic handler. */
1430 FLD (f_rn) = f_rn;
1431 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fsts_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
1432
1433#undef FLD
1434 return idesc;
1435 }
1436
1437 extract_sfmt_ftrc_compact:
1438 {
1439 const IDESC *idesc = &sh64_compact_insn_data[itype];
1440 CGEN_INSN_INT insn = entire_insn;
1441#define FLD(f) abuf->fields.sfmt_movw10_compact.f
1442 UINT f_rn;
1443
1444 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1445
1446 /* Record the fields for the semantic handler. */
1447 FLD (f_rn) = f_rn;
1448 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ftrc_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
1449
1450#undef FLD
1451 return idesc;
1452 }
1453
1454 extract_sfmt_ftrv_compact:
1455 {
1456 const IDESC *idesc = &sh64_compact_insn_data[itype];
1457 CGEN_INSN_INT insn = entire_insn;
1458#define FLD(f) abuf->fields.sfmt_fipr_compact.f
1459 SI f_vn;
1460
1461 f_vn = ((EXTRACT_LSB0_UINT (insn, 16, 11, 2)) << (2));
1462
1463 /* Record the fields for the semantic handler. */
1464 FLD (f_vn) = f_vn;
1465 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ftrv_compact", "f_vn 0x%x", 'x', f_vn, (char *) 0));
1466
1467#undef FLD
1468 return idesc;
1469 }
1470
1471 extract_sfmt_jmp_compact:
1472 {
1473 const IDESC *idesc = &sh64_compact_insn_data[itype];
1474 CGEN_INSN_INT insn = entire_insn;
1475#define FLD(f) abuf->fields.sfmt_movw10_compact.f
1476 UINT f_rn;
1477
1478 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1479
1480 /* Record the fields for the semantic handler. */
1481 FLD (f_rn) = f_rn;
1482 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jmp_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
1483
1484#undef FLD
1485 return idesc;
1486 }
1487
1488 extract_sfmt_ldc_compact:
1489 {
1490 const IDESC *idesc = &sh64_compact_insn_data[itype];
1491 CGEN_INSN_INT insn = entire_insn;
1492#define FLD(f) abuf->fields.sfmt_movw10_compact.f
1493 UINT f_rn;
1494
1495 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1496
1497 /* Record the fields for the semantic handler. */
1498 FLD (f_rn) = f_rn;
1499 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldc_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
1500
1501#undef FLD
1502 return idesc;
1503 }
1504
1505 extract_sfmt_ldcl_compact:
1506 {
1507 const IDESC *idesc = &sh64_compact_insn_data[itype];
1508 CGEN_INSN_INT insn = entire_insn;
1509#define FLD(f) abuf->fields.sfmt_movw10_compact.f
1510 UINT f_rn;
1511
1512 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1513
1514 /* Record the fields for the semantic handler. */
1515 FLD (f_rn) = f_rn;
1516 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldcl_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
1517
1518#undef FLD
1519 return idesc;
1520 }
1521
1522 extract_sfmt_lds_fpscr_compact:
1523 {
1524 const IDESC *idesc = &sh64_compact_insn_data[itype];
1525 CGEN_INSN_INT insn = entire_insn;
1526#define FLD(f) abuf->fields.sfmt_movw10_compact.f
1527 UINT f_rn;
1528
1529 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1530
1531 /* Record the fields for the semantic handler. */
1532 FLD (f_rn) = f_rn;
1533 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lds_fpscr_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
1534
1535#undef FLD
1536 return idesc;
1537 }
1538
1539 extract_sfmt_ldsl_fpscr_compact:
1540 {
1541 const IDESC *idesc = &sh64_compact_insn_data[itype];
1542 CGEN_INSN_INT insn = entire_insn;
1543#define FLD(f) abuf->fields.sfmt_movw10_compact.f
1544 UINT f_rn;
1545
1546 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1547
1548 /* Record the fields for the semantic handler. */
1549 FLD (f_rn) = f_rn;
1550 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldsl_fpscr_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
1551
1552#undef FLD
1553 return idesc;
1554 }
1555
1556 extract_sfmt_lds_fpul_compact:
1557 {
1558 const IDESC *idesc = &sh64_compact_insn_data[itype];
1559 CGEN_INSN_INT insn = entire_insn;
1560#define FLD(f) abuf->fields.sfmt_movw10_compact.f
1561 UINT f_rn;
1562
1563 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1564
1565 /* Record the fields for the semantic handler. */
1566 FLD (f_rn) = f_rn;
1567 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lds_fpul_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
1568
1569#undef FLD
1570 return idesc;
1571 }
1572
1573 extract_sfmt_ldsl_fpul_compact:
1574 {
1575 const IDESC *idesc = &sh64_compact_insn_data[itype];
1576 CGEN_INSN_INT insn = entire_insn;
1577#define FLD(f) abuf->fields.sfmt_movw10_compact.f
1578 UINT f_rn;
1579
1580 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1581
1582 /* Record the fields for the semantic handler. */
1583 FLD (f_rn) = f_rn;
1584 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldsl_fpul_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
1585
1586#undef FLD
1587 return idesc;
1588 }
1589
1590 extract_sfmt_lds_mach_compact:
1591 {
1592 const IDESC *idesc = &sh64_compact_insn_data[itype];
1593 CGEN_INSN_INT insn = entire_insn;
1594#define FLD(f) abuf->fields.sfmt_movw10_compact.f
1595 UINT f_rn;
1596
1597 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1598
1599 /* Record the fields for the semantic handler. */
1600 FLD (f_rn) = f_rn;
1601 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lds_mach_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
1602
1603#undef FLD
1604 return idesc;
1605 }
1606
1607 extract_sfmt_ldsl_mach_compact:
1608 {
1609 const IDESC *idesc = &sh64_compact_insn_data[itype];
1610 CGEN_INSN_INT insn = entire_insn;
1611#define FLD(f) abuf->fields.sfmt_movw10_compact.f
1612 UINT f_rn;
1613
1614 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1615
1616 /* Record the fields for the semantic handler. */
1617 FLD (f_rn) = f_rn;
1618 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldsl_mach_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
1619
1620#undef FLD
1621 return idesc;
1622 }
1623
1624 extract_sfmt_lds_macl_compact:
1625 {
1626 const IDESC *idesc = &sh64_compact_insn_data[itype];
1627 CGEN_INSN_INT insn = entire_insn;
1628#define FLD(f) abuf->fields.sfmt_movw10_compact.f
1629 UINT f_rn;
1630
1631 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1632
1633 /* Record the fields for the semantic handler. */
1634 FLD (f_rn) = f_rn;
1635 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lds_macl_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
1636
1637#undef FLD
1638 return idesc;
1639 }
1640
1641 extract_sfmt_ldsl_macl_compact:
1642 {
1643 const IDESC *idesc = &sh64_compact_insn_data[itype];
1644 CGEN_INSN_INT insn = entire_insn;
1645#define FLD(f) abuf->fields.sfmt_movw10_compact.f
1646 UINT f_rn;
1647
1648 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1649
1650 /* Record the fields for the semantic handler. */
1651 FLD (f_rn) = f_rn;
1652 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldsl_macl_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
1653
1654#undef FLD
1655 return idesc;
1656 }
1657
1658 extract_sfmt_lds_pr_compact:
1659 {
1660 const IDESC *idesc = &sh64_compact_insn_data[itype];
1661 CGEN_INSN_INT insn = entire_insn;
1662#define FLD(f) abuf->fields.sfmt_movw10_compact.f
1663 UINT f_rn;
1664
1665 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1666
1667 /* Record the fields for the semantic handler. */
1668 FLD (f_rn) = f_rn;
1669 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lds_pr_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
1670
1671#undef FLD
1672 return idesc;
1673 }
1674
1675 extract_sfmt_ldsl_pr_compact:
1676 {
1677 const IDESC *idesc = &sh64_compact_insn_data[itype];
1678 CGEN_INSN_INT insn = entire_insn;
1679#define FLD(f) abuf->fields.sfmt_movw10_compact.f
1680 UINT f_rn;
1681
1682 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1683
1684 /* Record the fields for the semantic handler. */
1685 FLD (f_rn) = f_rn;
1686 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldsl_pr_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
1687
1688#undef FLD
1689 return idesc;
1690 }
1691
1692 extract_sfmt_macl_compact:
1693 {
1694 const IDESC *idesc = &sh64_compact_insn_data[itype];
1695 CGEN_INSN_INT insn = entire_insn;
1696#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1697 UINT f_rn;
1698 UINT f_rm;
1699
1700 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1701 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1702
1703 /* Record the fields for the semantic handler. */
1704 FLD (f_rm) = f_rm;
1705 FLD (f_rn) = f_rn;
1706 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_macl_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
1707
1708#undef FLD
1709 return idesc;
1710 }
1711
1712 extract_sfmt_macw_compact:
1713 {
1714 const IDESC *idesc = &sh64_compact_insn_data[itype];
1715 CGEN_INSN_INT insn = entire_insn;
1716#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1717 UINT f_rn;
1718 UINT f_rm;
1719
1720 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1721 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1722
1723 /* Record the fields for the semantic handler. */
1724 FLD (f_rm) = f_rm;
1725 FLD (f_rn) = f_rn;
1726 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_macw_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
1727
1728#undef FLD
1729 return idesc;
1730 }
1731
1732 extract_sfmt_mov_compact:
1733 {
1734 const IDESC *idesc = &sh64_compact_insn_data[itype];
1735 CGEN_INSN_INT insn = entire_insn;
1736#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1737 UINT f_rn;
1738 UINT f_rm;
1739
1740 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1741 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1742
1743 /* Record the fields for the semantic handler. */
1744 FLD (f_rm) = f_rm;
1745 FLD (f_rn) = f_rn;
1746 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mov_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
1747
1748#undef FLD
1749 return idesc;
1750 }
1751
1752 extract_sfmt_movi_compact:
1753 {
1754 const IDESC *idesc = &sh64_compact_insn_data[itype];
1755 CGEN_INSN_INT insn = entire_insn;
1756#define FLD(f) abuf->fields.sfmt_addi_compact.f
1757 UINT f_rn;
1758 UINT f_imm8;
1759
1760 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1761 f_imm8 = EXTRACT_LSB0_UINT (insn, 16, 7, 8);
1762
1763 /* Record the fields for the semantic handler. */
1764 FLD (f_imm8) = f_imm8;
1765 FLD (f_rn) = f_rn;
1766 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movi_compact", "f_imm8 0x%x", 'x', f_imm8, "f_rn 0x%x", 'x', f_rn, (char *) 0));
1767
1768#undef FLD
1769 return idesc;
1770 }
1771
1772 extract_sfmt_movb1_compact:
1773 {
1774 const IDESC *idesc = &sh64_compact_insn_data[itype];
1775 CGEN_INSN_INT insn = entire_insn;
1776#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1777 UINT f_rn;
1778 UINT f_rm;
1779
1780 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1781 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1782
1783 /* Record the fields for the semantic handler. */
1784 FLD (f_rm) = f_rm;
1785 FLD (f_rn) = f_rn;
1786 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movb1_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
1787
1788#undef FLD
1789 return idesc;
1790 }
1791
1792 extract_sfmt_movb2_compact:
1793 {
1794 const IDESC *idesc = &sh64_compact_insn_data[itype];
1795 CGEN_INSN_INT insn = entire_insn;
1796#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1797 UINT f_rn;
1798 UINT f_rm;
1799
1800 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1801 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1802
1803 /* Record the fields for the semantic handler. */
1804 FLD (f_rm) = f_rm;
1805 FLD (f_rn) = f_rn;
1806 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movb2_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
1807
1808#undef FLD
1809 return idesc;
1810 }
1811
1812 extract_sfmt_movb3_compact:
1813 {
1814 const IDESC *idesc = &sh64_compact_insn_data[itype];
1815 CGEN_INSN_INT insn = entire_insn;
1816#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1817 UINT f_rn;
1818 UINT f_rm;
1819
1820 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1821 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1822
1823 /* Record the fields for the semantic handler. */
1824 FLD (f_rm) = f_rm;
1825 FLD (f_rn) = f_rn;
1826 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movb3_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
1827
1828#undef FLD
1829 return idesc;
1830 }
1831
1832 extract_sfmt_movb4_compact:
1833 {
1834 const IDESC *idesc = &sh64_compact_insn_data[itype];
1835 CGEN_INSN_INT insn = entire_insn;
1836#define FLD(f) abuf->fields.sfmt_addi_compact.f
1837 UINT f_imm8;
1838
1839 f_imm8 = EXTRACT_LSB0_UINT (insn, 16, 7, 8);
1840
1841 /* Record the fields for the semantic handler. */
1842 FLD (f_imm8) = f_imm8;
1843 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movb4_compact", "f_imm8 0x%x", 'x', f_imm8, (char *) 0));
1844
1845#undef FLD
1846 return idesc;
1847 }
1848
1849 extract_sfmt_movb5_compact:
1850 {
1851 const IDESC *idesc = &sh64_compact_insn_data[itype];
1852 CGEN_INSN_INT insn = entire_insn;
1853#define FLD(f) abuf->fields.sfmt_movb5_compact.f
1854 UINT f_rm;
1855 UINT f_imm4;
1856
1857 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1858 f_imm4 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
1859
1860 /* Record the fields for the semantic handler. */
1861 FLD (f_imm4) = f_imm4;
1862 FLD (f_rm) = f_rm;
1863 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movb5_compact", "f_imm4 0x%x", 'x', f_imm4, "f_rm 0x%x", 'x', f_rm, (char *) 0));
1864
1865#undef FLD
1866 return idesc;
1867 }
1868
1869 extract_sfmt_movb6_compact:
1870 {
1871 const IDESC *idesc = &sh64_compact_insn_data[itype];
1872 CGEN_INSN_INT insn = entire_insn;
1873#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1874 UINT f_rn;
1875 UINT f_rm;
1876
1877 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1878 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1879
1880 /* Record the fields for the semantic handler. */
1881 FLD (f_rm) = f_rm;
1882 FLD (f_rn) = f_rn;
1883 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movb6_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
1884
1885#undef FLD
1886 return idesc;
1887 }
1888
1889 extract_sfmt_movb7_compact:
1890 {
1891 const IDESC *idesc = &sh64_compact_insn_data[itype];
1892 CGEN_INSN_INT insn = entire_insn;
1893#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1894 UINT f_rn;
1895 UINT f_rm;
1896
1897 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1898 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1899
1900 /* Record the fields for the semantic handler. */
1901 FLD (f_rm) = f_rm;
1902 FLD (f_rn) = f_rn;
1903 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movb7_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
1904
1905#undef FLD
1906 return idesc;
1907 }
1908
1909 extract_sfmt_movb8_compact:
1910 {
1911 const IDESC *idesc = &sh64_compact_insn_data[itype];
1912 CGEN_INSN_INT insn = entire_insn;
1913#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1914 UINT f_rn;
1915 UINT f_rm;
1916
1917 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1918 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1919
1920 /* Record the fields for the semantic handler. */
1921 FLD (f_rm) = f_rm;
1922 FLD (f_rn) = f_rn;
1923 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movb8_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
1924
1925#undef FLD
1926 return idesc;
1927 }
1928
1929 extract_sfmt_movb9_compact:
1930 {
1931 const IDESC *idesc = &sh64_compact_insn_data[itype];
1932 CGEN_INSN_INT insn = entire_insn;
1933#define FLD(f) abuf->fields.sfmt_addi_compact.f
1934 UINT f_imm8;
1935
1936 f_imm8 = EXTRACT_LSB0_UINT (insn, 16, 7, 8);
1937
1938 /* Record the fields for the semantic handler. */
1939 FLD (f_imm8) = f_imm8;
1940 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movb9_compact", "f_imm8 0x%x", 'x', f_imm8, (char *) 0));
1941
1942#undef FLD
1943 return idesc;
1944 }
1945
1946 extract_sfmt_movb10_compact:
1947 {
1948 const IDESC *idesc = &sh64_compact_insn_data[itype];
1949 CGEN_INSN_INT insn = entire_insn;
1950#define FLD(f) abuf->fields.sfmt_movb5_compact.f
1951 UINT f_rm;
1952 UINT f_imm4;
1953
1954 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1955 f_imm4 = EXTRACT_LSB0_UINT (insn, 16, 3, 4);
1956
1957 /* Record the fields for the semantic handler. */
1958 FLD (f_imm4) = f_imm4;
1959 FLD (f_rm) = f_rm;
1960 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movb10_compact", "f_imm4 0x%x", 'x', f_imm4, "f_rm 0x%x", 'x', f_rm, (char *) 0));
1961
1962#undef FLD
1963 return idesc;
1964 }
1965
1966 extract_sfmt_movl4_compact:
1967 {
1968 const IDESC *idesc = &sh64_compact_insn_data[itype];
1969 CGEN_INSN_INT insn = entire_insn;
1970#define FLD(f) abuf->fields.sfmt_movl10_compact.f
1971 SI f_imm8x4;
1972
1973 f_imm8x4 = ((EXTRACT_LSB0_UINT (insn, 16, 7, 8)) << (2));
1974
1975 /* Record the fields for the semantic handler. */
1976 FLD (f_imm8x4) = f_imm8x4;
1977 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movl4_compact", "f_imm8x4 0x%x", 'x', f_imm8x4, (char *) 0));
1978
1979#undef FLD
1980 return idesc;
1981 }
1982
1983 extract_sfmt_movl5_compact:
1984 {
1985 const IDESC *idesc = &sh64_compact_insn_data[itype];
1986 CGEN_INSN_INT insn = entire_insn;
1987#define FLD(f) abuf->fields.sfmt_movl5_compact.f
1988 UINT f_rn;
1989 UINT f_rm;
1990 SI f_imm4x4;
1991
1992 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
1993 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
1994 f_imm4x4 = ((EXTRACT_LSB0_UINT (insn, 16, 3, 4)) << (2));
1995
1996 /* Record the fields for the semantic handler. */
1997 FLD (f_imm4x4) = f_imm4x4;
1998 FLD (f_rm) = f_rm;
1999 FLD (f_rn) = f_rn;
2000 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movl5_compact", "f_imm4x4 0x%x", 'x', f_imm4x4, "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
2001
2002#undef FLD
2003 return idesc;
2004 }
2005
2006 extract_sfmt_movl7_compact:
2007 {
2008 const IDESC *idesc = &sh64_compact_insn_data[itype];
2009 CGEN_INSN_INT insn = entire_insn;
2010#define FLD(f) abuf->fields.sfmt_movl5_compact.f
2011 UINT f_rn;
2012 UINT f_rm;
2013
2014 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2015 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
2016
2017 /* Record the fields for the semantic handler. */
2018 FLD (f_rm) = f_rm;
2019 FLD (f_rn) = f_rn;
2020 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movl7_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
2021
2022#undef FLD
2023 return idesc;
2024 }
2025
2026 extract_sfmt_movl9_compact:
2027 {
2028 const IDESC *idesc = &sh64_compact_insn_data[itype];
2029 CGEN_INSN_INT insn = entire_insn;
2030#define FLD(f) abuf->fields.sfmt_movl10_compact.f
2031 SI f_imm8x4;
2032
2033 f_imm8x4 = ((EXTRACT_LSB0_UINT (insn, 16, 7, 8)) << (2));
2034
2035 /* Record the fields for the semantic handler. */
2036 FLD (f_imm8x4) = f_imm8x4;
2037 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movl9_compact", "f_imm8x4 0x%x", 'x', f_imm8x4, (char *) 0));
2038
2039#undef FLD
2040 return idesc;
2041 }
2042
2043 extract_sfmt_movl10_compact:
2044 {
2045 const IDESC *idesc = &sh64_compact_insn_data[itype];
2046 CGEN_INSN_INT insn = entire_insn;
2047#define FLD(f) abuf->fields.sfmt_movl10_compact.f
2048 UINT f_rn;
2049 SI f_imm8x4;
2050
2051 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2052 f_imm8x4 = ((EXTRACT_LSB0_UINT (insn, 16, 7, 8)) << (2));
2053
2054 /* Record the fields for the semantic handler. */
2055 FLD (f_imm8x4) = f_imm8x4;
2056 FLD (f_rn) = f_rn;
2057 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movl10_compact", "f_imm8x4 0x%x", 'x', f_imm8x4, "f_rn 0x%x", 'x', f_rn, (char *) 0));
2058
2059#undef FLD
2060 return idesc;
2061 }
2062
2063 extract_sfmt_movl11_compact:
2064 {
2065 const IDESC *idesc = &sh64_compact_insn_data[itype];
2066 CGEN_INSN_INT insn = entire_insn;
2067#define FLD(f) abuf->fields.sfmt_movl5_compact.f
2068 UINT f_rn;
2069 UINT f_rm;
2070 SI f_imm4x4;
2071
2072 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2073 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
2074 f_imm4x4 = ((EXTRACT_LSB0_UINT (insn, 16, 3, 4)) << (2));
2075
2076 /* Record the fields for the semantic handler. */
2077 FLD (f_imm4x4) = f_imm4x4;
2078 FLD (f_rm) = f_rm;
2079 FLD (f_rn) = f_rn;
2080 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movl11_compact", "f_imm4x4 0x%x", 'x', f_imm4x4, "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
2081
2082#undef FLD
2083 return idesc;
2084 }
2085
2086 extract_sfmt_movw4_compact:
2087 {
2088 const IDESC *idesc = &sh64_compact_insn_data[itype];
2089 CGEN_INSN_INT insn = entire_insn;
2090#define FLD(f) abuf->fields.sfmt_movw10_compact.f
2091 SI f_imm8x2;
2092
2093 f_imm8x2 = ((EXTRACT_LSB0_UINT (insn, 16, 7, 8)) << (1));
2094
2095 /* Record the fields for the semantic handler. */
2096 FLD (f_imm8x2) = f_imm8x2;
2097 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movw4_compact", "f_imm8x2 0x%x", 'x', f_imm8x2, (char *) 0));
2098
2099#undef FLD
2100 return idesc;
2101 }
2102
2103 extract_sfmt_movw5_compact:
2104 {
2105 const IDESC *idesc = &sh64_compact_insn_data[itype];
2106 CGEN_INSN_INT insn = entire_insn;
2107#define FLD(f) abuf->fields.sfmt_movw5_compact.f
2108 UINT f_rn;
2109 SI f_imm4x2;
2110
2111 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2112 f_imm4x2 = ((EXTRACT_LSB0_UINT (insn, 16, 3, 4)) << (1));
2113
2114 /* Record the fields for the semantic handler. */
2115 FLD (f_imm4x2) = f_imm4x2;
2116 FLD (f_rn) = f_rn;
2117 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movw5_compact", "f_imm4x2 0x%x", 'x', f_imm4x2, "f_rn 0x%x", 'x', f_rn, (char *) 0));
2118
2119#undef FLD
2120 return idesc;
2121 }
2122
2123 extract_sfmt_movw9_compact:
2124 {
2125 const IDESC *idesc = &sh64_compact_insn_data[itype];
2126 CGEN_INSN_INT insn = entire_insn;
2127#define FLD(f) abuf->fields.sfmt_movw10_compact.f
2128 SI f_imm8x2;
2129
2130 f_imm8x2 = ((EXTRACT_LSB0_UINT (insn, 16, 7, 8)) << (1));
2131
2132 /* Record the fields for the semantic handler. */
2133 FLD (f_imm8x2) = f_imm8x2;
2134 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movw9_compact", "f_imm8x2 0x%x", 'x', f_imm8x2, (char *) 0));
2135
2136#undef FLD
2137 return idesc;
2138 }
2139
2140 extract_sfmt_movw10_compact:
2141 {
2142 const IDESC *idesc = &sh64_compact_insn_data[itype];
2143 CGEN_INSN_INT insn = entire_insn;
2144#define FLD(f) abuf->fields.sfmt_movw10_compact.f
2145 UINT f_rn;
2146 SI f_imm8x2;
2147
2148 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2149 f_imm8x2 = ((EXTRACT_LSB0_UINT (insn, 16, 7, 8)) << (1));
2150
2151 /* Record the fields for the semantic handler. */
2152 FLD (f_imm8x2) = f_imm8x2;
2153 FLD (f_rn) = f_rn;
2154 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movw10_compact", "f_imm8x2 0x%x", 'x', f_imm8x2, "f_rn 0x%x", 'x', f_rn, (char *) 0));
2155
2156#undef FLD
2157 return idesc;
2158 }
2159
2160 extract_sfmt_movw11_compact:
2161 {
2162 const IDESC *idesc = &sh64_compact_insn_data[itype];
2163 CGEN_INSN_INT insn = entire_insn;
2164#define FLD(f) abuf->fields.sfmt_movw11_compact.f
2165 UINT f_rm;
2166 SI f_imm4x2;
2167
2168 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
2169 f_imm4x2 = ((EXTRACT_LSB0_UINT (insn, 16, 3, 4)) << (1));
2170
2171 /* Record the fields for the semantic handler. */
2172 FLD (f_imm4x2) = f_imm4x2;
2173 FLD (f_rm) = f_rm;
2174 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movw11_compact", "f_imm4x2 0x%x", 'x', f_imm4x2, "f_rm 0x%x", 'x', f_rm, (char *) 0));
2175
2176#undef FLD
2177 return idesc;
2178 }
2179
2180 extract_sfmt_mova_compact:
2181 {
2182 const IDESC *idesc = &sh64_compact_insn_data[itype];
2183 CGEN_INSN_INT insn = entire_insn;
2184#define FLD(f) abuf->fields.sfmt_movl10_compact.f
2185 SI f_imm8x4;
2186
2187 f_imm8x4 = ((EXTRACT_LSB0_UINT (insn, 16, 7, 8)) << (2));
2188
2189 /* Record the fields for the semantic handler. */
2190 FLD (f_imm8x4) = f_imm8x4;
2191 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mova_compact", "f_imm8x4 0x%x", 'x', f_imm8x4, (char *) 0));
2192
2193#undef FLD
2194 return idesc;
2195 }
2196
2197 extract_sfmt_movcal_compact:
2198 {
2199 const IDESC *idesc = &sh64_compact_insn_data[itype];
2200 CGEN_INSN_INT insn = entire_insn;
2201#define FLD(f) abuf->fields.sfmt_movw10_compact.f
2202 UINT f_rn;
2203
2204 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2205
2206 /* Record the fields for the semantic handler. */
2207 FLD (f_rn) = f_rn;
2208 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movcal_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
2209
2210#undef FLD
2211 return idesc;
2212 }
2213
2214 extract_sfmt_movt_compact:
2215 {
2216 const IDESC *idesc = &sh64_compact_insn_data[itype];
2217 CGEN_INSN_INT insn = entire_insn;
2218#define FLD(f) abuf->fields.sfmt_movw10_compact.f
2219 UINT f_rn;
2220
2221 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2222
2223 /* Record the fields for the semantic handler. */
2224 FLD (f_rn) = f_rn;
2225 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movt_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
2226
2227#undef FLD
2228 return idesc;
2229 }
2230
2231 extract_sfmt_mull_compact:
2232 {
2233 const IDESC *idesc = &sh64_compact_insn_data[itype];
2234 CGEN_INSN_INT insn = entire_insn;
2235#define FLD(f) abuf->fields.sfmt_movl5_compact.f
2236 UINT f_rn;
2237 UINT f_rm;
2238
2239 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2240 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
2241
2242 /* Record the fields for the semantic handler. */
2243 FLD (f_rm) = f_rm;
2244 FLD (f_rn) = f_rn;
2245 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mull_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
2246
2247#undef FLD
2248 return idesc;
2249 }
2250
2251 extract_sfmt_negc_compact:
2252 {
2253 const IDESC *idesc = &sh64_compact_insn_data[itype];
2254 CGEN_INSN_INT insn = entire_insn;
2255#define FLD(f) abuf->fields.sfmt_movl5_compact.f
2256 UINT f_rn;
2257 UINT f_rm;
2258
2259 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2260 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
2261
2262 /* Record the fields for the semantic handler. */
2263 FLD (f_rm) = f_rm;
2264 FLD (f_rn) = f_rn;
2265 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_negc_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
2266
2267#undef FLD
2268 return idesc;
2269 }
2270
2271 extract_sfmt_nop_compact:
2272 {
2273 const IDESC *idesc = &sh64_compact_insn_data[itype];
2274#define FLD(f) abuf->fields.fmt_empty.f
2275
2276
2277 /* Record the fields for the semantic handler. */
2278 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_nop_compact", (char *) 0));
2279
2280#undef FLD
2281 return idesc;
2282 }
2283
2284 extract_sfmt_rotcl_compact:
2285 {
2286 const IDESC *idesc = &sh64_compact_insn_data[itype];
2287 CGEN_INSN_INT insn = entire_insn;
2288#define FLD(f) abuf->fields.sfmt_movw10_compact.f
2289 UINT f_rn;
2290
2291 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2292
2293 /* Record the fields for the semantic handler. */
2294 FLD (f_rn) = f_rn;
2295 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_rotcl_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
2296
2297#undef FLD
2298 return idesc;
2299 }
2300
2301 extract_sfmt_rts_compact:
2302 {
2303 const IDESC *idesc = &sh64_compact_insn_data[itype];
2304#define FLD(f) abuf->fields.fmt_empty.f
2305
2306
2307 /* Record the fields for the semantic handler. */
2308 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_rts_compact", (char *) 0));
2309
2310#undef FLD
2311 return idesc;
2312 }
2313
2314 extract_sfmt_shad_compact:
2315 {
2316 const IDESC *idesc = &sh64_compact_insn_data[itype];
2317 CGEN_INSN_INT insn = entire_insn;
2318#define FLD(f) abuf->fields.sfmt_movl5_compact.f
2319 UINT f_rn;
2320 UINT f_rm;
2321
2322 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2323 f_rm = EXTRACT_LSB0_UINT (insn, 16, 7, 4);
2324
2325 /* Record the fields for the semantic handler. */
2326 FLD (f_rm) = f_rm;
2327 FLD (f_rn) = f_rn;
2328 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_shad_compact", "f_rm 0x%x", 'x', f_rm, "f_rn 0x%x", 'x', f_rn, (char *) 0));
2329
2330#undef FLD
2331 return idesc;
2332 }
2333
2334 extract_sfmt_shll2_compact:
2335 {
2336 const IDESC *idesc = &sh64_compact_insn_data[itype];
2337 CGEN_INSN_INT insn = entire_insn;
2338#define FLD(f) abuf->fields.sfmt_movw10_compact.f
2339 UINT f_rn;
2340
2341 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2342
2343 /* Record the fields for the semantic handler. */
2344 FLD (f_rn) = f_rn;
2345 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_shll2_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
2346
2347#undef FLD
2348 return idesc;
2349 }
2350
2351 extract_sfmt_stc_gbr_compact:
2352 {
2353 const IDESC *idesc = &sh64_compact_insn_data[itype];
2354 CGEN_INSN_INT insn = entire_insn;
2355#define FLD(f) abuf->fields.sfmt_movw10_compact.f
2356 UINT f_rn;
2357
2358 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2359
2360 /* Record the fields for the semantic handler. */
2361 FLD (f_rn) = f_rn;
2362 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stc_gbr_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
2363
2364#undef FLD
2365 return idesc;
2366 }
2367
2368 extract_sfmt_stcl_gbr_compact:
2369 {
2370 const IDESC *idesc = &sh64_compact_insn_data[itype];
2371 CGEN_INSN_INT insn = entire_insn;
2372#define FLD(f) abuf->fields.sfmt_movw10_compact.f
2373 UINT f_rn;
2374
2375 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2376
2377 /* Record the fields for the semantic handler. */
2378 FLD (f_rn) = f_rn;
2379 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stcl_gbr_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
2380
2381#undef FLD
2382 return idesc;
2383 }
2384
2385 extract_sfmt_sts_fpscr_compact:
2386 {
2387 const IDESC *idesc = &sh64_compact_insn_data[itype];
2388 CGEN_INSN_INT insn = entire_insn;
2389#define FLD(f) abuf->fields.sfmt_movw10_compact.f
2390 UINT f_rn;
2391
2392 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2393
2394 /* Record the fields for the semantic handler. */
2395 FLD (f_rn) = f_rn;
2396 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sts_fpscr_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
2397
2398#undef FLD
2399 return idesc;
2400 }
2401
2402 extract_sfmt_stsl_fpscr_compact:
2403 {
2404 const IDESC *idesc = &sh64_compact_insn_data[itype];
2405 CGEN_INSN_INT insn = entire_insn;
2406#define FLD(f) abuf->fields.sfmt_movw10_compact.f
2407 UINT f_rn;
2408
2409 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2410
2411 /* Record the fields for the semantic handler. */
2412 FLD (f_rn) = f_rn;
2413 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stsl_fpscr_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
2414
2415#undef FLD
2416 return idesc;
2417 }
2418
2419 extract_sfmt_sts_fpul_compact:
2420 {
2421 const IDESC *idesc = &sh64_compact_insn_data[itype];
2422 CGEN_INSN_INT insn = entire_insn;
2423#define FLD(f) abuf->fields.sfmt_movw10_compact.f
2424 UINT f_rn;
2425
2426 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2427
2428 /* Record the fields for the semantic handler. */
2429 FLD (f_rn) = f_rn;
2430 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sts_fpul_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
2431
2432#undef FLD
2433 return idesc;
2434 }
2435
2436 extract_sfmt_stsl_fpul_compact:
2437 {
2438 const IDESC *idesc = &sh64_compact_insn_data[itype];
2439 CGEN_INSN_INT insn = entire_insn;
2440#define FLD(f) abuf->fields.sfmt_movw10_compact.f
2441 UINT f_rn;
2442
2443 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2444
2445 /* Record the fields for the semantic handler. */
2446 FLD (f_rn) = f_rn;
2447 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stsl_fpul_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
2448
2449#undef FLD
2450 return idesc;
2451 }
2452
2453 extract_sfmt_sts_mach_compact:
2454 {
2455 const IDESC *idesc = &sh64_compact_insn_data[itype];
2456 CGEN_INSN_INT insn = entire_insn;
2457#define FLD(f) abuf->fields.sfmt_movw10_compact.f
2458 UINT f_rn;
2459
2460 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2461
2462 /* Record the fields for the semantic handler. */
2463 FLD (f_rn) = f_rn;
2464 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sts_mach_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
2465
2466#undef FLD
2467 return idesc;
2468 }
2469
2470 extract_sfmt_stsl_mach_compact:
2471 {
2472 const IDESC *idesc = &sh64_compact_insn_data[itype];
2473 CGEN_INSN_INT insn = entire_insn;
2474#define FLD(f) abuf->fields.sfmt_movw10_compact.f
2475 UINT f_rn;
2476
2477 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2478
2479 /* Record the fields for the semantic handler. */
2480 FLD (f_rn) = f_rn;
2481 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stsl_mach_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
2482
2483#undef FLD
2484 return idesc;
2485 }
2486
2487 extract_sfmt_sts_macl_compact:
2488 {
2489 const IDESC *idesc = &sh64_compact_insn_data[itype];
2490 CGEN_INSN_INT insn = entire_insn;
2491#define FLD(f) abuf->fields.sfmt_movw10_compact.f
2492 UINT f_rn;
2493
2494 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2495
2496 /* Record the fields for the semantic handler. */
2497 FLD (f_rn) = f_rn;
2498 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sts_macl_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
2499
2500#undef FLD
2501 return idesc;
2502 }
2503
2504 extract_sfmt_stsl_macl_compact:
2505 {
2506 const IDESC *idesc = &sh64_compact_insn_data[itype];
2507 CGEN_INSN_INT insn = entire_insn;
2508#define FLD(f) abuf->fields.sfmt_movw10_compact.f
2509 UINT f_rn;
2510
2511 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2512
2513 /* Record the fields for the semantic handler. */
2514 FLD (f_rn) = f_rn;
2515 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stsl_macl_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
2516
2517#undef FLD
2518 return idesc;
2519 }
2520
2521 extract_sfmt_sts_pr_compact:
2522 {
2523 const IDESC *idesc = &sh64_compact_insn_data[itype];
2524 CGEN_INSN_INT insn = entire_insn;
2525#define FLD(f) abuf->fields.sfmt_movw10_compact.f
2526 UINT f_rn;
2527
2528 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2529
2530 /* Record the fields for the semantic handler. */
2531 FLD (f_rn) = f_rn;
2532 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sts_pr_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
2533
2534#undef FLD
2535 return idesc;
2536 }
2537
2538 extract_sfmt_stsl_pr_compact:
2539 {
2540 const IDESC *idesc = &sh64_compact_insn_data[itype];
2541 CGEN_INSN_INT insn = entire_insn;
2542#define FLD(f) abuf->fields.sfmt_movw10_compact.f
2543 UINT f_rn;
2544
2545 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2546
2547 /* Record the fields for the semantic handler. */
2548 FLD (f_rn) = f_rn;
2549 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stsl_pr_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
2550
2551#undef FLD
2552 return idesc;
2553 }
2554
2555 extract_sfmt_tasb_compact:
2556 {
2557 const IDESC *idesc = &sh64_compact_insn_data[itype];
2558 CGEN_INSN_INT insn = entire_insn;
2559#define FLD(f) abuf->fields.sfmt_movw10_compact.f
2560 UINT f_rn;
2561
2562 f_rn = EXTRACT_LSB0_UINT (insn, 16, 11, 4);
2563
2564 /* Record the fields for the semantic handler. */
2565 FLD (f_rn) = f_rn;
2566 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_tasb_compact", "f_rn 0x%x", 'x', f_rn, (char *) 0));
2567
2568#undef FLD
2569 return idesc;
2570 }
2571
2572 extract_sfmt_trapa_compact:
2573 {
2574 const IDESC *idesc = &sh64_compact_insn_data[itype];
2575 CGEN_INSN_INT insn = entire_insn;
2576#define FLD(f) abuf->fields.sfmt_addi_compact.f
2577 UINT f_imm8;
2578
2579 f_imm8 = EXTRACT_LSB0_UINT (insn, 16, 7, 8);
2580
2581 /* Record the fields for the semantic handler. */
2582 FLD (f_imm8) = f_imm8;
2583 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_trapa_compact", "f_imm8 0x%x", 'x', f_imm8, (char *) 0));
2584
2585#undef FLD
2586 return idesc;
2587 }
2588
2589 extract_sfmt_tsti_compact:
2590 {
2591 const IDESC *idesc = &sh64_compact_insn_data[itype];
2592 CGEN_INSN_INT insn = entire_insn;
2593#define FLD(f) abuf->fields.sfmt_addi_compact.f
2594 UINT f_imm8;
2595
2596 f_imm8 = EXTRACT_LSB0_UINT (insn, 16, 7, 8);
2597
2598 /* Record the fields for the semantic handler. */
2599 FLD (f_imm8) = f_imm8;
2600 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_tsti_compact", "f_imm8 0x%x", 'x', f_imm8, (char *) 0));
2601
2602#undef FLD
2603 return idesc;
2604 }
2605
2606 extract_sfmt_tstb_compact:
2607 {
2608 const IDESC *idesc = &sh64_compact_insn_data[itype];
2609 CGEN_INSN_INT insn = entire_insn;
2610#define FLD(f) abuf->fields.sfmt_addi_compact.f
2611 UINT f_imm8;
2612
2613 f_imm8 = EXTRACT_LSB0_UINT (insn, 16, 7, 8);
2614
2615 /* Record the fields for the semantic handler. */
2616 FLD (f_imm8) = f_imm8;
2617 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_tstb_compact", "f_imm8 0x%x", 'x', f_imm8, (char *) 0));
2618
2619#undef FLD
2620 return idesc;
2621 }
2622
2623 extract_sfmt_xori_compact:
2624 {
2625 const IDESC *idesc = &sh64_compact_insn_data[itype];
2626 CGEN_INSN_INT insn = entire_insn;
2627#define FLD(f) abuf->fields.sfmt_addi_compact.f
2628 UINT f_imm8;
2629
2630 f_imm8 = EXTRACT_LSB0_UINT (insn, 16, 7, 8);
2631
2632 /* Record the fields for the semantic handler. */
2633 FLD (f_imm8) = f_imm8;
2634 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_xori_compact", "f_imm8 0x%x", 'x', f_imm8, (char *) 0));
2635
2636#undef FLD
2637 return idesc;
2638 }
2639
2640}
This page took 0.300087 seconds and 4 git commands to generate.