Commit | Line | Data |
---|---|---|
cbb38b47 BE |
1 | /* Simulator instruction decoder for sh64_compact. |
2 | ||
3 | THIS FILE IS MACHINE GENERATED WITH CGEN. | |
4 | ||
5 | Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. | |
6 | ||
7 | This file is part of the GNU Simulators. | |
8 | ||
9 | This program is free software; you can redistribute it and/or modify | |
10 | it under the terms of the GNU General Public License as published by | |
11 | the Free Software Foundation; either version 2, or (at your option) | |
12 | any later version. | |
13 | ||
14 | This program is distributed in the hope that it will be useful, | |
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 | GNU General Public License for more details. | |
18 | ||
19 | You should have received a copy of the GNU General Public License along | |
20 | with this program; if not, write to the Free Software Foundation, Inc., | |
21 | 59 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). */ | |
36 | static 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 | ||
41 | static 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 | ||
230 | static 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 | ||
236 | static INLINE void | |
237 | init_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 | ||
264 | void | |
265 | sh64_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 | ||
292 | const IDESC * | |
293 | sh64_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 | } |