merge from gcc
[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 (C) 1996, 1997, 1998, 1999 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_MAX];
37
38 /* Commas between elements are contained in the macros.
39 Some of these are conditionally compiled out. */
40
41 static const struct insn_sem 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_LD },
106 { FR30_INSN_LDUB, FR30BF_INSN_LDUB, FR30BF_SFMT_LD },
107 { FR30_INSN_LDR13, FR30BF_INSN_LDR13, FR30BF_SFMT_LDR13 },
108 { FR30_INSN_LDR13UH, FR30BF_INSN_LDR13UH, FR30BF_SFMT_LDR13 },
109 { FR30_INSN_LDR13UB, FR30BF_INSN_LDR13UB, FR30BF_SFMT_LDR13 },
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_ST },
119 { FR30_INSN_STB, FR30BF_INSN_STB, FR30BF_SFMT_ST },
120 { FR30_INSN_STR13, FR30BF_INSN_STR13, FR30BF_SFMT_STR13 },
121 { FR30_INSN_STR13H, FR30BF_INSN_STR13H, FR30BF_SFMT_STR13 },
122 { FR30_INSN_STR13B, FR30BF_INSN_STR13B, FR30BF_SFMT_STR13 },
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 = FR30BF_INSN_MAX;
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_ldr13;
295 case 2 : itype = FR30BF_INSN_LDR13UB; goto extract_sfmt_ldr13;
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_ld;
299 case 6 : itype = FR30BF_INSN_LDUB; goto extract_sfmt_ld;
300 case 7 :
301 {
302 unsigned int val = (((insn >> 4) & (15 << 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 8 : itype = FR30BF_INSN_LDR15DR; goto extract_sfmt_ldr15dr;
308 case 9 : 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_str13;
322 case 18 : itype = FR30BF_INSN_STR13B; goto extract_sfmt_str13;
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_st;
326 case 22 : itype = FR30BF_INSN_STB; goto extract_sfmt_st;
327 case 23 :
328 {
329 unsigned int val = (((insn >> 4) & (15 << 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 8 : itype = FR30BF_INSN_STR15DR; goto extract_sfmt_str15dr;
335 case 9 : 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 CGEN_INSN_INT insn = base_insn;
620 #define FLD(f) abuf->fields.fmt_empty.f
621
622
623 /* Record the fields for the semantic handler. */
624 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0));
625
626 #undef FLD
627 return idesc;
628 }
629
630 extract_sfmt_add:
631 {
632 const IDESC *idesc = &fr30bf_insn_data[itype];
633 CGEN_INSN_INT insn = base_insn;
634 #define FLD(f) abuf->fields.sfmt_add.f
635 UINT f_Rj;
636 UINT f_Ri;
637
638 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
639 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
640
641 /* Record the fields for the semantic handler. */
642 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
643 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
644 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
645
646 #if WITH_PROFILE_MODEL_P
647 /* Record the fields for profiling. */
648 if (PROFILE_MODEL_P (current_cpu))
649 {
650 FLD (in_Ri) = f_Ri;
651 FLD (in_Rj) = f_Rj;
652 FLD (out_Ri) = f_Ri;
653 }
654 #endif
655 #undef FLD
656 return idesc;
657 }
658
659 extract_sfmt_addi:
660 {
661 const IDESC *idesc = &fr30bf_insn_data[itype];
662 CGEN_INSN_INT insn = base_insn;
663 #define FLD(f) abuf->fields.sfmt_addi.f
664 UINT f_u4;
665 UINT f_Ri;
666
667 f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
668 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
669
670 /* Record the fields for the semantic handler. */
671 FLD (f_u4) = f_u4;
672 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
673 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addi", "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
674
675 #if WITH_PROFILE_MODEL_P
676 /* Record the fields for profiling. */
677 if (PROFILE_MODEL_P (current_cpu))
678 {
679 FLD (in_Ri) = f_Ri;
680 FLD (out_Ri) = f_Ri;
681 }
682 #endif
683 #undef FLD
684 return idesc;
685 }
686
687 extract_sfmt_add2:
688 {
689 const IDESC *idesc = &fr30bf_insn_data[itype];
690 CGEN_INSN_INT insn = base_insn;
691 #define FLD(f) abuf->fields.sfmt_add2.f
692 SI f_m4;
693 UINT f_Ri;
694
695 f_m4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) | (((-1) << (4))));
696 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
697
698 /* Record the fields for the semantic handler. */
699 FLD (f_m4) = f_m4;
700 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
701 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add2", "f_m4 0x%x", 'x', f_m4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
702
703 #if WITH_PROFILE_MODEL_P
704 /* Record the fields for profiling. */
705 if (PROFILE_MODEL_P (current_cpu))
706 {
707 FLD (in_Ri) = f_Ri;
708 FLD (out_Ri) = f_Ri;
709 }
710 #endif
711 #undef FLD
712 return idesc;
713 }
714
715 extract_sfmt_addc:
716 {
717 const IDESC *idesc = &fr30bf_insn_data[itype];
718 CGEN_INSN_INT insn = base_insn;
719 #define FLD(f) abuf->fields.sfmt_add.f
720 UINT f_Rj;
721 UINT f_Ri;
722
723 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
724 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
725
726 /* Record the fields for the semantic handler. */
727 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
728 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
729 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addc", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
730
731 #if WITH_PROFILE_MODEL_P
732 /* Record the fields for profiling. */
733 if (PROFILE_MODEL_P (current_cpu))
734 {
735 FLD (in_Ri) = f_Ri;
736 FLD (in_Rj) = f_Rj;
737 FLD (out_Ri) = f_Ri;
738 }
739 #endif
740 #undef FLD
741 return idesc;
742 }
743
744 extract_sfmt_addn:
745 {
746 const IDESC *idesc = &fr30bf_insn_data[itype];
747 CGEN_INSN_INT insn = base_insn;
748 #define FLD(f) abuf->fields.sfmt_add.f
749 UINT f_Rj;
750 UINT f_Ri;
751
752 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
753 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
754
755 /* Record the fields for the semantic handler. */
756 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
757 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
758 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addn", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
759
760 #if WITH_PROFILE_MODEL_P
761 /* Record the fields for profiling. */
762 if (PROFILE_MODEL_P (current_cpu))
763 {
764 FLD (in_Ri) = f_Ri;
765 FLD (in_Rj) = f_Rj;
766 FLD (out_Ri) = f_Ri;
767 }
768 #endif
769 #undef FLD
770 return idesc;
771 }
772
773 extract_sfmt_addni:
774 {
775 const IDESC *idesc = &fr30bf_insn_data[itype];
776 CGEN_INSN_INT insn = base_insn;
777 #define FLD(f) abuf->fields.sfmt_addi.f
778 UINT f_u4;
779 UINT f_Ri;
780
781 f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
782 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
783
784 /* Record the fields for the semantic handler. */
785 FLD (f_u4) = f_u4;
786 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
787 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addni", "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
788
789 #if WITH_PROFILE_MODEL_P
790 /* Record the fields for profiling. */
791 if (PROFILE_MODEL_P (current_cpu))
792 {
793 FLD (in_Ri) = f_Ri;
794 FLD (out_Ri) = f_Ri;
795 }
796 #endif
797 #undef FLD
798 return idesc;
799 }
800
801 extract_sfmt_addn2:
802 {
803 const IDESC *idesc = &fr30bf_insn_data[itype];
804 CGEN_INSN_INT insn = base_insn;
805 #define FLD(f) abuf->fields.sfmt_add2.f
806 SI f_m4;
807 UINT f_Ri;
808
809 f_m4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) | (((-1) << (4))));
810 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
811
812 /* Record the fields for the semantic handler. */
813 FLD (f_m4) = f_m4;
814 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
815 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addn2", "f_m4 0x%x", 'x', f_m4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
816
817 #if WITH_PROFILE_MODEL_P
818 /* Record the fields for profiling. */
819 if (PROFILE_MODEL_P (current_cpu))
820 {
821 FLD (in_Ri) = f_Ri;
822 FLD (out_Ri) = f_Ri;
823 }
824 #endif
825 #undef FLD
826 return idesc;
827 }
828
829 extract_sfmt_cmp:
830 {
831 const IDESC *idesc = &fr30bf_insn_data[itype];
832 CGEN_INSN_INT insn = base_insn;
833 #define FLD(f) abuf->fields.sfmt_str13.f
834 UINT f_Rj;
835 UINT f_Ri;
836
837 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
838 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
839
840 /* Record the fields for the semantic handler. */
841 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
842 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
843 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
844
845 #if WITH_PROFILE_MODEL_P
846 /* Record the fields for profiling. */
847 if (PROFILE_MODEL_P (current_cpu))
848 {
849 FLD (in_Ri) = f_Ri;
850 FLD (in_Rj) = f_Rj;
851 }
852 #endif
853 #undef FLD
854 return idesc;
855 }
856
857 extract_sfmt_cmpi:
858 {
859 const IDESC *idesc = &fr30bf_insn_data[itype];
860 CGEN_INSN_INT insn = base_insn;
861 #define FLD(f) abuf->fields.sfmt_addi.f
862 UINT f_u4;
863 UINT f_Ri;
864
865 f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
866 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
867
868 /* Record the fields for the semantic handler. */
869 FLD (f_u4) = f_u4;
870 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
871 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpi", "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
872
873 #if WITH_PROFILE_MODEL_P
874 /* Record the fields for profiling. */
875 if (PROFILE_MODEL_P (current_cpu))
876 {
877 FLD (in_Ri) = f_Ri;
878 }
879 #endif
880 #undef FLD
881 return idesc;
882 }
883
884 extract_sfmt_cmp2:
885 {
886 const IDESC *idesc = &fr30bf_insn_data[itype];
887 CGEN_INSN_INT insn = base_insn;
888 #define FLD(f) abuf->fields.sfmt_add2.f
889 SI f_m4;
890 UINT f_Ri;
891
892 f_m4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) | (((-1) << (4))));
893 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
894
895 /* Record the fields for the semantic handler. */
896 FLD (f_m4) = f_m4;
897 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
898 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp2", "f_m4 0x%x", 'x', f_m4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
899
900 #if WITH_PROFILE_MODEL_P
901 /* Record the fields for profiling. */
902 if (PROFILE_MODEL_P (current_cpu))
903 {
904 FLD (in_Ri) = f_Ri;
905 }
906 #endif
907 #undef FLD
908 return idesc;
909 }
910
911 extract_sfmt_and:
912 {
913 const IDESC *idesc = &fr30bf_insn_data[itype];
914 CGEN_INSN_INT insn = base_insn;
915 #define FLD(f) abuf->fields.sfmt_add.f
916 UINT f_Rj;
917 UINT f_Ri;
918
919 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
920 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
921
922 /* Record the fields for the semantic handler. */
923 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
924 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
925 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_and", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
926
927 #if WITH_PROFILE_MODEL_P
928 /* Record the fields for profiling. */
929 if (PROFILE_MODEL_P (current_cpu))
930 {
931 FLD (in_Ri) = f_Ri;
932 FLD (in_Rj) = f_Rj;
933 FLD (out_Ri) = f_Ri;
934 }
935 #endif
936 #undef FLD
937 return idesc;
938 }
939
940 extract_sfmt_andm:
941 {
942 const IDESC *idesc = &fr30bf_insn_data[itype];
943 CGEN_INSN_INT insn = base_insn;
944 #define FLD(f) abuf->fields.sfmt_str13.f
945 UINT f_Rj;
946 UINT f_Ri;
947
948 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
949 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
950
951 /* Record the fields for the semantic handler. */
952 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
953 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
954 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andm", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
955
956 #if WITH_PROFILE_MODEL_P
957 /* Record the fields for profiling. */
958 if (PROFILE_MODEL_P (current_cpu))
959 {
960 FLD (in_Ri) = f_Ri;
961 FLD (in_Rj) = f_Rj;
962 }
963 #endif
964 #undef FLD
965 return idesc;
966 }
967
968 extract_sfmt_andh:
969 {
970 const IDESC *idesc = &fr30bf_insn_data[itype];
971 CGEN_INSN_INT insn = base_insn;
972 #define FLD(f) abuf->fields.sfmt_str13.f
973 UINT f_Rj;
974 UINT f_Ri;
975
976 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
977 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
978
979 /* Record the fields for the semantic handler. */
980 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
981 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
982 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andh", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
983
984 #if WITH_PROFILE_MODEL_P
985 /* Record the fields for profiling. */
986 if (PROFILE_MODEL_P (current_cpu))
987 {
988 FLD (in_Ri) = f_Ri;
989 FLD (in_Rj) = f_Rj;
990 }
991 #endif
992 #undef FLD
993 return idesc;
994 }
995
996 extract_sfmt_andb:
997 {
998 const IDESC *idesc = &fr30bf_insn_data[itype];
999 CGEN_INSN_INT insn = base_insn;
1000 #define FLD(f) abuf->fields.sfmt_str13.f
1001 UINT f_Rj;
1002 UINT f_Ri;
1003
1004 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1005 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1006
1007 /* Record the fields for the semantic handler. */
1008 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1009 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1010 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andb", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1011
1012 #if WITH_PROFILE_MODEL_P
1013 /* Record the fields for profiling. */
1014 if (PROFILE_MODEL_P (current_cpu))
1015 {
1016 FLD (in_Ri) = f_Ri;
1017 FLD (in_Rj) = f_Rj;
1018 }
1019 #endif
1020 #undef FLD
1021 return idesc;
1022 }
1023
1024 extract_sfmt_bandl:
1025 {
1026 const IDESC *idesc = &fr30bf_insn_data[itype];
1027 CGEN_INSN_INT insn = base_insn;
1028 #define FLD(f) abuf->fields.sfmt_addi.f
1029 UINT f_u4;
1030 UINT f_Ri;
1031
1032 f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1033 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1034
1035 /* Record the fields for the semantic handler. */
1036 FLD (f_u4) = f_u4;
1037 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1038 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bandl", "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1039
1040 #if WITH_PROFILE_MODEL_P
1041 /* Record the fields for profiling. */
1042 if (PROFILE_MODEL_P (current_cpu))
1043 {
1044 FLD (in_Ri) = f_Ri;
1045 }
1046 #endif
1047 #undef FLD
1048 return idesc;
1049 }
1050
1051 extract_sfmt_btstl:
1052 {
1053 const IDESC *idesc = &fr30bf_insn_data[itype];
1054 CGEN_INSN_INT insn = base_insn;
1055 #define FLD(f) abuf->fields.sfmt_addi.f
1056 UINT f_u4;
1057 UINT f_Ri;
1058
1059 f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1060 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1061
1062 /* Record the fields for the semantic handler. */
1063 FLD (f_u4) = f_u4;
1064 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1065 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_btstl", "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1066
1067 #if WITH_PROFILE_MODEL_P
1068 /* Record the fields for profiling. */
1069 if (PROFILE_MODEL_P (current_cpu))
1070 {
1071 FLD (in_Ri) = f_Ri;
1072 }
1073 #endif
1074 #undef FLD
1075 return idesc;
1076 }
1077
1078 extract_sfmt_mul:
1079 {
1080 const IDESC *idesc = &fr30bf_insn_data[itype];
1081 CGEN_INSN_INT insn = base_insn;
1082 #define FLD(f) abuf->fields.sfmt_str13.f
1083 UINT f_Rj;
1084 UINT f_Ri;
1085
1086 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1087 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1088
1089 /* Record the fields for the semantic handler. */
1090 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1091 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1092 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mul", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1093
1094 #if WITH_PROFILE_MODEL_P
1095 /* Record the fields for profiling. */
1096 if (PROFILE_MODEL_P (current_cpu))
1097 {
1098 FLD (in_Ri) = f_Ri;
1099 FLD (in_Rj) = f_Rj;
1100 }
1101 #endif
1102 #undef FLD
1103 return idesc;
1104 }
1105
1106 extract_sfmt_mulu:
1107 {
1108 const IDESC *idesc = &fr30bf_insn_data[itype];
1109 CGEN_INSN_INT insn = base_insn;
1110 #define FLD(f) abuf->fields.sfmt_str13.f
1111 UINT f_Rj;
1112 UINT f_Ri;
1113
1114 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1115 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1116
1117 /* Record the fields for the semantic handler. */
1118 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1119 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1120 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mulu", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1121
1122 #if WITH_PROFILE_MODEL_P
1123 /* Record the fields for profiling. */
1124 if (PROFILE_MODEL_P (current_cpu))
1125 {
1126 FLD (in_Ri) = f_Ri;
1127 FLD (in_Rj) = f_Rj;
1128 }
1129 #endif
1130 #undef FLD
1131 return idesc;
1132 }
1133
1134 extract_sfmt_mulh:
1135 {
1136 const IDESC *idesc = &fr30bf_insn_data[itype];
1137 CGEN_INSN_INT insn = base_insn;
1138 #define FLD(f) abuf->fields.sfmt_str13.f
1139 UINT f_Rj;
1140 UINT f_Ri;
1141
1142 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1143 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1144
1145 /* Record the fields for the semantic handler. */
1146 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1147 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1148 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mulh", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1149
1150 #if WITH_PROFILE_MODEL_P
1151 /* Record the fields for profiling. */
1152 if (PROFILE_MODEL_P (current_cpu))
1153 {
1154 FLD (in_Ri) = f_Ri;
1155 FLD (in_Rj) = f_Rj;
1156 }
1157 #endif
1158 #undef FLD
1159 return idesc;
1160 }
1161
1162 extract_sfmt_div0s:
1163 {
1164 const IDESC *idesc = &fr30bf_insn_data[itype];
1165 CGEN_INSN_INT insn = base_insn;
1166 #define FLD(f) abuf->fields.sfmt_mov2dr.f
1167 UINT f_Ri;
1168
1169 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1170
1171 /* Record the fields for the semantic handler. */
1172 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1173 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div0s", "Ri 0x%x", 'x', f_Ri, (char *) 0));
1174
1175 #if WITH_PROFILE_MODEL_P
1176 /* Record the fields for profiling. */
1177 if (PROFILE_MODEL_P (current_cpu))
1178 {
1179 FLD (in_Ri) = f_Ri;
1180 }
1181 #endif
1182 #undef FLD
1183 return idesc;
1184 }
1185
1186 extract_sfmt_div0u:
1187 {
1188 const IDESC *idesc = &fr30bf_insn_data[itype];
1189 CGEN_INSN_INT insn = base_insn;
1190 #define FLD(f) abuf->fields.fmt_empty.f
1191
1192
1193 /* Record the fields for the semantic handler. */
1194 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div0u", (char *) 0));
1195
1196 #undef FLD
1197 return idesc;
1198 }
1199
1200 extract_sfmt_div1:
1201 {
1202 const IDESC *idesc = &fr30bf_insn_data[itype];
1203 CGEN_INSN_INT insn = base_insn;
1204 #define FLD(f) abuf->fields.sfmt_mov2dr.f
1205 UINT f_Ri;
1206
1207 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1208
1209 /* Record the fields for the semantic handler. */
1210 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1211 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div1", "Ri 0x%x", 'x', f_Ri, (char *) 0));
1212
1213 #if WITH_PROFILE_MODEL_P
1214 /* Record the fields for profiling. */
1215 if (PROFILE_MODEL_P (current_cpu))
1216 {
1217 FLD (in_Ri) = f_Ri;
1218 }
1219 #endif
1220 #undef FLD
1221 return idesc;
1222 }
1223
1224 extract_sfmt_div2:
1225 {
1226 const IDESC *idesc = &fr30bf_insn_data[itype];
1227 CGEN_INSN_INT insn = base_insn;
1228 #define FLD(f) abuf->fields.sfmt_mov2dr.f
1229 UINT f_Ri;
1230
1231 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1232
1233 /* Record the fields for the semantic handler. */
1234 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1235 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div2", "Ri 0x%x", 'x', f_Ri, (char *) 0));
1236
1237 #if WITH_PROFILE_MODEL_P
1238 /* Record the fields for profiling. */
1239 if (PROFILE_MODEL_P (current_cpu))
1240 {
1241 FLD (in_Ri) = f_Ri;
1242 }
1243 #endif
1244 #undef FLD
1245 return idesc;
1246 }
1247
1248 extract_sfmt_div3:
1249 {
1250 const IDESC *idesc = &fr30bf_insn_data[itype];
1251 CGEN_INSN_INT insn = base_insn;
1252 #define FLD(f) abuf->fields.fmt_empty.f
1253
1254
1255 /* Record the fields for the semantic handler. */
1256 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div3", (char *) 0));
1257
1258 #undef FLD
1259 return idesc;
1260 }
1261
1262 extract_sfmt_div4s:
1263 {
1264 const IDESC *idesc = &fr30bf_insn_data[itype];
1265 CGEN_INSN_INT insn = base_insn;
1266 #define FLD(f) abuf->fields.fmt_empty.f
1267
1268
1269 /* Record the fields for the semantic handler. */
1270 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div4s", (char *) 0));
1271
1272 #undef FLD
1273 return idesc;
1274 }
1275
1276 extract_sfmt_lsl:
1277 {
1278 const IDESC *idesc = &fr30bf_insn_data[itype];
1279 CGEN_INSN_INT insn = base_insn;
1280 #define FLD(f) abuf->fields.sfmt_add.f
1281 UINT f_Rj;
1282 UINT f_Ri;
1283
1284 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1285 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1286
1287 /* Record the fields for the semantic handler. */
1288 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1289 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1290 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lsl", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1291
1292 #if WITH_PROFILE_MODEL_P
1293 /* Record the fields for profiling. */
1294 if (PROFILE_MODEL_P (current_cpu))
1295 {
1296 FLD (in_Ri) = f_Ri;
1297 FLD (in_Rj) = f_Rj;
1298 FLD (out_Ri) = f_Ri;
1299 }
1300 #endif
1301 #undef FLD
1302 return idesc;
1303 }
1304
1305 extract_sfmt_lsli:
1306 {
1307 const IDESC *idesc = &fr30bf_insn_data[itype];
1308 CGEN_INSN_INT insn = base_insn;
1309 #define FLD(f) abuf->fields.sfmt_addi.f
1310 UINT f_u4;
1311 UINT f_Ri;
1312
1313 f_u4 = 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_u4) = f_u4;
1318 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1319 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lsli", "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1320
1321 #if WITH_PROFILE_MODEL_P
1322 /* Record the fields for profiling. */
1323 if (PROFILE_MODEL_P (current_cpu))
1324 {
1325 FLD (in_Ri) = f_Ri;
1326 FLD (out_Ri) = f_Ri;
1327 }
1328 #endif
1329 #undef FLD
1330 return idesc;
1331 }
1332
1333 extract_sfmt_ldi8:
1334 {
1335 const IDESC *idesc = &fr30bf_insn_data[itype];
1336 CGEN_INSN_INT insn = base_insn;
1337 #define FLD(f) abuf->fields.sfmt_ldi8.f
1338 UINT f_i8;
1339 UINT f_Ri;
1340
1341 f_i8 = EXTRACT_MSB0_UINT (insn, 16, 4, 8);
1342 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1343
1344 /* Record the fields for the semantic handler. */
1345 FLD (f_i8) = f_i8;
1346 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1347 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi8", "f_i8 0x%x", 'x', f_i8, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1348
1349 #if WITH_PROFILE_MODEL_P
1350 /* Record the fields for profiling. */
1351 if (PROFILE_MODEL_P (current_cpu))
1352 {
1353 FLD (out_Ri) = f_Ri;
1354 }
1355 #endif
1356 #undef FLD
1357 return idesc;
1358 }
1359
1360 extract_sfmt_ldi20:
1361 {
1362 const IDESC *idesc = &fr30bf_insn_data[itype];
1363 CGEN_INSN_INT insn = base_insn;
1364 #define FLD(f) abuf->fields.sfmt_ldi20.f
1365 UINT f_i20_16;
1366 UINT f_i20_4;
1367 UINT f_Ri;
1368 UINT f_i20;
1369 /* Contents of trailing part of insn. */
1370 UINT word_1;
1371
1372 word_1 = GETIMEMUHI (current_cpu, pc + 2);
1373 f_i20_16 = (0|(EXTRACT_MSB0_UINT (word_1, 16, 0, 16) << 0));
1374 f_i20_4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1375 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1376 {
1377 f_i20 = ((((f_i20_4) << (16))) | (f_i20_16));
1378 }
1379
1380 /* Record the fields for the semantic handler. */
1381 FLD (f_i20) = f_i20;
1382 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1383 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi20", "f_i20 0x%x", 'x', f_i20, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1384
1385 #if WITH_PROFILE_MODEL_P
1386 /* Record the fields for profiling. */
1387 if (PROFILE_MODEL_P (current_cpu))
1388 {
1389 FLD (out_Ri) = f_Ri;
1390 }
1391 #endif
1392 #undef FLD
1393 return idesc;
1394 }
1395
1396 extract_sfmt_ldi32:
1397 {
1398 const IDESC *idesc = &fr30bf_insn_data[itype];
1399 CGEN_INSN_INT insn = base_insn;
1400 #define FLD(f) abuf->fields.sfmt_ldi32.f
1401 UINT f_i32;
1402 UINT f_Ri;
1403 /* Contents of trailing part of insn. */
1404 UINT word_1;
1405 UINT word_2;
1406
1407 word_1 = GETIMEMUHI (current_cpu, pc + 2);
1408 word_2 = GETIMEMUHI (current_cpu, pc + 4);
1409 f_i32 = (0|(EXTRACT_MSB0_UINT (word_2, 16, 0, 16) << 0)|(EXTRACT_MSB0_UINT (word_1, 16, 0, 16) << 16));
1410 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1411
1412 /* Record the fields for the semantic handler. */
1413 FLD (f_i32) = f_i32;
1414 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1415 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi32", "f_i32 0x%x", 'x', f_i32, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1416
1417 #if WITH_PROFILE_MODEL_P
1418 /* Record the fields for profiling. */
1419 if (PROFILE_MODEL_P (current_cpu))
1420 {
1421 FLD (out_Ri) = f_Ri;
1422 }
1423 #endif
1424 #undef FLD
1425 return idesc;
1426 }
1427
1428 extract_sfmt_ld:
1429 {
1430 const IDESC *idesc = &fr30bf_insn_data[itype];
1431 CGEN_INSN_INT insn = base_insn;
1432 #define FLD(f) abuf->fields.sfmt_ldr13.f
1433 UINT f_Rj;
1434 UINT f_Ri;
1435
1436 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1437 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1438
1439 /* Record the fields for the semantic handler. */
1440 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1441 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1442 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ld", "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1443
1444 #if WITH_PROFILE_MODEL_P
1445 /* Record the fields for profiling. */
1446 if (PROFILE_MODEL_P (current_cpu))
1447 {
1448 FLD (in_Rj) = f_Rj;
1449 FLD (out_Ri) = f_Ri;
1450 }
1451 #endif
1452 #undef FLD
1453 return idesc;
1454 }
1455
1456 extract_sfmt_ldr13:
1457 {
1458 const IDESC *idesc = &fr30bf_insn_data[itype];
1459 CGEN_INSN_INT insn = base_insn;
1460 #define FLD(f) abuf->fields.sfmt_ldr13.f
1461 UINT f_Rj;
1462 UINT f_Ri;
1463
1464 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1465 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1466
1467 /* Record the fields for the semantic handler. */
1468 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1469 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1470 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr13", "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1471
1472 #if WITH_PROFILE_MODEL_P
1473 /* Record the fields for profiling. */
1474 if (PROFILE_MODEL_P (current_cpu))
1475 {
1476 FLD (in_Rj) = f_Rj;
1477 FLD (in_h_gr_13) = 13;
1478 FLD (out_Ri) = f_Ri;
1479 }
1480 #endif
1481 #undef FLD
1482 return idesc;
1483 }
1484
1485 extract_sfmt_ldr14:
1486 {
1487 const IDESC *idesc = &fr30bf_insn_data[itype];
1488 CGEN_INSN_INT insn = base_insn;
1489 #define FLD(f) abuf->fields.sfmt_ldr14.f
1490 SI f_disp10;
1491 UINT f_Ri;
1492
1493 f_disp10 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (2));
1494 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1495
1496 /* Record the fields for the semantic handler. */
1497 FLD (f_disp10) = f_disp10;
1498 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1499 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr14", "f_disp10 0x%x", 'x', f_disp10, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1500
1501 #if WITH_PROFILE_MODEL_P
1502 /* Record the fields for profiling. */
1503 if (PROFILE_MODEL_P (current_cpu))
1504 {
1505 FLD (in_h_gr_14) = 14;
1506 FLD (out_Ri) = f_Ri;
1507 }
1508 #endif
1509 #undef FLD
1510 return idesc;
1511 }
1512
1513 extract_sfmt_ldr14uh:
1514 {
1515 const IDESC *idesc = &fr30bf_insn_data[itype];
1516 CGEN_INSN_INT insn = base_insn;
1517 #define FLD(f) abuf->fields.sfmt_ldr14uh.f
1518 SI f_disp9;
1519 UINT f_Ri;
1520
1521 f_disp9 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (1));
1522 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1523
1524 /* Record the fields for the semantic handler. */
1525 FLD (f_disp9) = f_disp9;
1526 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1527 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr14uh", "f_disp9 0x%x", 'x', f_disp9, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1528
1529 #if WITH_PROFILE_MODEL_P
1530 /* Record the fields for profiling. */
1531 if (PROFILE_MODEL_P (current_cpu))
1532 {
1533 FLD (in_h_gr_14) = 14;
1534 FLD (out_Ri) = f_Ri;
1535 }
1536 #endif
1537 #undef FLD
1538 return idesc;
1539 }
1540
1541 extract_sfmt_ldr14ub:
1542 {
1543 const IDESC *idesc = &fr30bf_insn_data[itype];
1544 CGEN_INSN_INT insn = base_insn;
1545 #define FLD(f) abuf->fields.sfmt_ldr14ub.f
1546 INT f_disp8;
1547 UINT f_Ri;
1548
1549 f_disp8 = EXTRACT_MSB0_INT (insn, 16, 4, 8);
1550 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1551
1552 /* Record the fields for the semantic handler. */
1553 FLD (f_disp8) = f_disp8;
1554 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1555 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr14ub", "f_disp8 0x%x", 'x', f_disp8, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1556
1557 #if WITH_PROFILE_MODEL_P
1558 /* Record the fields for profiling. */
1559 if (PROFILE_MODEL_P (current_cpu))
1560 {
1561 FLD (in_h_gr_14) = 14;
1562 FLD (out_Ri) = f_Ri;
1563 }
1564 #endif
1565 #undef FLD
1566 return idesc;
1567 }
1568
1569 extract_sfmt_ldr15:
1570 {
1571 const IDESC *idesc = &fr30bf_insn_data[itype];
1572 CGEN_INSN_INT insn = base_insn;
1573 #define FLD(f) abuf->fields.sfmt_ldr15.f
1574 USI f_udisp6;
1575 UINT f_Ri;
1576
1577 f_udisp6 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) << (2));
1578 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1579
1580 /* Record the fields for the semantic handler. */
1581 FLD (f_udisp6) = f_udisp6;
1582 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1583 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr15", "f_udisp6 0x%x", 'x', f_udisp6, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1584
1585 #if WITH_PROFILE_MODEL_P
1586 /* Record the fields for profiling. */
1587 if (PROFILE_MODEL_P (current_cpu))
1588 {
1589 FLD (in_h_gr_15) = 15;
1590 FLD (out_Ri) = f_Ri;
1591 }
1592 #endif
1593 #undef FLD
1594 return idesc;
1595 }
1596
1597 extract_sfmt_ldr15gr:
1598 {
1599 const IDESC *idesc = &fr30bf_insn_data[itype];
1600 CGEN_INSN_INT insn = base_insn;
1601 #define FLD(f) abuf->fields.sfmt_ldr15gr.f
1602 UINT f_Ri;
1603
1604 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1605
1606 /* Record the fields for the semantic handler. */
1607 FLD (f_Ri) = f_Ri;
1608 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1609 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));
1610
1611 #if WITH_PROFILE_MODEL_P
1612 /* Record the fields for profiling. */
1613 if (PROFILE_MODEL_P (current_cpu))
1614 {
1615 FLD (in_h_gr_15) = 15;
1616 FLD (out_Ri) = f_Ri;
1617 FLD (out_h_gr_15) = 15;
1618 }
1619 #endif
1620 #undef FLD
1621 return idesc;
1622 }
1623
1624 extract_sfmt_ldr15dr:
1625 {
1626 const IDESC *idesc = &fr30bf_insn_data[itype];
1627 CGEN_INSN_INT insn = base_insn;
1628 #define FLD(f) abuf->fields.sfmt_ldr15dr.f
1629 UINT f_Rs2;
1630
1631 f_Rs2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1632
1633 /* Record the fields for the semantic handler. */
1634 FLD (f_Rs2) = f_Rs2;
1635 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr15dr", "f_Rs2 0x%x", 'x', f_Rs2, (char *) 0));
1636
1637 #if WITH_PROFILE_MODEL_P
1638 /* Record the fields for profiling. */
1639 if (PROFILE_MODEL_P (current_cpu))
1640 {
1641 FLD (in_h_gr_15) = 15;
1642 FLD (out_h_gr_15) = 15;
1643 }
1644 #endif
1645 #undef FLD
1646 return idesc;
1647 }
1648
1649 extract_sfmt_ldr15ps:
1650 {
1651 const IDESC *idesc = &fr30bf_insn_data[itype];
1652 CGEN_INSN_INT insn = base_insn;
1653 #define FLD(f) abuf->fields.sfmt_addsp.f
1654
1655
1656 /* Record the fields for the semantic handler. */
1657 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr15ps", (char *) 0));
1658
1659 #if WITH_PROFILE_MODEL_P
1660 /* Record the fields for profiling. */
1661 if (PROFILE_MODEL_P (current_cpu))
1662 {
1663 FLD (in_h_gr_15) = 15;
1664 FLD (out_h_gr_15) = 15;
1665 }
1666 #endif
1667 #undef FLD
1668 return idesc;
1669 }
1670
1671 extract_sfmt_st:
1672 {
1673 const IDESC *idesc = &fr30bf_insn_data[itype];
1674 CGEN_INSN_INT insn = base_insn;
1675 #define FLD(f) abuf->fields.sfmt_str13.f
1676 UINT f_Rj;
1677 UINT f_Ri;
1678
1679 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1680 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1681
1682 /* Record the fields for the semantic handler. */
1683 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1684 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1685 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_st", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1686
1687 #if WITH_PROFILE_MODEL_P
1688 /* Record the fields for profiling. */
1689 if (PROFILE_MODEL_P (current_cpu))
1690 {
1691 FLD (in_Ri) = f_Ri;
1692 FLD (in_Rj) = f_Rj;
1693 }
1694 #endif
1695 #undef FLD
1696 return idesc;
1697 }
1698
1699 extract_sfmt_str13:
1700 {
1701 const IDESC *idesc = &fr30bf_insn_data[itype];
1702 CGEN_INSN_INT insn = base_insn;
1703 #define FLD(f) abuf->fields.sfmt_str13.f
1704 UINT f_Rj;
1705 UINT f_Ri;
1706
1707 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1708 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1709
1710 /* Record the fields for the semantic handler. */
1711 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1712 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1713 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str13", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1714
1715 #if WITH_PROFILE_MODEL_P
1716 /* Record the fields for profiling. */
1717 if (PROFILE_MODEL_P (current_cpu))
1718 {
1719 FLD (in_Ri) = f_Ri;
1720 FLD (in_Rj) = f_Rj;
1721 FLD (in_h_gr_13) = 13;
1722 }
1723 #endif
1724 #undef FLD
1725 return idesc;
1726 }
1727
1728 extract_sfmt_str14:
1729 {
1730 const IDESC *idesc = &fr30bf_insn_data[itype];
1731 CGEN_INSN_INT insn = base_insn;
1732 #define FLD(f) abuf->fields.sfmt_str14.f
1733 SI f_disp10;
1734 UINT f_Ri;
1735
1736 f_disp10 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (2));
1737 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1738
1739 /* Record the fields for the semantic handler. */
1740 FLD (f_disp10) = f_disp10;
1741 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1742 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str14", "f_disp10 0x%x", 'x', f_disp10, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1743
1744 #if WITH_PROFILE_MODEL_P
1745 /* Record the fields for profiling. */
1746 if (PROFILE_MODEL_P (current_cpu))
1747 {
1748 FLD (in_Ri) = f_Ri;
1749 FLD (in_h_gr_14) = 14;
1750 }
1751 #endif
1752 #undef FLD
1753 return idesc;
1754 }
1755
1756 extract_sfmt_str14h:
1757 {
1758 const IDESC *idesc = &fr30bf_insn_data[itype];
1759 CGEN_INSN_INT insn = base_insn;
1760 #define FLD(f) abuf->fields.sfmt_str14h.f
1761 SI f_disp9;
1762 UINT f_Ri;
1763
1764 f_disp9 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (1));
1765 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1766
1767 /* Record the fields for the semantic handler. */
1768 FLD (f_disp9) = f_disp9;
1769 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1770 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str14h", "f_disp9 0x%x", 'x', f_disp9, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1771
1772 #if WITH_PROFILE_MODEL_P
1773 /* Record the fields for profiling. */
1774 if (PROFILE_MODEL_P (current_cpu))
1775 {
1776 FLD (in_Ri) = f_Ri;
1777 FLD (in_h_gr_14) = 14;
1778 }
1779 #endif
1780 #undef FLD
1781 return idesc;
1782 }
1783
1784 extract_sfmt_str14b:
1785 {
1786 const IDESC *idesc = &fr30bf_insn_data[itype];
1787 CGEN_INSN_INT insn = base_insn;
1788 #define FLD(f) abuf->fields.sfmt_str14b.f
1789 INT f_disp8;
1790 UINT f_Ri;
1791
1792 f_disp8 = EXTRACT_MSB0_INT (insn, 16, 4, 8);
1793 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1794
1795 /* Record the fields for the semantic handler. */
1796 FLD (f_disp8) = f_disp8;
1797 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1798 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str14b", "f_disp8 0x%x", 'x', f_disp8, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1799
1800 #if WITH_PROFILE_MODEL_P
1801 /* Record the fields for profiling. */
1802 if (PROFILE_MODEL_P (current_cpu))
1803 {
1804 FLD (in_Ri) = f_Ri;
1805 FLD (in_h_gr_14) = 14;
1806 }
1807 #endif
1808 #undef FLD
1809 return idesc;
1810 }
1811
1812 extract_sfmt_str15:
1813 {
1814 const IDESC *idesc = &fr30bf_insn_data[itype];
1815 CGEN_INSN_INT insn = base_insn;
1816 #define FLD(f) abuf->fields.sfmt_str15.f
1817 USI f_udisp6;
1818 UINT f_Ri;
1819
1820 f_udisp6 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) << (2));
1821 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1822
1823 /* Record the fields for the semantic handler. */
1824 FLD (f_udisp6) = f_udisp6;
1825 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1826 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15", "f_udisp6 0x%x", 'x', f_udisp6, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1827
1828 #if WITH_PROFILE_MODEL_P
1829 /* Record the fields for profiling. */
1830 if (PROFILE_MODEL_P (current_cpu))
1831 {
1832 FLD (in_Ri) = f_Ri;
1833 FLD (in_h_gr_15) = 15;
1834 }
1835 #endif
1836 #undef FLD
1837 return idesc;
1838 }
1839
1840 extract_sfmt_str15gr:
1841 {
1842 const IDESC *idesc = &fr30bf_insn_data[itype];
1843 CGEN_INSN_INT insn = base_insn;
1844 #define FLD(f) abuf->fields.sfmt_str15gr.f
1845 UINT f_Ri;
1846
1847 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1848
1849 /* Record the fields for the semantic handler. */
1850 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1851 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15gr", "Ri 0x%x", 'x', f_Ri, (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_h_gr_15) = 15;
1859 FLD (out_h_gr_15) = 15;
1860 }
1861 #endif
1862 #undef FLD
1863 return idesc;
1864 }
1865
1866 extract_sfmt_str15dr:
1867 {
1868 const IDESC *idesc = &fr30bf_insn_data[itype];
1869 CGEN_INSN_INT insn = base_insn;
1870 #define FLD(f) abuf->fields.sfmt_ldr15dr.f
1871 UINT f_Rs2;
1872
1873 f_Rs2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1874
1875 /* Record the fields for the semantic handler. */
1876 FLD (f_Rs2) = f_Rs2;
1877 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15dr", "f_Rs2 0x%x", 'x', f_Rs2, (char *) 0));
1878
1879 #if WITH_PROFILE_MODEL_P
1880 /* Record the fields for profiling. */
1881 if (PROFILE_MODEL_P (current_cpu))
1882 {
1883 FLD (in_h_gr_15) = 15;
1884 FLD (out_h_gr_15) = 15;
1885 }
1886 #endif
1887 #undef FLD
1888 return idesc;
1889 }
1890
1891 extract_sfmt_str15ps:
1892 {
1893 const IDESC *idesc = &fr30bf_insn_data[itype];
1894 CGEN_INSN_INT insn = base_insn;
1895 #define FLD(f) abuf->fields.sfmt_addsp.f
1896
1897
1898 /* Record the fields for the semantic handler. */
1899 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15ps", (char *) 0));
1900
1901 #if WITH_PROFILE_MODEL_P
1902 /* Record the fields for profiling. */
1903 if (PROFILE_MODEL_P (current_cpu))
1904 {
1905 FLD (in_h_gr_15) = 15;
1906 FLD (out_h_gr_15) = 15;
1907 }
1908 #endif
1909 #undef FLD
1910 return idesc;
1911 }
1912
1913 extract_sfmt_mov:
1914 {
1915 const IDESC *idesc = &fr30bf_insn_data[itype];
1916 CGEN_INSN_INT insn = base_insn;
1917 #define FLD(f) abuf->fields.sfmt_ldr13.f
1918 UINT f_Rj;
1919 UINT f_Ri;
1920
1921 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1922 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1923
1924 /* Record the fields for the semantic handler. */
1925 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1926 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1927 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mov", "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1928
1929 #if WITH_PROFILE_MODEL_P
1930 /* Record the fields for profiling. */
1931 if (PROFILE_MODEL_P (current_cpu))
1932 {
1933 FLD (in_Rj) = f_Rj;
1934 FLD (out_Ri) = f_Ri;
1935 }
1936 #endif
1937 #undef FLD
1938 return idesc;
1939 }
1940
1941 extract_sfmt_movdr:
1942 {
1943 const IDESC *idesc = &fr30bf_insn_data[itype];
1944 CGEN_INSN_INT insn = base_insn;
1945 #define FLD(f) abuf->fields.sfmt_movdr.f
1946 UINT f_Rs1;
1947 UINT f_Ri;
1948
1949 f_Rs1 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1950 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1951
1952 /* Record the fields for the semantic handler. */
1953 FLD (f_Rs1) = f_Rs1;
1954 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1955 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movdr", "f_Rs1 0x%x", 'x', f_Rs1, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1956
1957 #if WITH_PROFILE_MODEL_P
1958 /* Record the fields for profiling. */
1959 if (PROFILE_MODEL_P (current_cpu))
1960 {
1961 FLD (out_Ri) = f_Ri;
1962 }
1963 #endif
1964 #undef FLD
1965 return idesc;
1966 }
1967
1968 extract_sfmt_movps:
1969 {
1970 const IDESC *idesc = &fr30bf_insn_data[itype];
1971 CGEN_INSN_INT insn = base_insn;
1972 #define FLD(f) abuf->fields.sfmt_movdr.f
1973 UINT f_Ri;
1974
1975 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1976
1977 /* Record the fields for the semantic handler. */
1978 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1979 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movps", "Ri 0x%x", 'x', f_Ri, (char *) 0));
1980
1981 #if WITH_PROFILE_MODEL_P
1982 /* Record the fields for profiling. */
1983 if (PROFILE_MODEL_P (current_cpu))
1984 {
1985 FLD (out_Ri) = f_Ri;
1986 }
1987 #endif
1988 #undef FLD
1989 return idesc;
1990 }
1991
1992 extract_sfmt_mov2dr:
1993 {
1994 const IDESC *idesc = &fr30bf_insn_data[itype];
1995 CGEN_INSN_INT insn = base_insn;
1996 #define FLD(f) abuf->fields.sfmt_mov2dr.f
1997 UINT f_Rs1;
1998 UINT f_Ri;
1999
2000 f_Rs1 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
2001 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2002
2003 /* Record the fields for the semantic handler. */
2004 FLD (f_Rs1) = f_Rs1;
2005 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2006 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mov2dr", "f_Rs1 0x%x", 'x', f_Rs1, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2007
2008 #if WITH_PROFILE_MODEL_P
2009 /* Record the fields for profiling. */
2010 if (PROFILE_MODEL_P (current_cpu))
2011 {
2012 FLD (in_Ri) = f_Ri;
2013 }
2014 #endif
2015 #undef FLD
2016 return idesc;
2017 }
2018
2019 extract_sfmt_mov2ps:
2020 {
2021 const IDESC *idesc = &fr30bf_insn_data[itype];
2022 CGEN_INSN_INT insn = base_insn;
2023 #define FLD(f) abuf->fields.sfmt_mov2dr.f
2024 UINT f_Ri;
2025
2026 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2027
2028 /* Record the fields for the semantic handler. */
2029 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2030 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mov2ps", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2031
2032 #if WITH_PROFILE_MODEL_P
2033 /* Record the fields for profiling. */
2034 if (PROFILE_MODEL_P (current_cpu))
2035 {
2036 FLD (in_Ri) = f_Ri;
2037 }
2038 #endif
2039 #undef FLD
2040 return idesc;
2041 }
2042
2043 extract_sfmt_jmp:
2044 {
2045 const IDESC *idesc = &fr30bf_insn_data[itype];
2046 CGEN_INSN_INT insn = base_insn;
2047 #define FLD(f) abuf->fields.sfmt_mov2dr.f
2048 UINT f_Ri;
2049
2050 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2051
2052 /* Record the fields for the semantic handler. */
2053 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2054 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jmp", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2055
2056 #if WITH_PROFILE_MODEL_P
2057 /* Record the fields for profiling. */
2058 if (PROFILE_MODEL_P (current_cpu))
2059 {
2060 FLD (in_Ri) = f_Ri;
2061 }
2062 #endif
2063 #undef FLD
2064 return idesc;
2065 }
2066
2067 extract_sfmt_callr:
2068 {
2069 const IDESC *idesc = &fr30bf_insn_data[itype];
2070 CGEN_INSN_INT insn = base_insn;
2071 #define FLD(f) abuf->fields.sfmt_mov2dr.f
2072 UINT f_Ri;
2073
2074 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2075
2076 /* Record the fields for the semantic handler. */
2077 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2078 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_callr", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2079
2080 #if WITH_PROFILE_MODEL_P
2081 /* Record the fields for profiling. */
2082 if (PROFILE_MODEL_P (current_cpu))
2083 {
2084 FLD (in_Ri) = f_Ri;
2085 }
2086 #endif
2087 #undef FLD
2088 return idesc;
2089 }
2090
2091 extract_sfmt_call:
2092 {
2093 const IDESC *idesc = &fr30bf_insn_data[itype];
2094 CGEN_INSN_INT insn = base_insn;
2095 #define FLD(f) abuf->fields.sfmt_call.f
2096 SI f_rel12;
2097
2098 f_rel12 = ((((EXTRACT_MSB0_INT (insn, 16, 5, 11)) << (1))) + (((pc) + (2))));
2099
2100 /* Record the fields for the semantic handler. */
2101 FLD (i_label12) = f_rel12;
2102 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_call", "label12 0x%x", 'x', f_rel12, (char *) 0));
2103
2104 #if WITH_PROFILE_MODEL_P
2105 /* Record the fields for profiling. */
2106 if (PROFILE_MODEL_P (current_cpu))
2107 {
2108 }
2109 #endif
2110 #undef FLD
2111 return idesc;
2112 }
2113
2114 extract_sfmt_ret:
2115 {
2116 const IDESC *idesc = &fr30bf_insn_data[itype];
2117 CGEN_INSN_INT insn = base_insn;
2118 #define FLD(f) abuf->fields.fmt_empty.f
2119
2120
2121 /* Record the fields for the semantic handler. */
2122 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ret", (char *) 0));
2123
2124 #if WITH_PROFILE_MODEL_P
2125 /* Record the fields for profiling. */
2126 if (PROFILE_MODEL_P (current_cpu))
2127 {
2128 }
2129 #endif
2130 #undef FLD
2131 return idesc;
2132 }
2133
2134 extract_sfmt_int:
2135 {
2136 const IDESC *idesc = &fr30bf_insn_data[itype];
2137 CGEN_INSN_INT insn = base_insn;
2138 #define FLD(f) abuf->fields.sfmt_int.f
2139 UINT f_u8;
2140
2141 f_u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2142
2143 /* Record the fields for the semantic handler. */
2144 FLD (f_u8) = f_u8;
2145 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_int", "f_u8 0x%x", 'x', f_u8, (char *) 0));
2146
2147 #if WITH_PROFILE_MODEL_P
2148 /* Record the fields for profiling. */
2149 if (PROFILE_MODEL_P (current_cpu))
2150 {
2151 }
2152 #endif
2153 #undef FLD
2154 return idesc;
2155 }
2156
2157 extract_sfmt_inte:
2158 {
2159 const IDESC *idesc = &fr30bf_insn_data[itype];
2160 CGEN_INSN_INT insn = base_insn;
2161 #define FLD(f) abuf->fields.fmt_empty.f
2162
2163
2164 /* Record the fields for the semantic handler. */
2165 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_inte", (char *) 0));
2166
2167 #if WITH_PROFILE_MODEL_P
2168 /* Record the fields for profiling. */
2169 if (PROFILE_MODEL_P (current_cpu))
2170 {
2171 }
2172 #endif
2173 #undef FLD
2174 return idesc;
2175 }
2176
2177 extract_sfmt_reti:
2178 {
2179 const IDESC *idesc = &fr30bf_insn_data[itype];
2180 CGEN_INSN_INT insn = base_insn;
2181 #define FLD(f) abuf->fields.fmt_empty.f
2182
2183
2184 /* Record the fields for the semantic handler. */
2185 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_reti", (char *) 0));
2186
2187 #if WITH_PROFILE_MODEL_P
2188 /* Record the fields for profiling. */
2189 if (PROFILE_MODEL_P (current_cpu))
2190 {
2191 }
2192 #endif
2193 #undef FLD
2194 return idesc;
2195 }
2196
2197 extract_sfmt_brad:
2198 {
2199 const IDESC *idesc = &fr30bf_insn_data[itype];
2200 CGEN_INSN_INT insn = base_insn;
2201 #define FLD(f) abuf->fields.sfmt_brad.f
2202 SI f_rel9;
2203
2204 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2205
2206 /* Record the fields for the semantic handler. */
2207 FLD (i_label9) = f_rel9;
2208 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_brad", "label9 0x%x", 'x', f_rel9, (char *) 0));
2209
2210 #if WITH_PROFILE_MODEL_P
2211 /* Record the fields for profiling. */
2212 if (PROFILE_MODEL_P (current_cpu))
2213 {
2214 }
2215 #endif
2216 #undef FLD
2217 return idesc;
2218 }
2219
2220 extract_sfmt_bnod:
2221 {
2222 const IDESC *idesc = &fr30bf_insn_data[itype];
2223 CGEN_INSN_INT insn = base_insn;
2224 #define FLD(f) abuf->fields.fmt_empty.f
2225
2226
2227 /* Record the fields for the semantic handler. */
2228 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bnod", (char *) 0));
2229
2230 #undef FLD
2231 return idesc;
2232 }
2233
2234 extract_sfmt_beqd:
2235 {
2236 const IDESC *idesc = &fr30bf_insn_data[itype];
2237 CGEN_INSN_INT insn = base_insn;
2238 #define FLD(f) abuf->fields.sfmt_brad.f
2239 SI f_rel9;
2240
2241 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2242
2243 /* Record the fields for the semantic handler. */
2244 FLD (i_label9) = f_rel9;
2245 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_beqd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2246
2247 #if WITH_PROFILE_MODEL_P
2248 /* Record the fields for profiling. */
2249 if (PROFILE_MODEL_P (current_cpu))
2250 {
2251 }
2252 #endif
2253 #undef FLD
2254 return idesc;
2255 }
2256
2257 extract_sfmt_bcd:
2258 {
2259 const IDESC *idesc = &fr30bf_insn_data[itype];
2260 CGEN_INSN_INT insn = base_insn;
2261 #define FLD(f) abuf->fields.sfmt_brad.f
2262 SI f_rel9;
2263
2264 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2265
2266 /* Record the fields for the semantic handler. */
2267 FLD (i_label9) = f_rel9;
2268 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bcd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2269
2270 #if WITH_PROFILE_MODEL_P
2271 /* Record the fields for profiling. */
2272 if (PROFILE_MODEL_P (current_cpu))
2273 {
2274 }
2275 #endif
2276 #undef FLD
2277 return idesc;
2278 }
2279
2280 extract_sfmt_bnd:
2281 {
2282 const IDESC *idesc = &fr30bf_insn_data[itype];
2283 CGEN_INSN_INT insn = base_insn;
2284 #define FLD(f) abuf->fields.sfmt_brad.f
2285 SI f_rel9;
2286
2287 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2288
2289 /* Record the fields for the semantic handler. */
2290 FLD (i_label9) = f_rel9;
2291 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bnd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2292
2293 #if WITH_PROFILE_MODEL_P
2294 /* Record the fields for profiling. */
2295 if (PROFILE_MODEL_P (current_cpu))
2296 {
2297 }
2298 #endif
2299 #undef FLD
2300 return idesc;
2301 }
2302
2303 extract_sfmt_bvd:
2304 {
2305 const IDESC *idesc = &fr30bf_insn_data[itype];
2306 CGEN_INSN_INT insn = base_insn;
2307 #define FLD(f) abuf->fields.sfmt_brad.f
2308 SI f_rel9;
2309
2310 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2311
2312 /* Record the fields for the semantic handler. */
2313 FLD (i_label9) = f_rel9;
2314 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bvd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2315
2316 #if WITH_PROFILE_MODEL_P
2317 /* Record the fields for profiling. */
2318 if (PROFILE_MODEL_P (current_cpu))
2319 {
2320 }
2321 #endif
2322 #undef FLD
2323 return idesc;
2324 }
2325
2326 extract_sfmt_bltd:
2327 {
2328 const IDESC *idesc = &fr30bf_insn_data[itype];
2329 CGEN_INSN_INT insn = base_insn;
2330 #define FLD(f) abuf->fields.sfmt_brad.f
2331 SI f_rel9;
2332
2333 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2334
2335 /* Record the fields for the semantic handler. */
2336 FLD (i_label9) = f_rel9;
2337 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bltd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2338
2339 #if WITH_PROFILE_MODEL_P
2340 /* Record the fields for profiling. */
2341 if (PROFILE_MODEL_P (current_cpu))
2342 {
2343 }
2344 #endif
2345 #undef FLD
2346 return idesc;
2347 }
2348
2349 extract_sfmt_bled:
2350 {
2351 const IDESC *idesc = &fr30bf_insn_data[itype];
2352 CGEN_INSN_INT insn = base_insn;
2353 #define FLD(f) abuf->fields.sfmt_brad.f
2354 SI f_rel9;
2355
2356 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2357
2358 /* Record the fields for the semantic handler. */
2359 FLD (i_label9) = f_rel9;
2360 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bled", "label9 0x%x", 'x', f_rel9, (char *) 0));
2361
2362 #if WITH_PROFILE_MODEL_P
2363 /* Record the fields for profiling. */
2364 if (PROFILE_MODEL_P (current_cpu))
2365 {
2366 }
2367 #endif
2368 #undef FLD
2369 return idesc;
2370 }
2371
2372 extract_sfmt_blsd:
2373 {
2374 const IDESC *idesc = &fr30bf_insn_data[itype];
2375 CGEN_INSN_INT insn = base_insn;
2376 #define FLD(f) abuf->fields.sfmt_brad.f
2377 SI f_rel9;
2378
2379 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2380
2381 /* Record the fields for the semantic handler. */
2382 FLD (i_label9) = f_rel9;
2383 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_blsd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2384
2385 #if WITH_PROFILE_MODEL_P
2386 /* Record the fields for profiling. */
2387 if (PROFILE_MODEL_P (current_cpu))
2388 {
2389 }
2390 #endif
2391 #undef FLD
2392 return idesc;
2393 }
2394
2395 extract_sfmt_dmovr13:
2396 {
2397 const IDESC *idesc = &fr30bf_insn_data[itype];
2398 CGEN_INSN_INT insn = base_insn;
2399 #define FLD(f) abuf->fields.sfmt_dmovr13pi.f
2400 USI f_dir10;
2401
2402 f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2403
2404 /* Record the fields for the semantic handler. */
2405 FLD (f_dir10) = f_dir10;
2406 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2407
2408 #if WITH_PROFILE_MODEL_P
2409 /* Record the fields for profiling. */
2410 if (PROFILE_MODEL_P (current_cpu))
2411 {
2412 FLD (in_h_gr_13) = 13;
2413 }
2414 #endif
2415 #undef FLD
2416 return idesc;
2417 }
2418
2419 extract_sfmt_dmovr13h:
2420 {
2421 const IDESC *idesc = &fr30bf_insn_data[itype];
2422 CGEN_INSN_INT insn = base_insn;
2423 #define FLD(f) abuf->fields.sfmt_dmovr13pih.f
2424 USI f_dir9;
2425
2426 f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2427
2428 /* Record the fields for the semantic handler. */
2429 FLD (f_dir9) = f_dir9;
2430 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13h", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2431
2432 #if WITH_PROFILE_MODEL_P
2433 /* Record the fields for profiling. */
2434 if (PROFILE_MODEL_P (current_cpu))
2435 {
2436 FLD (in_h_gr_13) = 13;
2437 }
2438 #endif
2439 #undef FLD
2440 return idesc;
2441 }
2442
2443 extract_sfmt_dmovr13b:
2444 {
2445 const IDESC *idesc = &fr30bf_insn_data[itype];
2446 CGEN_INSN_INT insn = base_insn;
2447 #define FLD(f) abuf->fields.sfmt_dmovr13pib.f
2448 UINT f_dir8;
2449
2450 f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2451
2452 /* Record the fields for the semantic handler. */
2453 FLD (f_dir8) = f_dir8;
2454 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13b", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2455
2456 #if WITH_PROFILE_MODEL_P
2457 /* Record the fields for profiling. */
2458 if (PROFILE_MODEL_P (current_cpu))
2459 {
2460 FLD (in_h_gr_13) = 13;
2461 }
2462 #endif
2463 #undef FLD
2464 return idesc;
2465 }
2466
2467 extract_sfmt_dmovr13pi:
2468 {
2469 const IDESC *idesc = &fr30bf_insn_data[itype];
2470 CGEN_INSN_INT insn = base_insn;
2471 #define FLD(f) abuf->fields.sfmt_dmovr13pi.f
2472 USI f_dir10;
2473
2474 f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2475
2476 /* Record the fields for the semantic handler. */
2477 FLD (f_dir10) = f_dir10;
2478 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2479
2480 #if WITH_PROFILE_MODEL_P
2481 /* Record the fields for profiling. */
2482 if (PROFILE_MODEL_P (current_cpu))
2483 {
2484 FLD (in_h_gr_13) = 13;
2485 FLD (out_h_gr_13) = 13;
2486 }
2487 #endif
2488 #undef FLD
2489 return idesc;
2490 }
2491
2492 extract_sfmt_dmovr13pih:
2493 {
2494 const IDESC *idesc = &fr30bf_insn_data[itype];
2495 CGEN_INSN_INT insn = base_insn;
2496 #define FLD(f) abuf->fields.sfmt_dmovr13pih.f
2497 USI f_dir9;
2498
2499 f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2500
2501 /* Record the fields for the semantic handler. */
2502 FLD (f_dir9) = f_dir9;
2503 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13pih", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2504
2505 #if WITH_PROFILE_MODEL_P
2506 /* Record the fields for profiling. */
2507 if (PROFILE_MODEL_P (current_cpu))
2508 {
2509 FLD (in_h_gr_13) = 13;
2510 FLD (out_h_gr_13) = 13;
2511 }
2512 #endif
2513 #undef FLD
2514 return idesc;
2515 }
2516
2517 extract_sfmt_dmovr13pib:
2518 {
2519 const IDESC *idesc = &fr30bf_insn_data[itype];
2520 CGEN_INSN_INT insn = base_insn;
2521 #define FLD(f) abuf->fields.sfmt_dmovr13pib.f
2522 UINT f_dir8;
2523
2524 f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2525
2526 /* Record the fields for the semantic handler. */
2527 FLD (f_dir8) = f_dir8;
2528 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13pib", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2529
2530 #if WITH_PROFILE_MODEL_P
2531 /* Record the fields for profiling. */
2532 if (PROFILE_MODEL_P (current_cpu))
2533 {
2534 FLD (in_h_gr_13) = 13;
2535 FLD (out_h_gr_13) = 13;
2536 }
2537 #endif
2538 #undef FLD
2539 return idesc;
2540 }
2541
2542 extract_sfmt_dmovr15pi:
2543 {
2544 const IDESC *idesc = &fr30bf_insn_data[itype];
2545 CGEN_INSN_INT insn = base_insn;
2546 #define FLD(f) abuf->fields.sfmt_dmovr15pi.f
2547 USI f_dir10;
2548
2549 f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2550
2551 /* Record the fields for the semantic handler. */
2552 FLD (f_dir10) = f_dir10;
2553 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr15pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2554
2555 #if WITH_PROFILE_MODEL_P
2556 /* Record the fields for profiling. */
2557 if (PROFILE_MODEL_P (current_cpu))
2558 {
2559 FLD (in_h_gr_15) = 15;
2560 FLD (out_h_gr_15) = 15;
2561 }
2562 #endif
2563 #undef FLD
2564 return idesc;
2565 }
2566
2567 extract_sfmt_dmov2r13:
2568 {
2569 const IDESC *idesc = &fr30bf_insn_data[itype];
2570 CGEN_INSN_INT insn = base_insn;
2571 #define FLD(f) abuf->fields.sfmt_dmovr13pi.f
2572 USI f_dir10;
2573
2574 f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2575
2576 /* Record the fields for the semantic handler. */
2577 FLD (f_dir10) = f_dir10;
2578 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2579
2580 #if WITH_PROFILE_MODEL_P
2581 /* Record the fields for profiling. */
2582 if (PROFILE_MODEL_P (current_cpu))
2583 {
2584 FLD (out_h_gr_13) = 13;
2585 }
2586 #endif
2587 #undef FLD
2588 return idesc;
2589 }
2590
2591 extract_sfmt_dmov2r13h:
2592 {
2593 const IDESC *idesc = &fr30bf_insn_data[itype];
2594 CGEN_INSN_INT insn = base_insn;
2595 #define FLD(f) abuf->fields.sfmt_dmovr13pih.f
2596 USI f_dir9;
2597
2598 f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2599
2600 /* Record the fields for the semantic handler. */
2601 FLD (f_dir9) = f_dir9;
2602 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13h", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2603
2604 #if WITH_PROFILE_MODEL_P
2605 /* Record the fields for profiling. */
2606 if (PROFILE_MODEL_P (current_cpu))
2607 {
2608 FLD (out_h_gr_13) = 13;
2609 }
2610 #endif
2611 #undef FLD
2612 return idesc;
2613 }
2614
2615 extract_sfmt_dmov2r13b:
2616 {
2617 const IDESC *idesc = &fr30bf_insn_data[itype];
2618 CGEN_INSN_INT insn = base_insn;
2619 #define FLD(f) abuf->fields.sfmt_dmovr13pib.f
2620 UINT f_dir8;
2621
2622 f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2623
2624 /* Record the fields for the semantic handler. */
2625 FLD (f_dir8) = f_dir8;
2626 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13b", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2627
2628 #if WITH_PROFILE_MODEL_P
2629 /* Record the fields for profiling. */
2630 if (PROFILE_MODEL_P (current_cpu))
2631 {
2632 FLD (out_h_gr_13) = 13;
2633 }
2634 #endif
2635 #undef FLD
2636 return idesc;
2637 }
2638
2639 extract_sfmt_dmov2r13pi:
2640 {
2641 const IDESC *idesc = &fr30bf_insn_data[itype];
2642 CGEN_INSN_INT insn = base_insn;
2643 #define FLD(f) abuf->fields.sfmt_dmovr13pi.f
2644 USI f_dir10;
2645
2646 f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2647
2648 /* Record the fields for the semantic handler. */
2649 FLD (f_dir10) = f_dir10;
2650 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2651
2652 #if WITH_PROFILE_MODEL_P
2653 /* Record the fields for profiling. */
2654 if (PROFILE_MODEL_P (current_cpu))
2655 {
2656 FLD (in_h_gr_13) = 13;
2657 FLD (out_h_gr_13) = 13;
2658 }
2659 #endif
2660 #undef FLD
2661 return idesc;
2662 }
2663
2664 extract_sfmt_dmov2r13pih:
2665 {
2666 const IDESC *idesc = &fr30bf_insn_data[itype];
2667 CGEN_INSN_INT insn = base_insn;
2668 #define FLD(f) abuf->fields.sfmt_dmovr13pih.f
2669 USI f_dir9;
2670
2671 f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2672
2673 /* Record the fields for the semantic handler. */
2674 FLD (f_dir9) = f_dir9;
2675 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13pih", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2676
2677 #if WITH_PROFILE_MODEL_P
2678 /* Record the fields for profiling. */
2679 if (PROFILE_MODEL_P (current_cpu))
2680 {
2681 FLD (in_h_gr_13) = 13;
2682 FLD (out_h_gr_13) = 13;
2683 }
2684 #endif
2685 #undef FLD
2686 return idesc;
2687 }
2688
2689 extract_sfmt_dmov2r13pib:
2690 {
2691 const IDESC *idesc = &fr30bf_insn_data[itype];
2692 CGEN_INSN_INT insn = base_insn;
2693 #define FLD(f) abuf->fields.sfmt_dmovr13pib.f
2694 UINT f_dir8;
2695
2696 f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2697
2698 /* Record the fields for the semantic handler. */
2699 FLD (f_dir8) = f_dir8;
2700 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13pib", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2701
2702 #if WITH_PROFILE_MODEL_P
2703 /* Record the fields for profiling. */
2704 if (PROFILE_MODEL_P (current_cpu))
2705 {
2706 FLD (in_h_gr_13) = 13;
2707 FLD (out_h_gr_13) = 13;
2708 }
2709 #endif
2710 #undef FLD
2711 return idesc;
2712 }
2713
2714 extract_sfmt_dmov2r15pd:
2715 {
2716 const IDESC *idesc = &fr30bf_insn_data[itype];
2717 CGEN_INSN_INT insn = base_insn;
2718 #define FLD(f) abuf->fields.sfmt_dmovr15pi.f
2719 USI f_dir10;
2720
2721 f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2722
2723 /* Record the fields for the semantic handler. */
2724 FLD (f_dir10) = f_dir10;
2725 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r15pd", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2726
2727 #if WITH_PROFILE_MODEL_P
2728 /* Record the fields for profiling. */
2729 if (PROFILE_MODEL_P (current_cpu))
2730 {
2731 FLD (in_h_gr_15) = 15;
2732 FLD (out_h_gr_15) = 15;
2733 }
2734 #endif
2735 #undef FLD
2736 return idesc;
2737 }
2738
2739 extract_sfmt_ldres:
2740 {
2741 const IDESC *idesc = &fr30bf_insn_data[itype];
2742 CGEN_INSN_INT insn = base_insn;
2743 #define FLD(f) abuf->fields.sfmt_add2.f
2744 UINT f_Ri;
2745
2746 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2747
2748 /* Record the fields for the semantic handler. */
2749 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2750 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldres", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2751
2752 #if WITH_PROFILE_MODEL_P
2753 /* Record the fields for profiling. */
2754 if (PROFILE_MODEL_P (current_cpu))
2755 {
2756 FLD (in_Ri) = f_Ri;
2757 FLD (out_Ri) = f_Ri;
2758 }
2759 #endif
2760 #undef FLD
2761 return idesc;
2762 }
2763
2764 extract_sfmt_copop:
2765 {
2766 const IDESC *idesc = &fr30bf_insn_data[itype];
2767 CGEN_INSN_INT insn = base_insn;
2768 #define FLD(f) abuf->fields.fmt_empty.f
2769 /* Contents of trailing part of insn. */
2770 UINT word_1;
2771
2772 word_1 = GETIMEMUHI (current_cpu, pc + 2);
2773
2774 /* Record the fields for the semantic handler. */
2775 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_copop", (char *) 0));
2776
2777 #undef FLD
2778 return idesc;
2779 }
2780
2781 extract_sfmt_andccr:
2782 {
2783 const IDESC *idesc = &fr30bf_insn_data[itype];
2784 CGEN_INSN_INT insn = base_insn;
2785 #define FLD(f) abuf->fields.sfmt_int.f
2786 UINT f_u8;
2787
2788 f_u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2789
2790 /* Record the fields for the semantic handler. */
2791 FLD (f_u8) = f_u8;
2792 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andccr", "f_u8 0x%x", 'x', f_u8, (char *) 0));
2793
2794 #undef FLD
2795 return idesc;
2796 }
2797
2798 extract_sfmt_stilm:
2799 {
2800 const IDESC *idesc = &fr30bf_insn_data[itype];
2801 CGEN_INSN_INT insn = base_insn;
2802 #define FLD(f) abuf->fields.sfmt_int.f
2803 UINT f_u8;
2804
2805 f_u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2806
2807 /* Record the fields for the semantic handler. */
2808 FLD (f_u8) = f_u8;
2809 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stilm", "f_u8 0x%x", 'x', f_u8, (char *) 0));
2810
2811 #undef FLD
2812 return idesc;
2813 }
2814
2815 extract_sfmt_addsp:
2816 {
2817 const IDESC *idesc = &fr30bf_insn_data[itype];
2818 CGEN_INSN_INT insn = base_insn;
2819 #define FLD(f) abuf->fields.sfmt_addsp.f
2820 SI f_s10;
2821
2822 f_s10 = ((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (2));
2823
2824 /* Record the fields for the semantic handler. */
2825 FLD (f_s10) = f_s10;
2826 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addsp", "f_s10 0x%x", 'x', f_s10, (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_15) = 15;
2833 FLD (out_h_gr_15) = 15;
2834 }
2835 #endif
2836 #undef FLD
2837 return idesc;
2838 }
2839
2840 extract_sfmt_extsb:
2841 {
2842 const IDESC *idesc = &fr30bf_insn_data[itype];
2843 CGEN_INSN_INT insn = base_insn;
2844 #define FLD(f) abuf->fields.sfmt_add2.f
2845 UINT f_Ri;
2846
2847 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2848
2849 /* Record the fields for the semantic handler. */
2850 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2851 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extsb", "Ri 0x%x", 'x', f_Ri, (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_Ri) = f_Ri;
2858 FLD (out_Ri) = f_Ri;
2859 }
2860 #endif
2861 #undef FLD
2862 return idesc;
2863 }
2864
2865 extract_sfmt_extub:
2866 {
2867 const IDESC *idesc = &fr30bf_insn_data[itype];
2868 CGEN_INSN_INT insn = base_insn;
2869 #define FLD(f) abuf->fields.sfmt_add2.f
2870 UINT f_Ri;
2871
2872 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2873
2874 /* Record the fields for the semantic handler. */
2875 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2876 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extub", "Ri 0x%x", 'x', f_Ri, (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 (in_Ri) = f_Ri;
2883 FLD (out_Ri) = f_Ri;
2884 }
2885 #endif
2886 #undef FLD
2887 return idesc;
2888 }
2889
2890 extract_sfmt_extsh:
2891 {
2892 const IDESC *idesc = &fr30bf_insn_data[itype];
2893 CGEN_INSN_INT insn = base_insn;
2894 #define FLD(f) abuf->fields.sfmt_add2.f
2895 UINT f_Ri;
2896
2897 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2898
2899 /* Record the fields for the semantic handler. */
2900 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2901 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extsh", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2902
2903 #if WITH_PROFILE_MODEL_P
2904 /* Record the fields for profiling. */
2905 if (PROFILE_MODEL_P (current_cpu))
2906 {
2907 FLD (in_Ri) = f_Ri;
2908 FLD (out_Ri) = f_Ri;
2909 }
2910 #endif
2911 #undef FLD
2912 return idesc;
2913 }
2914
2915 extract_sfmt_extuh:
2916 {
2917 const IDESC *idesc = &fr30bf_insn_data[itype];
2918 CGEN_INSN_INT insn = base_insn;
2919 #define FLD(f) abuf->fields.sfmt_add2.f
2920 UINT f_Ri;
2921
2922 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2923
2924 /* Record the fields for the semantic handler. */
2925 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2926 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extuh", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2927
2928 #if WITH_PROFILE_MODEL_P
2929 /* Record the fields for profiling. */
2930 if (PROFILE_MODEL_P (current_cpu))
2931 {
2932 FLD (in_Ri) = f_Ri;
2933 FLD (out_Ri) = f_Ri;
2934 }
2935 #endif
2936 #undef FLD
2937 return idesc;
2938 }
2939
2940 extract_sfmt_ldm0:
2941 {
2942 const IDESC *idesc = &fr30bf_insn_data[itype];
2943 CGEN_INSN_INT insn = base_insn;
2944 #define FLD(f) abuf->fields.sfmt_ldm0.f
2945 UINT f_reglist_low_ld;
2946
2947 f_reglist_low_ld = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2948
2949 /* Record the fields for the semantic handler. */
2950 FLD (f_reglist_low_ld) = f_reglist_low_ld;
2951 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldm0", "f_reglist_low_ld 0x%x", 'x', f_reglist_low_ld, (char *) 0));
2952
2953 #if WITH_PROFILE_MODEL_P
2954 /* Record the fields for profiling. */
2955 if (PROFILE_MODEL_P (current_cpu))
2956 {
2957 FLD (in_h_gr_15) = 15;
2958 FLD (out_h_gr_0) = 0;
2959 FLD (out_h_gr_1) = 1;
2960 FLD (out_h_gr_15) = 15;
2961 FLD (out_h_gr_2) = 2;
2962 FLD (out_h_gr_3) = 3;
2963 FLD (out_h_gr_4) = 4;
2964 FLD (out_h_gr_5) = 5;
2965 FLD (out_h_gr_6) = 6;
2966 FLD (out_h_gr_7) = 7;
2967 }
2968 #endif
2969 #undef FLD
2970 return idesc;
2971 }
2972
2973 extract_sfmt_ldm1:
2974 {
2975 const IDESC *idesc = &fr30bf_insn_data[itype];
2976 CGEN_INSN_INT insn = base_insn;
2977 #define FLD(f) abuf->fields.sfmt_ldm1.f
2978 UINT f_reglist_hi_ld;
2979
2980 f_reglist_hi_ld = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2981
2982 /* Record the fields for the semantic handler. */
2983 FLD (f_reglist_hi_ld) = f_reglist_hi_ld;
2984 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldm1", "f_reglist_hi_ld 0x%x", 'x', f_reglist_hi_ld, (char *) 0));
2985
2986 #if WITH_PROFILE_MODEL_P
2987 /* Record the fields for profiling. */
2988 if (PROFILE_MODEL_P (current_cpu))
2989 {
2990 FLD (in_h_gr_15) = 15;
2991 FLD (out_h_gr_10) = 10;
2992 FLD (out_h_gr_11) = 11;
2993 FLD (out_h_gr_12) = 12;
2994 FLD (out_h_gr_13) = 13;
2995 FLD (out_h_gr_14) = 14;
2996 FLD (out_h_gr_15) = 15;
2997 FLD (out_h_gr_8) = 8;
2998 FLD (out_h_gr_9) = 9;
2999 }
3000 #endif
3001 #undef FLD
3002 return idesc;
3003 }
3004
3005 extract_sfmt_stm0:
3006 {
3007 const IDESC *idesc = &fr30bf_insn_data[itype];
3008 CGEN_INSN_INT insn = base_insn;
3009 #define FLD(f) abuf->fields.sfmt_stm0.f
3010 UINT f_reglist_low_st;
3011
3012 f_reglist_low_st = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
3013
3014 /* Record the fields for the semantic handler. */
3015 FLD (f_reglist_low_st) = f_reglist_low_st;
3016 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stm0", "f_reglist_low_st 0x%x", 'x', f_reglist_low_st, (char *) 0));
3017
3018 #if WITH_PROFILE_MODEL_P
3019 /* Record the fields for profiling. */
3020 if (PROFILE_MODEL_P (current_cpu))
3021 {
3022 FLD (in_h_gr_0) = 0;
3023 FLD (in_h_gr_1) = 1;
3024 FLD (in_h_gr_15) = 15;
3025 FLD (in_h_gr_2) = 2;
3026 FLD (in_h_gr_3) = 3;
3027 FLD (in_h_gr_4) = 4;
3028 FLD (in_h_gr_5) = 5;
3029 FLD (in_h_gr_6) = 6;
3030 FLD (in_h_gr_7) = 7;
3031 FLD (out_h_gr_15) = 15;
3032 }
3033 #endif
3034 #undef FLD
3035 return idesc;
3036 }
3037
3038 extract_sfmt_stm1:
3039 {
3040 const IDESC *idesc = &fr30bf_insn_data[itype];
3041 CGEN_INSN_INT insn = base_insn;
3042 #define FLD(f) abuf->fields.sfmt_stm1.f
3043 UINT f_reglist_hi_st;
3044
3045 f_reglist_hi_st = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
3046
3047 /* Record the fields for the semantic handler. */
3048 FLD (f_reglist_hi_st) = f_reglist_hi_st;
3049 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stm1", "f_reglist_hi_st 0x%x", 'x', f_reglist_hi_st, (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_h_gr_10) = 10;
3056 FLD (in_h_gr_11) = 11;
3057 FLD (in_h_gr_12) = 12;
3058 FLD (in_h_gr_13) = 13;
3059 FLD (in_h_gr_14) = 14;
3060 FLD (in_h_gr_15) = 15;
3061 FLD (in_h_gr_8) = 8;
3062 FLD (in_h_gr_9) = 9;
3063 FLD (out_h_gr_15) = 15;
3064 }
3065 #endif
3066 #undef FLD
3067 return idesc;
3068 }
3069
3070 extract_sfmt_enter:
3071 {
3072 const IDESC *idesc = &fr30bf_insn_data[itype];
3073 CGEN_INSN_INT insn = base_insn;
3074 #define FLD(f) abuf->fields.sfmt_enter.f
3075 USI f_u10;
3076
3077 f_u10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
3078
3079 /* Record the fields for the semantic handler. */
3080 FLD (f_u10) = f_u10;
3081 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_enter", "f_u10 0x%x", 'x', f_u10, (char *) 0));
3082
3083 #if WITH_PROFILE_MODEL_P
3084 /* Record the fields for profiling. */
3085 if (PROFILE_MODEL_P (current_cpu))
3086 {
3087 FLD (in_h_gr_14) = 14;
3088 FLD (in_h_gr_15) = 15;
3089 FLD (out_h_gr_14) = 14;
3090 FLD (out_h_gr_15) = 15;
3091 }
3092 #endif
3093 #undef FLD
3094 return idesc;
3095 }
3096
3097 extract_sfmt_leave:
3098 {
3099 const IDESC *idesc = &fr30bf_insn_data[itype];
3100 CGEN_INSN_INT insn = base_insn;
3101 #define FLD(f) abuf->fields.sfmt_enter.f
3102
3103
3104 /* Record the fields for the semantic handler. */
3105 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_leave", (char *) 0));
3106
3107 #if WITH_PROFILE_MODEL_P
3108 /* Record the fields for profiling. */
3109 if (PROFILE_MODEL_P (current_cpu))
3110 {
3111 FLD (in_h_gr_14) = 14;
3112 FLD (in_h_gr_15) = 15;
3113 FLD (out_h_gr_14) = 14;
3114 FLD (out_h_gr_15) = 15;
3115 }
3116 #endif
3117 #undef FLD
3118 return idesc;
3119 }
3120
3121 extract_sfmt_xchb:
3122 {
3123 const IDESC *idesc = &fr30bf_insn_data[itype];
3124 CGEN_INSN_INT insn = base_insn;
3125 #define FLD(f) abuf->fields.sfmt_add.f
3126 UINT f_Rj;
3127 UINT f_Ri;
3128
3129 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
3130 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
3131
3132 /* Record the fields for the semantic handler. */
3133 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
3134 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
3135 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_xchb", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
3136
3137 #if WITH_PROFILE_MODEL_P
3138 /* Record the fields for profiling. */
3139 if (PROFILE_MODEL_P (current_cpu))
3140 {
3141 FLD (in_Ri) = f_Ri;
3142 FLD (in_Rj) = f_Rj;
3143 FLD (out_Ri) = f_Ri;
3144 }
3145 #endif
3146 #undef FLD
3147 return idesc;
3148 }
3149
3150 }
This page took 0.138921 seconds and 4 git commands to generate.