Import current --enable-gdb-build-warnings.
[deliverable/binutils-gdb.git] / sim / fr30 / decode.c
1 /* Simulator instruction decoder for fr30bf.
2
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5 Copyright 1996, 1997, 1998, 1999, 2000, 2001 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 fr30bf
26 #define WANT_CPU_FR30BF
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 fr30bf_insn_data[FR30BF_INSN_XCHB + 1];
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 fr30bf_insn_sem[] =
42 {
43 { VIRTUAL_INSN_X_INVALID, FR30BF_INSN_X_INVALID, FR30BF_SFMT_EMPTY },
44 { VIRTUAL_INSN_X_AFTER, FR30BF_INSN_X_AFTER, FR30BF_SFMT_EMPTY },
45 { VIRTUAL_INSN_X_BEFORE, FR30BF_INSN_X_BEFORE, FR30BF_SFMT_EMPTY },
46 { VIRTUAL_INSN_X_CTI_CHAIN, FR30BF_INSN_X_CTI_CHAIN, FR30BF_SFMT_EMPTY },
47 { VIRTUAL_INSN_X_CHAIN, FR30BF_INSN_X_CHAIN, FR30BF_SFMT_EMPTY },
48 { VIRTUAL_INSN_X_BEGIN, FR30BF_INSN_X_BEGIN, FR30BF_SFMT_EMPTY },
49 { FR30_INSN_ADD, FR30BF_INSN_ADD, FR30BF_SFMT_ADD },
50 { FR30_INSN_ADDI, FR30BF_INSN_ADDI, FR30BF_SFMT_ADDI },
51 { FR30_INSN_ADD2, FR30BF_INSN_ADD2, FR30BF_SFMT_ADD2 },
52 { FR30_INSN_ADDC, FR30BF_INSN_ADDC, FR30BF_SFMT_ADDC },
53 { FR30_INSN_ADDN, FR30BF_INSN_ADDN, FR30BF_SFMT_ADDN },
54 { FR30_INSN_ADDNI, FR30BF_INSN_ADDNI, FR30BF_SFMT_ADDNI },
55 { FR30_INSN_ADDN2, FR30BF_INSN_ADDN2, FR30BF_SFMT_ADDN2 },
56 { FR30_INSN_SUB, FR30BF_INSN_SUB, FR30BF_SFMT_ADD },
57 { FR30_INSN_SUBC, FR30BF_INSN_SUBC, FR30BF_SFMT_ADDC },
58 { FR30_INSN_SUBN, FR30BF_INSN_SUBN, FR30BF_SFMT_ADDN },
59 { FR30_INSN_CMP, FR30BF_INSN_CMP, FR30BF_SFMT_CMP },
60 { FR30_INSN_CMPI, FR30BF_INSN_CMPI, FR30BF_SFMT_CMPI },
61 { FR30_INSN_CMP2, FR30BF_INSN_CMP2, FR30BF_SFMT_CMP2 },
62 { FR30_INSN_AND, FR30BF_INSN_AND, FR30BF_SFMT_AND },
63 { FR30_INSN_OR, FR30BF_INSN_OR, FR30BF_SFMT_AND },
64 { FR30_INSN_EOR, FR30BF_INSN_EOR, FR30BF_SFMT_AND },
65 { FR30_INSN_ANDM, FR30BF_INSN_ANDM, FR30BF_SFMT_ANDM },
66 { FR30_INSN_ANDH, FR30BF_INSN_ANDH, FR30BF_SFMT_ANDH },
67 { FR30_INSN_ANDB, FR30BF_INSN_ANDB, FR30BF_SFMT_ANDB },
68 { FR30_INSN_ORM, FR30BF_INSN_ORM, FR30BF_SFMT_ANDM },
69 { FR30_INSN_ORH, FR30BF_INSN_ORH, FR30BF_SFMT_ANDH },
70 { FR30_INSN_ORB, FR30BF_INSN_ORB, FR30BF_SFMT_ANDB },
71 { FR30_INSN_EORM, FR30BF_INSN_EORM, FR30BF_SFMT_ANDM },
72 { FR30_INSN_EORH, FR30BF_INSN_EORH, FR30BF_SFMT_ANDH },
73 { FR30_INSN_EORB, FR30BF_INSN_EORB, FR30BF_SFMT_ANDB },
74 { FR30_INSN_BANDL, FR30BF_INSN_BANDL, FR30BF_SFMT_BANDL },
75 { FR30_INSN_BORL, FR30BF_INSN_BORL, FR30BF_SFMT_BANDL },
76 { FR30_INSN_BEORL, FR30BF_INSN_BEORL, FR30BF_SFMT_BANDL },
77 { FR30_INSN_BANDH, FR30BF_INSN_BANDH, FR30BF_SFMT_BANDL },
78 { FR30_INSN_BORH, FR30BF_INSN_BORH, FR30BF_SFMT_BANDL },
79 { FR30_INSN_BEORH, FR30BF_INSN_BEORH, FR30BF_SFMT_BANDL },
80 { FR30_INSN_BTSTL, FR30BF_INSN_BTSTL, FR30BF_SFMT_BTSTL },
81 { FR30_INSN_BTSTH, FR30BF_INSN_BTSTH, FR30BF_SFMT_BTSTL },
82 { FR30_INSN_MUL, FR30BF_INSN_MUL, FR30BF_SFMT_MUL },
83 { FR30_INSN_MULU, FR30BF_INSN_MULU, FR30BF_SFMT_MULU },
84 { FR30_INSN_MULH, FR30BF_INSN_MULH, FR30BF_SFMT_MULH },
85 { FR30_INSN_MULUH, FR30BF_INSN_MULUH, FR30BF_SFMT_MULH },
86 { FR30_INSN_DIV0S, FR30BF_INSN_DIV0S, FR30BF_SFMT_DIV0S },
87 { FR30_INSN_DIV0U, FR30BF_INSN_DIV0U, FR30BF_SFMT_DIV0U },
88 { FR30_INSN_DIV1, FR30BF_INSN_DIV1, FR30BF_SFMT_DIV1 },
89 { FR30_INSN_DIV2, FR30BF_INSN_DIV2, FR30BF_SFMT_DIV2 },
90 { FR30_INSN_DIV3, FR30BF_INSN_DIV3, FR30BF_SFMT_DIV3 },
91 { FR30_INSN_DIV4S, FR30BF_INSN_DIV4S, FR30BF_SFMT_DIV4S },
92 { FR30_INSN_LSL, FR30BF_INSN_LSL, FR30BF_SFMT_LSL },
93 { FR30_INSN_LSLI, FR30BF_INSN_LSLI, FR30BF_SFMT_LSLI },
94 { FR30_INSN_LSL2, FR30BF_INSN_LSL2, FR30BF_SFMT_LSLI },
95 { FR30_INSN_LSR, FR30BF_INSN_LSR, FR30BF_SFMT_LSL },
96 { FR30_INSN_LSRI, FR30BF_INSN_LSRI, FR30BF_SFMT_LSLI },
97 { FR30_INSN_LSR2, FR30BF_INSN_LSR2, FR30BF_SFMT_LSLI },
98 { FR30_INSN_ASR, FR30BF_INSN_ASR, FR30BF_SFMT_LSL },
99 { FR30_INSN_ASRI, FR30BF_INSN_ASRI, FR30BF_SFMT_LSLI },
100 { FR30_INSN_ASR2, FR30BF_INSN_ASR2, FR30BF_SFMT_LSLI },
101 { FR30_INSN_LDI8, FR30BF_INSN_LDI8, FR30BF_SFMT_LDI8 },
102 { FR30_INSN_LDI20, FR30BF_INSN_LDI20, FR30BF_SFMT_LDI20 },
103 { FR30_INSN_LDI32, FR30BF_INSN_LDI32, FR30BF_SFMT_LDI32 },
104 { FR30_INSN_LD, FR30BF_INSN_LD, FR30BF_SFMT_LD },
105 { FR30_INSN_LDUH, FR30BF_INSN_LDUH, FR30BF_SFMT_LDUH },
106 { FR30_INSN_LDUB, FR30BF_INSN_LDUB, FR30BF_SFMT_LDUB },
107 { FR30_INSN_LDR13, FR30BF_INSN_LDR13, FR30BF_SFMT_LDR13 },
108 { FR30_INSN_LDR13UH, FR30BF_INSN_LDR13UH, FR30BF_SFMT_LDR13UH },
109 { FR30_INSN_LDR13UB, FR30BF_INSN_LDR13UB, FR30BF_SFMT_LDR13UB },
110 { FR30_INSN_LDR14, FR30BF_INSN_LDR14, FR30BF_SFMT_LDR14 },
111 { FR30_INSN_LDR14UH, FR30BF_INSN_LDR14UH, FR30BF_SFMT_LDR14UH },
112 { FR30_INSN_LDR14UB, FR30BF_INSN_LDR14UB, FR30BF_SFMT_LDR14UB },
113 { FR30_INSN_LDR15, FR30BF_INSN_LDR15, FR30BF_SFMT_LDR15 },
114 { FR30_INSN_LDR15GR, FR30BF_INSN_LDR15GR, FR30BF_SFMT_LDR15GR },
115 { FR30_INSN_LDR15DR, FR30BF_INSN_LDR15DR, FR30BF_SFMT_LDR15DR },
116 { FR30_INSN_LDR15PS, FR30BF_INSN_LDR15PS, FR30BF_SFMT_LDR15PS },
117 { FR30_INSN_ST, FR30BF_INSN_ST, FR30BF_SFMT_ST },
118 { FR30_INSN_STH, FR30BF_INSN_STH, FR30BF_SFMT_STH },
119 { FR30_INSN_STB, FR30BF_INSN_STB, FR30BF_SFMT_STB },
120 { FR30_INSN_STR13, FR30BF_INSN_STR13, FR30BF_SFMT_STR13 },
121 { FR30_INSN_STR13H, FR30BF_INSN_STR13H, FR30BF_SFMT_STR13H },
122 { FR30_INSN_STR13B, FR30BF_INSN_STR13B, FR30BF_SFMT_STR13B },
123 { FR30_INSN_STR14, FR30BF_INSN_STR14, FR30BF_SFMT_STR14 },
124 { FR30_INSN_STR14H, FR30BF_INSN_STR14H, FR30BF_SFMT_STR14H },
125 { FR30_INSN_STR14B, FR30BF_INSN_STR14B, FR30BF_SFMT_STR14B },
126 { FR30_INSN_STR15, FR30BF_INSN_STR15, FR30BF_SFMT_STR15 },
127 { FR30_INSN_STR15GR, FR30BF_INSN_STR15GR, FR30BF_SFMT_STR15GR },
128 { FR30_INSN_STR15DR, FR30BF_INSN_STR15DR, FR30BF_SFMT_STR15DR },
129 { FR30_INSN_STR15PS, FR30BF_INSN_STR15PS, FR30BF_SFMT_STR15PS },
130 { FR30_INSN_MOV, FR30BF_INSN_MOV, FR30BF_SFMT_MOV },
131 { FR30_INSN_MOVDR, FR30BF_INSN_MOVDR, FR30BF_SFMT_MOVDR },
132 { FR30_INSN_MOVPS, FR30BF_INSN_MOVPS, FR30BF_SFMT_MOVPS },
133 { FR30_INSN_MOV2DR, FR30BF_INSN_MOV2DR, FR30BF_SFMT_MOV2DR },
134 { FR30_INSN_MOV2PS, FR30BF_INSN_MOV2PS, FR30BF_SFMT_MOV2PS },
135 { FR30_INSN_JMP, FR30BF_INSN_JMP, FR30BF_SFMT_JMP },
136 { FR30_INSN_JMPD, FR30BF_INSN_JMPD, FR30BF_SFMT_JMP },
137 { FR30_INSN_CALLR, FR30BF_INSN_CALLR, FR30BF_SFMT_CALLR },
138 { FR30_INSN_CALLRD, FR30BF_INSN_CALLRD, FR30BF_SFMT_CALLR },
139 { FR30_INSN_CALL, FR30BF_INSN_CALL, FR30BF_SFMT_CALL },
140 { FR30_INSN_CALLD, FR30BF_INSN_CALLD, FR30BF_SFMT_CALL },
141 { FR30_INSN_RET, FR30BF_INSN_RET, FR30BF_SFMT_RET },
142 { FR30_INSN_RET_D, FR30BF_INSN_RET_D, FR30BF_SFMT_RET },
143 { FR30_INSN_INT, FR30BF_INSN_INT, FR30BF_SFMT_INT },
144 { FR30_INSN_INTE, FR30BF_INSN_INTE, FR30BF_SFMT_INTE },
145 { FR30_INSN_RETI, FR30BF_INSN_RETI, FR30BF_SFMT_RETI },
146 { FR30_INSN_BRAD, FR30BF_INSN_BRAD, FR30BF_SFMT_BRAD },
147 { FR30_INSN_BRA, FR30BF_INSN_BRA, FR30BF_SFMT_BRAD },
148 { FR30_INSN_BNOD, FR30BF_INSN_BNOD, FR30BF_SFMT_BNOD },
149 { FR30_INSN_BNO, FR30BF_INSN_BNO, FR30BF_SFMT_BNOD },
150 { FR30_INSN_BEQD, FR30BF_INSN_BEQD, FR30BF_SFMT_BEQD },
151 { FR30_INSN_BEQ, FR30BF_INSN_BEQ, FR30BF_SFMT_BEQD },
152 { FR30_INSN_BNED, FR30BF_INSN_BNED, FR30BF_SFMT_BEQD },
153 { FR30_INSN_BNE, FR30BF_INSN_BNE, FR30BF_SFMT_BEQD },
154 { FR30_INSN_BCD, FR30BF_INSN_BCD, FR30BF_SFMT_BCD },
155 { FR30_INSN_BC, FR30BF_INSN_BC, FR30BF_SFMT_BCD },
156 { FR30_INSN_BNCD, FR30BF_INSN_BNCD, FR30BF_SFMT_BCD },
157 { FR30_INSN_BNC, FR30BF_INSN_BNC, FR30BF_SFMT_BCD },
158 { FR30_INSN_BND, FR30BF_INSN_BND, FR30BF_SFMT_BND },
159 { FR30_INSN_BN, FR30BF_INSN_BN, FR30BF_SFMT_BND },
160 { FR30_INSN_BPD, FR30BF_INSN_BPD, FR30BF_SFMT_BND },
161 { FR30_INSN_BP, FR30BF_INSN_BP, FR30BF_SFMT_BND },
162 { FR30_INSN_BVD, FR30BF_INSN_BVD, FR30BF_SFMT_BVD },
163 { FR30_INSN_BV, FR30BF_INSN_BV, FR30BF_SFMT_BVD },
164 { FR30_INSN_BNVD, FR30BF_INSN_BNVD, FR30BF_SFMT_BVD },
165 { FR30_INSN_BNV, FR30BF_INSN_BNV, FR30BF_SFMT_BVD },
166 { FR30_INSN_BLTD, FR30BF_INSN_BLTD, FR30BF_SFMT_BLTD },
167 { FR30_INSN_BLT, FR30BF_INSN_BLT, FR30BF_SFMT_BLTD },
168 { FR30_INSN_BGED, FR30BF_INSN_BGED, FR30BF_SFMT_BLTD },
169 { FR30_INSN_BGE, FR30BF_INSN_BGE, FR30BF_SFMT_BLTD },
170 { FR30_INSN_BLED, FR30BF_INSN_BLED, FR30BF_SFMT_BLED },
171 { FR30_INSN_BLE, FR30BF_INSN_BLE, FR30BF_SFMT_BLED },
172 { FR30_INSN_BGTD, FR30BF_INSN_BGTD, FR30BF_SFMT_BLED },
173 { FR30_INSN_BGT, FR30BF_INSN_BGT, FR30BF_SFMT_BLED },
174 { FR30_INSN_BLSD, FR30BF_INSN_BLSD, FR30BF_SFMT_BLSD },
175 { FR30_INSN_BLS, FR30BF_INSN_BLS, FR30BF_SFMT_BLSD },
176 { FR30_INSN_BHID, FR30BF_INSN_BHID, FR30BF_SFMT_BLSD },
177 { FR30_INSN_BHI, FR30BF_INSN_BHI, FR30BF_SFMT_BLSD },
178 { FR30_INSN_DMOVR13, FR30BF_INSN_DMOVR13, FR30BF_SFMT_DMOVR13 },
179 { FR30_INSN_DMOVR13H, FR30BF_INSN_DMOVR13H, FR30BF_SFMT_DMOVR13H },
180 { FR30_INSN_DMOVR13B, FR30BF_INSN_DMOVR13B, FR30BF_SFMT_DMOVR13B },
181 { FR30_INSN_DMOVR13PI, FR30BF_INSN_DMOVR13PI, FR30BF_SFMT_DMOVR13PI },
182 { FR30_INSN_DMOVR13PIH, FR30BF_INSN_DMOVR13PIH, FR30BF_SFMT_DMOVR13PIH },
183 { FR30_INSN_DMOVR13PIB, FR30BF_INSN_DMOVR13PIB, FR30BF_SFMT_DMOVR13PIB },
184 { FR30_INSN_DMOVR15PI, FR30BF_INSN_DMOVR15PI, FR30BF_SFMT_DMOVR15PI },
185 { FR30_INSN_DMOV2R13, FR30BF_INSN_DMOV2R13, FR30BF_SFMT_DMOV2R13 },
186 { FR30_INSN_DMOV2R13H, FR30BF_INSN_DMOV2R13H, FR30BF_SFMT_DMOV2R13H },
187 { FR30_INSN_DMOV2R13B, FR30BF_INSN_DMOV2R13B, FR30BF_SFMT_DMOV2R13B },
188 { FR30_INSN_DMOV2R13PI, FR30BF_INSN_DMOV2R13PI, FR30BF_SFMT_DMOV2R13PI },
189 { FR30_INSN_DMOV2R13PIH, FR30BF_INSN_DMOV2R13PIH, FR30BF_SFMT_DMOV2R13PIH },
190 { FR30_INSN_DMOV2R13PIB, FR30BF_INSN_DMOV2R13PIB, FR30BF_SFMT_DMOV2R13PIB },
191 { FR30_INSN_DMOV2R15PD, FR30BF_INSN_DMOV2R15PD, FR30BF_SFMT_DMOV2R15PD },
192 { FR30_INSN_LDRES, FR30BF_INSN_LDRES, FR30BF_SFMT_LDRES },
193 { FR30_INSN_STRES, FR30BF_INSN_STRES, FR30BF_SFMT_LDRES },
194 { FR30_INSN_COPOP, FR30BF_INSN_COPOP, FR30BF_SFMT_COPOP },
195 { FR30_INSN_COPLD, FR30BF_INSN_COPLD, FR30BF_SFMT_COPOP },
196 { FR30_INSN_COPST, FR30BF_INSN_COPST, FR30BF_SFMT_COPOP },
197 { FR30_INSN_COPSV, FR30BF_INSN_COPSV, FR30BF_SFMT_COPOP },
198 { FR30_INSN_NOP, FR30BF_INSN_NOP, FR30BF_SFMT_BNOD },
199 { FR30_INSN_ANDCCR, FR30BF_INSN_ANDCCR, FR30BF_SFMT_ANDCCR },
200 { FR30_INSN_ORCCR, FR30BF_INSN_ORCCR, FR30BF_SFMT_ANDCCR },
201 { FR30_INSN_STILM, FR30BF_INSN_STILM, FR30BF_SFMT_STILM },
202 { FR30_INSN_ADDSP, FR30BF_INSN_ADDSP, FR30BF_SFMT_ADDSP },
203 { FR30_INSN_EXTSB, FR30BF_INSN_EXTSB, FR30BF_SFMT_EXTSB },
204 { FR30_INSN_EXTUB, FR30BF_INSN_EXTUB, FR30BF_SFMT_EXTUB },
205 { FR30_INSN_EXTSH, FR30BF_INSN_EXTSH, FR30BF_SFMT_EXTSH },
206 { FR30_INSN_EXTUH, FR30BF_INSN_EXTUH, FR30BF_SFMT_EXTUH },
207 { FR30_INSN_LDM0, FR30BF_INSN_LDM0, FR30BF_SFMT_LDM0 },
208 { FR30_INSN_LDM1, FR30BF_INSN_LDM1, FR30BF_SFMT_LDM1 },
209 { FR30_INSN_STM0, FR30BF_INSN_STM0, FR30BF_SFMT_STM0 },
210 { FR30_INSN_STM1, FR30BF_INSN_STM1, FR30BF_SFMT_STM1 },
211 { FR30_INSN_ENTER, FR30BF_INSN_ENTER, FR30BF_SFMT_ENTER },
212 { FR30_INSN_LEAVE, FR30BF_INSN_LEAVE, FR30BF_SFMT_LEAVE },
213 { FR30_INSN_XCHB, FR30BF_INSN_XCHB, FR30BF_SFMT_XCHB },
214 };
215
216 static const struct insn_sem fr30bf_insn_sem_invalid = {
217 VIRTUAL_INSN_X_INVALID, FR30BF_INSN_X_INVALID, FR30BF_SFMT_EMPTY
218 };
219
220 /* Initialize an IDESC from the compile-time computable parts. */
221
222 static INLINE void
223 init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t)
224 {
225 const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries;
226
227 id->num = t->index;
228 id->sfmt = t->sfmt;
229 if ((int) t->type <= 0)
230 id->idata = & cgen_virtual_insn_table[- (int) t->type];
231 else
232 id->idata = & insn_table[t->type];
233 id->attrs = CGEN_INSN_ATTRS (id->idata);
234 /* Oh my god, a magic number. */
235 id->length = CGEN_INSN_BITSIZE (id->idata) / 8;
236
237 #if WITH_PROFILE_MODEL_P
238 id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index];
239 {
240 SIM_DESC sd = CPU_STATE (cpu);
241 SIM_ASSERT (t->index == id->timing->num);
242 }
243 #endif
244
245 /* Semantic pointers are initialized elsewhere. */
246 }
247
248 /* Initialize the instruction descriptor table. */
249
250 void
251 fr30bf_init_idesc_table (SIM_CPU *cpu)
252 {
253 IDESC *id,*tabend;
254 const struct insn_sem *t,*tend;
255 int tabsize = sizeof (fr30bf_insn_data) / sizeof (IDESC);
256 IDESC *table = fr30bf_insn_data;
257
258 memset (table, 0, tabsize * sizeof (IDESC));
259
260 /* First set all entries to the `invalid insn'. */
261 t = & fr30bf_insn_sem_invalid;
262 for (id = table, tabend = table + tabsize; id < tabend; ++id)
263 init_idesc (cpu, id, t);
264
265 /* Now fill in the values for the chosen cpu. */
266 for (t = fr30bf_insn_sem, tend = t + sizeof (fr30bf_insn_sem) / sizeof (*t);
267 t != tend; ++t)
268 {
269 init_idesc (cpu, & table[t->index], t);
270 }
271
272 /* Link the IDESC table into the cpu. */
273 CPU_IDESC (cpu) = table;
274 }
275
276 /* Given an instruction, return a pointer to its IDESC entry. */
277
278 const IDESC *
279 fr30bf_decode (SIM_CPU *current_cpu, IADDR pc,
280 CGEN_INSN_INT base_insn,
281 ARGBUF *abuf)
282 {
283 /* Result of decoder. */
284 FR30BF_INSN_TYPE itype;
285
286 {
287 CGEN_INSN_INT insn = base_insn;
288
289 {
290 unsigned int val = (((insn >> 8) & (255 << 0)));
291 switch (val)
292 {
293 case 0 : itype = FR30BF_INSN_LDR13;goto extract_sfmt_ldr13;
294 case 1 : itype = FR30BF_INSN_LDR13UH;goto extract_sfmt_ldr13uh;
295 case 2 : itype = FR30BF_INSN_LDR13UB;goto extract_sfmt_ldr13ub;
296 case 3 : itype = FR30BF_INSN_LDR15;goto extract_sfmt_ldr15;
297 case 4 : itype = FR30BF_INSN_LD;goto extract_sfmt_ld;
298 case 5 : itype = FR30BF_INSN_LDUH;goto extract_sfmt_lduh;
299 case 6 : itype = FR30BF_INSN_LDUB;goto extract_sfmt_ldub;
300 case 7 :
301 {
302 unsigned int val = (((insn >> 6) & (1 << 1)) | ((insn >> 4) & (1 << 0)));
303 switch (val)
304 {
305 case 0 : itype = FR30BF_INSN_LDR15GR;goto extract_sfmt_ldr15gr;
306 case 1 : itype = FR30BF_INSN_MOV2PS;goto extract_sfmt_mov2ps;
307 case 2 : itype = FR30BF_INSN_LDR15DR;goto extract_sfmt_ldr15dr;
308 case 3 : itype = FR30BF_INSN_LDR15PS;goto extract_sfmt_ldr15ps;
309 default : itype = FR30BF_INSN_X_INVALID; goto extract_sfmt_empty;
310 }
311 }
312 case 8 : itype = FR30BF_INSN_DMOV2R13;goto extract_sfmt_dmov2r13;
313 case 9 : itype = FR30BF_INSN_DMOV2R13H;goto extract_sfmt_dmov2r13h;
314 case 10 : itype = FR30BF_INSN_DMOV2R13B;goto extract_sfmt_dmov2r13b;
315 case 11 : itype = FR30BF_INSN_DMOV2R15PD;goto extract_sfmt_dmov2r15pd;
316 case 12 : itype = FR30BF_INSN_DMOV2R13PI;goto extract_sfmt_dmov2r13pi;
317 case 13 : itype = FR30BF_INSN_DMOV2R13PIH;goto extract_sfmt_dmov2r13pih;
318 case 14 : itype = FR30BF_INSN_DMOV2R13PIB;goto extract_sfmt_dmov2r13pib;
319 case 15 : itype = FR30BF_INSN_ENTER;goto extract_sfmt_enter;
320 case 16 : itype = FR30BF_INSN_STR13;goto extract_sfmt_str13;
321 case 17 : itype = FR30BF_INSN_STR13H;goto extract_sfmt_str13h;
322 case 18 : itype = FR30BF_INSN_STR13B;goto extract_sfmt_str13b;
323 case 19 : itype = FR30BF_INSN_STR15;goto extract_sfmt_str15;
324 case 20 : itype = FR30BF_INSN_ST;goto extract_sfmt_st;
325 case 21 : itype = FR30BF_INSN_STH;goto extract_sfmt_sth;
326 case 22 : itype = FR30BF_INSN_STB;goto extract_sfmt_stb;
327 case 23 :
328 {
329 unsigned int val = (((insn >> 6) & (1 << 1)) | ((insn >> 4) & (1 << 0)));
330 switch (val)
331 {
332 case 0 : itype = FR30BF_INSN_STR15GR;goto extract_sfmt_str15gr;
333 case 1 : itype = FR30BF_INSN_MOVPS;goto extract_sfmt_movps;
334 case 2 : itype = FR30BF_INSN_STR15DR;goto extract_sfmt_str15dr;
335 case 3 : itype = FR30BF_INSN_STR15PS;goto extract_sfmt_str15ps;
336 default : itype = FR30BF_INSN_X_INVALID; goto extract_sfmt_empty;
337 }
338 }
339 case 24 : itype = FR30BF_INSN_DMOVR13;goto extract_sfmt_dmovr13;
340 case 25 : itype = FR30BF_INSN_DMOVR13H;goto extract_sfmt_dmovr13h;
341 case 26 : itype = FR30BF_INSN_DMOVR13B;goto extract_sfmt_dmovr13b;
342 case 27 : itype = FR30BF_INSN_DMOVR15PI;goto extract_sfmt_dmovr15pi;
343 case 28 : itype = FR30BF_INSN_DMOVR13PI;goto extract_sfmt_dmovr13pi;
344 case 29 : itype = FR30BF_INSN_DMOVR13PIH;goto extract_sfmt_dmovr13pih;
345 case 30 : itype = FR30BF_INSN_DMOVR13PIB;goto extract_sfmt_dmovr13pib;
346 case 31 : itype = FR30BF_INSN_INT;goto extract_sfmt_int;
347 case 32 : /* fall through */
348 case 33 : /* fall through */
349 case 34 : /* fall through */
350 case 35 : /* fall through */
351 case 36 : /* fall through */
352 case 37 : /* fall through */
353 case 38 : /* fall through */
354 case 39 : /* fall through */
355 case 40 : /* fall through */
356 case 41 : /* fall through */
357 case 42 : /* fall through */
358 case 43 : /* fall through */
359 case 44 : /* fall through */
360 case 45 : /* fall through */
361 case 46 : /* fall through */
362 case 47 : itype = FR30BF_INSN_LDR14;goto extract_sfmt_ldr14;
363 case 48 : /* fall through */
364 case 49 : /* fall through */
365 case 50 : /* fall through */
366 case 51 : /* fall through */
367 case 52 : /* fall through */
368 case 53 : /* fall through */
369 case 54 : /* fall through */
370 case 55 : /* fall through */
371 case 56 : /* fall through */
372 case 57 : /* fall through */
373 case 58 : /* fall through */
374 case 59 : /* fall through */
375 case 60 : /* fall through */
376 case 61 : /* fall through */
377 case 62 : /* fall through */
378 case 63 : itype = FR30BF_INSN_STR14;goto extract_sfmt_str14;
379 case 64 : /* fall through */
380 case 65 : /* fall through */
381 case 66 : /* fall through */
382 case 67 : /* fall through */
383 case 68 : /* fall through */
384 case 69 : /* fall through */
385 case 70 : /* fall through */
386 case 71 : /* fall through */
387 case 72 : /* fall through */
388 case 73 : /* fall through */
389 case 74 : /* fall through */
390 case 75 : /* fall through */
391 case 76 : /* fall through */
392 case 77 : /* fall through */
393 case 78 : /* fall through */
394 case 79 : itype = FR30BF_INSN_LDR14UH;goto extract_sfmt_ldr14uh;
395 case 80 : /* fall through */
396 case 81 : /* fall through */
397 case 82 : /* fall through */
398 case 83 : /* fall through */
399 case 84 : /* fall through */
400 case 85 : /* fall through */
401 case 86 : /* fall through */
402 case 87 : /* fall through */
403 case 88 : /* fall through */
404 case 89 : /* fall through */
405 case 90 : /* fall through */
406 case 91 : /* fall through */
407 case 92 : /* fall through */
408 case 93 : /* fall through */
409 case 94 : /* fall through */
410 case 95 : itype = FR30BF_INSN_STR14H;goto extract_sfmt_str14h;
411 case 96 : /* fall through */
412 case 97 : /* fall through */
413 case 98 : /* fall through */
414 case 99 : /* fall through */
415 case 100 : /* fall through */
416 case 101 : /* fall through */
417 case 102 : /* fall through */
418 case 103 : /* fall through */
419 case 104 : /* fall through */
420 case 105 : /* fall through */
421 case 106 : /* fall through */
422 case 107 : /* fall through */
423 case 108 : /* fall through */
424 case 109 : /* fall through */
425 case 110 : /* fall through */
426 case 111 : itype = FR30BF_INSN_LDR14UB;goto extract_sfmt_ldr14ub;
427 case 112 : /* fall through */
428 case 113 : /* fall through */
429 case 114 : /* fall through */
430 case 115 : /* fall through */
431 case 116 : /* fall through */
432 case 117 : /* fall through */
433 case 118 : /* fall through */
434 case 119 : /* fall through */
435 case 120 : /* fall through */
436 case 121 : /* fall through */
437 case 122 : /* fall through */
438 case 123 : /* fall through */
439 case 124 : /* fall through */
440 case 125 : /* fall through */
441 case 126 : /* fall through */
442 case 127 : itype = FR30BF_INSN_STR14B;goto extract_sfmt_str14b;
443 case 128 : itype = FR30BF_INSN_BANDL;goto extract_sfmt_bandl;
444 case 129 : itype = FR30BF_INSN_BANDH;goto extract_sfmt_bandl;
445 case 130 : itype = FR30BF_INSN_AND;goto extract_sfmt_and;
446 case 131 : itype = FR30BF_INSN_ANDCCR;goto extract_sfmt_andccr;
447 case 132 : itype = FR30BF_INSN_ANDM;goto extract_sfmt_andm;
448 case 133 : itype = FR30BF_INSN_ANDH;goto extract_sfmt_andh;
449 case 134 : itype = FR30BF_INSN_ANDB;goto extract_sfmt_andb;
450 case 135 : itype = FR30BF_INSN_STILM;goto extract_sfmt_stilm;
451 case 136 : itype = FR30BF_INSN_BTSTL;goto extract_sfmt_btstl;
452 case 137 : itype = FR30BF_INSN_BTSTH;goto extract_sfmt_btstl;
453 case 138 : itype = FR30BF_INSN_XCHB;goto extract_sfmt_xchb;
454 case 139 : itype = FR30BF_INSN_MOV;goto extract_sfmt_mov;
455 case 140 : itype = FR30BF_INSN_LDM0;goto extract_sfmt_ldm0;
456 case 141 : itype = FR30BF_INSN_LDM1;goto extract_sfmt_ldm1;
457 case 142 : itype = FR30BF_INSN_STM0;goto extract_sfmt_stm0;
458 case 143 : itype = FR30BF_INSN_STM1;goto extract_sfmt_stm1;
459 case 144 : itype = FR30BF_INSN_BORL;goto extract_sfmt_bandl;
460 case 145 : itype = FR30BF_INSN_BORH;goto extract_sfmt_bandl;
461 case 146 : itype = FR30BF_INSN_OR;goto extract_sfmt_and;
462 case 147 : itype = FR30BF_INSN_ORCCR;goto extract_sfmt_andccr;
463 case 148 : itype = FR30BF_INSN_ORM;goto extract_sfmt_andm;
464 case 149 : itype = FR30BF_INSN_ORH;goto extract_sfmt_andh;
465 case 150 : itype = FR30BF_INSN_ORB;goto extract_sfmt_andb;
466 case 151 :
467 {
468 unsigned int val = (((insn >> 4) & (15 << 0)));
469 switch (val)
470 {
471 case 0 : itype = FR30BF_INSN_JMP;goto extract_sfmt_jmp;
472 case 1 : itype = FR30BF_INSN_CALLR;goto extract_sfmt_callr;
473 case 2 : itype = FR30BF_INSN_RET;goto extract_sfmt_ret;
474 case 3 : itype = FR30BF_INSN_RETI;goto extract_sfmt_reti;
475 case 4 : itype = FR30BF_INSN_DIV0S;goto extract_sfmt_div0s;
476 case 5 : itype = FR30BF_INSN_DIV0U;goto extract_sfmt_div0u;
477 case 6 : itype = FR30BF_INSN_DIV1;goto extract_sfmt_div1;
478 case 7 : itype = FR30BF_INSN_DIV2;goto extract_sfmt_div2;
479 case 8 : itype = FR30BF_INSN_EXTSB;goto extract_sfmt_extsb;
480 case 9 : itype = FR30BF_INSN_EXTUB;goto extract_sfmt_extub;
481 case 10 : itype = FR30BF_INSN_EXTSH;goto extract_sfmt_extsh;
482 case 11 : itype = FR30BF_INSN_EXTUH;goto extract_sfmt_extuh;
483 default : itype = FR30BF_INSN_X_INVALID; goto extract_sfmt_empty;
484 }
485 }
486 case 152 : itype = FR30BF_INSN_BEORL;goto extract_sfmt_bandl;
487 case 153 : itype = FR30BF_INSN_BEORH;goto extract_sfmt_bandl;
488 case 154 : itype = FR30BF_INSN_EOR;goto extract_sfmt_and;
489 case 155 : itype = FR30BF_INSN_LDI20;goto extract_sfmt_ldi20;
490 case 156 : itype = FR30BF_INSN_EORM;goto extract_sfmt_andm;
491 case 157 : itype = FR30BF_INSN_EORH;goto extract_sfmt_andh;
492 case 158 : itype = FR30BF_INSN_EORB;goto extract_sfmt_andb;
493 case 159 :
494 {
495 unsigned int val = (((insn >> 4) & (15 << 0)));
496 switch (val)
497 {
498 case 0 : itype = FR30BF_INSN_JMPD;goto extract_sfmt_jmp;
499 case 1 : itype = FR30BF_INSN_CALLRD;goto extract_sfmt_callr;
500 case 2 : itype = FR30BF_INSN_RET_D;goto extract_sfmt_ret;
501 case 3 : itype = FR30BF_INSN_INTE;goto extract_sfmt_inte;
502 case 6 : itype = FR30BF_INSN_DIV3;goto extract_sfmt_div3;
503 case 7 : itype = FR30BF_INSN_DIV4S;goto extract_sfmt_div4s;
504 case 8 : itype = FR30BF_INSN_LDI32;goto extract_sfmt_ldi32;
505 case 9 : itype = FR30BF_INSN_LEAVE;goto extract_sfmt_leave;
506 case 10 : itype = FR30BF_INSN_NOP;goto extract_sfmt_bnod;
507 case 12 : itype = FR30BF_INSN_COPOP;goto extract_sfmt_copop;
508 case 13 : itype = FR30BF_INSN_COPLD;goto extract_sfmt_copop;
509 case 14 : itype = FR30BF_INSN_COPST;goto extract_sfmt_copop;
510 case 15 : itype = FR30BF_INSN_COPSV;goto extract_sfmt_copop;
511 default : itype = FR30BF_INSN_X_INVALID; goto extract_sfmt_empty;
512 }
513 }
514 case 160 : itype = FR30BF_INSN_ADDNI;goto extract_sfmt_addni;
515 case 161 : itype = FR30BF_INSN_ADDN2;goto extract_sfmt_addn2;
516 case 162 : itype = FR30BF_INSN_ADDN;goto extract_sfmt_addn;
517 case 163 : itype = FR30BF_INSN_ADDSP;goto extract_sfmt_addsp;
518 case 164 : itype = FR30BF_INSN_ADDI;goto extract_sfmt_addi;
519 case 165 : itype = FR30BF_INSN_ADD2;goto extract_sfmt_add2;
520 case 166 : itype = FR30BF_INSN_ADD;goto extract_sfmt_add;
521 case 167 : itype = FR30BF_INSN_ADDC;goto extract_sfmt_addc;
522 case 168 : itype = FR30BF_INSN_CMPI;goto extract_sfmt_cmpi;
523 case 169 : itype = FR30BF_INSN_CMP2;goto extract_sfmt_cmp2;
524 case 170 : itype = FR30BF_INSN_CMP;goto extract_sfmt_cmp;
525 case 171 : itype = FR30BF_INSN_MULU;goto extract_sfmt_mulu;
526 case 172 : itype = FR30BF_INSN_SUB;goto extract_sfmt_add;
527 case 173 : itype = FR30BF_INSN_SUBC;goto extract_sfmt_addc;
528 case 174 : itype = FR30BF_INSN_SUBN;goto extract_sfmt_addn;
529 case 175 : itype = FR30BF_INSN_MUL;goto extract_sfmt_mul;
530 case 176 : itype = FR30BF_INSN_LSRI;goto extract_sfmt_lsli;
531 case 177 : itype = FR30BF_INSN_LSR2;goto extract_sfmt_lsli;
532 case 178 : itype = FR30BF_INSN_LSR;goto extract_sfmt_lsl;
533 case 179 : itype = FR30BF_INSN_MOV2DR;goto extract_sfmt_mov2dr;
534 case 180 : itype = FR30BF_INSN_LSLI;goto extract_sfmt_lsli;
535 case 181 : itype = FR30BF_INSN_LSL2;goto extract_sfmt_lsli;
536 case 182 : itype = FR30BF_INSN_LSL;goto extract_sfmt_lsl;
537 case 183 : itype = FR30BF_INSN_MOVDR;goto extract_sfmt_movdr;
538 case 184 : itype = FR30BF_INSN_ASRI;goto extract_sfmt_lsli;
539 case 185 : itype = FR30BF_INSN_ASR2;goto extract_sfmt_lsli;
540 case 186 : itype = FR30BF_INSN_ASR;goto extract_sfmt_lsl;
541 case 187 : itype = FR30BF_INSN_MULUH;goto extract_sfmt_mulh;
542 case 188 : itype = FR30BF_INSN_LDRES;goto extract_sfmt_ldres;
543 case 189 : itype = FR30BF_INSN_STRES;goto extract_sfmt_ldres;
544 case 191 : itype = FR30BF_INSN_MULH;goto extract_sfmt_mulh;
545 case 192 : /* fall through */
546 case 193 : /* fall through */
547 case 194 : /* fall through */
548 case 195 : /* fall through */
549 case 196 : /* fall through */
550 case 197 : /* fall through */
551 case 198 : /* fall through */
552 case 199 : /* fall through */
553 case 200 : /* fall through */
554 case 201 : /* fall through */
555 case 202 : /* fall through */
556 case 203 : /* fall through */
557 case 204 : /* fall through */
558 case 205 : /* fall through */
559 case 206 : /* fall through */
560 case 207 : itype = FR30BF_INSN_LDI8;goto extract_sfmt_ldi8;
561 case 208 : /* fall through */
562 case 209 : /* fall through */
563 case 210 : /* fall through */
564 case 211 : /* fall through */
565 case 212 : /* fall through */
566 case 213 : /* fall through */
567 case 214 : /* fall through */
568 case 215 : itype = FR30BF_INSN_CALL;goto extract_sfmt_call;
569 case 216 : /* fall through */
570 case 217 : /* fall through */
571 case 218 : /* fall through */
572 case 219 : /* fall through */
573 case 220 : /* fall through */
574 case 221 : /* fall through */
575 case 222 : /* fall through */
576 case 223 : itype = FR30BF_INSN_CALLD;goto extract_sfmt_call;
577 case 224 : itype = FR30BF_INSN_BRA;goto extract_sfmt_brad;
578 case 225 : itype = FR30BF_INSN_BNO;goto extract_sfmt_bnod;
579 case 226 : itype = FR30BF_INSN_BEQ;goto extract_sfmt_beqd;
580 case 227 : itype = FR30BF_INSN_BNE;goto extract_sfmt_beqd;
581 case 228 : itype = FR30BF_INSN_BC;goto extract_sfmt_bcd;
582 case 229 : itype = FR30BF_INSN_BNC;goto extract_sfmt_bcd;
583 case 230 : itype = FR30BF_INSN_BN;goto extract_sfmt_bnd;
584 case 231 : itype = FR30BF_INSN_BP;goto extract_sfmt_bnd;
585 case 232 : itype = FR30BF_INSN_BV;goto extract_sfmt_bvd;
586 case 233 : itype = FR30BF_INSN_BNV;goto extract_sfmt_bvd;
587 case 234 : itype = FR30BF_INSN_BLT;goto extract_sfmt_bltd;
588 case 235 : itype = FR30BF_INSN_BGE;goto extract_sfmt_bltd;
589 case 236 : itype = FR30BF_INSN_BLE;goto extract_sfmt_bled;
590 case 237 : itype = FR30BF_INSN_BGT;goto extract_sfmt_bled;
591 case 238 : itype = FR30BF_INSN_BLS;goto extract_sfmt_blsd;
592 case 239 : itype = FR30BF_INSN_BHI;goto extract_sfmt_blsd;
593 case 240 : itype = FR30BF_INSN_BRAD;goto extract_sfmt_brad;
594 case 241 : itype = FR30BF_INSN_BNOD;goto extract_sfmt_bnod;
595 case 242 : itype = FR30BF_INSN_BEQD;goto extract_sfmt_beqd;
596 case 243 : itype = FR30BF_INSN_BNED;goto extract_sfmt_beqd;
597 case 244 : itype = FR30BF_INSN_BCD;goto extract_sfmt_bcd;
598 case 245 : itype = FR30BF_INSN_BNCD;goto extract_sfmt_bcd;
599 case 246 : itype = FR30BF_INSN_BND;goto extract_sfmt_bnd;
600 case 247 : itype = FR30BF_INSN_BPD;goto extract_sfmt_bnd;
601 case 248 : itype = FR30BF_INSN_BVD;goto extract_sfmt_bvd;
602 case 249 : itype = FR30BF_INSN_BNVD;goto extract_sfmt_bvd;
603 case 250 : itype = FR30BF_INSN_BLTD;goto extract_sfmt_bltd;
604 case 251 : itype = FR30BF_INSN_BGED;goto extract_sfmt_bltd;
605 case 252 : itype = FR30BF_INSN_BLED;goto extract_sfmt_bled;
606 case 253 : itype = FR30BF_INSN_BGTD;goto extract_sfmt_bled;
607 case 254 : itype = FR30BF_INSN_BLSD;goto extract_sfmt_blsd;
608 case 255 : itype = FR30BF_INSN_BHID;goto extract_sfmt_blsd;
609 default : itype = FR30BF_INSN_X_INVALID; goto extract_sfmt_empty;
610 }
611 }
612 }
613
614 /* The instruction has been decoded, now extract the fields. */
615
616 extract_sfmt_empty:
617 {
618 const IDESC *idesc = &fr30bf_insn_data[itype];
619 #define FLD(f) abuf->fields.fmt_empty.f
620
621
622 /* Record the fields for the semantic handler. */
623 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0));
624
625 #undef FLD
626 return idesc;
627 }
628
629 extract_sfmt_add:
630 {
631 const IDESC *idesc = &fr30bf_insn_data[itype];
632 CGEN_INSN_INT insn = base_insn;
633 #define FLD(f) abuf->fields.sfmt_add.f
634 UINT f_Rj;
635 UINT f_Ri;
636
637 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
638 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
639
640 /* Record the fields for the semantic handler. */
641 FLD (f_Ri) = f_Ri;
642 FLD (f_Rj) = f_Rj;
643 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
644 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
645 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
646
647 #if WITH_PROFILE_MODEL_P
648 /* Record the fields for profiling. */
649 if (PROFILE_MODEL_P (current_cpu))
650 {
651 FLD (in_Ri) = f_Ri;
652 FLD (in_Rj) = f_Rj;
653 FLD (out_Ri) = f_Ri;
654 }
655 #endif
656 #undef FLD
657 return idesc;
658 }
659
660 extract_sfmt_addi:
661 {
662 const IDESC *idesc = &fr30bf_insn_data[itype];
663 CGEN_INSN_INT insn = base_insn;
664 #define FLD(f) abuf->fields.sfmt_addi.f
665 UINT f_u4;
666 UINT f_Ri;
667
668 f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
669 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
670
671 /* Record the fields for the semantic handler. */
672 FLD (f_Ri) = f_Ri;
673 FLD (f_u4) = f_u4;
674 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
675 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addi", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
676
677 #if WITH_PROFILE_MODEL_P
678 /* Record the fields for profiling. */
679 if (PROFILE_MODEL_P (current_cpu))
680 {
681 FLD (in_Ri) = f_Ri;
682 FLD (out_Ri) = f_Ri;
683 }
684 #endif
685 #undef FLD
686 return idesc;
687 }
688
689 extract_sfmt_add2:
690 {
691 const IDESC *idesc = &fr30bf_insn_data[itype];
692 CGEN_INSN_INT insn = base_insn;
693 #define FLD(f) abuf->fields.sfmt_add2.f
694 SI f_m4;
695 UINT f_Ri;
696
697 f_m4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) | (((-1) << (4))));
698 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
699
700 /* Record the fields for the semantic handler. */
701 FLD (f_Ri) = f_Ri;
702 FLD (f_m4) = f_m4;
703 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
704 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add2", "f_Ri 0x%x", 'x', f_Ri, "f_m4 0x%x", 'x', f_m4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
705
706 #if WITH_PROFILE_MODEL_P
707 /* Record the fields for profiling. */
708 if (PROFILE_MODEL_P (current_cpu))
709 {
710 FLD (in_Ri) = f_Ri;
711 FLD (out_Ri) = f_Ri;
712 }
713 #endif
714 #undef FLD
715 return idesc;
716 }
717
718 extract_sfmt_addc:
719 {
720 const IDESC *idesc = &fr30bf_insn_data[itype];
721 CGEN_INSN_INT insn = base_insn;
722 #define FLD(f) abuf->fields.sfmt_add.f
723 UINT f_Rj;
724 UINT f_Ri;
725
726 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
727 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
728
729 /* Record the fields for the semantic handler. */
730 FLD (f_Ri) = f_Ri;
731 FLD (f_Rj) = f_Rj;
732 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
733 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
734 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addc", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
735
736 #if WITH_PROFILE_MODEL_P
737 /* Record the fields for profiling. */
738 if (PROFILE_MODEL_P (current_cpu))
739 {
740 FLD (in_Ri) = f_Ri;
741 FLD (in_Rj) = f_Rj;
742 FLD (out_Ri) = f_Ri;
743 }
744 #endif
745 #undef FLD
746 return idesc;
747 }
748
749 extract_sfmt_addn:
750 {
751 const IDESC *idesc = &fr30bf_insn_data[itype];
752 CGEN_INSN_INT insn = base_insn;
753 #define FLD(f) abuf->fields.sfmt_add.f
754 UINT f_Rj;
755 UINT f_Ri;
756
757 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
758 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
759
760 /* Record the fields for the semantic handler. */
761 FLD (f_Ri) = f_Ri;
762 FLD (f_Rj) = f_Rj;
763 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
764 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
765 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addn", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
766
767 #if WITH_PROFILE_MODEL_P
768 /* Record the fields for profiling. */
769 if (PROFILE_MODEL_P (current_cpu))
770 {
771 FLD (in_Ri) = f_Ri;
772 FLD (in_Rj) = f_Rj;
773 FLD (out_Ri) = f_Ri;
774 }
775 #endif
776 #undef FLD
777 return idesc;
778 }
779
780 extract_sfmt_addni:
781 {
782 const IDESC *idesc = &fr30bf_insn_data[itype];
783 CGEN_INSN_INT insn = base_insn;
784 #define FLD(f) abuf->fields.sfmt_addi.f
785 UINT f_u4;
786 UINT f_Ri;
787
788 f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
789 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
790
791 /* Record the fields for the semantic handler. */
792 FLD (f_Ri) = f_Ri;
793 FLD (f_u4) = f_u4;
794 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
795 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addni", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
796
797 #if WITH_PROFILE_MODEL_P
798 /* Record the fields for profiling. */
799 if (PROFILE_MODEL_P (current_cpu))
800 {
801 FLD (in_Ri) = f_Ri;
802 FLD (out_Ri) = f_Ri;
803 }
804 #endif
805 #undef FLD
806 return idesc;
807 }
808
809 extract_sfmt_addn2:
810 {
811 const IDESC *idesc = &fr30bf_insn_data[itype];
812 CGEN_INSN_INT insn = base_insn;
813 #define FLD(f) abuf->fields.sfmt_add2.f
814 SI f_m4;
815 UINT f_Ri;
816
817 f_m4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) | (((-1) << (4))));
818 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
819
820 /* Record the fields for the semantic handler. */
821 FLD (f_Ri) = f_Ri;
822 FLD (f_m4) = f_m4;
823 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
824 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addn2", "f_Ri 0x%x", 'x', f_Ri, "f_m4 0x%x", 'x', f_m4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
825
826 #if WITH_PROFILE_MODEL_P
827 /* Record the fields for profiling. */
828 if (PROFILE_MODEL_P (current_cpu))
829 {
830 FLD (in_Ri) = f_Ri;
831 FLD (out_Ri) = f_Ri;
832 }
833 #endif
834 #undef FLD
835 return idesc;
836 }
837
838 extract_sfmt_cmp:
839 {
840 const IDESC *idesc = &fr30bf_insn_data[itype];
841 CGEN_INSN_INT insn = base_insn;
842 #define FLD(f) abuf->fields.sfmt_str13.f
843 UINT f_Rj;
844 UINT f_Ri;
845
846 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
847 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
848
849 /* Record the fields for the semantic handler. */
850 FLD (f_Ri) = f_Ri;
851 FLD (f_Rj) = f_Rj;
852 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
853 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
854 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
855
856 #if WITH_PROFILE_MODEL_P
857 /* Record the fields for profiling. */
858 if (PROFILE_MODEL_P (current_cpu))
859 {
860 FLD (in_Ri) = f_Ri;
861 FLD (in_Rj) = f_Rj;
862 }
863 #endif
864 #undef FLD
865 return idesc;
866 }
867
868 extract_sfmt_cmpi:
869 {
870 const IDESC *idesc = &fr30bf_insn_data[itype];
871 CGEN_INSN_INT insn = base_insn;
872 #define FLD(f) abuf->fields.sfmt_addi.f
873 UINT f_u4;
874 UINT f_Ri;
875
876 f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
877 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
878
879 /* Record the fields for the semantic handler. */
880 FLD (f_Ri) = f_Ri;
881 FLD (f_u4) = f_u4;
882 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
883 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpi", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
884
885 #if WITH_PROFILE_MODEL_P
886 /* Record the fields for profiling. */
887 if (PROFILE_MODEL_P (current_cpu))
888 {
889 FLD (in_Ri) = f_Ri;
890 }
891 #endif
892 #undef FLD
893 return idesc;
894 }
895
896 extract_sfmt_cmp2:
897 {
898 const IDESC *idesc = &fr30bf_insn_data[itype];
899 CGEN_INSN_INT insn = base_insn;
900 #define FLD(f) abuf->fields.sfmt_add2.f
901 SI f_m4;
902 UINT f_Ri;
903
904 f_m4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) | (((-1) << (4))));
905 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
906
907 /* Record the fields for the semantic handler. */
908 FLD (f_Ri) = f_Ri;
909 FLD (f_m4) = f_m4;
910 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
911 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp2", "f_Ri 0x%x", 'x', f_Ri, "f_m4 0x%x", 'x', f_m4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
912
913 #if WITH_PROFILE_MODEL_P
914 /* Record the fields for profiling. */
915 if (PROFILE_MODEL_P (current_cpu))
916 {
917 FLD (in_Ri) = f_Ri;
918 }
919 #endif
920 #undef FLD
921 return idesc;
922 }
923
924 extract_sfmt_and:
925 {
926 const IDESC *idesc = &fr30bf_insn_data[itype];
927 CGEN_INSN_INT insn = base_insn;
928 #define FLD(f) abuf->fields.sfmt_add.f
929 UINT f_Rj;
930 UINT f_Ri;
931
932 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
933 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
934
935 /* Record the fields for the semantic handler. */
936 FLD (f_Ri) = f_Ri;
937 FLD (f_Rj) = f_Rj;
938 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
939 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
940 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_and", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
941
942 #if WITH_PROFILE_MODEL_P
943 /* Record the fields for profiling. */
944 if (PROFILE_MODEL_P (current_cpu))
945 {
946 FLD (in_Ri) = f_Ri;
947 FLD (in_Rj) = f_Rj;
948 FLD (out_Ri) = f_Ri;
949 }
950 #endif
951 #undef FLD
952 return idesc;
953 }
954
955 extract_sfmt_andm:
956 {
957 const IDESC *idesc = &fr30bf_insn_data[itype];
958 CGEN_INSN_INT insn = base_insn;
959 #define FLD(f) abuf->fields.sfmt_str13.f
960 UINT f_Rj;
961 UINT f_Ri;
962
963 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
964 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
965
966 /* Record the fields for the semantic handler. */
967 FLD (f_Ri) = f_Ri;
968 FLD (f_Rj) = f_Rj;
969 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
970 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
971 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andm", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
972
973 #if WITH_PROFILE_MODEL_P
974 /* Record the fields for profiling. */
975 if (PROFILE_MODEL_P (current_cpu))
976 {
977 FLD (in_Ri) = f_Ri;
978 FLD (in_Rj) = f_Rj;
979 }
980 #endif
981 #undef FLD
982 return idesc;
983 }
984
985 extract_sfmt_andh:
986 {
987 const IDESC *idesc = &fr30bf_insn_data[itype];
988 CGEN_INSN_INT insn = base_insn;
989 #define FLD(f) abuf->fields.sfmt_str13.f
990 UINT f_Rj;
991 UINT f_Ri;
992
993 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
994 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
995
996 /* Record the fields for the semantic handler. */
997 FLD (f_Ri) = f_Ri;
998 FLD (f_Rj) = f_Rj;
999 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1000 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1001 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andh", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1002
1003 #if WITH_PROFILE_MODEL_P
1004 /* Record the fields for profiling. */
1005 if (PROFILE_MODEL_P (current_cpu))
1006 {
1007 FLD (in_Ri) = f_Ri;
1008 FLD (in_Rj) = f_Rj;
1009 }
1010 #endif
1011 #undef FLD
1012 return idesc;
1013 }
1014
1015 extract_sfmt_andb:
1016 {
1017 const IDESC *idesc = &fr30bf_insn_data[itype];
1018 CGEN_INSN_INT insn = base_insn;
1019 #define FLD(f) abuf->fields.sfmt_str13.f
1020 UINT f_Rj;
1021 UINT f_Ri;
1022
1023 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1024 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1025
1026 /* Record the fields for the semantic handler. */
1027 FLD (f_Ri) = f_Ri;
1028 FLD (f_Rj) = f_Rj;
1029 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1030 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1031 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andb", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1032
1033 #if WITH_PROFILE_MODEL_P
1034 /* Record the fields for profiling. */
1035 if (PROFILE_MODEL_P (current_cpu))
1036 {
1037 FLD (in_Ri) = f_Ri;
1038 FLD (in_Rj) = f_Rj;
1039 }
1040 #endif
1041 #undef FLD
1042 return idesc;
1043 }
1044
1045 extract_sfmt_bandl:
1046 {
1047 const IDESC *idesc = &fr30bf_insn_data[itype];
1048 CGEN_INSN_INT insn = base_insn;
1049 #define FLD(f) abuf->fields.sfmt_addi.f
1050 UINT f_u4;
1051 UINT f_Ri;
1052
1053 f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1054 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1055
1056 /* Record the fields for the semantic handler. */
1057 FLD (f_Ri) = f_Ri;
1058 FLD (f_u4) = f_u4;
1059 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1060 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bandl", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1061
1062 #if WITH_PROFILE_MODEL_P
1063 /* Record the fields for profiling. */
1064 if (PROFILE_MODEL_P (current_cpu))
1065 {
1066 FLD (in_Ri) = f_Ri;
1067 }
1068 #endif
1069 #undef FLD
1070 return idesc;
1071 }
1072
1073 extract_sfmt_btstl:
1074 {
1075 const IDESC *idesc = &fr30bf_insn_data[itype];
1076 CGEN_INSN_INT insn = base_insn;
1077 #define FLD(f) abuf->fields.sfmt_addi.f
1078 UINT f_u4;
1079 UINT f_Ri;
1080
1081 f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1082 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1083
1084 /* Record the fields for the semantic handler. */
1085 FLD (f_Ri) = f_Ri;
1086 FLD (f_u4) = f_u4;
1087 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1088 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_btstl", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1089
1090 #if WITH_PROFILE_MODEL_P
1091 /* Record the fields for profiling. */
1092 if (PROFILE_MODEL_P (current_cpu))
1093 {
1094 FLD (in_Ri) = f_Ri;
1095 }
1096 #endif
1097 #undef FLD
1098 return idesc;
1099 }
1100
1101 extract_sfmt_mul:
1102 {
1103 const IDESC *idesc = &fr30bf_insn_data[itype];
1104 CGEN_INSN_INT insn = base_insn;
1105 #define FLD(f) abuf->fields.sfmt_str13.f
1106 UINT f_Rj;
1107 UINT f_Ri;
1108
1109 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1110 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1111
1112 /* Record the fields for the semantic handler. */
1113 FLD (f_Ri) = f_Ri;
1114 FLD (f_Rj) = f_Rj;
1115 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1116 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1117 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mul", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1118
1119 #if WITH_PROFILE_MODEL_P
1120 /* Record the fields for profiling. */
1121 if (PROFILE_MODEL_P (current_cpu))
1122 {
1123 FLD (in_Ri) = f_Ri;
1124 FLD (in_Rj) = f_Rj;
1125 }
1126 #endif
1127 #undef FLD
1128 return idesc;
1129 }
1130
1131 extract_sfmt_mulu:
1132 {
1133 const IDESC *idesc = &fr30bf_insn_data[itype];
1134 CGEN_INSN_INT insn = base_insn;
1135 #define FLD(f) abuf->fields.sfmt_str13.f
1136 UINT f_Rj;
1137 UINT f_Ri;
1138
1139 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1140 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1141
1142 /* Record the fields for the semantic handler. */
1143 FLD (f_Ri) = f_Ri;
1144 FLD (f_Rj) = f_Rj;
1145 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1146 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1147 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mulu", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1148
1149 #if WITH_PROFILE_MODEL_P
1150 /* Record the fields for profiling. */
1151 if (PROFILE_MODEL_P (current_cpu))
1152 {
1153 FLD (in_Ri) = f_Ri;
1154 FLD (in_Rj) = f_Rj;
1155 }
1156 #endif
1157 #undef FLD
1158 return idesc;
1159 }
1160
1161 extract_sfmt_mulh:
1162 {
1163 const IDESC *idesc = &fr30bf_insn_data[itype];
1164 CGEN_INSN_INT insn = base_insn;
1165 #define FLD(f) abuf->fields.sfmt_str13.f
1166 UINT f_Rj;
1167 UINT f_Ri;
1168
1169 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1170 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1171
1172 /* Record the fields for the semantic handler. */
1173 FLD (f_Ri) = f_Ri;
1174 FLD (f_Rj) = f_Rj;
1175 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1176 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1177 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mulh", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1178
1179 #if WITH_PROFILE_MODEL_P
1180 /* Record the fields for profiling. */
1181 if (PROFILE_MODEL_P (current_cpu))
1182 {
1183 FLD (in_Ri) = f_Ri;
1184 FLD (in_Rj) = f_Rj;
1185 }
1186 #endif
1187 #undef FLD
1188 return idesc;
1189 }
1190
1191 extract_sfmt_div0s:
1192 {
1193 const IDESC *idesc = &fr30bf_insn_data[itype];
1194 CGEN_INSN_INT insn = base_insn;
1195 #define FLD(f) abuf->fields.sfmt_mov2dr.f
1196 UINT f_Ri;
1197
1198 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1199
1200 /* Record the fields for the semantic handler. */
1201 FLD (f_Ri) = f_Ri;
1202 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1203 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div0s", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1204
1205 #if WITH_PROFILE_MODEL_P
1206 /* Record the fields for profiling. */
1207 if (PROFILE_MODEL_P (current_cpu))
1208 {
1209 FLD (in_Ri) = f_Ri;
1210 }
1211 #endif
1212 #undef FLD
1213 return idesc;
1214 }
1215
1216 extract_sfmt_div0u:
1217 {
1218 const IDESC *idesc = &fr30bf_insn_data[itype];
1219 #define FLD(f) abuf->fields.fmt_empty.f
1220
1221
1222 /* Record the fields for the semantic handler. */
1223 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div0u", (char *) 0));
1224
1225 #undef FLD
1226 return idesc;
1227 }
1228
1229 extract_sfmt_div1:
1230 {
1231 const IDESC *idesc = &fr30bf_insn_data[itype];
1232 CGEN_INSN_INT insn = base_insn;
1233 #define FLD(f) abuf->fields.sfmt_mov2dr.f
1234 UINT f_Ri;
1235
1236 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1237
1238 /* Record the fields for the semantic handler. */
1239 FLD (f_Ri) = f_Ri;
1240 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1241 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div1", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1242
1243 #if WITH_PROFILE_MODEL_P
1244 /* Record the fields for profiling. */
1245 if (PROFILE_MODEL_P (current_cpu))
1246 {
1247 FLD (in_Ri) = f_Ri;
1248 }
1249 #endif
1250 #undef FLD
1251 return idesc;
1252 }
1253
1254 extract_sfmt_div2:
1255 {
1256 const IDESC *idesc = &fr30bf_insn_data[itype];
1257 CGEN_INSN_INT insn = base_insn;
1258 #define FLD(f) abuf->fields.sfmt_mov2dr.f
1259 UINT f_Ri;
1260
1261 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1262
1263 /* Record the fields for the semantic handler. */
1264 FLD (f_Ri) = f_Ri;
1265 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1266 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div2", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1267
1268 #if WITH_PROFILE_MODEL_P
1269 /* Record the fields for profiling. */
1270 if (PROFILE_MODEL_P (current_cpu))
1271 {
1272 FLD (in_Ri) = f_Ri;
1273 }
1274 #endif
1275 #undef FLD
1276 return idesc;
1277 }
1278
1279 extract_sfmt_div3:
1280 {
1281 const IDESC *idesc = &fr30bf_insn_data[itype];
1282 #define FLD(f) abuf->fields.fmt_empty.f
1283
1284
1285 /* Record the fields for the semantic handler. */
1286 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div3", (char *) 0));
1287
1288 #undef FLD
1289 return idesc;
1290 }
1291
1292 extract_sfmt_div4s:
1293 {
1294 const IDESC *idesc = &fr30bf_insn_data[itype];
1295 #define FLD(f) abuf->fields.fmt_empty.f
1296
1297
1298 /* Record the fields for the semantic handler. */
1299 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div4s", (char *) 0));
1300
1301 #undef FLD
1302 return idesc;
1303 }
1304
1305 extract_sfmt_lsl:
1306 {
1307 const IDESC *idesc = &fr30bf_insn_data[itype];
1308 CGEN_INSN_INT insn = base_insn;
1309 #define FLD(f) abuf->fields.sfmt_add.f
1310 UINT f_Rj;
1311 UINT f_Ri;
1312
1313 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1314 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1315
1316 /* Record the fields for the semantic handler. */
1317 FLD (f_Ri) = f_Ri;
1318 FLD (f_Rj) = f_Rj;
1319 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1320 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1321 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lsl", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1322
1323 #if WITH_PROFILE_MODEL_P
1324 /* Record the fields for profiling. */
1325 if (PROFILE_MODEL_P (current_cpu))
1326 {
1327 FLD (in_Ri) = f_Ri;
1328 FLD (in_Rj) = f_Rj;
1329 FLD (out_Ri) = f_Ri;
1330 }
1331 #endif
1332 #undef FLD
1333 return idesc;
1334 }
1335
1336 extract_sfmt_lsli:
1337 {
1338 const IDESC *idesc = &fr30bf_insn_data[itype];
1339 CGEN_INSN_INT insn = base_insn;
1340 #define FLD(f) abuf->fields.sfmt_addi.f
1341 UINT f_u4;
1342 UINT f_Ri;
1343
1344 f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1345 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1346
1347 /* Record the fields for the semantic handler. */
1348 FLD (f_Ri) = f_Ri;
1349 FLD (f_u4) = f_u4;
1350 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1351 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lsli", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1352
1353 #if WITH_PROFILE_MODEL_P
1354 /* Record the fields for profiling. */
1355 if (PROFILE_MODEL_P (current_cpu))
1356 {
1357 FLD (in_Ri) = f_Ri;
1358 FLD (out_Ri) = f_Ri;
1359 }
1360 #endif
1361 #undef FLD
1362 return idesc;
1363 }
1364
1365 extract_sfmt_ldi8:
1366 {
1367 const IDESC *idesc = &fr30bf_insn_data[itype];
1368 CGEN_INSN_INT insn = base_insn;
1369 #define FLD(f) abuf->fields.sfmt_ldi8.f
1370 UINT f_i8;
1371 UINT f_Ri;
1372
1373 f_i8 = EXTRACT_MSB0_UINT (insn, 16, 4, 8);
1374 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1375
1376 /* Record the fields for the semantic handler. */
1377 FLD (f_i8) = f_i8;
1378 FLD (f_Ri) = f_Ri;
1379 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1380 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi8", "f_i8 0x%x", 'x', f_i8, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1381
1382 #if WITH_PROFILE_MODEL_P
1383 /* Record the fields for profiling. */
1384 if (PROFILE_MODEL_P (current_cpu))
1385 {
1386 FLD (out_Ri) = f_Ri;
1387 }
1388 #endif
1389 #undef FLD
1390 return idesc;
1391 }
1392
1393 extract_sfmt_ldi20:
1394 {
1395 const IDESC *idesc = &fr30bf_insn_data[itype];
1396 CGEN_INSN_INT insn = base_insn;
1397 #define FLD(f) abuf->fields.sfmt_ldi20.f
1398 UINT f_i20_16;
1399 UINT f_i20_4;
1400 UINT f_Ri;
1401 UINT f_i20;
1402 /* Contents of trailing part of insn. */
1403 UINT word_1;
1404
1405 word_1 = GETIMEMUHI (current_cpu, pc + 2);
1406 f_i20_16 = (0|(EXTRACT_MSB0_UINT (word_1, 16, 0, 16) << 0));
1407 f_i20_4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1408 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1409 {
1410 f_i20 = ((((f_i20_4) << (16))) | (f_i20_16));
1411 }
1412
1413 /* Record the fields for the semantic handler. */
1414 FLD (f_i20) = f_i20;
1415 FLD (f_Ri) = f_Ri;
1416 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1417 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi20", "f_i20 0x%x", 'x', f_i20, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1418
1419 #if WITH_PROFILE_MODEL_P
1420 /* Record the fields for profiling. */
1421 if (PROFILE_MODEL_P (current_cpu))
1422 {
1423 FLD (out_Ri) = f_Ri;
1424 }
1425 #endif
1426 #undef FLD
1427 return idesc;
1428 }
1429
1430 extract_sfmt_ldi32:
1431 {
1432 const IDESC *idesc = &fr30bf_insn_data[itype];
1433 CGEN_INSN_INT insn = base_insn;
1434 #define FLD(f) abuf->fields.sfmt_ldi32.f
1435 UINT f_i32;
1436 UINT f_Ri;
1437 /* Contents of trailing part of insn. */
1438 UINT word_1;
1439 UINT word_2;
1440
1441 word_1 = GETIMEMUHI (current_cpu, pc + 2);
1442 word_2 = GETIMEMUHI (current_cpu, pc + 4);
1443 f_i32 = (0|(EXTRACT_MSB0_UINT (word_2, 16, 0, 16) << 0)|(EXTRACT_MSB0_UINT (word_1, 16, 0, 16) << 16));
1444 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1445
1446 /* Record the fields for the semantic handler. */
1447 FLD (f_i32) = f_i32;
1448 FLD (f_Ri) = f_Ri;
1449 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1450 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi32", "f_i32 0x%x", 'x', f_i32, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1451
1452 #if WITH_PROFILE_MODEL_P
1453 /* Record the fields for profiling. */
1454 if (PROFILE_MODEL_P (current_cpu))
1455 {
1456 FLD (out_Ri) = f_Ri;
1457 }
1458 #endif
1459 #undef FLD
1460 return idesc;
1461 }
1462
1463 extract_sfmt_ld:
1464 {
1465 const IDESC *idesc = &fr30bf_insn_data[itype];
1466 CGEN_INSN_INT insn = base_insn;
1467 #define FLD(f) abuf->fields.sfmt_ldr13.f
1468 UINT f_Rj;
1469 UINT f_Ri;
1470
1471 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1472 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1473
1474 /* Record the fields for the semantic handler. */
1475 FLD (f_Rj) = f_Rj;
1476 FLD (f_Ri) = f_Ri;
1477 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1478 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1479 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ld", "f_Rj 0x%x", 'x', f_Rj, "f_Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1480
1481 #if WITH_PROFILE_MODEL_P
1482 /* Record the fields for profiling. */
1483 if (PROFILE_MODEL_P (current_cpu))
1484 {
1485 FLD (in_Rj) = f_Rj;
1486 FLD (out_Ri) = f_Ri;
1487 }
1488 #endif
1489 #undef FLD
1490 return idesc;
1491 }
1492
1493 extract_sfmt_lduh:
1494 {
1495 const IDESC *idesc = &fr30bf_insn_data[itype];
1496 CGEN_INSN_INT insn = base_insn;
1497 #define FLD(f) abuf->fields.sfmt_ldr13.f
1498 UINT f_Rj;
1499 UINT f_Ri;
1500
1501 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1502 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1503
1504 /* Record the fields for the semantic handler. */
1505 FLD (f_Rj) = f_Rj;
1506 FLD (f_Ri) = f_Ri;
1507 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1508 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1509 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lduh", "f_Rj 0x%x", 'x', f_Rj, "f_Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1510
1511 #if WITH_PROFILE_MODEL_P
1512 /* Record the fields for profiling. */
1513 if (PROFILE_MODEL_P (current_cpu))
1514 {
1515 FLD (in_Rj) = f_Rj;
1516 FLD (out_Ri) = f_Ri;
1517 }
1518 #endif
1519 #undef FLD
1520 return idesc;
1521 }
1522
1523 extract_sfmt_ldub:
1524 {
1525 const IDESC *idesc = &fr30bf_insn_data[itype];
1526 CGEN_INSN_INT insn = base_insn;
1527 #define FLD(f) abuf->fields.sfmt_ldr13.f
1528 UINT f_Rj;
1529 UINT f_Ri;
1530
1531 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1532 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1533
1534 /* Record the fields for the semantic handler. */
1535 FLD (f_Rj) = f_Rj;
1536 FLD (f_Ri) = f_Ri;
1537 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1538 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1539 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldub", "f_Rj 0x%x", 'x', f_Rj, "f_Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1540
1541 #if WITH_PROFILE_MODEL_P
1542 /* Record the fields for profiling. */
1543 if (PROFILE_MODEL_P (current_cpu))
1544 {
1545 FLD (in_Rj) = f_Rj;
1546 FLD (out_Ri) = f_Ri;
1547 }
1548 #endif
1549 #undef FLD
1550 return idesc;
1551 }
1552
1553 extract_sfmt_ldr13:
1554 {
1555 const IDESC *idesc = &fr30bf_insn_data[itype];
1556 CGEN_INSN_INT insn = base_insn;
1557 #define FLD(f) abuf->fields.sfmt_ldr13.f
1558 UINT f_Rj;
1559 UINT f_Ri;
1560
1561 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1562 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1563
1564 /* Record the fields for the semantic handler. */
1565 FLD (f_Rj) = f_Rj;
1566 FLD (f_Ri) = f_Ri;
1567 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1568 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1569 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr13", "f_Rj 0x%x", 'x', f_Rj, "f_Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1570
1571 #if WITH_PROFILE_MODEL_P
1572 /* Record the fields for profiling. */
1573 if (PROFILE_MODEL_P (current_cpu))
1574 {
1575 FLD (in_Rj) = f_Rj;
1576 FLD (in_h_gr_SI_13) = 13;
1577 FLD (out_Ri) = f_Ri;
1578 }
1579 #endif
1580 #undef FLD
1581 return idesc;
1582 }
1583
1584 extract_sfmt_ldr13uh:
1585 {
1586 const IDESC *idesc = &fr30bf_insn_data[itype];
1587 CGEN_INSN_INT insn = base_insn;
1588 #define FLD(f) abuf->fields.sfmt_ldr13.f
1589 UINT f_Rj;
1590 UINT f_Ri;
1591
1592 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1593 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1594
1595 /* Record the fields for the semantic handler. */
1596 FLD (f_Rj) = f_Rj;
1597 FLD (f_Ri) = f_Ri;
1598 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1599 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1600 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr13uh", "f_Rj 0x%x", 'x', f_Rj, "f_Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1601
1602 #if WITH_PROFILE_MODEL_P
1603 /* Record the fields for profiling. */
1604 if (PROFILE_MODEL_P (current_cpu))
1605 {
1606 FLD (in_Rj) = f_Rj;
1607 FLD (in_h_gr_SI_13) = 13;
1608 FLD (out_Ri) = f_Ri;
1609 }
1610 #endif
1611 #undef FLD
1612 return idesc;
1613 }
1614
1615 extract_sfmt_ldr13ub:
1616 {
1617 const IDESC *idesc = &fr30bf_insn_data[itype];
1618 CGEN_INSN_INT insn = base_insn;
1619 #define FLD(f) abuf->fields.sfmt_ldr13.f
1620 UINT f_Rj;
1621 UINT f_Ri;
1622
1623 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1624 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1625
1626 /* Record the fields for the semantic handler. */
1627 FLD (f_Rj) = f_Rj;
1628 FLD (f_Ri) = f_Ri;
1629 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1630 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1631 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr13ub", "f_Rj 0x%x", 'x', f_Rj, "f_Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1632
1633 #if WITH_PROFILE_MODEL_P
1634 /* Record the fields for profiling. */
1635 if (PROFILE_MODEL_P (current_cpu))
1636 {
1637 FLD (in_Rj) = f_Rj;
1638 FLD (in_h_gr_SI_13) = 13;
1639 FLD (out_Ri) = f_Ri;
1640 }
1641 #endif
1642 #undef FLD
1643 return idesc;
1644 }
1645
1646 extract_sfmt_ldr14:
1647 {
1648 const IDESC *idesc = &fr30bf_insn_data[itype];
1649 CGEN_INSN_INT insn = base_insn;
1650 #define FLD(f) abuf->fields.sfmt_ldr14.f
1651 SI f_disp10;
1652 UINT f_Ri;
1653
1654 f_disp10 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (2));
1655 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1656
1657 /* Record the fields for the semantic handler. */
1658 FLD (f_disp10) = f_disp10;
1659 FLD (f_Ri) = f_Ri;
1660 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1661 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr14", "f_disp10 0x%x", 'x', f_disp10, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1662
1663 #if WITH_PROFILE_MODEL_P
1664 /* Record the fields for profiling. */
1665 if (PROFILE_MODEL_P (current_cpu))
1666 {
1667 FLD (in_h_gr_SI_14) = 14;
1668 FLD (out_Ri) = f_Ri;
1669 }
1670 #endif
1671 #undef FLD
1672 return idesc;
1673 }
1674
1675 extract_sfmt_ldr14uh:
1676 {
1677 const IDESC *idesc = &fr30bf_insn_data[itype];
1678 CGEN_INSN_INT insn = base_insn;
1679 #define FLD(f) abuf->fields.sfmt_ldr14uh.f
1680 SI f_disp9;
1681 UINT f_Ri;
1682
1683 f_disp9 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (1));
1684 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1685
1686 /* Record the fields for the semantic handler. */
1687 FLD (f_disp9) = f_disp9;
1688 FLD (f_Ri) = f_Ri;
1689 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1690 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr14uh", "f_disp9 0x%x", 'x', f_disp9, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1691
1692 #if WITH_PROFILE_MODEL_P
1693 /* Record the fields for profiling. */
1694 if (PROFILE_MODEL_P (current_cpu))
1695 {
1696 FLD (in_h_gr_SI_14) = 14;
1697 FLD (out_Ri) = f_Ri;
1698 }
1699 #endif
1700 #undef FLD
1701 return idesc;
1702 }
1703
1704 extract_sfmt_ldr14ub:
1705 {
1706 const IDESC *idesc = &fr30bf_insn_data[itype];
1707 CGEN_INSN_INT insn = base_insn;
1708 #define FLD(f) abuf->fields.sfmt_ldr14ub.f
1709 INT f_disp8;
1710 UINT f_Ri;
1711
1712 f_disp8 = EXTRACT_MSB0_INT (insn, 16, 4, 8);
1713 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1714
1715 /* Record the fields for the semantic handler. */
1716 FLD (f_disp8) = f_disp8;
1717 FLD (f_Ri) = f_Ri;
1718 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1719 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr14ub", "f_disp8 0x%x", 'x', f_disp8, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1720
1721 #if WITH_PROFILE_MODEL_P
1722 /* Record the fields for profiling. */
1723 if (PROFILE_MODEL_P (current_cpu))
1724 {
1725 FLD (in_h_gr_SI_14) = 14;
1726 FLD (out_Ri) = f_Ri;
1727 }
1728 #endif
1729 #undef FLD
1730 return idesc;
1731 }
1732
1733 extract_sfmt_ldr15:
1734 {
1735 const IDESC *idesc = &fr30bf_insn_data[itype];
1736 CGEN_INSN_INT insn = base_insn;
1737 #define FLD(f) abuf->fields.sfmt_ldr15.f
1738 USI f_udisp6;
1739 UINT f_Ri;
1740
1741 f_udisp6 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) << (2));
1742 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1743
1744 /* Record the fields for the semantic handler. */
1745 FLD (f_udisp6) = f_udisp6;
1746 FLD (f_Ri) = f_Ri;
1747 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1748 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr15", "f_udisp6 0x%x", 'x', f_udisp6, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1749
1750 #if WITH_PROFILE_MODEL_P
1751 /* Record the fields for profiling. */
1752 if (PROFILE_MODEL_P (current_cpu))
1753 {
1754 FLD (in_h_gr_SI_15) = 15;
1755 FLD (out_Ri) = f_Ri;
1756 }
1757 #endif
1758 #undef FLD
1759 return idesc;
1760 }
1761
1762 extract_sfmt_ldr15gr:
1763 {
1764 const IDESC *idesc = &fr30bf_insn_data[itype];
1765 CGEN_INSN_INT insn = base_insn;
1766 #define FLD(f) abuf->fields.sfmt_ldr15gr.f
1767 UINT f_Ri;
1768
1769 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1770
1771 /* Record the fields for the semantic handler. */
1772 FLD (f_Ri) = f_Ri;
1773 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1774 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr15gr", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1775
1776 #if WITH_PROFILE_MODEL_P
1777 /* Record the fields for profiling. */
1778 if (PROFILE_MODEL_P (current_cpu))
1779 {
1780 FLD (in_h_gr_SI_15) = 15;
1781 FLD (out_Ri) = f_Ri;
1782 FLD (out_h_gr_SI_15) = 15;
1783 }
1784 #endif
1785 #undef FLD
1786 return idesc;
1787 }
1788
1789 extract_sfmt_ldr15dr:
1790 {
1791 const IDESC *idesc = &fr30bf_insn_data[itype];
1792 CGEN_INSN_INT insn = base_insn;
1793 #define FLD(f) abuf->fields.sfmt_ldr15dr.f
1794 UINT f_Rs2;
1795
1796 f_Rs2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1797
1798 /* Record the fields for the semantic handler. */
1799 FLD (f_Rs2) = f_Rs2;
1800 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr15dr", "f_Rs2 0x%x", 'x', f_Rs2, (char *) 0));
1801
1802 #if WITH_PROFILE_MODEL_P
1803 /* Record the fields for profiling. */
1804 if (PROFILE_MODEL_P (current_cpu))
1805 {
1806 FLD (in_h_gr_SI_15) = 15;
1807 FLD (out_h_gr_SI_15) = 15;
1808 }
1809 #endif
1810 #undef FLD
1811 return idesc;
1812 }
1813
1814 extract_sfmt_ldr15ps:
1815 {
1816 const IDESC *idesc = &fr30bf_insn_data[itype];
1817 #define FLD(f) abuf->fields.sfmt_addsp.f
1818
1819
1820 /* Record the fields for the semantic handler. */
1821 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr15ps", (char *) 0));
1822
1823 #if WITH_PROFILE_MODEL_P
1824 /* Record the fields for profiling. */
1825 if (PROFILE_MODEL_P (current_cpu))
1826 {
1827 FLD (in_h_gr_SI_15) = 15;
1828 FLD (out_h_gr_SI_15) = 15;
1829 }
1830 #endif
1831 #undef FLD
1832 return idesc;
1833 }
1834
1835 extract_sfmt_st:
1836 {
1837 const IDESC *idesc = &fr30bf_insn_data[itype];
1838 CGEN_INSN_INT insn = base_insn;
1839 #define FLD(f) abuf->fields.sfmt_str13.f
1840 UINT f_Rj;
1841 UINT f_Ri;
1842
1843 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1844 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1845
1846 /* Record the fields for the semantic handler. */
1847 FLD (f_Ri) = f_Ri;
1848 FLD (f_Rj) = f_Rj;
1849 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1850 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1851 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_st", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1852
1853 #if WITH_PROFILE_MODEL_P
1854 /* Record the fields for profiling. */
1855 if (PROFILE_MODEL_P (current_cpu))
1856 {
1857 FLD (in_Ri) = f_Ri;
1858 FLD (in_Rj) = f_Rj;
1859 }
1860 #endif
1861 #undef FLD
1862 return idesc;
1863 }
1864
1865 extract_sfmt_sth:
1866 {
1867 const IDESC *idesc = &fr30bf_insn_data[itype];
1868 CGEN_INSN_INT insn = base_insn;
1869 #define FLD(f) abuf->fields.sfmt_str13.f
1870 UINT f_Rj;
1871 UINT f_Ri;
1872
1873 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1874 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1875
1876 /* Record the fields for the semantic handler. */
1877 FLD (f_Ri) = f_Ri;
1878 FLD (f_Rj) = f_Rj;
1879 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1880 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1881 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sth", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1882
1883 #if WITH_PROFILE_MODEL_P
1884 /* Record the fields for profiling. */
1885 if (PROFILE_MODEL_P (current_cpu))
1886 {
1887 FLD (in_Ri) = f_Ri;
1888 FLD (in_Rj) = f_Rj;
1889 }
1890 #endif
1891 #undef FLD
1892 return idesc;
1893 }
1894
1895 extract_sfmt_stb:
1896 {
1897 const IDESC *idesc = &fr30bf_insn_data[itype];
1898 CGEN_INSN_INT insn = base_insn;
1899 #define FLD(f) abuf->fields.sfmt_str13.f
1900 UINT f_Rj;
1901 UINT f_Ri;
1902
1903 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1904 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1905
1906 /* Record the fields for the semantic handler. */
1907 FLD (f_Ri) = f_Ri;
1908 FLD (f_Rj) = f_Rj;
1909 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1910 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1911 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stb", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1912
1913 #if WITH_PROFILE_MODEL_P
1914 /* Record the fields for profiling. */
1915 if (PROFILE_MODEL_P (current_cpu))
1916 {
1917 FLD (in_Ri) = f_Ri;
1918 FLD (in_Rj) = f_Rj;
1919 }
1920 #endif
1921 #undef FLD
1922 return idesc;
1923 }
1924
1925 extract_sfmt_str13:
1926 {
1927 const IDESC *idesc = &fr30bf_insn_data[itype];
1928 CGEN_INSN_INT insn = base_insn;
1929 #define FLD(f) abuf->fields.sfmt_str13.f
1930 UINT f_Rj;
1931 UINT f_Ri;
1932
1933 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1934 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1935
1936 /* Record the fields for the semantic handler. */
1937 FLD (f_Ri) = f_Ri;
1938 FLD (f_Rj) = f_Rj;
1939 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1940 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1941 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str13", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1942
1943 #if WITH_PROFILE_MODEL_P
1944 /* Record the fields for profiling. */
1945 if (PROFILE_MODEL_P (current_cpu))
1946 {
1947 FLD (in_Ri) = f_Ri;
1948 FLD (in_Rj) = f_Rj;
1949 FLD (in_h_gr_SI_13) = 13;
1950 }
1951 #endif
1952 #undef FLD
1953 return idesc;
1954 }
1955
1956 extract_sfmt_str13h:
1957 {
1958 const IDESC *idesc = &fr30bf_insn_data[itype];
1959 CGEN_INSN_INT insn = base_insn;
1960 #define FLD(f) abuf->fields.sfmt_str13.f
1961 UINT f_Rj;
1962 UINT f_Ri;
1963
1964 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1965 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1966
1967 /* Record the fields for the semantic handler. */
1968 FLD (f_Ri) = f_Ri;
1969 FLD (f_Rj) = f_Rj;
1970 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1971 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1972 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str13h", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1973
1974 #if WITH_PROFILE_MODEL_P
1975 /* Record the fields for profiling. */
1976 if (PROFILE_MODEL_P (current_cpu))
1977 {
1978 FLD (in_Ri) = f_Ri;
1979 FLD (in_Rj) = f_Rj;
1980 FLD (in_h_gr_SI_13) = 13;
1981 }
1982 #endif
1983 #undef FLD
1984 return idesc;
1985 }
1986
1987 extract_sfmt_str13b:
1988 {
1989 const IDESC *idesc = &fr30bf_insn_data[itype];
1990 CGEN_INSN_INT insn = base_insn;
1991 #define FLD(f) abuf->fields.sfmt_str13.f
1992 UINT f_Rj;
1993 UINT f_Ri;
1994
1995 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1996 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1997
1998 /* Record the fields for the semantic handler. */
1999 FLD (f_Ri) = f_Ri;
2000 FLD (f_Rj) = f_Rj;
2001 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2002 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
2003 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str13b", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
2004
2005 #if WITH_PROFILE_MODEL_P
2006 /* Record the fields for profiling. */
2007 if (PROFILE_MODEL_P (current_cpu))
2008 {
2009 FLD (in_Ri) = f_Ri;
2010 FLD (in_Rj) = f_Rj;
2011 FLD (in_h_gr_SI_13) = 13;
2012 }
2013 #endif
2014 #undef FLD
2015 return idesc;
2016 }
2017
2018 extract_sfmt_str14:
2019 {
2020 const IDESC *idesc = &fr30bf_insn_data[itype];
2021 CGEN_INSN_INT insn = base_insn;
2022 #define FLD(f) abuf->fields.sfmt_str14.f
2023 SI f_disp10;
2024 UINT f_Ri;
2025
2026 f_disp10 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (2));
2027 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2028
2029 /* Record the fields for the semantic handler. */
2030 FLD (f_Ri) = f_Ri;
2031 FLD (f_disp10) = f_disp10;
2032 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2033 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str14", "f_Ri 0x%x", 'x', f_Ri, "f_disp10 0x%x", 'x', f_disp10, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2034
2035 #if WITH_PROFILE_MODEL_P
2036 /* Record the fields for profiling. */
2037 if (PROFILE_MODEL_P (current_cpu))
2038 {
2039 FLD (in_Ri) = f_Ri;
2040 FLD (in_h_gr_SI_14) = 14;
2041 }
2042 #endif
2043 #undef FLD
2044 return idesc;
2045 }
2046
2047 extract_sfmt_str14h:
2048 {
2049 const IDESC *idesc = &fr30bf_insn_data[itype];
2050 CGEN_INSN_INT insn = base_insn;
2051 #define FLD(f) abuf->fields.sfmt_str14h.f
2052 SI f_disp9;
2053 UINT f_Ri;
2054
2055 f_disp9 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (1));
2056 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2057
2058 /* Record the fields for the semantic handler. */
2059 FLD (f_Ri) = f_Ri;
2060 FLD (f_disp9) = f_disp9;
2061 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2062 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str14h", "f_Ri 0x%x", 'x', f_Ri, "f_disp9 0x%x", 'x', f_disp9, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2063
2064 #if WITH_PROFILE_MODEL_P
2065 /* Record the fields for profiling. */
2066 if (PROFILE_MODEL_P (current_cpu))
2067 {
2068 FLD (in_Ri) = f_Ri;
2069 FLD (in_h_gr_SI_14) = 14;
2070 }
2071 #endif
2072 #undef FLD
2073 return idesc;
2074 }
2075
2076 extract_sfmt_str14b:
2077 {
2078 const IDESC *idesc = &fr30bf_insn_data[itype];
2079 CGEN_INSN_INT insn = base_insn;
2080 #define FLD(f) abuf->fields.sfmt_str14b.f
2081 INT f_disp8;
2082 UINT f_Ri;
2083
2084 f_disp8 = EXTRACT_MSB0_INT (insn, 16, 4, 8);
2085 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2086
2087 /* Record the fields for the semantic handler. */
2088 FLD (f_Ri) = f_Ri;
2089 FLD (f_disp8) = f_disp8;
2090 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2091 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str14b", "f_Ri 0x%x", 'x', f_Ri, "f_disp8 0x%x", 'x', f_disp8, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2092
2093 #if WITH_PROFILE_MODEL_P
2094 /* Record the fields for profiling. */
2095 if (PROFILE_MODEL_P (current_cpu))
2096 {
2097 FLD (in_Ri) = f_Ri;
2098 FLD (in_h_gr_SI_14) = 14;
2099 }
2100 #endif
2101 #undef FLD
2102 return idesc;
2103 }
2104
2105 extract_sfmt_str15:
2106 {
2107 const IDESC *idesc = &fr30bf_insn_data[itype];
2108 CGEN_INSN_INT insn = base_insn;
2109 #define FLD(f) abuf->fields.sfmt_str15.f
2110 USI f_udisp6;
2111 UINT f_Ri;
2112
2113 f_udisp6 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) << (2));
2114 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2115
2116 /* Record the fields for the semantic handler. */
2117 FLD (f_Ri) = f_Ri;
2118 FLD (f_udisp6) = f_udisp6;
2119 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2120 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15", "f_Ri 0x%x", 'x', f_Ri, "f_udisp6 0x%x", 'x', f_udisp6, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2121
2122 #if WITH_PROFILE_MODEL_P
2123 /* Record the fields for profiling. */
2124 if (PROFILE_MODEL_P (current_cpu))
2125 {
2126 FLD (in_Ri) = f_Ri;
2127 FLD (in_h_gr_SI_15) = 15;
2128 }
2129 #endif
2130 #undef FLD
2131 return idesc;
2132 }
2133
2134 extract_sfmt_str15gr:
2135 {
2136 const IDESC *idesc = &fr30bf_insn_data[itype];
2137 CGEN_INSN_INT insn = base_insn;
2138 #define FLD(f) abuf->fields.sfmt_str15gr.f
2139 UINT f_Ri;
2140
2141 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2142
2143 /* Record the fields for the semantic handler. */
2144 FLD (f_Ri) = f_Ri;
2145 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2146 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15gr", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2147
2148 #if WITH_PROFILE_MODEL_P
2149 /* Record the fields for profiling. */
2150 if (PROFILE_MODEL_P (current_cpu))
2151 {
2152 FLD (in_Ri) = f_Ri;
2153 FLD (in_h_gr_SI_15) = 15;
2154 FLD (out_h_gr_SI_15) = 15;
2155 }
2156 #endif
2157 #undef FLD
2158 return idesc;
2159 }
2160
2161 extract_sfmt_str15dr:
2162 {
2163 const IDESC *idesc = &fr30bf_insn_data[itype];
2164 CGEN_INSN_INT insn = base_insn;
2165 #define FLD(f) abuf->fields.sfmt_ldr15dr.f
2166 UINT f_Rs2;
2167
2168 f_Rs2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2169
2170 /* Record the fields for the semantic handler. */
2171 FLD (f_Rs2) = f_Rs2;
2172 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15dr", "f_Rs2 0x%x", 'x', f_Rs2, (char *) 0));
2173
2174 #if WITH_PROFILE_MODEL_P
2175 /* Record the fields for profiling. */
2176 if (PROFILE_MODEL_P (current_cpu))
2177 {
2178 FLD (in_h_gr_SI_15) = 15;
2179 FLD (out_h_gr_SI_15) = 15;
2180 }
2181 #endif
2182 #undef FLD
2183 return idesc;
2184 }
2185
2186 extract_sfmt_str15ps:
2187 {
2188 const IDESC *idesc = &fr30bf_insn_data[itype];
2189 #define FLD(f) abuf->fields.sfmt_addsp.f
2190
2191
2192 /* Record the fields for the semantic handler. */
2193 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15ps", (char *) 0));
2194
2195 #if WITH_PROFILE_MODEL_P
2196 /* Record the fields for profiling. */
2197 if (PROFILE_MODEL_P (current_cpu))
2198 {
2199 FLD (in_h_gr_SI_15) = 15;
2200 FLD (out_h_gr_SI_15) = 15;
2201 }
2202 #endif
2203 #undef FLD
2204 return idesc;
2205 }
2206
2207 extract_sfmt_mov:
2208 {
2209 const IDESC *idesc = &fr30bf_insn_data[itype];
2210 CGEN_INSN_INT insn = base_insn;
2211 #define FLD(f) abuf->fields.sfmt_ldr13.f
2212 UINT f_Rj;
2213 UINT f_Ri;
2214
2215 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
2216 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2217
2218 /* Record the fields for the semantic handler. */
2219 FLD (f_Rj) = f_Rj;
2220 FLD (f_Ri) = f_Ri;
2221 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
2222 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2223 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mov", "f_Rj 0x%x", 'x', f_Rj, "f_Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2224
2225 #if WITH_PROFILE_MODEL_P
2226 /* Record the fields for profiling. */
2227 if (PROFILE_MODEL_P (current_cpu))
2228 {
2229 FLD (in_Rj) = f_Rj;
2230 FLD (out_Ri) = f_Ri;
2231 }
2232 #endif
2233 #undef FLD
2234 return idesc;
2235 }
2236
2237 extract_sfmt_movdr:
2238 {
2239 const IDESC *idesc = &fr30bf_insn_data[itype];
2240 CGEN_INSN_INT insn = base_insn;
2241 #define FLD(f) abuf->fields.sfmt_movdr.f
2242 UINT f_Rs1;
2243 UINT f_Ri;
2244
2245 f_Rs1 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
2246 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2247
2248 /* Record the fields for the semantic handler. */
2249 FLD (f_Rs1) = f_Rs1;
2250 FLD (f_Ri) = f_Ri;
2251 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2252 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movdr", "f_Rs1 0x%x", 'x', f_Rs1, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2253
2254 #if WITH_PROFILE_MODEL_P
2255 /* Record the fields for profiling. */
2256 if (PROFILE_MODEL_P (current_cpu))
2257 {
2258 FLD (out_Ri) = f_Ri;
2259 }
2260 #endif
2261 #undef FLD
2262 return idesc;
2263 }
2264
2265 extract_sfmt_movps:
2266 {
2267 const IDESC *idesc = &fr30bf_insn_data[itype];
2268 CGEN_INSN_INT insn = base_insn;
2269 #define FLD(f) abuf->fields.sfmt_movdr.f
2270 UINT f_Ri;
2271
2272 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2273
2274 /* Record the fields for the semantic handler. */
2275 FLD (f_Ri) = f_Ri;
2276 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2277 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movps", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2278
2279 #if WITH_PROFILE_MODEL_P
2280 /* Record the fields for profiling. */
2281 if (PROFILE_MODEL_P (current_cpu))
2282 {
2283 FLD (out_Ri) = f_Ri;
2284 }
2285 #endif
2286 #undef FLD
2287 return idesc;
2288 }
2289
2290 extract_sfmt_mov2dr:
2291 {
2292 const IDESC *idesc = &fr30bf_insn_data[itype];
2293 CGEN_INSN_INT insn = base_insn;
2294 #define FLD(f) abuf->fields.sfmt_mov2dr.f
2295 UINT f_Rs1;
2296 UINT f_Ri;
2297
2298 f_Rs1 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
2299 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2300
2301 /* Record the fields for the semantic handler. */
2302 FLD (f_Ri) = f_Ri;
2303 FLD (f_Rs1) = f_Rs1;
2304 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2305 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mov2dr", "f_Ri 0x%x", 'x', f_Ri, "f_Rs1 0x%x", 'x', f_Rs1, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2306
2307 #if WITH_PROFILE_MODEL_P
2308 /* Record the fields for profiling. */
2309 if (PROFILE_MODEL_P (current_cpu))
2310 {
2311 FLD (in_Ri) = f_Ri;
2312 }
2313 #endif
2314 #undef FLD
2315 return idesc;
2316 }
2317
2318 extract_sfmt_mov2ps:
2319 {
2320 const IDESC *idesc = &fr30bf_insn_data[itype];
2321 CGEN_INSN_INT insn = base_insn;
2322 #define FLD(f) abuf->fields.sfmt_mov2dr.f
2323 UINT f_Ri;
2324
2325 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2326
2327 /* Record the fields for the semantic handler. */
2328 FLD (f_Ri) = f_Ri;
2329 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2330 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mov2ps", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2331
2332 #if WITH_PROFILE_MODEL_P
2333 /* Record the fields for profiling. */
2334 if (PROFILE_MODEL_P (current_cpu))
2335 {
2336 FLD (in_Ri) = f_Ri;
2337 }
2338 #endif
2339 #undef FLD
2340 return idesc;
2341 }
2342
2343 extract_sfmt_jmp:
2344 {
2345 const IDESC *idesc = &fr30bf_insn_data[itype];
2346 CGEN_INSN_INT insn = base_insn;
2347 #define FLD(f) abuf->fields.sfmt_mov2dr.f
2348 UINT f_Ri;
2349
2350 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2351
2352 /* Record the fields for the semantic handler. */
2353 FLD (f_Ri) = f_Ri;
2354 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2355 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jmp", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2356
2357 #if WITH_PROFILE_MODEL_P
2358 /* Record the fields for profiling. */
2359 if (PROFILE_MODEL_P (current_cpu))
2360 {
2361 FLD (in_Ri) = f_Ri;
2362 }
2363 #endif
2364 #undef FLD
2365 return idesc;
2366 }
2367
2368 extract_sfmt_callr:
2369 {
2370 const IDESC *idesc = &fr30bf_insn_data[itype];
2371 CGEN_INSN_INT insn = base_insn;
2372 #define FLD(f) abuf->fields.sfmt_mov2dr.f
2373 UINT f_Ri;
2374
2375 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2376
2377 /* Record the fields for the semantic handler. */
2378 FLD (f_Ri) = f_Ri;
2379 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2380 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_callr", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2381
2382 #if WITH_PROFILE_MODEL_P
2383 /* Record the fields for profiling. */
2384 if (PROFILE_MODEL_P (current_cpu))
2385 {
2386 FLD (in_Ri) = f_Ri;
2387 }
2388 #endif
2389 #undef FLD
2390 return idesc;
2391 }
2392
2393 extract_sfmt_call:
2394 {
2395 const IDESC *idesc = &fr30bf_insn_data[itype];
2396 CGEN_INSN_INT insn = base_insn;
2397 #define FLD(f) abuf->fields.sfmt_call.f
2398 SI f_rel12;
2399
2400 f_rel12 = ((((EXTRACT_MSB0_INT (insn, 16, 5, 11)) << (1))) + (((pc) + (2))));
2401
2402 /* Record the fields for the semantic handler. */
2403 FLD (i_label12) = f_rel12;
2404 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_call", "label12 0x%x", 'x', f_rel12, (char *) 0));
2405
2406 #if WITH_PROFILE_MODEL_P
2407 /* Record the fields for profiling. */
2408 if (PROFILE_MODEL_P (current_cpu))
2409 {
2410 }
2411 #endif
2412 #undef FLD
2413 return idesc;
2414 }
2415
2416 extract_sfmt_ret:
2417 {
2418 const IDESC *idesc = &fr30bf_insn_data[itype];
2419 #define FLD(f) abuf->fields.fmt_empty.f
2420
2421
2422 /* Record the fields for the semantic handler. */
2423 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ret", (char *) 0));
2424
2425 #if WITH_PROFILE_MODEL_P
2426 /* Record the fields for profiling. */
2427 if (PROFILE_MODEL_P (current_cpu))
2428 {
2429 }
2430 #endif
2431 #undef FLD
2432 return idesc;
2433 }
2434
2435 extract_sfmt_int:
2436 {
2437 const IDESC *idesc = &fr30bf_insn_data[itype];
2438 CGEN_INSN_INT insn = base_insn;
2439 #define FLD(f) abuf->fields.sfmt_int.f
2440 UINT f_u8;
2441
2442 f_u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2443
2444 /* Record the fields for the semantic handler. */
2445 FLD (f_u8) = f_u8;
2446 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_int", "f_u8 0x%x", 'x', f_u8, (char *) 0));
2447
2448 #if WITH_PROFILE_MODEL_P
2449 /* Record the fields for profiling. */
2450 if (PROFILE_MODEL_P (current_cpu))
2451 {
2452 }
2453 #endif
2454 #undef FLD
2455 return idesc;
2456 }
2457
2458 extract_sfmt_inte:
2459 {
2460 const IDESC *idesc = &fr30bf_insn_data[itype];
2461 #define FLD(f) abuf->fields.fmt_empty.f
2462
2463
2464 /* Record the fields for the semantic handler. */
2465 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_inte", (char *) 0));
2466
2467 #if WITH_PROFILE_MODEL_P
2468 /* Record the fields for profiling. */
2469 if (PROFILE_MODEL_P (current_cpu))
2470 {
2471 }
2472 #endif
2473 #undef FLD
2474 return idesc;
2475 }
2476
2477 extract_sfmt_reti:
2478 {
2479 const IDESC *idesc = &fr30bf_insn_data[itype];
2480 #define FLD(f) abuf->fields.fmt_empty.f
2481
2482
2483 /* Record the fields for the semantic handler. */
2484 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_reti", (char *) 0));
2485
2486 #if WITH_PROFILE_MODEL_P
2487 /* Record the fields for profiling. */
2488 if (PROFILE_MODEL_P (current_cpu))
2489 {
2490 }
2491 #endif
2492 #undef FLD
2493 return idesc;
2494 }
2495
2496 extract_sfmt_brad:
2497 {
2498 const IDESC *idesc = &fr30bf_insn_data[itype];
2499 CGEN_INSN_INT insn = base_insn;
2500 #define FLD(f) abuf->fields.sfmt_brad.f
2501 SI f_rel9;
2502
2503 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2504
2505 /* Record the fields for the semantic handler. */
2506 FLD (i_label9) = f_rel9;
2507 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_brad", "label9 0x%x", 'x', f_rel9, (char *) 0));
2508
2509 #if WITH_PROFILE_MODEL_P
2510 /* Record the fields for profiling. */
2511 if (PROFILE_MODEL_P (current_cpu))
2512 {
2513 }
2514 #endif
2515 #undef FLD
2516 return idesc;
2517 }
2518
2519 extract_sfmt_bnod:
2520 {
2521 const IDESC *idesc = &fr30bf_insn_data[itype];
2522 #define FLD(f) abuf->fields.fmt_empty.f
2523
2524
2525 /* Record the fields for the semantic handler. */
2526 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bnod", (char *) 0));
2527
2528 #undef FLD
2529 return idesc;
2530 }
2531
2532 extract_sfmt_beqd:
2533 {
2534 const IDESC *idesc = &fr30bf_insn_data[itype];
2535 CGEN_INSN_INT insn = base_insn;
2536 #define FLD(f) abuf->fields.sfmt_brad.f
2537 SI f_rel9;
2538
2539 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2540
2541 /* Record the fields for the semantic handler. */
2542 FLD (i_label9) = f_rel9;
2543 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_beqd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2544
2545 #if WITH_PROFILE_MODEL_P
2546 /* Record the fields for profiling. */
2547 if (PROFILE_MODEL_P (current_cpu))
2548 {
2549 }
2550 #endif
2551 #undef FLD
2552 return idesc;
2553 }
2554
2555 extract_sfmt_bcd:
2556 {
2557 const IDESC *idesc = &fr30bf_insn_data[itype];
2558 CGEN_INSN_INT insn = base_insn;
2559 #define FLD(f) abuf->fields.sfmt_brad.f
2560 SI f_rel9;
2561
2562 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2563
2564 /* Record the fields for the semantic handler. */
2565 FLD (i_label9) = f_rel9;
2566 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bcd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2567
2568 #if WITH_PROFILE_MODEL_P
2569 /* Record the fields for profiling. */
2570 if (PROFILE_MODEL_P (current_cpu))
2571 {
2572 }
2573 #endif
2574 #undef FLD
2575 return idesc;
2576 }
2577
2578 extract_sfmt_bnd:
2579 {
2580 const IDESC *idesc = &fr30bf_insn_data[itype];
2581 CGEN_INSN_INT insn = base_insn;
2582 #define FLD(f) abuf->fields.sfmt_brad.f
2583 SI f_rel9;
2584
2585 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2586
2587 /* Record the fields for the semantic handler. */
2588 FLD (i_label9) = f_rel9;
2589 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bnd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2590
2591 #if WITH_PROFILE_MODEL_P
2592 /* Record the fields for profiling. */
2593 if (PROFILE_MODEL_P (current_cpu))
2594 {
2595 }
2596 #endif
2597 #undef FLD
2598 return idesc;
2599 }
2600
2601 extract_sfmt_bvd:
2602 {
2603 const IDESC *idesc = &fr30bf_insn_data[itype];
2604 CGEN_INSN_INT insn = base_insn;
2605 #define FLD(f) abuf->fields.sfmt_brad.f
2606 SI f_rel9;
2607
2608 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2609
2610 /* Record the fields for the semantic handler. */
2611 FLD (i_label9) = f_rel9;
2612 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bvd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2613
2614 #if WITH_PROFILE_MODEL_P
2615 /* Record the fields for profiling. */
2616 if (PROFILE_MODEL_P (current_cpu))
2617 {
2618 }
2619 #endif
2620 #undef FLD
2621 return idesc;
2622 }
2623
2624 extract_sfmt_bltd:
2625 {
2626 const IDESC *idesc = &fr30bf_insn_data[itype];
2627 CGEN_INSN_INT insn = base_insn;
2628 #define FLD(f) abuf->fields.sfmt_brad.f
2629 SI f_rel9;
2630
2631 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2632
2633 /* Record the fields for the semantic handler. */
2634 FLD (i_label9) = f_rel9;
2635 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bltd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2636
2637 #if WITH_PROFILE_MODEL_P
2638 /* Record the fields for profiling. */
2639 if (PROFILE_MODEL_P (current_cpu))
2640 {
2641 }
2642 #endif
2643 #undef FLD
2644 return idesc;
2645 }
2646
2647 extract_sfmt_bled:
2648 {
2649 const IDESC *idesc = &fr30bf_insn_data[itype];
2650 CGEN_INSN_INT insn = base_insn;
2651 #define FLD(f) abuf->fields.sfmt_brad.f
2652 SI f_rel9;
2653
2654 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2655
2656 /* Record the fields for the semantic handler. */
2657 FLD (i_label9) = f_rel9;
2658 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bled", "label9 0x%x", 'x', f_rel9, (char *) 0));
2659
2660 #if WITH_PROFILE_MODEL_P
2661 /* Record the fields for profiling. */
2662 if (PROFILE_MODEL_P (current_cpu))
2663 {
2664 }
2665 #endif
2666 #undef FLD
2667 return idesc;
2668 }
2669
2670 extract_sfmt_blsd:
2671 {
2672 const IDESC *idesc = &fr30bf_insn_data[itype];
2673 CGEN_INSN_INT insn = base_insn;
2674 #define FLD(f) abuf->fields.sfmt_brad.f
2675 SI f_rel9;
2676
2677 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2678
2679 /* Record the fields for the semantic handler. */
2680 FLD (i_label9) = f_rel9;
2681 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_blsd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2682
2683 #if WITH_PROFILE_MODEL_P
2684 /* Record the fields for profiling. */
2685 if (PROFILE_MODEL_P (current_cpu))
2686 {
2687 }
2688 #endif
2689 #undef FLD
2690 return idesc;
2691 }
2692
2693 extract_sfmt_dmovr13:
2694 {
2695 const IDESC *idesc = &fr30bf_insn_data[itype];
2696 CGEN_INSN_INT insn = base_insn;
2697 #define FLD(f) abuf->fields.sfmt_dmovr13pi.f
2698 USI f_dir10;
2699
2700 f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2701
2702 /* Record the fields for the semantic handler. */
2703 FLD (f_dir10) = f_dir10;
2704 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2705
2706 #if WITH_PROFILE_MODEL_P
2707 /* Record the fields for profiling. */
2708 if (PROFILE_MODEL_P (current_cpu))
2709 {
2710 FLD (in_h_gr_SI_13) = 13;
2711 }
2712 #endif
2713 #undef FLD
2714 return idesc;
2715 }
2716
2717 extract_sfmt_dmovr13h:
2718 {
2719 const IDESC *idesc = &fr30bf_insn_data[itype];
2720 CGEN_INSN_INT insn = base_insn;
2721 #define FLD(f) abuf->fields.sfmt_dmovr13pih.f
2722 USI f_dir9;
2723
2724 f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2725
2726 /* Record the fields for the semantic handler. */
2727 FLD (f_dir9) = f_dir9;
2728 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13h", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2729
2730 #if WITH_PROFILE_MODEL_P
2731 /* Record the fields for profiling. */
2732 if (PROFILE_MODEL_P (current_cpu))
2733 {
2734 FLD (in_h_gr_SI_13) = 13;
2735 }
2736 #endif
2737 #undef FLD
2738 return idesc;
2739 }
2740
2741 extract_sfmt_dmovr13b:
2742 {
2743 const IDESC *idesc = &fr30bf_insn_data[itype];
2744 CGEN_INSN_INT insn = base_insn;
2745 #define FLD(f) abuf->fields.sfmt_dmovr13pib.f
2746 UINT f_dir8;
2747
2748 f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2749
2750 /* Record the fields for the semantic handler. */
2751 FLD (f_dir8) = f_dir8;
2752 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13b", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2753
2754 #if WITH_PROFILE_MODEL_P
2755 /* Record the fields for profiling. */
2756 if (PROFILE_MODEL_P (current_cpu))
2757 {
2758 FLD (in_h_gr_SI_13) = 13;
2759 }
2760 #endif
2761 #undef FLD
2762 return idesc;
2763 }
2764
2765 extract_sfmt_dmovr13pi:
2766 {
2767 const IDESC *idesc = &fr30bf_insn_data[itype];
2768 CGEN_INSN_INT insn = base_insn;
2769 #define FLD(f) abuf->fields.sfmt_dmovr13pi.f
2770 USI f_dir10;
2771
2772 f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2773
2774 /* Record the fields for the semantic handler. */
2775 FLD (f_dir10) = f_dir10;
2776 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2777
2778 #if WITH_PROFILE_MODEL_P
2779 /* Record the fields for profiling. */
2780 if (PROFILE_MODEL_P (current_cpu))
2781 {
2782 FLD (in_h_gr_SI_13) = 13;
2783 FLD (out_h_gr_SI_13) = 13;
2784 }
2785 #endif
2786 #undef FLD
2787 return idesc;
2788 }
2789
2790 extract_sfmt_dmovr13pih:
2791 {
2792 const IDESC *idesc = &fr30bf_insn_data[itype];
2793 CGEN_INSN_INT insn = base_insn;
2794 #define FLD(f) abuf->fields.sfmt_dmovr13pih.f
2795 USI f_dir9;
2796
2797 f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2798
2799 /* Record the fields for the semantic handler. */
2800 FLD (f_dir9) = f_dir9;
2801 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13pih", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2802
2803 #if WITH_PROFILE_MODEL_P
2804 /* Record the fields for profiling. */
2805 if (PROFILE_MODEL_P (current_cpu))
2806 {
2807 FLD (in_h_gr_SI_13) = 13;
2808 FLD (out_h_gr_SI_13) = 13;
2809 }
2810 #endif
2811 #undef FLD
2812 return idesc;
2813 }
2814
2815 extract_sfmt_dmovr13pib:
2816 {
2817 const IDESC *idesc = &fr30bf_insn_data[itype];
2818 CGEN_INSN_INT insn = base_insn;
2819 #define FLD(f) abuf->fields.sfmt_dmovr13pib.f
2820 UINT f_dir8;
2821
2822 f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2823
2824 /* Record the fields for the semantic handler. */
2825 FLD (f_dir8) = f_dir8;
2826 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13pib", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2827
2828 #if WITH_PROFILE_MODEL_P
2829 /* Record the fields for profiling. */
2830 if (PROFILE_MODEL_P (current_cpu))
2831 {
2832 FLD (in_h_gr_SI_13) = 13;
2833 FLD (out_h_gr_SI_13) = 13;
2834 }
2835 #endif
2836 #undef FLD
2837 return idesc;
2838 }
2839
2840 extract_sfmt_dmovr15pi:
2841 {
2842 const IDESC *idesc = &fr30bf_insn_data[itype];
2843 CGEN_INSN_INT insn = base_insn;
2844 #define FLD(f) abuf->fields.sfmt_dmovr15pi.f
2845 USI f_dir10;
2846
2847 f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2848
2849 /* Record the fields for the semantic handler. */
2850 FLD (f_dir10) = f_dir10;
2851 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr15pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2852
2853 #if WITH_PROFILE_MODEL_P
2854 /* Record the fields for profiling. */
2855 if (PROFILE_MODEL_P (current_cpu))
2856 {
2857 FLD (in_h_gr_SI_15) = 15;
2858 FLD (out_h_gr_SI_15) = 15;
2859 }
2860 #endif
2861 #undef FLD
2862 return idesc;
2863 }
2864
2865 extract_sfmt_dmov2r13:
2866 {
2867 const IDESC *idesc = &fr30bf_insn_data[itype];
2868 CGEN_INSN_INT insn = base_insn;
2869 #define FLD(f) abuf->fields.sfmt_dmovr13pi.f
2870 USI f_dir10;
2871
2872 f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2873
2874 /* Record the fields for the semantic handler. */
2875 FLD (f_dir10) = f_dir10;
2876 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2877
2878 #if WITH_PROFILE_MODEL_P
2879 /* Record the fields for profiling. */
2880 if (PROFILE_MODEL_P (current_cpu))
2881 {
2882 FLD (out_h_gr_SI_13) = 13;
2883 }
2884 #endif
2885 #undef FLD
2886 return idesc;
2887 }
2888
2889 extract_sfmt_dmov2r13h:
2890 {
2891 const IDESC *idesc = &fr30bf_insn_data[itype];
2892 CGEN_INSN_INT insn = base_insn;
2893 #define FLD(f) abuf->fields.sfmt_dmovr13pih.f
2894 USI f_dir9;
2895
2896 f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2897
2898 /* Record the fields for the semantic handler. */
2899 FLD (f_dir9) = f_dir9;
2900 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13h", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2901
2902 #if WITH_PROFILE_MODEL_P
2903 /* Record the fields for profiling. */
2904 if (PROFILE_MODEL_P (current_cpu))
2905 {
2906 FLD (out_h_gr_SI_13) = 13;
2907 }
2908 #endif
2909 #undef FLD
2910 return idesc;
2911 }
2912
2913 extract_sfmt_dmov2r13b:
2914 {
2915 const IDESC *idesc = &fr30bf_insn_data[itype];
2916 CGEN_INSN_INT insn = base_insn;
2917 #define FLD(f) abuf->fields.sfmt_dmovr13pib.f
2918 UINT f_dir8;
2919
2920 f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2921
2922 /* Record the fields for the semantic handler. */
2923 FLD (f_dir8) = f_dir8;
2924 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13b", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2925
2926 #if WITH_PROFILE_MODEL_P
2927 /* Record the fields for profiling. */
2928 if (PROFILE_MODEL_P (current_cpu))
2929 {
2930 FLD (out_h_gr_SI_13) = 13;
2931 }
2932 #endif
2933 #undef FLD
2934 return idesc;
2935 }
2936
2937 extract_sfmt_dmov2r13pi:
2938 {
2939 const IDESC *idesc = &fr30bf_insn_data[itype];
2940 CGEN_INSN_INT insn = base_insn;
2941 #define FLD(f) abuf->fields.sfmt_dmovr13pi.f
2942 USI f_dir10;
2943
2944 f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2945
2946 /* Record the fields for the semantic handler. */
2947 FLD (f_dir10) = f_dir10;
2948 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2949
2950 #if WITH_PROFILE_MODEL_P
2951 /* Record the fields for profiling. */
2952 if (PROFILE_MODEL_P (current_cpu))
2953 {
2954 FLD (in_h_gr_SI_13) = 13;
2955 FLD (out_h_gr_SI_13) = 13;
2956 }
2957 #endif
2958 #undef FLD
2959 return idesc;
2960 }
2961
2962 extract_sfmt_dmov2r13pih:
2963 {
2964 const IDESC *idesc = &fr30bf_insn_data[itype];
2965 CGEN_INSN_INT insn = base_insn;
2966 #define FLD(f) abuf->fields.sfmt_dmovr13pih.f
2967 USI f_dir9;
2968
2969 f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2970
2971 /* Record the fields for the semantic handler. */
2972 FLD (f_dir9) = f_dir9;
2973 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13pih", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2974
2975 #if WITH_PROFILE_MODEL_P
2976 /* Record the fields for profiling. */
2977 if (PROFILE_MODEL_P (current_cpu))
2978 {
2979 FLD (in_h_gr_SI_13) = 13;
2980 FLD (out_h_gr_SI_13) = 13;
2981 }
2982 #endif
2983 #undef FLD
2984 return idesc;
2985 }
2986
2987 extract_sfmt_dmov2r13pib:
2988 {
2989 const IDESC *idesc = &fr30bf_insn_data[itype];
2990 CGEN_INSN_INT insn = base_insn;
2991 #define FLD(f) abuf->fields.sfmt_dmovr13pib.f
2992 UINT f_dir8;
2993
2994 f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2995
2996 /* Record the fields for the semantic handler. */
2997 FLD (f_dir8) = f_dir8;
2998 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13pib", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2999
3000 #if WITH_PROFILE_MODEL_P
3001 /* Record the fields for profiling. */
3002 if (PROFILE_MODEL_P (current_cpu))
3003 {
3004 FLD (in_h_gr_SI_13) = 13;
3005 FLD (out_h_gr_SI_13) = 13;
3006 }
3007 #endif
3008 #undef FLD
3009 return idesc;
3010 }
3011
3012 extract_sfmt_dmov2r15pd:
3013 {
3014 const IDESC *idesc = &fr30bf_insn_data[itype];
3015 CGEN_INSN_INT insn = base_insn;
3016 #define FLD(f) abuf->fields.sfmt_dmovr15pi.f
3017 USI f_dir10;
3018
3019 f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
3020
3021 /* Record the fields for the semantic handler. */
3022 FLD (f_dir10) = f_dir10;
3023 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r15pd", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
3024
3025 #if WITH_PROFILE_MODEL_P
3026 /* Record the fields for profiling. */
3027 if (PROFILE_MODEL_P (current_cpu))
3028 {
3029 FLD (in_h_gr_SI_15) = 15;
3030 FLD (out_h_gr_SI_15) = 15;
3031 }
3032 #endif
3033 #undef FLD
3034 return idesc;
3035 }
3036
3037 extract_sfmt_ldres:
3038 {
3039 const IDESC *idesc = &fr30bf_insn_data[itype];
3040 CGEN_INSN_INT insn = base_insn;
3041 #define FLD(f) abuf->fields.sfmt_add2.f
3042 UINT f_Ri;
3043
3044 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
3045
3046 /* Record the fields for the semantic handler. */
3047 FLD (f_Ri) = f_Ri;
3048 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
3049 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldres", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
3050
3051 #if WITH_PROFILE_MODEL_P
3052 /* Record the fields for profiling. */
3053 if (PROFILE_MODEL_P (current_cpu))
3054 {
3055 FLD (in_Ri) = f_Ri;
3056 FLD (out_Ri) = f_Ri;
3057 }
3058 #endif
3059 #undef FLD
3060 return idesc;
3061 }
3062
3063 extract_sfmt_copop:
3064 {
3065 const IDESC *idesc = &fr30bf_insn_data[itype];
3066 #define FLD(f) abuf->fields.fmt_empty.f
3067 /* Contents of trailing part of insn. */
3068 UINT word_1;
3069
3070 word_1 = GETIMEMUHI (current_cpu, pc + 2);
3071
3072 /* Record the fields for the semantic handler. */
3073 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_copop", (char *) 0));
3074
3075 #undef FLD
3076 return idesc;
3077 }
3078
3079 extract_sfmt_andccr:
3080 {
3081 const IDESC *idesc = &fr30bf_insn_data[itype];
3082 CGEN_INSN_INT insn = base_insn;
3083 #define FLD(f) abuf->fields.sfmt_int.f
3084 UINT f_u8;
3085
3086 f_u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
3087
3088 /* Record the fields for the semantic handler. */
3089 FLD (f_u8) = f_u8;
3090 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andccr", "f_u8 0x%x", 'x', f_u8, (char *) 0));
3091
3092 #undef FLD
3093 return idesc;
3094 }
3095
3096 extract_sfmt_stilm:
3097 {
3098 const IDESC *idesc = &fr30bf_insn_data[itype];
3099 CGEN_INSN_INT insn = base_insn;
3100 #define FLD(f) abuf->fields.sfmt_int.f
3101 UINT f_u8;
3102
3103 f_u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
3104
3105 /* Record the fields for the semantic handler. */
3106 FLD (f_u8) = f_u8;
3107 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stilm", "f_u8 0x%x", 'x', f_u8, (char *) 0));
3108
3109 #undef FLD
3110 return idesc;
3111 }
3112
3113 extract_sfmt_addsp:
3114 {
3115 const IDESC *idesc = &fr30bf_insn_data[itype];
3116 CGEN_INSN_INT insn = base_insn;
3117 #define FLD(f) abuf->fields.sfmt_addsp.f
3118 SI f_s10;
3119
3120 f_s10 = ((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (2));
3121
3122 /* Record the fields for the semantic handler. */
3123 FLD (f_s10) = f_s10;
3124 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addsp", "f_s10 0x%x", 'x', f_s10, (char *) 0));
3125
3126 #if WITH_PROFILE_MODEL_P
3127 /* Record the fields for profiling. */
3128 if (PROFILE_MODEL_P (current_cpu))
3129 {
3130 FLD (in_h_gr_SI_15) = 15;
3131 FLD (out_h_gr_SI_15) = 15;
3132 }
3133 #endif
3134 #undef FLD
3135 return idesc;
3136 }
3137
3138 extract_sfmt_extsb:
3139 {
3140 const IDESC *idesc = &fr30bf_insn_data[itype];
3141 CGEN_INSN_INT insn = base_insn;
3142 #define FLD(f) abuf->fields.sfmt_add2.f
3143 UINT f_Ri;
3144
3145 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
3146
3147 /* Record the fields for the semantic handler. */
3148 FLD (f_Ri) = f_Ri;
3149 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
3150 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extsb", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
3151
3152 #if WITH_PROFILE_MODEL_P
3153 /* Record the fields for profiling. */
3154 if (PROFILE_MODEL_P (current_cpu))
3155 {
3156 FLD (in_Ri) = f_Ri;
3157 FLD (out_Ri) = f_Ri;
3158 }
3159 #endif
3160 #undef FLD
3161 return idesc;
3162 }
3163
3164 extract_sfmt_extub:
3165 {
3166 const IDESC *idesc = &fr30bf_insn_data[itype];
3167 CGEN_INSN_INT insn = base_insn;
3168 #define FLD(f) abuf->fields.sfmt_add2.f
3169 UINT f_Ri;
3170
3171 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
3172
3173 /* Record the fields for the semantic handler. */
3174 FLD (f_Ri) = f_Ri;
3175 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
3176 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extub", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
3177
3178 #if WITH_PROFILE_MODEL_P
3179 /* Record the fields for profiling. */
3180 if (PROFILE_MODEL_P (current_cpu))
3181 {
3182 FLD (in_Ri) = f_Ri;
3183 FLD (out_Ri) = f_Ri;
3184 }
3185 #endif
3186 #undef FLD
3187 return idesc;
3188 }
3189
3190 extract_sfmt_extsh:
3191 {
3192 const IDESC *idesc = &fr30bf_insn_data[itype];
3193 CGEN_INSN_INT insn = base_insn;
3194 #define FLD(f) abuf->fields.sfmt_add2.f
3195 UINT f_Ri;
3196
3197 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
3198
3199 /* Record the fields for the semantic handler. */
3200 FLD (f_Ri) = f_Ri;
3201 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
3202 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extsh", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
3203
3204 #if WITH_PROFILE_MODEL_P
3205 /* Record the fields for profiling. */
3206 if (PROFILE_MODEL_P (current_cpu))
3207 {
3208 FLD (in_Ri) = f_Ri;
3209 FLD (out_Ri) = f_Ri;
3210 }
3211 #endif
3212 #undef FLD
3213 return idesc;
3214 }
3215
3216 extract_sfmt_extuh:
3217 {
3218 const IDESC *idesc = &fr30bf_insn_data[itype];
3219 CGEN_INSN_INT insn = base_insn;
3220 #define FLD(f) abuf->fields.sfmt_add2.f
3221 UINT f_Ri;
3222
3223 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
3224
3225 /* Record the fields for the semantic handler. */
3226 FLD (f_Ri) = f_Ri;
3227 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
3228 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extuh", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
3229
3230 #if WITH_PROFILE_MODEL_P
3231 /* Record the fields for profiling. */
3232 if (PROFILE_MODEL_P (current_cpu))
3233 {
3234 FLD (in_Ri) = f_Ri;
3235 FLD (out_Ri) = f_Ri;
3236 }
3237 #endif
3238 #undef FLD
3239 return idesc;
3240 }
3241
3242 extract_sfmt_ldm0:
3243 {
3244 const IDESC *idesc = &fr30bf_insn_data[itype];
3245 CGEN_INSN_INT insn = base_insn;
3246 #define FLD(f) abuf->fields.sfmt_ldm0.f
3247 UINT f_reglist_low_ld;
3248
3249 f_reglist_low_ld = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
3250
3251 /* Record the fields for the semantic handler. */
3252 FLD (f_reglist_low_ld) = f_reglist_low_ld;
3253 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldm0", "f_reglist_low_ld 0x%x", 'x', f_reglist_low_ld, (char *) 0));
3254
3255 #if WITH_PROFILE_MODEL_P
3256 /* Record the fields for profiling. */
3257 if (PROFILE_MODEL_P (current_cpu))
3258 {
3259 FLD (in_h_gr_SI_15) = 15;
3260 FLD (out_h_gr_SI_0) = 0;
3261 FLD (out_h_gr_SI_1) = 1;
3262 FLD (out_h_gr_SI_15) = 15;
3263 FLD (out_h_gr_SI_2) = 2;
3264 FLD (out_h_gr_SI_3) = 3;
3265 FLD (out_h_gr_SI_4) = 4;
3266 FLD (out_h_gr_SI_5) = 5;
3267 FLD (out_h_gr_SI_6) = 6;
3268 FLD (out_h_gr_SI_7) = 7;
3269 }
3270 #endif
3271 #undef FLD
3272 return idesc;
3273 }
3274
3275 extract_sfmt_ldm1:
3276 {
3277 const IDESC *idesc = &fr30bf_insn_data[itype];
3278 CGEN_INSN_INT insn = base_insn;
3279 #define FLD(f) abuf->fields.sfmt_ldm1.f
3280 UINT f_reglist_hi_ld;
3281
3282 f_reglist_hi_ld = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
3283
3284 /* Record the fields for the semantic handler. */
3285 FLD (f_reglist_hi_ld) = f_reglist_hi_ld;
3286 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldm1", "f_reglist_hi_ld 0x%x", 'x', f_reglist_hi_ld, (char *) 0));
3287
3288 #if WITH_PROFILE_MODEL_P
3289 /* Record the fields for profiling. */
3290 if (PROFILE_MODEL_P (current_cpu))
3291 {
3292 FLD (in_h_gr_SI_15) = 15;
3293 FLD (out_h_gr_SI_10) = 10;
3294 FLD (out_h_gr_SI_11) = 11;
3295 FLD (out_h_gr_SI_12) = 12;
3296 FLD (out_h_gr_SI_13) = 13;
3297 FLD (out_h_gr_SI_14) = 14;
3298 FLD (out_h_gr_SI_15) = 15;
3299 FLD (out_h_gr_SI_8) = 8;
3300 FLD (out_h_gr_SI_9) = 9;
3301 }
3302 #endif
3303 #undef FLD
3304 return idesc;
3305 }
3306
3307 extract_sfmt_stm0:
3308 {
3309 const IDESC *idesc = &fr30bf_insn_data[itype];
3310 CGEN_INSN_INT insn = base_insn;
3311 #define FLD(f) abuf->fields.sfmt_stm0.f
3312 UINT f_reglist_low_st;
3313
3314 f_reglist_low_st = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
3315
3316 /* Record the fields for the semantic handler. */
3317 FLD (f_reglist_low_st) = f_reglist_low_st;
3318 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stm0", "f_reglist_low_st 0x%x", 'x', f_reglist_low_st, (char *) 0));
3319
3320 #if WITH_PROFILE_MODEL_P
3321 /* Record the fields for profiling. */
3322 if (PROFILE_MODEL_P (current_cpu))
3323 {
3324 FLD (in_h_gr_SI_0) = 0;
3325 FLD (in_h_gr_SI_1) = 1;
3326 FLD (in_h_gr_SI_15) = 15;
3327 FLD (in_h_gr_SI_2) = 2;
3328 FLD (in_h_gr_SI_3) = 3;
3329 FLD (in_h_gr_SI_4) = 4;
3330 FLD (in_h_gr_SI_5) = 5;
3331 FLD (in_h_gr_SI_6) = 6;
3332 FLD (in_h_gr_SI_7) = 7;
3333 FLD (out_h_gr_SI_15) = 15;
3334 }
3335 #endif
3336 #undef FLD
3337 return idesc;
3338 }
3339
3340 extract_sfmt_stm1:
3341 {
3342 const IDESC *idesc = &fr30bf_insn_data[itype];
3343 CGEN_INSN_INT insn = base_insn;
3344 #define FLD(f) abuf->fields.sfmt_stm1.f
3345 UINT f_reglist_hi_st;
3346
3347 f_reglist_hi_st = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
3348
3349 /* Record the fields for the semantic handler. */
3350 FLD (f_reglist_hi_st) = f_reglist_hi_st;
3351 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stm1", "f_reglist_hi_st 0x%x", 'x', f_reglist_hi_st, (char *) 0));
3352
3353 #if WITH_PROFILE_MODEL_P
3354 /* Record the fields for profiling. */
3355 if (PROFILE_MODEL_P (current_cpu))
3356 {
3357 FLD (in_h_gr_SI_10) = 10;
3358 FLD (in_h_gr_SI_11) = 11;
3359 FLD (in_h_gr_SI_12) = 12;
3360 FLD (in_h_gr_SI_13) = 13;
3361 FLD (in_h_gr_SI_14) = 14;
3362 FLD (in_h_gr_SI_15) = 15;
3363 FLD (in_h_gr_SI_8) = 8;
3364 FLD (in_h_gr_SI_9) = 9;
3365 FLD (out_h_gr_SI_15) = 15;
3366 }
3367 #endif
3368 #undef FLD
3369 return idesc;
3370 }
3371
3372 extract_sfmt_enter:
3373 {
3374 const IDESC *idesc = &fr30bf_insn_data[itype];
3375 CGEN_INSN_INT insn = base_insn;
3376 #define FLD(f) abuf->fields.sfmt_enter.f
3377 USI f_u10;
3378
3379 f_u10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
3380
3381 /* Record the fields for the semantic handler. */
3382 FLD (f_u10) = f_u10;
3383 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_enter", "f_u10 0x%x", 'x', f_u10, (char *) 0));
3384
3385 #if WITH_PROFILE_MODEL_P
3386 /* Record the fields for profiling. */
3387 if (PROFILE_MODEL_P (current_cpu))
3388 {
3389 FLD (in_h_gr_SI_14) = 14;
3390 FLD (in_h_gr_SI_15) = 15;
3391 FLD (out_h_gr_SI_14) = 14;
3392 FLD (out_h_gr_SI_15) = 15;
3393 }
3394 #endif
3395 #undef FLD
3396 return idesc;
3397 }
3398
3399 extract_sfmt_leave:
3400 {
3401 const IDESC *idesc = &fr30bf_insn_data[itype];
3402 #define FLD(f) abuf->fields.sfmt_enter.f
3403
3404
3405 /* Record the fields for the semantic handler. */
3406 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_leave", (char *) 0));
3407
3408 #if WITH_PROFILE_MODEL_P
3409 /* Record the fields for profiling. */
3410 if (PROFILE_MODEL_P (current_cpu))
3411 {
3412 FLD (in_h_gr_SI_14) = 14;
3413 FLD (in_h_gr_SI_15) = 15;
3414 FLD (out_h_gr_SI_14) = 14;
3415 FLD (out_h_gr_SI_15) = 15;
3416 }
3417 #endif
3418 #undef FLD
3419 return idesc;
3420 }
3421
3422 extract_sfmt_xchb:
3423 {
3424 const IDESC *idesc = &fr30bf_insn_data[itype];
3425 CGEN_INSN_INT insn = base_insn;
3426 #define FLD(f) abuf->fields.sfmt_add.f
3427 UINT f_Rj;
3428 UINT f_Ri;
3429
3430 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
3431 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
3432
3433 /* Record the fields for the semantic handler. */
3434 FLD (f_Ri) = f_Ri;
3435 FLD (f_Rj) = f_Rj;
3436 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
3437 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
3438 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_xchb", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
3439
3440 #if WITH_PROFILE_MODEL_P
3441 /* Record the fields for profiling. */
3442 if (PROFILE_MODEL_P (current_cpu))
3443 {
3444 FLD (in_Ri) = f_Ri;
3445 FLD (in_Rj) = f_Rj;
3446 FLD (out_Ri) = f_Ri;
3447 }
3448 #endif
3449 #undef FLD
3450 return idesc;
3451 }
3452
3453 }
This page took 0.104858 seconds and 4 git commands to generate.