]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - sim/fr30/decode.c
import gdb-1999-07-07 pre reformat
[thirdparty/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 /* FIXME: Need to review choices for the following. */
32
33 #if WITH_SEM_SWITCH_FULL
34 #define FULL(fn)
35 #else
36 #define FULL(fn) CONCAT3 (fr30bf,_sem_,fn) ,
37 #endif
38
39 #if WITH_FAST
40 #if WITH_SEM_SWITCH_FAST
41 #define FAST(fn)
42 #else
43 #define FAST(fn) CONCAT3 (fr30bf,_semf_,fn) , /* f for fast */
44 #endif
45 #else
46 #define FAST(fn)
47 #endif
48
49 /* The INSN_ prefix is not here and is instead part of the `insn' argument
50 to avoid collisions with header files (e.g. `AND' in ansidecl.h). */
51 #define IDX(insn) CONCAT2 (FR30BF_,insn)
52 #define TYPE(insn) CONCAT2 (FR30_,insn)
53
54 /* The instruction descriptor array.
55 This is computed at runtime. Space for it is not malloc'd to save a
56 teensy bit of cpu in the decoder. Moving it to malloc space is trivial
57 but won't be done until necessary (we don't currently support the runtime
58 addition of instructions nor an SMP machine with different cpus). */
59 static IDESC fr30bf_insn_data[FR30BF_INSN_MAX];
60
61 /* Commas between elements are contained in the macros.
62 Some of these are conditionally compiled out. */
63
64 static const struct insn_sem fr30bf_insn_sem[] =
65 {
66 { VIRTUAL_INSN_X_INVALID, IDX (INSN_X_INVALID), FULL (x_invalid) FAST (x_invalid) },
67 { VIRTUAL_INSN_X_AFTER, IDX (INSN_X_AFTER), FULL (x_after) FAST (x_after) },
68 { VIRTUAL_INSN_X_BEFORE, IDX (INSN_X_BEFORE), FULL (x_before) FAST (x_before) },
69 { VIRTUAL_INSN_X_CTI_CHAIN, IDX (INSN_X_CTI_CHAIN), FULL (x_cti_chain) FAST (x_cti_chain) },
70 { VIRTUAL_INSN_X_CHAIN, IDX (INSN_X_CHAIN), FULL (x_chain) FAST (x_chain) },
71 { VIRTUAL_INSN_X_BEGIN, IDX (INSN_X_BEGIN), FULL (x_begin) FAST (x_begin) },
72 { TYPE (INSN_ADD), IDX (INSN_ADD), FULL (add) FAST (add) },
73 { TYPE (INSN_ADDI), IDX (INSN_ADDI), FULL (addi) FAST (addi) },
74 { TYPE (INSN_ADD2), IDX (INSN_ADD2), FULL (add2) FAST (add2) },
75 { TYPE (INSN_ADDC), IDX (INSN_ADDC), FULL (addc) FAST (addc) },
76 { TYPE (INSN_ADDN), IDX (INSN_ADDN), FULL (addn) FAST (addn) },
77 { TYPE (INSN_ADDNI), IDX (INSN_ADDNI), FULL (addni) FAST (addni) },
78 { TYPE (INSN_ADDN2), IDX (INSN_ADDN2), FULL (addn2) FAST (addn2) },
79 { TYPE (INSN_SUB), IDX (INSN_SUB), FULL (sub) FAST (sub) },
80 { TYPE (INSN_SUBC), IDX (INSN_SUBC), FULL (subc) FAST (subc) },
81 { TYPE (INSN_SUBN), IDX (INSN_SUBN), FULL (subn) FAST (subn) },
82 { TYPE (INSN_CMP), IDX (INSN_CMP), FULL (cmp) FAST (cmp) },
83 { TYPE (INSN_CMPI), IDX (INSN_CMPI), FULL (cmpi) FAST (cmpi) },
84 { TYPE (INSN_CMP2), IDX (INSN_CMP2), FULL (cmp2) FAST (cmp2) },
85 { TYPE (INSN_AND), IDX (INSN_AND), FULL (and) FAST (and) },
86 { TYPE (INSN_OR), IDX (INSN_OR), FULL (or) FAST (or) },
87 { TYPE (INSN_EOR), IDX (INSN_EOR), FULL (eor) FAST (eor) },
88 { TYPE (INSN_ANDM), IDX (INSN_ANDM), FULL (andm) FAST (andm) },
89 { TYPE (INSN_ANDH), IDX (INSN_ANDH), FULL (andh) FAST (andh) },
90 { TYPE (INSN_ANDB), IDX (INSN_ANDB), FULL (andb) FAST (andb) },
91 { TYPE (INSN_ORM), IDX (INSN_ORM), FULL (orm) FAST (orm) },
92 { TYPE (INSN_ORH), IDX (INSN_ORH), FULL (orh) FAST (orh) },
93 { TYPE (INSN_ORB), IDX (INSN_ORB), FULL (orb) FAST (orb) },
94 { TYPE (INSN_EORM), IDX (INSN_EORM), FULL (eorm) FAST (eorm) },
95 { TYPE (INSN_EORH), IDX (INSN_EORH), FULL (eorh) FAST (eorh) },
96 { TYPE (INSN_EORB), IDX (INSN_EORB), FULL (eorb) FAST (eorb) },
97 { TYPE (INSN_BANDL), IDX (INSN_BANDL), FULL (bandl) FAST (bandl) },
98 { TYPE (INSN_BORL), IDX (INSN_BORL), FULL (borl) FAST (borl) },
99 { TYPE (INSN_BEORL), IDX (INSN_BEORL), FULL (beorl) FAST (beorl) },
100 { TYPE (INSN_BANDH), IDX (INSN_BANDH), FULL (bandh) FAST (bandh) },
101 { TYPE (INSN_BORH), IDX (INSN_BORH), FULL (borh) FAST (borh) },
102 { TYPE (INSN_BEORH), IDX (INSN_BEORH), FULL (beorh) FAST (beorh) },
103 { TYPE (INSN_BTSTL), IDX (INSN_BTSTL), FULL (btstl) FAST (btstl) },
104 { TYPE (INSN_BTSTH), IDX (INSN_BTSTH), FULL (btsth) FAST (btsth) },
105 { TYPE (INSN_MUL), IDX (INSN_MUL), FULL (mul) FAST (mul) },
106 { TYPE (INSN_MULU), IDX (INSN_MULU), FULL (mulu) FAST (mulu) },
107 { TYPE (INSN_MULH), IDX (INSN_MULH), FULL (mulh) FAST (mulh) },
108 { TYPE (INSN_MULUH), IDX (INSN_MULUH), FULL (muluh) FAST (muluh) },
109 { TYPE (INSN_DIV0S), IDX (INSN_DIV0S), FULL (div0s) FAST (div0s) },
110 { TYPE (INSN_DIV0U), IDX (INSN_DIV0U), FULL (div0u) FAST (div0u) },
111 { TYPE (INSN_DIV1), IDX (INSN_DIV1), FULL (div1) FAST (div1) },
112 { TYPE (INSN_DIV2), IDX (INSN_DIV2), FULL (div2) FAST (div2) },
113 { TYPE (INSN_DIV3), IDX (INSN_DIV3), FULL (div3) FAST (div3) },
114 { TYPE (INSN_DIV4S), IDX (INSN_DIV4S), FULL (div4s) FAST (div4s) },
115 { TYPE (INSN_LSL), IDX (INSN_LSL), FULL (lsl) FAST (lsl) },
116 { TYPE (INSN_LSLI), IDX (INSN_LSLI), FULL (lsli) FAST (lsli) },
117 { TYPE (INSN_LSL2), IDX (INSN_LSL2), FULL (lsl2) FAST (lsl2) },
118 { TYPE (INSN_LSR), IDX (INSN_LSR), FULL (lsr) FAST (lsr) },
119 { TYPE (INSN_LSRI), IDX (INSN_LSRI), FULL (lsri) FAST (lsri) },
120 { TYPE (INSN_LSR2), IDX (INSN_LSR2), FULL (lsr2) FAST (lsr2) },
121 { TYPE (INSN_ASR), IDX (INSN_ASR), FULL (asr) FAST (asr) },
122 { TYPE (INSN_ASRI), IDX (INSN_ASRI), FULL (asri) FAST (asri) },
123 { TYPE (INSN_ASR2), IDX (INSN_ASR2), FULL (asr2) FAST (asr2) },
124 { TYPE (INSN_LDI8), IDX (INSN_LDI8), FULL (ldi8) FAST (ldi8) },
125 { TYPE (INSN_LDI20), IDX (INSN_LDI20), FULL (ldi20) FAST (ldi20) },
126 { TYPE (INSN_LDI32), IDX (INSN_LDI32), FULL (ldi32) FAST (ldi32) },
127 { TYPE (INSN_LD), IDX (INSN_LD), FULL (ld) FAST (ld) },
128 { TYPE (INSN_LDUH), IDX (INSN_LDUH), FULL (lduh) FAST (lduh) },
129 { TYPE (INSN_LDUB), IDX (INSN_LDUB), FULL (ldub) FAST (ldub) },
130 { TYPE (INSN_LDR13), IDX (INSN_LDR13), FULL (ldr13) FAST (ldr13) },
131 { TYPE (INSN_LDR13UH), IDX (INSN_LDR13UH), FULL (ldr13uh) FAST (ldr13uh) },
132 { TYPE (INSN_LDR13UB), IDX (INSN_LDR13UB), FULL (ldr13ub) FAST (ldr13ub) },
133 { TYPE (INSN_LDR14), IDX (INSN_LDR14), FULL (ldr14) FAST (ldr14) },
134 { TYPE (INSN_LDR14UH), IDX (INSN_LDR14UH), FULL (ldr14uh) FAST (ldr14uh) },
135 { TYPE (INSN_LDR14UB), IDX (INSN_LDR14UB), FULL (ldr14ub) FAST (ldr14ub) },
136 { TYPE (INSN_LDR15), IDX (INSN_LDR15), FULL (ldr15) FAST (ldr15) },
137 { TYPE (INSN_LDR15GR), IDX (INSN_LDR15GR), FULL (ldr15gr) FAST (ldr15gr) },
138 { TYPE (INSN_LDR15DR), IDX (INSN_LDR15DR), FULL (ldr15dr) FAST (ldr15dr) },
139 { TYPE (INSN_LDR15PS), IDX (INSN_LDR15PS), FULL (ldr15ps) FAST (ldr15ps) },
140 { TYPE (INSN_ST), IDX (INSN_ST), FULL (st) FAST (st) },
141 { TYPE (INSN_STH), IDX (INSN_STH), FULL (sth) FAST (sth) },
142 { TYPE (INSN_STB), IDX (INSN_STB), FULL (stb) FAST (stb) },
143 { TYPE (INSN_STR13), IDX (INSN_STR13), FULL (str13) FAST (str13) },
144 { TYPE (INSN_STR13H), IDX (INSN_STR13H), FULL (str13h) FAST (str13h) },
145 { TYPE (INSN_STR13B), IDX (INSN_STR13B), FULL (str13b) FAST (str13b) },
146 { TYPE (INSN_STR14), IDX (INSN_STR14), FULL (str14) FAST (str14) },
147 { TYPE (INSN_STR14H), IDX (INSN_STR14H), FULL (str14h) FAST (str14h) },
148 { TYPE (INSN_STR14B), IDX (INSN_STR14B), FULL (str14b) FAST (str14b) },
149 { TYPE (INSN_STR15), IDX (INSN_STR15), FULL (str15) FAST (str15) },
150 { TYPE (INSN_STR15GR), IDX (INSN_STR15GR), FULL (str15gr) FAST (str15gr) },
151 { TYPE (INSN_STR15DR), IDX (INSN_STR15DR), FULL (str15dr) FAST (str15dr) },
152 { TYPE (INSN_STR15PS), IDX (INSN_STR15PS), FULL (str15ps) FAST (str15ps) },
153 { TYPE (INSN_MOV), IDX (INSN_MOV), FULL (mov) FAST (mov) },
154 { TYPE (INSN_MOVDR), IDX (INSN_MOVDR), FULL (movdr) FAST (movdr) },
155 { TYPE (INSN_MOVPS), IDX (INSN_MOVPS), FULL (movps) FAST (movps) },
156 { TYPE (INSN_MOV2DR), IDX (INSN_MOV2DR), FULL (mov2dr) FAST (mov2dr) },
157 { TYPE (INSN_MOV2PS), IDX (INSN_MOV2PS), FULL (mov2ps) FAST (mov2ps) },
158 { TYPE (INSN_JMP), IDX (INSN_JMP), FULL (jmp) FAST (jmp) },
159 { TYPE (INSN_JMPD), IDX (INSN_JMPD), FULL (jmpd) FAST (jmpd) },
160 { TYPE (INSN_CALLR), IDX (INSN_CALLR), FULL (callr) FAST (callr) },
161 { TYPE (INSN_CALLRD), IDX (INSN_CALLRD), FULL (callrd) FAST (callrd) },
162 { TYPE (INSN_CALL), IDX (INSN_CALL), FULL (call) FAST (call) },
163 { TYPE (INSN_CALLD), IDX (INSN_CALLD), FULL (calld) FAST (calld) },
164 { TYPE (INSN_RET), IDX (INSN_RET), FULL (ret) FAST (ret) },
165 { TYPE (INSN_RET_D), IDX (INSN_RET_D), FULL (ret_d) FAST (ret_d) },
166 { TYPE (INSN_INT), IDX (INSN_INT), FULL (int) FAST (int) },
167 { TYPE (INSN_INTE), IDX (INSN_INTE), FULL (inte) FAST (inte) },
168 { TYPE (INSN_RETI), IDX (INSN_RETI), FULL (reti) FAST (reti) },
169 { TYPE (INSN_BRAD), IDX (INSN_BRAD), FULL (brad) FAST (brad) },
170 { TYPE (INSN_BRA), IDX (INSN_BRA), FULL (bra) FAST (bra) },
171 { TYPE (INSN_BNOD), IDX (INSN_BNOD), FULL (bnod) FAST (bnod) },
172 { TYPE (INSN_BNO), IDX (INSN_BNO), FULL (bno) FAST (bno) },
173 { TYPE (INSN_BEQD), IDX (INSN_BEQD), FULL (beqd) FAST (beqd) },
174 { TYPE (INSN_BEQ), IDX (INSN_BEQ), FULL (beq) FAST (beq) },
175 { TYPE (INSN_BNED), IDX (INSN_BNED), FULL (bned) FAST (bned) },
176 { TYPE (INSN_BNE), IDX (INSN_BNE), FULL (bne) FAST (bne) },
177 { TYPE (INSN_BCD), IDX (INSN_BCD), FULL (bcd) FAST (bcd) },
178 { TYPE (INSN_BC), IDX (INSN_BC), FULL (bc) FAST (bc) },
179 { TYPE (INSN_BNCD), IDX (INSN_BNCD), FULL (bncd) FAST (bncd) },
180 { TYPE (INSN_BNC), IDX (INSN_BNC), FULL (bnc) FAST (bnc) },
181 { TYPE (INSN_BND), IDX (INSN_BND), FULL (bnd) FAST (bnd) },
182 { TYPE (INSN_BN), IDX (INSN_BN), FULL (bn) FAST (bn) },
183 { TYPE (INSN_BPD), IDX (INSN_BPD), FULL (bpd) FAST (bpd) },
184 { TYPE (INSN_BP), IDX (INSN_BP), FULL (bp) FAST (bp) },
185 { TYPE (INSN_BVD), IDX (INSN_BVD), FULL (bvd) FAST (bvd) },
186 { TYPE (INSN_BV), IDX (INSN_BV), FULL (bv) FAST (bv) },
187 { TYPE (INSN_BNVD), IDX (INSN_BNVD), FULL (bnvd) FAST (bnvd) },
188 { TYPE (INSN_BNV), IDX (INSN_BNV), FULL (bnv) FAST (bnv) },
189 { TYPE (INSN_BLTD), IDX (INSN_BLTD), FULL (bltd) FAST (bltd) },
190 { TYPE (INSN_BLT), IDX (INSN_BLT), FULL (blt) FAST (blt) },
191 { TYPE (INSN_BGED), IDX (INSN_BGED), FULL (bged) FAST (bged) },
192 { TYPE (INSN_BGE), IDX (INSN_BGE), FULL (bge) FAST (bge) },
193 { TYPE (INSN_BLED), IDX (INSN_BLED), FULL (bled) FAST (bled) },
194 { TYPE (INSN_BLE), IDX (INSN_BLE), FULL (ble) FAST (ble) },
195 { TYPE (INSN_BGTD), IDX (INSN_BGTD), FULL (bgtd) FAST (bgtd) },
196 { TYPE (INSN_BGT), IDX (INSN_BGT), FULL (bgt) FAST (bgt) },
197 { TYPE (INSN_BLSD), IDX (INSN_BLSD), FULL (blsd) FAST (blsd) },
198 { TYPE (INSN_BLS), IDX (INSN_BLS), FULL (bls) FAST (bls) },
199 { TYPE (INSN_BHID), IDX (INSN_BHID), FULL (bhid) FAST (bhid) },
200 { TYPE (INSN_BHI), IDX (INSN_BHI), FULL (bhi) FAST (bhi) },
201 { TYPE (INSN_DMOVR13), IDX (INSN_DMOVR13), FULL (dmovr13) FAST (dmovr13) },
202 { TYPE (INSN_DMOVR13H), IDX (INSN_DMOVR13H), FULL (dmovr13h) FAST (dmovr13h) },
203 { TYPE (INSN_DMOVR13B), IDX (INSN_DMOVR13B), FULL (dmovr13b) FAST (dmovr13b) },
204 { TYPE (INSN_DMOVR13PI), IDX (INSN_DMOVR13PI), FULL (dmovr13pi) FAST (dmovr13pi) },
205 { TYPE (INSN_DMOVR13PIH), IDX (INSN_DMOVR13PIH), FULL (dmovr13pih) FAST (dmovr13pih) },
206 { TYPE (INSN_DMOVR13PIB), IDX (INSN_DMOVR13PIB), FULL (dmovr13pib) FAST (dmovr13pib) },
207 { TYPE (INSN_DMOVR15PI), IDX (INSN_DMOVR15PI), FULL (dmovr15pi) FAST (dmovr15pi) },
208 { TYPE (INSN_DMOV2R13), IDX (INSN_DMOV2R13), FULL (dmov2r13) FAST (dmov2r13) },
209 { TYPE (INSN_DMOV2R13H), IDX (INSN_DMOV2R13H), FULL (dmov2r13h) FAST (dmov2r13h) },
210 { TYPE (INSN_DMOV2R13B), IDX (INSN_DMOV2R13B), FULL (dmov2r13b) FAST (dmov2r13b) },
211 { TYPE (INSN_DMOV2R13PI), IDX (INSN_DMOV2R13PI), FULL (dmov2r13pi) FAST (dmov2r13pi) },
212 { TYPE (INSN_DMOV2R13PIH), IDX (INSN_DMOV2R13PIH), FULL (dmov2r13pih) FAST (dmov2r13pih) },
213 { TYPE (INSN_DMOV2R13PIB), IDX (INSN_DMOV2R13PIB), FULL (dmov2r13pib) FAST (dmov2r13pib) },
214 { TYPE (INSN_DMOV2R15PD), IDX (INSN_DMOV2R15PD), FULL (dmov2r15pd) FAST (dmov2r15pd) },
215 { TYPE (INSN_LDRES), IDX (INSN_LDRES), FULL (ldres) FAST (ldres) },
216 { TYPE (INSN_STRES), IDX (INSN_STRES), FULL (stres) FAST (stres) },
217 { TYPE (INSN_COPOP), IDX (INSN_COPOP), FULL (copop) FAST (copop) },
218 { TYPE (INSN_COPLD), IDX (INSN_COPLD), FULL (copld) FAST (copld) },
219 { TYPE (INSN_COPST), IDX (INSN_COPST), FULL (copst) FAST (copst) },
220 { TYPE (INSN_COPSV), IDX (INSN_COPSV), FULL (copsv) FAST (copsv) },
221 { TYPE (INSN_NOP), IDX (INSN_NOP), FULL (nop) FAST (nop) },
222 { TYPE (INSN_ANDCCR), IDX (INSN_ANDCCR), FULL (andccr) FAST (andccr) },
223 { TYPE (INSN_ORCCR), IDX (INSN_ORCCR), FULL (orccr) FAST (orccr) },
224 { TYPE (INSN_STILM), IDX (INSN_STILM), FULL (stilm) FAST (stilm) },
225 { TYPE (INSN_ADDSP), IDX (INSN_ADDSP), FULL (addsp) FAST (addsp) },
226 { TYPE (INSN_EXTSB), IDX (INSN_EXTSB), FULL (extsb) FAST (extsb) },
227 { TYPE (INSN_EXTUB), IDX (INSN_EXTUB), FULL (extub) FAST (extub) },
228 { TYPE (INSN_EXTSH), IDX (INSN_EXTSH), FULL (extsh) FAST (extsh) },
229 { TYPE (INSN_EXTUH), IDX (INSN_EXTUH), FULL (extuh) FAST (extuh) },
230 { TYPE (INSN_LDM0), IDX (INSN_LDM0), FULL (ldm0) FAST (ldm0) },
231 { TYPE (INSN_LDM1), IDX (INSN_LDM1), FULL (ldm1) FAST (ldm1) },
232 { TYPE (INSN_STM0), IDX (INSN_STM0), FULL (stm0) FAST (stm0) },
233 { TYPE (INSN_STM1), IDX (INSN_STM1), FULL (stm1) FAST (stm1) },
234 { TYPE (INSN_ENTER), IDX (INSN_ENTER), FULL (enter) FAST (enter) },
235 { TYPE (INSN_LEAVE), IDX (INSN_LEAVE), FULL (leave) FAST (leave) },
236 { TYPE (INSN_XCHB), IDX (INSN_XCHB), FULL (xchb) FAST (xchb) },
237 };
238
239 static const struct insn_sem fr30bf_insn_sem_invalid =
240 {
241 VIRTUAL_INSN_X_INVALID, IDX (INSN_X_INVALID), FULL (x_invalid) FAST (x_invalid)
242 };
243
244 #undef FMT
245 #undef FULL
246 #undef FAST
247 #undef IDX
248 #undef TYPE
249
250 /* Initialize an IDESC from the compile-time computable parts. */
251
252 static INLINE void
253 init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t)
254 {
255 const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries;
256
257 id->num = t->index;
258 if ((int) t->type <= 0)
259 id->idata = & cgen_virtual_insn_table[- (int) t->type];
260 else
261 id->idata = & insn_table[t->type];
262 id->attrs = CGEN_INSN_ATTRS (id->idata);
263 /* Oh my god, a magic number. */
264 id->length = CGEN_INSN_BITSIZE (id->idata) / 8;
265 #if ! WITH_SEM_SWITCH_FULL
266 id->sem_full = t->sem_full;
267 #endif
268 #if WITH_FAST && ! WITH_SEM_SWITCH_FAST
269 id->sem_fast = t->sem_fast;
270 #endif
271 #if WITH_PROFILE_MODEL_P
272 id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index];
273 {
274 SIM_DESC sd = CPU_STATE (cpu);
275 SIM_ASSERT (t->index == id->timing->num);
276 }
277 #endif
278 }
279
280 /* Initialize the instruction descriptor table. */
281
282 void
283 fr30bf_init_idesc_table (SIM_CPU *cpu)
284 {
285 IDESC *id,*tabend;
286 const struct insn_sem *t,*tend;
287 int tabsize = FR30BF_INSN_MAX;
288 IDESC *table = fr30bf_insn_data;
289
290 memset (table, 0, tabsize * sizeof (IDESC));
291
292 /* First set all entries to the `invalid insn'. */
293 t = & fr30bf_insn_sem_invalid;
294 for (id = table, tabend = table + tabsize; id < tabend; ++id)
295 init_idesc (cpu, id, t);
296
297 /* Now fill in the values for the chosen cpu. */
298 for (t = fr30bf_insn_sem, tend = t + sizeof (fr30bf_insn_sem) / sizeof (*t);
299 t != tend; ++t)
300 {
301 init_idesc (cpu, & table[t->index], t);
302 }
303
304 /* Link the IDESC table into the cpu. */
305 CPU_IDESC (cpu) = table;
306 }
307
308 /* Given an instruction, return a pointer to its IDESC entry. */
309
310 const IDESC *
311 fr30bf_decode (SIM_CPU *current_cpu, IADDR pc,
312 CGEN_INSN_INT base_insn,
313 ARGBUF *abuf)
314 {
315 /* Result of decoder. */
316 FR30BF_INSN_TYPE itype;
317
318 {
319 CGEN_INSN_INT insn = base_insn;
320
321 {
322 unsigned int val = (((insn >> 8) & (255 << 0)));
323 switch (val)
324 {
325 case 0 : itype = FR30BF_INSN_LDR13; goto extract_fmt_ldr13;
326 case 1 : itype = FR30BF_INSN_LDR13UH; goto extract_fmt_ldr13;
327 case 2 : itype = FR30BF_INSN_LDR13UB; goto extract_fmt_ldr13;
328 case 3 : itype = FR30BF_INSN_LDR15; goto extract_fmt_ldr15;
329 case 4 : itype = FR30BF_INSN_LD; goto extract_fmt_ld;
330 case 5 : itype = FR30BF_INSN_LDUH; goto extract_fmt_ld;
331 case 6 : itype = FR30BF_INSN_LDUB; goto extract_fmt_ld;
332 case 7 :
333 {
334 unsigned int val = (((insn >> 4) & (15 << 0)));
335 switch (val)
336 {
337 case 0 : itype = FR30BF_INSN_LDR15GR; goto extract_fmt_ldr15gr;
338 case 1 : itype = FR30BF_INSN_MOV2PS; goto extract_fmt_mov2ps;
339 case 8 : itype = FR30BF_INSN_LDR15DR; goto extract_fmt_ldr15dr;
340 case 9 : itype = FR30BF_INSN_LDR15PS; goto extract_fmt_ldr15ps;
341 default : itype = FR30BF_INSN_X_INVALID; goto extract_fmt_empty;
342 }
343 }
344 case 8 : itype = FR30BF_INSN_DMOV2R13; goto extract_fmt_dmov2r13;
345 case 9 : itype = FR30BF_INSN_DMOV2R13H; goto extract_fmt_dmov2r13h;
346 case 10 : itype = FR30BF_INSN_DMOV2R13B; goto extract_fmt_dmov2r13b;
347 case 11 : itype = FR30BF_INSN_DMOV2R15PD; goto extract_fmt_dmov2r15pd;
348 case 12 : itype = FR30BF_INSN_DMOV2R13PI; goto extract_fmt_dmov2r13pi;
349 case 13 : itype = FR30BF_INSN_DMOV2R13PIH; goto extract_fmt_dmov2r13pih;
350 case 14 : itype = FR30BF_INSN_DMOV2R13PIB; goto extract_fmt_dmov2r13pib;
351 case 15 : itype = FR30BF_INSN_ENTER; goto extract_fmt_enter;
352 case 16 : itype = FR30BF_INSN_STR13; goto extract_fmt_str13;
353 case 17 : itype = FR30BF_INSN_STR13H; goto extract_fmt_str13;
354 case 18 : itype = FR30BF_INSN_STR13B; goto extract_fmt_str13;
355 case 19 : itype = FR30BF_INSN_STR15; goto extract_fmt_str15;
356 case 20 : itype = FR30BF_INSN_ST; goto extract_fmt_st;
357 case 21 : itype = FR30BF_INSN_STH; goto extract_fmt_st;
358 case 22 : itype = FR30BF_INSN_STB; goto extract_fmt_st;
359 case 23 :
360 {
361 unsigned int val = (((insn >> 4) & (15 << 0)));
362 switch (val)
363 {
364 case 0 : itype = FR30BF_INSN_STR15GR; goto extract_fmt_str15gr;
365 case 1 : itype = FR30BF_INSN_MOVPS; goto extract_fmt_movps;
366 case 8 : itype = FR30BF_INSN_STR15DR; goto extract_fmt_str15dr;
367 case 9 : itype = FR30BF_INSN_STR15PS; goto extract_fmt_str15ps;
368 default : itype = FR30BF_INSN_X_INVALID; goto extract_fmt_empty;
369 }
370 }
371 case 24 : itype = FR30BF_INSN_DMOVR13; goto extract_fmt_dmovr13;
372 case 25 : itype = FR30BF_INSN_DMOVR13H; goto extract_fmt_dmovr13h;
373 case 26 : itype = FR30BF_INSN_DMOVR13B; goto extract_fmt_dmovr13b;
374 case 27 : itype = FR30BF_INSN_DMOVR15PI; goto extract_fmt_dmovr15pi;
375 case 28 : itype = FR30BF_INSN_DMOVR13PI; goto extract_fmt_dmovr13pi;
376 case 29 : itype = FR30BF_INSN_DMOVR13PIH; goto extract_fmt_dmovr13pih;
377 case 30 : itype = FR30BF_INSN_DMOVR13PIB; goto extract_fmt_dmovr13pib;
378 case 31 : itype = FR30BF_INSN_INT; goto extract_fmt_int;
379 case 32 : /* fall through */
380 case 33 : /* fall through */
381 case 34 : /* fall through */
382 case 35 : /* fall through */
383 case 36 : /* fall through */
384 case 37 : /* fall through */
385 case 38 : /* fall through */
386 case 39 : /* fall through */
387 case 40 : /* fall through */
388 case 41 : /* fall through */
389 case 42 : /* fall through */
390 case 43 : /* fall through */
391 case 44 : /* fall through */
392 case 45 : /* fall through */
393 case 46 : /* fall through */
394 case 47 : itype = FR30BF_INSN_LDR14; goto extract_fmt_ldr14;
395 case 48 : /* fall through */
396 case 49 : /* fall through */
397 case 50 : /* fall through */
398 case 51 : /* fall through */
399 case 52 : /* fall through */
400 case 53 : /* fall through */
401 case 54 : /* fall through */
402 case 55 : /* fall through */
403 case 56 : /* fall through */
404 case 57 : /* fall through */
405 case 58 : /* fall through */
406 case 59 : /* fall through */
407 case 60 : /* fall through */
408 case 61 : /* fall through */
409 case 62 : /* fall through */
410 case 63 : itype = FR30BF_INSN_STR14; goto extract_fmt_str14;
411 case 64 : /* fall through */
412 case 65 : /* fall through */
413 case 66 : /* fall through */
414 case 67 : /* fall through */
415 case 68 : /* fall through */
416 case 69 : /* fall through */
417 case 70 : /* fall through */
418 case 71 : /* fall through */
419 case 72 : /* fall through */
420 case 73 : /* fall through */
421 case 74 : /* fall through */
422 case 75 : /* fall through */
423 case 76 : /* fall through */
424 case 77 : /* fall through */
425 case 78 : /* fall through */
426 case 79 : itype = FR30BF_INSN_LDR14UH; goto extract_fmt_ldr14uh;
427 case 80 : /* fall through */
428 case 81 : /* fall through */
429 case 82 : /* fall through */
430 case 83 : /* fall through */
431 case 84 : /* fall through */
432 case 85 : /* fall through */
433 case 86 : /* fall through */
434 case 87 : /* fall through */
435 case 88 : /* fall through */
436 case 89 : /* fall through */
437 case 90 : /* fall through */
438 case 91 : /* fall through */
439 case 92 : /* fall through */
440 case 93 : /* fall through */
441 case 94 : /* fall through */
442 case 95 : itype = FR30BF_INSN_STR14H; goto extract_fmt_str14h;
443 case 96 : /* fall through */
444 case 97 : /* fall through */
445 case 98 : /* fall through */
446 case 99 : /* fall through */
447 case 100 : /* fall through */
448 case 101 : /* fall through */
449 case 102 : /* fall through */
450 case 103 : /* fall through */
451 case 104 : /* fall through */
452 case 105 : /* fall through */
453 case 106 : /* fall through */
454 case 107 : /* fall through */
455 case 108 : /* fall through */
456 case 109 : /* fall through */
457 case 110 : /* fall through */
458 case 111 : itype = FR30BF_INSN_LDR14UB; goto extract_fmt_ldr14ub;
459 case 112 : /* fall through */
460 case 113 : /* fall through */
461 case 114 : /* fall through */
462 case 115 : /* fall through */
463 case 116 : /* fall through */
464 case 117 : /* fall through */
465 case 118 : /* fall through */
466 case 119 : /* fall through */
467 case 120 : /* fall through */
468 case 121 : /* fall through */
469 case 122 : /* fall through */
470 case 123 : /* fall through */
471 case 124 : /* fall through */
472 case 125 : /* fall through */
473 case 126 : /* fall through */
474 case 127 : itype = FR30BF_INSN_STR14B; goto extract_fmt_str14b;
475 case 128 : itype = FR30BF_INSN_BANDL; goto extract_fmt_bandl;
476 case 129 : itype = FR30BF_INSN_BANDH; goto extract_fmt_bandl;
477 case 130 : itype = FR30BF_INSN_AND; goto extract_fmt_and;
478 case 131 : itype = FR30BF_INSN_ANDCCR; goto extract_fmt_andccr;
479 case 132 : itype = FR30BF_INSN_ANDM; goto extract_fmt_andm;
480 case 133 : itype = FR30BF_INSN_ANDH; goto extract_fmt_andh;
481 case 134 : itype = FR30BF_INSN_ANDB; goto extract_fmt_andb;
482 case 135 : itype = FR30BF_INSN_STILM; goto extract_fmt_stilm;
483 case 136 : itype = FR30BF_INSN_BTSTL; goto extract_fmt_btstl;
484 case 137 : itype = FR30BF_INSN_BTSTH; goto extract_fmt_btstl;
485 case 138 : itype = FR30BF_INSN_XCHB; goto extract_fmt_xchb;
486 case 139 : itype = FR30BF_INSN_MOV; goto extract_fmt_mov;
487 case 140 : itype = FR30BF_INSN_LDM0; goto extract_fmt_ldm0;
488 case 141 : itype = FR30BF_INSN_LDM1; goto extract_fmt_ldm1;
489 case 142 : itype = FR30BF_INSN_STM0; goto extract_fmt_stm0;
490 case 143 : itype = FR30BF_INSN_STM1; goto extract_fmt_stm1;
491 case 144 : itype = FR30BF_INSN_BORL; goto extract_fmt_bandl;
492 case 145 : itype = FR30BF_INSN_BORH; goto extract_fmt_bandl;
493 case 146 : itype = FR30BF_INSN_OR; goto extract_fmt_and;
494 case 147 : itype = FR30BF_INSN_ORCCR; goto extract_fmt_andccr;
495 case 148 : itype = FR30BF_INSN_ORM; goto extract_fmt_andm;
496 case 149 : itype = FR30BF_INSN_ORH; goto extract_fmt_andh;
497 case 150 : itype = FR30BF_INSN_ORB; goto extract_fmt_andb;
498 case 151 :
499 {
500 unsigned int val = (((insn >> 4) & (15 << 0)));
501 switch (val)
502 {
503 case 0 : itype = FR30BF_INSN_JMP; goto extract_fmt_jmp;
504 case 1 : itype = FR30BF_INSN_CALLR; goto extract_fmt_callr;
505 case 2 : itype = FR30BF_INSN_RET; goto extract_fmt_ret;
506 case 3 : itype = FR30BF_INSN_RETI; goto extract_fmt_reti;
507 case 4 : itype = FR30BF_INSN_DIV0S; goto extract_fmt_div0s;
508 case 5 : itype = FR30BF_INSN_DIV0U; goto extract_fmt_div0u;
509 case 6 : itype = FR30BF_INSN_DIV1; goto extract_fmt_div1;
510 case 7 : itype = FR30BF_INSN_DIV2; goto extract_fmt_div2;
511 case 8 : itype = FR30BF_INSN_EXTSB; goto extract_fmt_extsb;
512 case 9 : itype = FR30BF_INSN_EXTUB; goto extract_fmt_extub;
513 case 10 : itype = FR30BF_INSN_EXTSH; goto extract_fmt_extsh;
514 case 11 : itype = FR30BF_INSN_EXTUH; goto extract_fmt_extuh;
515 default : itype = FR30BF_INSN_X_INVALID; goto extract_fmt_empty;
516 }
517 }
518 case 152 : itype = FR30BF_INSN_BEORL; goto extract_fmt_bandl;
519 case 153 : itype = FR30BF_INSN_BEORH; goto extract_fmt_bandl;
520 case 154 : itype = FR30BF_INSN_EOR; goto extract_fmt_and;
521 case 155 : itype = FR30BF_INSN_LDI20; goto extract_fmt_ldi20;
522 case 156 : itype = FR30BF_INSN_EORM; goto extract_fmt_andm;
523 case 157 : itype = FR30BF_INSN_EORH; goto extract_fmt_andh;
524 case 158 : itype = FR30BF_INSN_EORB; goto extract_fmt_andb;
525 case 159 :
526 {
527 unsigned int val = (((insn >> 4) & (15 << 0)));
528 switch (val)
529 {
530 case 0 : itype = FR30BF_INSN_JMPD; goto extract_fmt_jmp;
531 case 1 : itype = FR30BF_INSN_CALLRD; goto extract_fmt_callr;
532 case 2 : itype = FR30BF_INSN_RET_D; goto extract_fmt_ret;
533 case 3 : itype = FR30BF_INSN_INTE; goto extract_fmt_inte;
534 case 6 : itype = FR30BF_INSN_DIV3; goto extract_fmt_div3;
535 case 7 : itype = FR30BF_INSN_DIV4S; goto extract_fmt_div4s;
536 case 8 : itype = FR30BF_INSN_LDI32; goto extract_fmt_ldi32;
537 case 9 : itype = FR30BF_INSN_LEAVE; goto extract_fmt_leave;
538 case 10 : itype = FR30BF_INSN_NOP; goto extract_fmt_bnod;
539 case 12 : itype = FR30BF_INSN_COPOP; goto extract_fmt_copop;
540 case 13 : itype = FR30BF_INSN_COPLD; goto extract_fmt_copop;
541 case 14 : itype = FR30BF_INSN_COPST; goto extract_fmt_copop;
542 case 15 : itype = FR30BF_INSN_COPSV; goto extract_fmt_copop;
543 default : itype = FR30BF_INSN_X_INVALID; goto extract_fmt_empty;
544 }
545 }
546 case 160 : itype = FR30BF_INSN_ADDNI; goto extract_fmt_addni;
547 case 161 : itype = FR30BF_INSN_ADDN2; goto extract_fmt_addn2;
548 case 162 : itype = FR30BF_INSN_ADDN; goto extract_fmt_addn;
549 case 163 : itype = FR30BF_INSN_ADDSP; goto extract_fmt_addsp;
550 case 164 : itype = FR30BF_INSN_ADDI; goto extract_fmt_addi;
551 case 165 : itype = FR30BF_INSN_ADD2; goto extract_fmt_add2;
552 case 166 : itype = FR30BF_INSN_ADD; goto extract_fmt_add;
553 case 167 : itype = FR30BF_INSN_ADDC; goto extract_fmt_addc;
554 case 168 : itype = FR30BF_INSN_CMPI; goto extract_fmt_cmpi;
555 case 169 : itype = FR30BF_INSN_CMP2; goto extract_fmt_cmp2;
556 case 170 : itype = FR30BF_INSN_CMP; goto extract_fmt_cmp;
557 case 171 : itype = FR30BF_INSN_MULU; goto extract_fmt_mulu;
558 case 172 : itype = FR30BF_INSN_SUB; goto extract_fmt_add;
559 case 173 : itype = FR30BF_INSN_SUBC; goto extract_fmt_addc;
560 case 174 : itype = FR30BF_INSN_SUBN; goto extract_fmt_addn;
561 case 175 : itype = FR30BF_INSN_MUL; goto extract_fmt_mul;
562 case 176 : itype = FR30BF_INSN_LSRI; goto extract_fmt_lsli;
563 case 177 : itype = FR30BF_INSN_LSR2; goto extract_fmt_lsli;
564 case 178 : itype = FR30BF_INSN_LSR; goto extract_fmt_lsl;
565 case 179 : itype = FR30BF_INSN_MOV2DR; goto extract_fmt_mov2dr;
566 case 180 : itype = FR30BF_INSN_LSLI; goto extract_fmt_lsli;
567 case 181 : itype = FR30BF_INSN_LSL2; goto extract_fmt_lsli;
568 case 182 : itype = FR30BF_INSN_LSL; goto extract_fmt_lsl;
569 case 183 : itype = FR30BF_INSN_MOVDR; goto extract_fmt_movdr;
570 case 184 : itype = FR30BF_INSN_ASRI; goto extract_fmt_lsli;
571 case 185 : itype = FR30BF_INSN_ASR2; goto extract_fmt_lsli;
572 case 186 : itype = FR30BF_INSN_ASR; goto extract_fmt_lsl;
573 case 187 : itype = FR30BF_INSN_MULUH; goto extract_fmt_mulh;
574 case 188 : itype = FR30BF_INSN_LDRES; goto extract_fmt_ldres;
575 case 189 : itype = FR30BF_INSN_STRES; goto extract_fmt_ldres;
576 case 191 : itype = FR30BF_INSN_MULH; goto extract_fmt_mulh;
577 case 192 : /* fall through */
578 case 193 : /* fall through */
579 case 194 : /* fall through */
580 case 195 : /* fall through */
581 case 196 : /* fall through */
582 case 197 : /* fall through */
583 case 198 : /* fall through */
584 case 199 : /* fall through */
585 case 200 : /* fall through */
586 case 201 : /* fall through */
587 case 202 : /* fall through */
588 case 203 : /* fall through */
589 case 204 : /* fall through */
590 case 205 : /* fall through */
591 case 206 : /* fall through */
592 case 207 : itype = FR30BF_INSN_LDI8; goto extract_fmt_ldi8;
593 case 208 : /* fall through */
594 case 209 : /* fall through */
595 case 210 : /* fall through */
596 case 211 : /* fall through */
597 case 212 : /* fall through */
598 case 213 : /* fall through */
599 case 214 : /* fall through */
600 case 215 : itype = FR30BF_INSN_CALL; goto extract_fmt_call;
601 case 216 : /* fall through */
602 case 217 : /* fall through */
603 case 218 : /* fall through */
604 case 219 : /* fall through */
605 case 220 : /* fall through */
606 case 221 : /* fall through */
607 case 222 : /* fall through */
608 case 223 : itype = FR30BF_INSN_CALLD; goto extract_fmt_call;
609 case 224 : itype = FR30BF_INSN_BRA; goto extract_fmt_brad;
610 case 225 : itype = FR30BF_INSN_BNO; goto extract_fmt_bnod;
611 case 226 : itype = FR30BF_INSN_BEQ; goto extract_fmt_beqd;
612 case 227 : itype = FR30BF_INSN_BNE; goto extract_fmt_beqd;
613 case 228 : itype = FR30BF_INSN_BC; goto extract_fmt_bcd;
614 case 229 : itype = FR30BF_INSN_BNC; goto extract_fmt_bcd;
615 case 230 : itype = FR30BF_INSN_BN; goto extract_fmt_bnd;
616 case 231 : itype = FR30BF_INSN_BP; goto extract_fmt_bnd;
617 case 232 : itype = FR30BF_INSN_BV; goto extract_fmt_bvd;
618 case 233 : itype = FR30BF_INSN_BNV; goto extract_fmt_bvd;
619 case 234 : itype = FR30BF_INSN_BLT; goto extract_fmt_bltd;
620 case 235 : itype = FR30BF_INSN_BGE; goto extract_fmt_bltd;
621 case 236 : itype = FR30BF_INSN_BLE; goto extract_fmt_bled;
622 case 237 : itype = FR30BF_INSN_BGT; goto extract_fmt_bled;
623 case 238 : itype = FR30BF_INSN_BLS; goto extract_fmt_blsd;
624 case 239 : itype = FR30BF_INSN_BHI; goto extract_fmt_blsd;
625 case 240 : itype = FR30BF_INSN_BRAD; goto extract_fmt_brad;
626 case 241 : itype = FR30BF_INSN_BNOD; goto extract_fmt_bnod;
627 case 242 : itype = FR30BF_INSN_BEQD; goto extract_fmt_beqd;
628 case 243 : itype = FR30BF_INSN_BNED; goto extract_fmt_beqd;
629 case 244 : itype = FR30BF_INSN_BCD; goto extract_fmt_bcd;
630 case 245 : itype = FR30BF_INSN_BNCD; goto extract_fmt_bcd;
631 case 246 : itype = FR30BF_INSN_BND; goto extract_fmt_bnd;
632 case 247 : itype = FR30BF_INSN_BPD; goto extract_fmt_bnd;
633 case 248 : itype = FR30BF_INSN_BVD; goto extract_fmt_bvd;
634 case 249 : itype = FR30BF_INSN_BNVD; goto extract_fmt_bvd;
635 case 250 : itype = FR30BF_INSN_BLTD; goto extract_fmt_bltd;
636 case 251 : itype = FR30BF_INSN_BGED; goto extract_fmt_bltd;
637 case 252 : itype = FR30BF_INSN_BLED; goto extract_fmt_bled;
638 case 253 : itype = FR30BF_INSN_BGTD; goto extract_fmt_bled;
639 case 254 : itype = FR30BF_INSN_BLSD; goto extract_fmt_blsd;
640 case 255 : itype = FR30BF_INSN_BHID; goto extract_fmt_blsd;
641 default : itype = FR30BF_INSN_X_INVALID; goto extract_fmt_empty;
642 }
643 }
644 }
645
646 /* The instruction has been decoded, now extract the fields. */
647
648 extract_fmt_empty:
649 {
650 const IDESC *idesc = &fr30bf_insn_data[itype];
651 CGEN_INSN_INT insn = base_insn;
652 #define FLD(f) abuf->fields.fmt_empty.f
653
654
655 /* Record the fields for the semantic handler. */
656 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_empty", (char *) 0));
657
658 #undef FLD
659 return idesc;
660 }
661
662 extract_fmt_add:
663 {
664 const IDESC *idesc = &fr30bf_insn_data[itype];
665 CGEN_INSN_INT insn = base_insn;
666 #define FLD(f) abuf->fields.fmt_add.f
667 UINT f_Rj;
668 UINT f_Ri;
669
670 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
671 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
672
673 /* Record the fields for the semantic handler. */
674 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
675 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
676 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_add", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
677
678 #if WITH_PROFILE_MODEL_P
679 /* Record the fields for profiling. */
680 if (PROFILE_MODEL_P (current_cpu))
681 {
682 FLD (in_Ri) = f_Ri;
683 FLD (in_Rj) = f_Rj;
684 FLD (out_Ri) = f_Ri;
685 }
686 #endif
687 #undef FLD
688 return idesc;
689 }
690
691 extract_fmt_addi:
692 {
693 const IDESC *idesc = &fr30bf_insn_data[itype];
694 CGEN_INSN_INT insn = base_insn;
695 #define FLD(f) abuf->fields.fmt_addi.f
696 UINT f_u4;
697 UINT f_Ri;
698
699 f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
700 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
701
702 /* Record the fields for the semantic handler. */
703 FLD (f_u4) = f_u4;
704 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
705 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_addi", "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
706
707 #if WITH_PROFILE_MODEL_P
708 /* Record the fields for profiling. */
709 if (PROFILE_MODEL_P (current_cpu))
710 {
711 FLD (in_Ri) = f_Ri;
712 FLD (out_Ri) = f_Ri;
713 }
714 #endif
715 #undef FLD
716 return idesc;
717 }
718
719 extract_fmt_add2:
720 {
721 const IDESC *idesc = &fr30bf_insn_data[itype];
722 CGEN_INSN_INT insn = base_insn;
723 #define FLD(f) abuf->fields.fmt_add2.f
724 SI f_m4;
725 UINT f_Ri;
726
727 f_m4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) | (((-1) << (4))));
728 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
729
730 /* Record the fields for the semantic handler. */
731 FLD (f_m4) = f_m4;
732 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
733 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_add2", "f_m4 0x%x", 'x', f_m4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
734
735 #if WITH_PROFILE_MODEL_P
736 /* Record the fields for profiling. */
737 if (PROFILE_MODEL_P (current_cpu))
738 {
739 FLD (in_Ri) = f_Ri;
740 FLD (out_Ri) = f_Ri;
741 }
742 #endif
743 #undef FLD
744 return idesc;
745 }
746
747 extract_fmt_addc:
748 {
749 const IDESC *idesc = &fr30bf_insn_data[itype];
750 CGEN_INSN_INT insn = base_insn;
751 #define FLD(f) abuf->fields.fmt_addc.f
752 UINT f_Rj;
753 UINT f_Ri;
754
755 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
756 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
757
758 /* Record the fields for the semantic handler. */
759 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
760 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
761 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_addc", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
762
763 #if WITH_PROFILE_MODEL_P
764 /* Record the fields for profiling. */
765 if (PROFILE_MODEL_P (current_cpu))
766 {
767 FLD (in_Ri) = f_Ri;
768 FLD (in_Rj) = f_Rj;
769 FLD (out_Ri) = f_Ri;
770 }
771 #endif
772 #undef FLD
773 return idesc;
774 }
775
776 extract_fmt_addn:
777 {
778 const IDESC *idesc = &fr30bf_insn_data[itype];
779 CGEN_INSN_INT insn = base_insn;
780 #define FLD(f) abuf->fields.fmt_addn.f
781 UINT f_Rj;
782 UINT f_Ri;
783
784 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
785 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
786
787 /* Record the fields for the semantic handler. */
788 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
789 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
790 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_addn", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
791
792 #if WITH_PROFILE_MODEL_P
793 /* Record the fields for profiling. */
794 if (PROFILE_MODEL_P (current_cpu))
795 {
796 FLD (in_Ri) = f_Ri;
797 FLD (in_Rj) = f_Rj;
798 FLD (out_Ri) = f_Ri;
799 }
800 #endif
801 #undef FLD
802 return idesc;
803 }
804
805 extract_fmt_addni:
806 {
807 const IDESC *idesc = &fr30bf_insn_data[itype];
808 CGEN_INSN_INT insn = base_insn;
809 #define FLD(f) abuf->fields.fmt_addni.f
810 UINT f_u4;
811 UINT f_Ri;
812
813 f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
814 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
815
816 /* Record the fields for the semantic handler. */
817 FLD (f_u4) = f_u4;
818 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
819 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_addni", "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
820
821 #if WITH_PROFILE_MODEL_P
822 /* Record the fields for profiling. */
823 if (PROFILE_MODEL_P (current_cpu))
824 {
825 FLD (in_Ri) = f_Ri;
826 FLD (out_Ri) = f_Ri;
827 }
828 #endif
829 #undef FLD
830 return idesc;
831 }
832
833 extract_fmt_addn2:
834 {
835 const IDESC *idesc = &fr30bf_insn_data[itype];
836 CGEN_INSN_INT insn = base_insn;
837 #define FLD(f) abuf->fields.fmt_addn2.f
838 SI f_m4;
839 UINT f_Ri;
840
841 f_m4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) | (((-1) << (4))));
842 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
843
844 /* Record the fields for the semantic handler. */
845 FLD (f_m4) = f_m4;
846 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
847 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_addn2", "f_m4 0x%x", 'x', f_m4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
848
849 #if WITH_PROFILE_MODEL_P
850 /* Record the fields for profiling. */
851 if (PROFILE_MODEL_P (current_cpu))
852 {
853 FLD (in_Ri) = f_Ri;
854 FLD (out_Ri) = f_Ri;
855 }
856 #endif
857 #undef FLD
858 return idesc;
859 }
860
861 extract_fmt_cmp:
862 {
863 const IDESC *idesc = &fr30bf_insn_data[itype];
864 CGEN_INSN_INT insn = base_insn;
865 #define FLD(f) abuf->fields.fmt_cmp.f
866 UINT f_Rj;
867 UINT f_Ri;
868
869 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
870 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
871
872 /* Record the fields for the semantic handler. */
873 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
874 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
875 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_cmp", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
876
877 #if WITH_PROFILE_MODEL_P
878 /* Record the fields for profiling. */
879 if (PROFILE_MODEL_P (current_cpu))
880 {
881 FLD (in_Ri) = f_Ri;
882 FLD (in_Rj) = f_Rj;
883 }
884 #endif
885 #undef FLD
886 return idesc;
887 }
888
889 extract_fmt_cmpi:
890 {
891 const IDESC *idesc = &fr30bf_insn_data[itype];
892 CGEN_INSN_INT insn = base_insn;
893 #define FLD(f) abuf->fields.fmt_cmpi.f
894 UINT f_u4;
895 UINT f_Ri;
896
897 f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
898 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
899
900 /* Record the fields for the semantic handler. */
901 FLD (f_u4) = f_u4;
902 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
903 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_cmpi", "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
904
905 #if WITH_PROFILE_MODEL_P
906 /* Record the fields for profiling. */
907 if (PROFILE_MODEL_P (current_cpu))
908 {
909 FLD (in_Ri) = f_Ri;
910 }
911 #endif
912 #undef FLD
913 return idesc;
914 }
915
916 extract_fmt_cmp2:
917 {
918 const IDESC *idesc = &fr30bf_insn_data[itype];
919 CGEN_INSN_INT insn = base_insn;
920 #define FLD(f) abuf->fields.fmt_cmp2.f
921 SI f_m4;
922 UINT f_Ri;
923
924 f_m4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) | (((-1) << (4))));
925 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
926
927 /* Record the fields for the semantic handler. */
928 FLD (f_m4) = f_m4;
929 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
930 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_cmp2", "f_m4 0x%x", 'x', f_m4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
931
932 #if WITH_PROFILE_MODEL_P
933 /* Record the fields for profiling. */
934 if (PROFILE_MODEL_P (current_cpu))
935 {
936 FLD (in_Ri) = f_Ri;
937 }
938 #endif
939 #undef FLD
940 return idesc;
941 }
942
943 extract_fmt_and:
944 {
945 const IDESC *idesc = &fr30bf_insn_data[itype];
946 CGEN_INSN_INT insn = base_insn;
947 #define FLD(f) abuf->fields.fmt_and.f
948 UINT f_Rj;
949 UINT f_Ri;
950
951 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
952 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
953
954 /* Record the fields for the semantic handler. */
955 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
956 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
957 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_and", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
958
959 #if WITH_PROFILE_MODEL_P
960 /* Record the fields for profiling. */
961 if (PROFILE_MODEL_P (current_cpu))
962 {
963 FLD (in_Ri) = f_Ri;
964 FLD (in_Rj) = f_Rj;
965 FLD (out_Ri) = f_Ri;
966 }
967 #endif
968 #undef FLD
969 return idesc;
970 }
971
972 extract_fmt_andm:
973 {
974 const IDESC *idesc = &fr30bf_insn_data[itype];
975 CGEN_INSN_INT insn = base_insn;
976 #define FLD(f) abuf->fields.fmt_andm.f
977 UINT f_Rj;
978 UINT f_Ri;
979
980 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
981 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
982
983 /* Record the fields for the semantic handler. */
984 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
985 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
986 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_andm", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
987
988 #if WITH_PROFILE_MODEL_P
989 /* Record the fields for profiling. */
990 if (PROFILE_MODEL_P (current_cpu))
991 {
992 FLD (in_Ri) = f_Ri;
993 FLD (in_Rj) = f_Rj;
994 }
995 #endif
996 #undef FLD
997 return idesc;
998 }
999
1000 extract_fmt_andh:
1001 {
1002 const IDESC *idesc = &fr30bf_insn_data[itype];
1003 CGEN_INSN_INT insn = base_insn;
1004 #define FLD(f) abuf->fields.fmt_andh.f
1005 UINT f_Rj;
1006 UINT f_Ri;
1007
1008 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1009 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1010
1011 /* Record the fields for the semantic handler. */
1012 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1013 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1014 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_andh", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1015
1016 #if WITH_PROFILE_MODEL_P
1017 /* Record the fields for profiling. */
1018 if (PROFILE_MODEL_P (current_cpu))
1019 {
1020 FLD (in_Ri) = f_Ri;
1021 FLD (in_Rj) = f_Rj;
1022 }
1023 #endif
1024 #undef FLD
1025 return idesc;
1026 }
1027
1028 extract_fmt_andb:
1029 {
1030 const IDESC *idesc = &fr30bf_insn_data[itype];
1031 CGEN_INSN_INT insn = base_insn;
1032 #define FLD(f) abuf->fields.fmt_andb.f
1033 UINT f_Rj;
1034 UINT f_Ri;
1035
1036 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1037 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1038
1039 /* Record the fields for the semantic handler. */
1040 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1041 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1042 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_andb", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1043
1044 #if WITH_PROFILE_MODEL_P
1045 /* Record the fields for profiling. */
1046 if (PROFILE_MODEL_P (current_cpu))
1047 {
1048 FLD (in_Ri) = f_Ri;
1049 FLD (in_Rj) = f_Rj;
1050 }
1051 #endif
1052 #undef FLD
1053 return idesc;
1054 }
1055
1056 extract_fmt_bandl:
1057 {
1058 const IDESC *idesc = &fr30bf_insn_data[itype];
1059 CGEN_INSN_INT insn = base_insn;
1060 #define FLD(f) abuf->fields.fmt_bandl.f
1061 UINT f_u4;
1062 UINT f_Ri;
1063
1064 f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1065 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1066
1067 /* Record the fields for the semantic handler. */
1068 FLD (f_u4) = f_u4;
1069 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1070 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_bandl", "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1071
1072 #if WITH_PROFILE_MODEL_P
1073 /* Record the fields for profiling. */
1074 if (PROFILE_MODEL_P (current_cpu))
1075 {
1076 FLD (in_Ri) = f_Ri;
1077 }
1078 #endif
1079 #undef FLD
1080 return idesc;
1081 }
1082
1083 extract_fmt_btstl:
1084 {
1085 const IDESC *idesc = &fr30bf_insn_data[itype];
1086 CGEN_INSN_INT insn = base_insn;
1087 #define FLD(f) abuf->fields.fmt_btstl.f
1088 UINT f_u4;
1089 UINT f_Ri;
1090
1091 f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1092 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1093
1094 /* Record the fields for the semantic handler. */
1095 FLD (f_u4) = f_u4;
1096 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1097 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_btstl", "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1098
1099 #if WITH_PROFILE_MODEL_P
1100 /* Record the fields for profiling. */
1101 if (PROFILE_MODEL_P (current_cpu))
1102 {
1103 FLD (in_Ri) = f_Ri;
1104 }
1105 #endif
1106 #undef FLD
1107 return idesc;
1108 }
1109
1110 extract_fmt_mul:
1111 {
1112 const IDESC *idesc = &fr30bf_insn_data[itype];
1113 CGEN_INSN_INT insn = base_insn;
1114 #define FLD(f) abuf->fields.fmt_mul.f
1115 UINT f_Rj;
1116 UINT f_Ri;
1117
1118 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1119 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1120
1121 /* Record the fields for the semantic handler. */
1122 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1123 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1124 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_mul", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1125
1126 #if WITH_PROFILE_MODEL_P
1127 /* Record the fields for profiling. */
1128 if (PROFILE_MODEL_P (current_cpu))
1129 {
1130 FLD (in_Ri) = f_Ri;
1131 FLD (in_Rj) = f_Rj;
1132 }
1133 #endif
1134 #undef FLD
1135 return idesc;
1136 }
1137
1138 extract_fmt_mulu:
1139 {
1140 const IDESC *idesc = &fr30bf_insn_data[itype];
1141 CGEN_INSN_INT insn = base_insn;
1142 #define FLD(f) abuf->fields.fmt_mulu.f
1143 UINT f_Rj;
1144 UINT f_Ri;
1145
1146 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1147 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1148
1149 /* Record the fields for the semantic handler. */
1150 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1151 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1152 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_mulu", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1153
1154 #if WITH_PROFILE_MODEL_P
1155 /* Record the fields for profiling. */
1156 if (PROFILE_MODEL_P (current_cpu))
1157 {
1158 FLD (in_Ri) = f_Ri;
1159 FLD (in_Rj) = f_Rj;
1160 }
1161 #endif
1162 #undef FLD
1163 return idesc;
1164 }
1165
1166 extract_fmt_mulh:
1167 {
1168 const IDESC *idesc = &fr30bf_insn_data[itype];
1169 CGEN_INSN_INT insn = base_insn;
1170 #define FLD(f) abuf->fields.fmt_mulh.f
1171 UINT f_Rj;
1172 UINT f_Ri;
1173
1174 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1175 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1176
1177 /* Record the fields for the semantic handler. */
1178 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1179 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1180 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_mulh", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1181
1182 #if WITH_PROFILE_MODEL_P
1183 /* Record the fields for profiling. */
1184 if (PROFILE_MODEL_P (current_cpu))
1185 {
1186 FLD (in_Ri) = f_Ri;
1187 FLD (in_Rj) = f_Rj;
1188 }
1189 #endif
1190 #undef FLD
1191 return idesc;
1192 }
1193
1194 extract_fmt_div0s:
1195 {
1196 const IDESC *idesc = &fr30bf_insn_data[itype];
1197 CGEN_INSN_INT insn = base_insn;
1198 #define FLD(f) abuf->fields.fmt_div0s.f
1199 UINT f_Ri;
1200
1201 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1202
1203 /* Record the fields for the semantic handler. */
1204 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1205 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_div0s", "Ri 0x%x", 'x', f_Ri, (char *) 0));
1206
1207 #if WITH_PROFILE_MODEL_P
1208 /* Record the fields for profiling. */
1209 if (PROFILE_MODEL_P (current_cpu))
1210 {
1211 FLD (in_Ri) = f_Ri;
1212 }
1213 #endif
1214 #undef FLD
1215 return idesc;
1216 }
1217
1218 extract_fmt_div0u:
1219 {
1220 const IDESC *idesc = &fr30bf_insn_data[itype];
1221 CGEN_INSN_INT insn = base_insn;
1222 #define FLD(f) abuf->fields.fmt_div0u.f
1223
1224
1225 /* Record the fields for the semantic handler. */
1226 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_div0u", (char *) 0));
1227
1228 #undef FLD
1229 return idesc;
1230 }
1231
1232 extract_fmt_div1:
1233 {
1234 const IDESC *idesc = &fr30bf_insn_data[itype];
1235 CGEN_INSN_INT insn = base_insn;
1236 #define FLD(f) abuf->fields.fmt_div1.f
1237 UINT f_Ri;
1238
1239 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1240
1241 /* Record the fields for the semantic handler. */
1242 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1243 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_div1", "Ri 0x%x", 'x', f_Ri, (char *) 0));
1244
1245 #if WITH_PROFILE_MODEL_P
1246 /* Record the fields for profiling. */
1247 if (PROFILE_MODEL_P (current_cpu))
1248 {
1249 FLD (in_Ri) = f_Ri;
1250 }
1251 #endif
1252 #undef FLD
1253 return idesc;
1254 }
1255
1256 extract_fmt_div2:
1257 {
1258 const IDESC *idesc = &fr30bf_insn_data[itype];
1259 CGEN_INSN_INT insn = base_insn;
1260 #define FLD(f) abuf->fields.fmt_div2.f
1261 UINT f_Ri;
1262
1263 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1264
1265 /* Record the fields for the semantic handler. */
1266 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1267 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_div2", "Ri 0x%x", 'x', f_Ri, (char *) 0));
1268
1269 #if WITH_PROFILE_MODEL_P
1270 /* Record the fields for profiling. */
1271 if (PROFILE_MODEL_P (current_cpu))
1272 {
1273 FLD (in_Ri) = f_Ri;
1274 }
1275 #endif
1276 #undef FLD
1277 return idesc;
1278 }
1279
1280 extract_fmt_div3:
1281 {
1282 const IDESC *idesc = &fr30bf_insn_data[itype];
1283 CGEN_INSN_INT insn = base_insn;
1284 #define FLD(f) abuf->fields.fmt_div3.f
1285
1286
1287 /* Record the fields for the semantic handler. */
1288 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_div3", (char *) 0));
1289
1290 #undef FLD
1291 return idesc;
1292 }
1293
1294 extract_fmt_div4s:
1295 {
1296 const IDESC *idesc = &fr30bf_insn_data[itype];
1297 CGEN_INSN_INT insn = base_insn;
1298 #define FLD(f) abuf->fields.fmt_div4s.f
1299
1300
1301 /* Record the fields for the semantic handler. */
1302 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_div4s", (char *) 0));
1303
1304 #undef FLD
1305 return idesc;
1306 }
1307
1308 extract_fmt_lsl:
1309 {
1310 const IDESC *idesc = &fr30bf_insn_data[itype];
1311 CGEN_INSN_INT insn = base_insn;
1312 #define FLD(f) abuf->fields.fmt_lsl.f
1313 UINT f_Rj;
1314 UINT f_Ri;
1315
1316 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1317 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1318
1319 /* Record the fields for the semantic handler. */
1320 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1321 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1322 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_lsl", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1323
1324 #if WITH_PROFILE_MODEL_P
1325 /* Record the fields for profiling. */
1326 if (PROFILE_MODEL_P (current_cpu))
1327 {
1328 FLD (in_Ri) = f_Ri;
1329 FLD (in_Rj) = f_Rj;
1330 FLD (out_Ri) = f_Ri;
1331 }
1332 #endif
1333 #undef FLD
1334 return idesc;
1335 }
1336
1337 extract_fmt_lsli:
1338 {
1339 const IDESC *idesc = &fr30bf_insn_data[itype];
1340 CGEN_INSN_INT insn = base_insn;
1341 #define FLD(f) abuf->fields.fmt_lsli.f
1342 UINT f_u4;
1343 UINT f_Ri;
1344
1345 f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1346 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1347
1348 /* Record the fields for the semantic handler. */
1349 FLD (f_u4) = f_u4;
1350 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1351 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_lsli", "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1352
1353 #if WITH_PROFILE_MODEL_P
1354 /* Record the fields for profiling. */
1355 if (PROFILE_MODEL_P (current_cpu))
1356 {
1357 FLD (in_Ri) = f_Ri;
1358 FLD (out_Ri) = f_Ri;
1359 }
1360 #endif
1361 #undef FLD
1362 return idesc;
1363 }
1364
1365 extract_fmt_ldi8:
1366 {
1367 const IDESC *idesc = &fr30bf_insn_data[itype];
1368 CGEN_INSN_INT insn = base_insn;
1369 #define FLD(f) abuf->fields.fmt_ldi8.f
1370 UINT f_i8;
1371 UINT f_Ri;
1372
1373 f_i8 = EXTRACT_MSB0_UINT (insn, 16, 4, 8);
1374 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1375
1376 /* Record the fields for the semantic handler. */
1377 FLD (f_i8) = f_i8;
1378 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1379 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldi8", "f_i8 0x%x", 'x', f_i8, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1380
1381 #if WITH_PROFILE_MODEL_P
1382 /* Record the fields for profiling. */
1383 if (PROFILE_MODEL_P (current_cpu))
1384 {
1385 FLD (out_Ri) = f_Ri;
1386 }
1387 #endif
1388 #undef FLD
1389 return idesc;
1390 }
1391
1392 extract_fmt_ldi20:
1393 {
1394 const IDESC *idesc = &fr30bf_insn_data[itype];
1395 CGEN_INSN_INT insn = base_insn;
1396 #define FLD(f) abuf->fields.fmt_ldi20.f
1397 UINT f_i20_16;
1398 UINT f_i20_4;
1399 UINT f_Ri;
1400 UINT f_i20;
1401 /* Contents of trailing part of insn. */
1402 UINT word_1;
1403
1404 word_1 = GETIMEMUHI (current_cpu, pc + 2);
1405 f_i20_16 = (0|(EXTRACT_MSB0_UINT (word_1, 16, 0, 16) << 0));
1406 f_i20_4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1407 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1408 {
1409 f_i20 = ((((f_i20_4) << (16))) | (f_i20_16));
1410 }
1411
1412 /* Record the fields for the semantic handler. */
1413 FLD (f_i20) = f_i20;
1414 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1415 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldi20", "f_i20 0x%x", 'x', f_i20, "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_fmt_ldi32:
1429 {
1430 const IDESC *idesc = &fr30bf_insn_data[itype];
1431 CGEN_INSN_INT insn = base_insn;
1432 #define FLD(f) abuf->fields.fmt_ldi32.f
1433 UINT f_i32;
1434 UINT f_Ri;
1435 /* Contents of trailing part of insn. */
1436 UINT word_1;
1437 UINT word_2;
1438
1439 word_1 = GETIMEMUHI (current_cpu, pc + 2);
1440 word_2 = GETIMEMUHI (current_cpu, pc + 4);
1441 f_i32 = (0|(EXTRACT_MSB0_UINT (word_2, 16, 0, 16) << 0)|(EXTRACT_MSB0_UINT (word_1, 16, 0, 16) << 16));
1442 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1443
1444 /* Record the fields for the semantic handler. */
1445 FLD (f_i32) = f_i32;
1446 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1447 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldi32", "f_i32 0x%x", 'x', f_i32, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1448
1449 #if WITH_PROFILE_MODEL_P
1450 /* Record the fields for profiling. */
1451 if (PROFILE_MODEL_P (current_cpu))
1452 {
1453 FLD (out_Ri) = f_Ri;
1454 }
1455 #endif
1456 #undef FLD
1457 return idesc;
1458 }
1459
1460 extract_fmt_ld:
1461 {
1462 const IDESC *idesc = &fr30bf_insn_data[itype];
1463 CGEN_INSN_INT insn = base_insn;
1464 #define FLD(f) abuf->fields.fmt_ld.f
1465 UINT f_Rj;
1466 UINT f_Ri;
1467
1468 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1469 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1470
1471 /* Record the fields for the semantic handler. */
1472 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1473 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1474 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ld", "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1475
1476 #if WITH_PROFILE_MODEL_P
1477 /* Record the fields for profiling. */
1478 if (PROFILE_MODEL_P (current_cpu))
1479 {
1480 FLD (in_Rj) = f_Rj;
1481 FLD (out_Ri) = f_Ri;
1482 }
1483 #endif
1484 #undef FLD
1485 return idesc;
1486 }
1487
1488 extract_fmt_ldr13:
1489 {
1490 const IDESC *idesc = &fr30bf_insn_data[itype];
1491 CGEN_INSN_INT insn = base_insn;
1492 #define FLD(f) abuf->fields.fmt_ldr13.f
1493 UINT f_Rj;
1494 UINT f_Ri;
1495
1496 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1497 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1498
1499 /* Record the fields for the semantic handler. */
1500 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1501 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1502 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldr13", "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1503
1504 #if WITH_PROFILE_MODEL_P
1505 /* Record the fields for profiling. */
1506 if (PROFILE_MODEL_P (current_cpu))
1507 {
1508 FLD (in_Rj) = f_Rj;
1509 FLD (in_h_gr_13) = 13;
1510 FLD (out_Ri) = f_Ri;
1511 }
1512 #endif
1513 #undef FLD
1514 return idesc;
1515 }
1516
1517 extract_fmt_ldr14:
1518 {
1519 const IDESC *idesc = &fr30bf_insn_data[itype];
1520 CGEN_INSN_INT insn = base_insn;
1521 #define FLD(f) abuf->fields.fmt_ldr14.f
1522 SI f_disp10;
1523 UINT f_Ri;
1524
1525 f_disp10 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (2));
1526 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1527
1528 /* Record the fields for the semantic handler. */
1529 FLD (f_disp10) = f_disp10;
1530 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1531 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldr14", "f_disp10 0x%x", 'x', f_disp10, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1532
1533 #if WITH_PROFILE_MODEL_P
1534 /* Record the fields for profiling. */
1535 if (PROFILE_MODEL_P (current_cpu))
1536 {
1537 FLD (in_h_gr_14) = 14;
1538 FLD (out_Ri) = f_Ri;
1539 }
1540 #endif
1541 #undef FLD
1542 return idesc;
1543 }
1544
1545 extract_fmt_ldr14uh:
1546 {
1547 const IDESC *idesc = &fr30bf_insn_data[itype];
1548 CGEN_INSN_INT insn = base_insn;
1549 #define FLD(f) abuf->fields.fmt_ldr14uh.f
1550 SI f_disp9;
1551 UINT f_Ri;
1552
1553 f_disp9 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (1));
1554 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1555
1556 /* Record the fields for the semantic handler. */
1557 FLD (f_disp9) = f_disp9;
1558 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1559 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldr14uh", "f_disp9 0x%x", 'x', f_disp9, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1560
1561 #if WITH_PROFILE_MODEL_P
1562 /* Record the fields for profiling. */
1563 if (PROFILE_MODEL_P (current_cpu))
1564 {
1565 FLD (in_h_gr_14) = 14;
1566 FLD (out_Ri) = f_Ri;
1567 }
1568 #endif
1569 #undef FLD
1570 return idesc;
1571 }
1572
1573 extract_fmt_ldr14ub:
1574 {
1575 const IDESC *idesc = &fr30bf_insn_data[itype];
1576 CGEN_INSN_INT insn = base_insn;
1577 #define FLD(f) abuf->fields.fmt_ldr14ub.f
1578 INT f_disp8;
1579 UINT f_Ri;
1580
1581 f_disp8 = EXTRACT_MSB0_INT (insn, 16, 4, 8);
1582 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1583
1584 /* Record the fields for the semantic handler. */
1585 FLD (f_disp8) = f_disp8;
1586 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1587 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldr14ub", "f_disp8 0x%x", 'x', f_disp8, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1588
1589 #if WITH_PROFILE_MODEL_P
1590 /* Record the fields for profiling. */
1591 if (PROFILE_MODEL_P (current_cpu))
1592 {
1593 FLD (in_h_gr_14) = 14;
1594 FLD (out_Ri) = f_Ri;
1595 }
1596 #endif
1597 #undef FLD
1598 return idesc;
1599 }
1600
1601 extract_fmt_ldr15:
1602 {
1603 const IDESC *idesc = &fr30bf_insn_data[itype];
1604 CGEN_INSN_INT insn = base_insn;
1605 #define FLD(f) abuf->fields.fmt_ldr15.f
1606 USI f_udisp6;
1607 UINT f_Ri;
1608
1609 f_udisp6 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) << (2));
1610 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1611
1612 /* Record the fields for the semantic handler. */
1613 FLD (f_udisp6) = f_udisp6;
1614 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1615 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldr15", "f_udisp6 0x%x", 'x', f_udisp6, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1616
1617 #if WITH_PROFILE_MODEL_P
1618 /* Record the fields for profiling. */
1619 if (PROFILE_MODEL_P (current_cpu))
1620 {
1621 FLD (in_h_gr_15) = 15;
1622 FLD (out_Ri) = f_Ri;
1623 }
1624 #endif
1625 #undef FLD
1626 return idesc;
1627 }
1628
1629 extract_fmt_ldr15gr:
1630 {
1631 const IDESC *idesc = &fr30bf_insn_data[itype];
1632 CGEN_INSN_INT insn = base_insn;
1633 #define FLD(f) abuf->fields.fmt_ldr15gr.f
1634 UINT f_Ri;
1635
1636 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1637
1638 /* Record the fields for the semantic handler. */
1639 FLD (f_Ri) = f_Ri;
1640 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1641 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldr15gr", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1642
1643 #if WITH_PROFILE_MODEL_P
1644 /* Record the fields for profiling. */
1645 if (PROFILE_MODEL_P (current_cpu))
1646 {
1647 FLD (in_h_gr_15) = 15;
1648 FLD (out_Ri) = f_Ri;
1649 FLD (out_h_gr_15) = 15;
1650 }
1651 #endif
1652 #undef FLD
1653 return idesc;
1654 }
1655
1656 extract_fmt_ldr15dr:
1657 {
1658 const IDESC *idesc = &fr30bf_insn_data[itype];
1659 CGEN_INSN_INT insn = base_insn;
1660 #define FLD(f) abuf->fields.fmt_ldr15dr.f
1661 UINT f_Rs2;
1662
1663 f_Rs2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1664
1665 /* Record the fields for the semantic handler. */
1666 FLD (f_Rs2) = f_Rs2;
1667 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldr15dr", "f_Rs2 0x%x", 'x', f_Rs2, (char *) 0));
1668
1669 #if WITH_PROFILE_MODEL_P
1670 /* Record the fields for profiling. */
1671 if (PROFILE_MODEL_P (current_cpu))
1672 {
1673 FLD (in_h_gr_15) = 15;
1674 FLD (out_h_gr_15) = 15;
1675 }
1676 #endif
1677 #undef FLD
1678 return idesc;
1679 }
1680
1681 extract_fmt_ldr15ps:
1682 {
1683 const IDESC *idesc = &fr30bf_insn_data[itype];
1684 CGEN_INSN_INT insn = base_insn;
1685 #define FLD(f) abuf->fields.fmt_ldr15ps.f
1686
1687
1688 /* Record the fields for the semantic handler. */
1689 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldr15ps", (char *) 0));
1690
1691 #if WITH_PROFILE_MODEL_P
1692 /* Record the fields for profiling. */
1693 if (PROFILE_MODEL_P (current_cpu))
1694 {
1695 FLD (in_h_gr_15) = 15;
1696 FLD (out_h_gr_15) = 15;
1697 }
1698 #endif
1699 #undef FLD
1700 return idesc;
1701 }
1702
1703 extract_fmt_st:
1704 {
1705 const IDESC *idesc = &fr30bf_insn_data[itype];
1706 CGEN_INSN_INT insn = base_insn;
1707 #define FLD(f) abuf->fields.fmt_st.f
1708 UINT f_Rj;
1709 UINT f_Ri;
1710
1711 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1712 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1713
1714 /* Record the fields for the semantic handler. */
1715 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1716 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1717 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_st", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1718
1719 #if WITH_PROFILE_MODEL_P
1720 /* Record the fields for profiling. */
1721 if (PROFILE_MODEL_P (current_cpu))
1722 {
1723 FLD (in_Ri) = f_Ri;
1724 FLD (in_Rj) = f_Rj;
1725 }
1726 #endif
1727 #undef FLD
1728 return idesc;
1729 }
1730
1731 extract_fmt_str13:
1732 {
1733 const IDESC *idesc = &fr30bf_insn_data[itype];
1734 CGEN_INSN_INT insn = base_insn;
1735 #define FLD(f) abuf->fields.fmt_str13.f
1736 UINT f_Rj;
1737 UINT f_Ri;
1738
1739 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1740 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1741
1742 /* Record the fields for the semantic handler. */
1743 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1744 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1745 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_str13", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1746
1747 #if WITH_PROFILE_MODEL_P
1748 /* Record the fields for profiling. */
1749 if (PROFILE_MODEL_P (current_cpu))
1750 {
1751 FLD (in_Ri) = f_Ri;
1752 FLD (in_Rj) = f_Rj;
1753 FLD (in_h_gr_13) = 13;
1754 }
1755 #endif
1756 #undef FLD
1757 return idesc;
1758 }
1759
1760 extract_fmt_str14:
1761 {
1762 const IDESC *idesc = &fr30bf_insn_data[itype];
1763 CGEN_INSN_INT insn = base_insn;
1764 #define FLD(f) abuf->fields.fmt_str14.f
1765 SI f_disp10;
1766 UINT f_Ri;
1767
1768 f_disp10 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (2));
1769 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1770
1771 /* Record the fields for the semantic handler. */
1772 FLD (f_disp10) = f_disp10;
1773 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1774 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_str14", "f_disp10 0x%x", 'x', f_disp10, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1775
1776 #if WITH_PROFILE_MODEL_P
1777 /* Record the fields for profiling. */
1778 if (PROFILE_MODEL_P (current_cpu))
1779 {
1780 FLD (in_Ri) = f_Ri;
1781 FLD (in_h_gr_14) = 14;
1782 }
1783 #endif
1784 #undef FLD
1785 return idesc;
1786 }
1787
1788 extract_fmt_str14h:
1789 {
1790 const IDESC *idesc = &fr30bf_insn_data[itype];
1791 CGEN_INSN_INT insn = base_insn;
1792 #define FLD(f) abuf->fields.fmt_str14h.f
1793 SI f_disp9;
1794 UINT f_Ri;
1795
1796 f_disp9 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (1));
1797 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1798
1799 /* Record the fields for the semantic handler. */
1800 FLD (f_disp9) = f_disp9;
1801 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1802 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_str14h", "f_disp9 0x%x", 'x', f_disp9, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1803
1804 #if WITH_PROFILE_MODEL_P
1805 /* Record the fields for profiling. */
1806 if (PROFILE_MODEL_P (current_cpu))
1807 {
1808 FLD (in_Ri) = f_Ri;
1809 FLD (in_h_gr_14) = 14;
1810 }
1811 #endif
1812 #undef FLD
1813 return idesc;
1814 }
1815
1816 extract_fmt_str14b:
1817 {
1818 const IDESC *idesc = &fr30bf_insn_data[itype];
1819 CGEN_INSN_INT insn = base_insn;
1820 #define FLD(f) abuf->fields.fmt_str14b.f
1821 INT f_disp8;
1822 UINT f_Ri;
1823
1824 f_disp8 = EXTRACT_MSB0_INT (insn, 16, 4, 8);
1825 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1826
1827 /* Record the fields for the semantic handler. */
1828 FLD (f_disp8) = f_disp8;
1829 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1830 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_str14b", "f_disp8 0x%x", 'x', f_disp8, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1831
1832 #if WITH_PROFILE_MODEL_P
1833 /* Record the fields for profiling. */
1834 if (PROFILE_MODEL_P (current_cpu))
1835 {
1836 FLD (in_Ri) = f_Ri;
1837 FLD (in_h_gr_14) = 14;
1838 }
1839 #endif
1840 #undef FLD
1841 return idesc;
1842 }
1843
1844 extract_fmt_str15:
1845 {
1846 const IDESC *idesc = &fr30bf_insn_data[itype];
1847 CGEN_INSN_INT insn = base_insn;
1848 #define FLD(f) abuf->fields.fmt_str15.f
1849 USI f_udisp6;
1850 UINT f_Ri;
1851
1852 f_udisp6 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) << (2));
1853 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1854
1855 /* Record the fields for the semantic handler. */
1856 FLD (f_udisp6) = f_udisp6;
1857 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1858 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_str15", "f_udisp6 0x%x", 'x', f_udisp6, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1859
1860 #if WITH_PROFILE_MODEL_P
1861 /* Record the fields for profiling. */
1862 if (PROFILE_MODEL_P (current_cpu))
1863 {
1864 FLD (in_Ri) = f_Ri;
1865 FLD (in_h_gr_15) = 15;
1866 }
1867 #endif
1868 #undef FLD
1869 return idesc;
1870 }
1871
1872 extract_fmt_str15gr:
1873 {
1874 const IDESC *idesc = &fr30bf_insn_data[itype];
1875 CGEN_INSN_INT insn = base_insn;
1876 #define FLD(f) abuf->fields.fmt_str15gr.f
1877 UINT f_Ri;
1878
1879 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1880
1881 /* Record the fields for the semantic handler. */
1882 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1883 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_str15gr", "Ri 0x%x", 'x', f_Ri, (char *) 0));
1884
1885 #if WITH_PROFILE_MODEL_P
1886 /* Record the fields for profiling. */
1887 if (PROFILE_MODEL_P (current_cpu))
1888 {
1889 FLD (in_Ri) = f_Ri;
1890 FLD (in_h_gr_15) = 15;
1891 FLD (out_h_gr_15) = 15;
1892 }
1893 #endif
1894 #undef FLD
1895 return idesc;
1896 }
1897
1898 extract_fmt_str15dr:
1899 {
1900 const IDESC *idesc = &fr30bf_insn_data[itype];
1901 CGEN_INSN_INT insn = base_insn;
1902 #define FLD(f) abuf->fields.fmt_str15dr.f
1903 UINT f_Rs2;
1904
1905 f_Rs2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1906
1907 /* Record the fields for the semantic handler. */
1908 FLD (f_Rs2) = f_Rs2;
1909 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_str15dr", "f_Rs2 0x%x", 'x', f_Rs2, (char *) 0));
1910
1911 #if WITH_PROFILE_MODEL_P
1912 /* Record the fields for profiling. */
1913 if (PROFILE_MODEL_P (current_cpu))
1914 {
1915 FLD (in_h_gr_15) = 15;
1916 FLD (out_h_gr_15) = 15;
1917 }
1918 #endif
1919 #undef FLD
1920 return idesc;
1921 }
1922
1923 extract_fmt_str15ps:
1924 {
1925 const IDESC *idesc = &fr30bf_insn_data[itype];
1926 CGEN_INSN_INT insn = base_insn;
1927 #define FLD(f) abuf->fields.fmt_str15ps.f
1928
1929
1930 /* Record the fields for the semantic handler. */
1931 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_str15ps", (char *) 0));
1932
1933 #if WITH_PROFILE_MODEL_P
1934 /* Record the fields for profiling. */
1935 if (PROFILE_MODEL_P (current_cpu))
1936 {
1937 FLD (in_h_gr_15) = 15;
1938 FLD (out_h_gr_15) = 15;
1939 }
1940 #endif
1941 #undef FLD
1942 return idesc;
1943 }
1944
1945 extract_fmt_mov:
1946 {
1947 const IDESC *idesc = &fr30bf_insn_data[itype];
1948 CGEN_INSN_INT insn = base_insn;
1949 #define FLD(f) abuf->fields.fmt_mov.f
1950 UINT f_Rj;
1951 UINT f_Ri;
1952
1953 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1954 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1955
1956 /* Record the fields for the semantic handler. */
1957 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1958 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1959 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_mov", "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1960
1961 #if WITH_PROFILE_MODEL_P
1962 /* Record the fields for profiling. */
1963 if (PROFILE_MODEL_P (current_cpu))
1964 {
1965 FLD (in_Rj) = f_Rj;
1966 FLD (out_Ri) = f_Ri;
1967 }
1968 #endif
1969 #undef FLD
1970 return idesc;
1971 }
1972
1973 extract_fmt_movdr:
1974 {
1975 const IDESC *idesc = &fr30bf_insn_data[itype];
1976 CGEN_INSN_INT insn = base_insn;
1977 #define FLD(f) abuf->fields.fmt_movdr.f
1978 UINT f_Rs1;
1979 UINT f_Ri;
1980
1981 f_Rs1 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1982 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1983
1984 /* Record the fields for the semantic handler. */
1985 FLD (f_Rs1) = f_Rs1;
1986 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1987 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_movdr", "f_Rs1 0x%x", 'x', f_Rs1, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1988
1989 #if WITH_PROFILE_MODEL_P
1990 /* Record the fields for profiling. */
1991 if (PROFILE_MODEL_P (current_cpu))
1992 {
1993 FLD (out_Ri) = f_Ri;
1994 }
1995 #endif
1996 #undef FLD
1997 return idesc;
1998 }
1999
2000 extract_fmt_movps:
2001 {
2002 const IDESC *idesc = &fr30bf_insn_data[itype];
2003 CGEN_INSN_INT insn = base_insn;
2004 #define FLD(f) abuf->fields.fmt_movps.f
2005 UINT f_Ri;
2006
2007 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2008
2009 /* Record the fields for the semantic handler. */
2010 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2011 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_movps", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2012
2013 #if WITH_PROFILE_MODEL_P
2014 /* Record the fields for profiling. */
2015 if (PROFILE_MODEL_P (current_cpu))
2016 {
2017 FLD (out_Ri) = f_Ri;
2018 }
2019 #endif
2020 #undef FLD
2021 return idesc;
2022 }
2023
2024 extract_fmt_mov2dr:
2025 {
2026 const IDESC *idesc = &fr30bf_insn_data[itype];
2027 CGEN_INSN_INT insn = base_insn;
2028 #define FLD(f) abuf->fields.fmt_mov2dr.f
2029 UINT f_Rs1;
2030 UINT f_Ri;
2031
2032 f_Rs1 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
2033 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2034
2035 /* Record the fields for the semantic handler. */
2036 FLD (f_Rs1) = f_Rs1;
2037 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2038 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_mov2dr", "f_Rs1 0x%x", 'x', f_Rs1, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2039
2040 #if WITH_PROFILE_MODEL_P
2041 /* Record the fields for profiling. */
2042 if (PROFILE_MODEL_P (current_cpu))
2043 {
2044 FLD (in_Ri) = f_Ri;
2045 }
2046 #endif
2047 #undef FLD
2048 return idesc;
2049 }
2050
2051 extract_fmt_mov2ps:
2052 {
2053 const IDESC *idesc = &fr30bf_insn_data[itype];
2054 CGEN_INSN_INT insn = base_insn;
2055 #define FLD(f) abuf->fields.fmt_mov2ps.f
2056 UINT f_Ri;
2057
2058 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2059
2060 /* Record the fields for the semantic handler. */
2061 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2062 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_mov2ps", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2063
2064 #if WITH_PROFILE_MODEL_P
2065 /* Record the fields for profiling. */
2066 if (PROFILE_MODEL_P (current_cpu))
2067 {
2068 FLD (in_Ri) = f_Ri;
2069 }
2070 #endif
2071 #undef FLD
2072 return idesc;
2073 }
2074
2075 extract_fmt_jmp:
2076 {
2077 const IDESC *idesc = &fr30bf_insn_data[itype];
2078 CGEN_INSN_INT insn = base_insn;
2079 #define FLD(f) abuf->fields.cti.fields.fmt_jmp.f
2080 UINT f_Ri;
2081
2082 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2083
2084 /* Record the fields for the semantic handler. */
2085 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2086 SEM_BRANCH_INIT_EXTRACT (abuf);
2087 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_jmp", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2088
2089 #if WITH_PROFILE_MODEL_P
2090 /* Record the fields for profiling. */
2091 if (PROFILE_MODEL_P (current_cpu))
2092 {
2093 FLD (in_Ri) = f_Ri;
2094 }
2095 #endif
2096 #undef FLD
2097 return idesc;
2098 }
2099
2100 extract_fmt_callr:
2101 {
2102 const IDESC *idesc = &fr30bf_insn_data[itype];
2103 CGEN_INSN_INT insn = base_insn;
2104 #define FLD(f) abuf->fields.cti.fields.fmt_callr.f
2105 UINT f_Ri;
2106
2107 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2108
2109 /* Record the fields for the semantic handler. */
2110 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2111 SEM_BRANCH_INIT_EXTRACT (abuf);
2112 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_callr", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2113
2114 #if WITH_PROFILE_MODEL_P
2115 /* Record the fields for profiling. */
2116 if (PROFILE_MODEL_P (current_cpu))
2117 {
2118 FLD (in_Ri) = f_Ri;
2119 }
2120 #endif
2121 #undef FLD
2122 return idesc;
2123 }
2124
2125 extract_fmt_call:
2126 {
2127 const IDESC *idesc = &fr30bf_insn_data[itype];
2128 CGEN_INSN_INT insn = base_insn;
2129 #define FLD(f) abuf->fields.cti.fields.fmt_call.f
2130 SI f_rel12;
2131
2132 f_rel12 = ((((EXTRACT_MSB0_INT (insn, 16, 5, 11)) << (1))) + (((pc) + (2))));
2133
2134 /* Record the fields for the semantic handler. */
2135 FLD (i_label12) = f_rel12;
2136 SEM_BRANCH_INIT_EXTRACT (abuf);
2137 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_call", "label12 0x%x", 'x', f_rel12, (char *) 0));
2138
2139 #if WITH_PROFILE_MODEL_P
2140 /* Record the fields for profiling. */
2141 if (PROFILE_MODEL_P (current_cpu))
2142 {
2143 }
2144 #endif
2145 #undef FLD
2146 return idesc;
2147 }
2148
2149 extract_fmt_ret:
2150 {
2151 const IDESC *idesc = &fr30bf_insn_data[itype];
2152 CGEN_INSN_INT insn = base_insn;
2153 #define FLD(f) abuf->fields.cti.fields.fmt_ret.f
2154
2155
2156 /* Record the fields for the semantic handler. */
2157 SEM_BRANCH_INIT_EXTRACT (abuf);
2158 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ret", (char *) 0));
2159
2160 #if WITH_PROFILE_MODEL_P
2161 /* Record the fields for profiling. */
2162 if (PROFILE_MODEL_P (current_cpu))
2163 {
2164 }
2165 #endif
2166 #undef FLD
2167 return idesc;
2168 }
2169
2170 extract_fmt_int:
2171 {
2172 const IDESC *idesc = &fr30bf_insn_data[itype];
2173 CGEN_INSN_INT insn = base_insn;
2174 #define FLD(f) abuf->fields.cti.fields.fmt_int.f
2175 UINT f_u8;
2176
2177 f_u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2178
2179 /* Record the fields for the semantic handler. */
2180 FLD (f_u8) = f_u8;
2181 SEM_BRANCH_INIT_EXTRACT (abuf);
2182 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_int", "f_u8 0x%x", 'x', f_u8, (char *) 0));
2183
2184 #if WITH_PROFILE_MODEL_P
2185 /* Record the fields for profiling. */
2186 if (PROFILE_MODEL_P (current_cpu))
2187 {
2188 }
2189 #endif
2190 #undef FLD
2191 return idesc;
2192 }
2193
2194 extract_fmt_inte:
2195 {
2196 const IDESC *idesc = &fr30bf_insn_data[itype];
2197 CGEN_INSN_INT insn = base_insn;
2198 #define FLD(f) abuf->fields.cti.fields.fmt_inte.f
2199
2200
2201 /* Record the fields for the semantic handler. */
2202 SEM_BRANCH_INIT_EXTRACT (abuf);
2203 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_inte", (char *) 0));
2204
2205 #if WITH_PROFILE_MODEL_P
2206 /* Record the fields for profiling. */
2207 if (PROFILE_MODEL_P (current_cpu))
2208 {
2209 }
2210 #endif
2211 #undef FLD
2212 return idesc;
2213 }
2214
2215 extract_fmt_reti:
2216 {
2217 const IDESC *idesc = &fr30bf_insn_data[itype];
2218 CGEN_INSN_INT insn = base_insn;
2219 #define FLD(f) abuf->fields.cti.fields.fmt_reti.f
2220
2221
2222 /* Record the fields for the semantic handler. */
2223 SEM_BRANCH_INIT_EXTRACT (abuf);
2224 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_reti", (char *) 0));
2225
2226 #if WITH_PROFILE_MODEL_P
2227 /* Record the fields for profiling. */
2228 if (PROFILE_MODEL_P (current_cpu))
2229 {
2230 }
2231 #endif
2232 #undef FLD
2233 return idesc;
2234 }
2235
2236 extract_fmt_brad:
2237 {
2238 const IDESC *idesc = &fr30bf_insn_data[itype];
2239 CGEN_INSN_INT insn = base_insn;
2240 #define FLD(f) abuf->fields.cti.fields.fmt_brad.f
2241 SI f_rel9;
2242
2243 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2244
2245 /* Record the fields for the semantic handler. */
2246 FLD (i_label9) = f_rel9;
2247 SEM_BRANCH_INIT_EXTRACT (abuf);
2248 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_brad", "label9 0x%x", 'x', f_rel9, (char *) 0));
2249
2250 #if WITH_PROFILE_MODEL_P
2251 /* Record the fields for profiling. */
2252 if (PROFILE_MODEL_P (current_cpu))
2253 {
2254 }
2255 #endif
2256 #undef FLD
2257 return idesc;
2258 }
2259
2260 extract_fmt_bnod:
2261 {
2262 const IDESC *idesc = &fr30bf_insn_data[itype];
2263 CGEN_INSN_INT insn = base_insn;
2264 #define FLD(f) abuf->fields.fmt_bnod.f
2265
2266
2267 /* Record the fields for the semantic handler. */
2268 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_bnod", (char *) 0));
2269
2270 #undef FLD
2271 return idesc;
2272 }
2273
2274 extract_fmt_beqd:
2275 {
2276 const IDESC *idesc = &fr30bf_insn_data[itype];
2277 CGEN_INSN_INT insn = base_insn;
2278 #define FLD(f) abuf->fields.cti.fields.fmt_beqd.f
2279 SI f_rel9;
2280
2281 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2282
2283 /* Record the fields for the semantic handler. */
2284 FLD (i_label9) = f_rel9;
2285 SEM_BRANCH_INIT_EXTRACT (abuf);
2286 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_beqd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2287
2288 #if WITH_PROFILE_MODEL_P
2289 /* Record the fields for profiling. */
2290 if (PROFILE_MODEL_P (current_cpu))
2291 {
2292 }
2293 #endif
2294 #undef FLD
2295 return idesc;
2296 }
2297
2298 extract_fmt_bcd:
2299 {
2300 const IDESC *idesc = &fr30bf_insn_data[itype];
2301 CGEN_INSN_INT insn = base_insn;
2302 #define FLD(f) abuf->fields.cti.fields.fmt_bcd.f
2303 SI f_rel9;
2304
2305 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2306
2307 /* Record the fields for the semantic handler. */
2308 FLD (i_label9) = f_rel9;
2309 SEM_BRANCH_INIT_EXTRACT (abuf);
2310 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_bcd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2311
2312 #if WITH_PROFILE_MODEL_P
2313 /* Record the fields for profiling. */
2314 if (PROFILE_MODEL_P (current_cpu))
2315 {
2316 }
2317 #endif
2318 #undef FLD
2319 return idesc;
2320 }
2321
2322 extract_fmt_bnd:
2323 {
2324 const IDESC *idesc = &fr30bf_insn_data[itype];
2325 CGEN_INSN_INT insn = base_insn;
2326 #define FLD(f) abuf->fields.cti.fields.fmt_bnd.f
2327 SI f_rel9;
2328
2329 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2330
2331 /* Record the fields for the semantic handler. */
2332 FLD (i_label9) = f_rel9;
2333 SEM_BRANCH_INIT_EXTRACT (abuf);
2334 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_bnd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2335
2336 #if WITH_PROFILE_MODEL_P
2337 /* Record the fields for profiling. */
2338 if (PROFILE_MODEL_P (current_cpu))
2339 {
2340 }
2341 #endif
2342 #undef FLD
2343 return idesc;
2344 }
2345
2346 extract_fmt_bvd:
2347 {
2348 const IDESC *idesc = &fr30bf_insn_data[itype];
2349 CGEN_INSN_INT insn = base_insn;
2350 #define FLD(f) abuf->fields.cti.fields.fmt_bvd.f
2351 SI f_rel9;
2352
2353 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2354
2355 /* Record the fields for the semantic handler. */
2356 FLD (i_label9) = f_rel9;
2357 SEM_BRANCH_INIT_EXTRACT (abuf);
2358 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_bvd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2359
2360 #if WITH_PROFILE_MODEL_P
2361 /* Record the fields for profiling. */
2362 if (PROFILE_MODEL_P (current_cpu))
2363 {
2364 }
2365 #endif
2366 #undef FLD
2367 return idesc;
2368 }
2369
2370 extract_fmt_bltd:
2371 {
2372 const IDESC *idesc = &fr30bf_insn_data[itype];
2373 CGEN_INSN_INT insn = base_insn;
2374 #define FLD(f) abuf->fields.cti.fields.fmt_bltd.f
2375 SI f_rel9;
2376
2377 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2378
2379 /* Record the fields for the semantic handler. */
2380 FLD (i_label9) = f_rel9;
2381 SEM_BRANCH_INIT_EXTRACT (abuf);
2382 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_bltd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2383
2384 #if WITH_PROFILE_MODEL_P
2385 /* Record the fields for profiling. */
2386 if (PROFILE_MODEL_P (current_cpu))
2387 {
2388 }
2389 #endif
2390 #undef FLD
2391 return idesc;
2392 }
2393
2394 extract_fmt_bled:
2395 {
2396 const IDESC *idesc = &fr30bf_insn_data[itype];
2397 CGEN_INSN_INT insn = base_insn;
2398 #define FLD(f) abuf->fields.cti.fields.fmt_bled.f
2399 SI f_rel9;
2400
2401 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2402
2403 /* Record the fields for the semantic handler. */
2404 FLD (i_label9) = f_rel9;
2405 SEM_BRANCH_INIT_EXTRACT (abuf);
2406 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_bled", "label9 0x%x", 'x', f_rel9, (char *) 0));
2407
2408 #if WITH_PROFILE_MODEL_P
2409 /* Record the fields for profiling. */
2410 if (PROFILE_MODEL_P (current_cpu))
2411 {
2412 }
2413 #endif
2414 #undef FLD
2415 return idesc;
2416 }
2417
2418 extract_fmt_blsd:
2419 {
2420 const IDESC *idesc = &fr30bf_insn_data[itype];
2421 CGEN_INSN_INT insn = base_insn;
2422 #define FLD(f) abuf->fields.cti.fields.fmt_blsd.f
2423 SI f_rel9;
2424
2425 f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2426
2427 /* Record the fields for the semantic handler. */
2428 FLD (i_label9) = f_rel9;
2429 SEM_BRANCH_INIT_EXTRACT (abuf);
2430 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_blsd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2431
2432 #if WITH_PROFILE_MODEL_P
2433 /* Record the fields for profiling. */
2434 if (PROFILE_MODEL_P (current_cpu))
2435 {
2436 }
2437 #endif
2438 #undef FLD
2439 return idesc;
2440 }
2441
2442 extract_fmt_dmovr13:
2443 {
2444 const IDESC *idesc = &fr30bf_insn_data[itype];
2445 CGEN_INSN_INT insn = base_insn;
2446 #define FLD(f) abuf->fields.fmt_dmovr13.f
2447 USI f_dir10;
2448
2449 f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2450
2451 /* Record the fields for the semantic handler. */
2452 FLD (f_dir10) = f_dir10;
2453 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmovr13", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2454
2455 #if WITH_PROFILE_MODEL_P
2456 /* Record the fields for profiling. */
2457 if (PROFILE_MODEL_P (current_cpu))
2458 {
2459 FLD (in_h_gr_13) = 13;
2460 }
2461 #endif
2462 #undef FLD
2463 return idesc;
2464 }
2465
2466 extract_fmt_dmovr13h:
2467 {
2468 const IDESC *idesc = &fr30bf_insn_data[itype];
2469 CGEN_INSN_INT insn = base_insn;
2470 #define FLD(f) abuf->fields.fmt_dmovr13h.f
2471 USI f_dir9;
2472
2473 f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2474
2475 /* Record the fields for the semantic handler. */
2476 FLD (f_dir9) = f_dir9;
2477 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmovr13h", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2478
2479 #if WITH_PROFILE_MODEL_P
2480 /* Record the fields for profiling. */
2481 if (PROFILE_MODEL_P (current_cpu))
2482 {
2483 FLD (in_h_gr_13) = 13;
2484 }
2485 #endif
2486 #undef FLD
2487 return idesc;
2488 }
2489
2490 extract_fmt_dmovr13b:
2491 {
2492 const IDESC *idesc = &fr30bf_insn_data[itype];
2493 CGEN_INSN_INT insn = base_insn;
2494 #define FLD(f) abuf->fields.fmt_dmovr13b.f
2495 UINT f_dir8;
2496
2497 f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2498
2499 /* Record the fields for the semantic handler. */
2500 FLD (f_dir8) = f_dir8;
2501 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmovr13b", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2502
2503 #if WITH_PROFILE_MODEL_P
2504 /* Record the fields for profiling. */
2505 if (PROFILE_MODEL_P (current_cpu))
2506 {
2507 FLD (in_h_gr_13) = 13;
2508 }
2509 #endif
2510 #undef FLD
2511 return idesc;
2512 }
2513
2514 extract_fmt_dmovr13pi:
2515 {
2516 const IDESC *idesc = &fr30bf_insn_data[itype];
2517 CGEN_INSN_INT insn = base_insn;
2518 #define FLD(f) abuf->fields.fmt_dmovr13pi.f
2519 USI f_dir10;
2520
2521 f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2522
2523 /* Record the fields for the semantic handler. */
2524 FLD (f_dir10) = f_dir10;
2525 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmovr13pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2526
2527 #if WITH_PROFILE_MODEL_P
2528 /* Record the fields for profiling. */
2529 if (PROFILE_MODEL_P (current_cpu))
2530 {
2531 FLD (in_h_gr_13) = 13;
2532 FLD (out_h_gr_13) = 13;
2533 }
2534 #endif
2535 #undef FLD
2536 return idesc;
2537 }
2538
2539 extract_fmt_dmovr13pih:
2540 {
2541 const IDESC *idesc = &fr30bf_insn_data[itype];
2542 CGEN_INSN_INT insn = base_insn;
2543 #define FLD(f) abuf->fields.fmt_dmovr13pih.f
2544 USI f_dir9;
2545
2546 f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2547
2548 /* Record the fields for the semantic handler. */
2549 FLD (f_dir9) = f_dir9;
2550 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmovr13pih", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2551
2552 #if WITH_PROFILE_MODEL_P
2553 /* Record the fields for profiling. */
2554 if (PROFILE_MODEL_P (current_cpu))
2555 {
2556 FLD (in_h_gr_13) = 13;
2557 FLD (out_h_gr_13) = 13;
2558 }
2559 #endif
2560 #undef FLD
2561 return idesc;
2562 }
2563
2564 extract_fmt_dmovr13pib:
2565 {
2566 const IDESC *idesc = &fr30bf_insn_data[itype];
2567 CGEN_INSN_INT insn = base_insn;
2568 #define FLD(f) abuf->fields.fmt_dmovr13pib.f
2569 UINT f_dir8;
2570
2571 f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2572
2573 /* Record the fields for the semantic handler. */
2574 FLD (f_dir8) = f_dir8;
2575 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmovr13pib", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2576
2577 #if WITH_PROFILE_MODEL_P
2578 /* Record the fields for profiling. */
2579 if (PROFILE_MODEL_P (current_cpu))
2580 {
2581 FLD (in_h_gr_13) = 13;
2582 FLD (out_h_gr_13) = 13;
2583 }
2584 #endif
2585 #undef FLD
2586 return idesc;
2587 }
2588
2589 extract_fmt_dmovr15pi:
2590 {
2591 const IDESC *idesc = &fr30bf_insn_data[itype];
2592 CGEN_INSN_INT insn = base_insn;
2593 #define FLD(f) abuf->fields.fmt_dmovr15pi.f
2594 USI f_dir10;
2595
2596 f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2597
2598 /* Record the fields for the semantic handler. */
2599 FLD (f_dir10) = f_dir10;
2600 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmovr15pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2601
2602 #if WITH_PROFILE_MODEL_P
2603 /* Record the fields for profiling. */
2604 if (PROFILE_MODEL_P (current_cpu))
2605 {
2606 FLD (in_h_gr_15) = 15;
2607 FLD (out_h_gr_15) = 15;
2608 }
2609 #endif
2610 #undef FLD
2611 return idesc;
2612 }
2613
2614 extract_fmt_dmov2r13:
2615 {
2616 const IDESC *idesc = &fr30bf_insn_data[itype];
2617 CGEN_INSN_INT insn = base_insn;
2618 #define FLD(f) abuf->fields.fmt_dmov2r13.f
2619 USI f_dir10;
2620
2621 f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2622
2623 /* Record the fields for the semantic handler. */
2624 FLD (f_dir10) = f_dir10;
2625 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmov2r13", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2626
2627 #if WITH_PROFILE_MODEL_P
2628 /* Record the fields for profiling. */
2629 if (PROFILE_MODEL_P (current_cpu))
2630 {
2631 FLD (out_h_gr_13) = 13;
2632 }
2633 #endif
2634 #undef FLD
2635 return idesc;
2636 }
2637
2638 extract_fmt_dmov2r13h:
2639 {
2640 const IDESC *idesc = &fr30bf_insn_data[itype];
2641 CGEN_INSN_INT insn = base_insn;
2642 #define FLD(f) abuf->fields.fmt_dmov2r13h.f
2643 USI f_dir9;
2644
2645 f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2646
2647 /* Record the fields for the semantic handler. */
2648 FLD (f_dir9) = f_dir9;
2649 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmov2r13h", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2650
2651 #if WITH_PROFILE_MODEL_P
2652 /* Record the fields for profiling. */
2653 if (PROFILE_MODEL_P (current_cpu))
2654 {
2655 FLD (out_h_gr_13) = 13;
2656 }
2657 #endif
2658 #undef FLD
2659 return idesc;
2660 }
2661
2662 extract_fmt_dmov2r13b:
2663 {
2664 const IDESC *idesc = &fr30bf_insn_data[itype];
2665 CGEN_INSN_INT insn = base_insn;
2666 #define FLD(f) abuf->fields.fmt_dmov2r13b.f
2667 UINT f_dir8;
2668
2669 f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2670
2671 /* Record the fields for the semantic handler. */
2672 FLD (f_dir8) = f_dir8;
2673 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmov2r13b", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2674
2675 #if WITH_PROFILE_MODEL_P
2676 /* Record the fields for profiling. */
2677 if (PROFILE_MODEL_P (current_cpu))
2678 {
2679 FLD (out_h_gr_13) = 13;
2680 }
2681 #endif
2682 #undef FLD
2683 return idesc;
2684 }
2685
2686 extract_fmt_dmov2r13pi:
2687 {
2688 const IDESC *idesc = &fr30bf_insn_data[itype];
2689 CGEN_INSN_INT insn = base_insn;
2690 #define FLD(f) abuf->fields.fmt_dmov2r13pi.f
2691 USI f_dir10;
2692
2693 f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2694
2695 /* Record the fields for the semantic handler. */
2696 FLD (f_dir10) = f_dir10;
2697 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmov2r13pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2698
2699 #if WITH_PROFILE_MODEL_P
2700 /* Record the fields for profiling. */
2701 if (PROFILE_MODEL_P (current_cpu))
2702 {
2703 FLD (in_h_gr_13) = 13;
2704 FLD (out_h_gr_13) = 13;
2705 }
2706 #endif
2707 #undef FLD
2708 return idesc;
2709 }
2710
2711 extract_fmt_dmov2r13pih:
2712 {
2713 const IDESC *idesc = &fr30bf_insn_data[itype];
2714 CGEN_INSN_INT insn = base_insn;
2715 #define FLD(f) abuf->fields.fmt_dmov2r13pih.f
2716 USI f_dir9;
2717
2718 f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2719
2720 /* Record the fields for the semantic handler. */
2721 FLD (f_dir9) = f_dir9;
2722 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmov2r13pih", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2723
2724 #if WITH_PROFILE_MODEL_P
2725 /* Record the fields for profiling. */
2726 if (PROFILE_MODEL_P (current_cpu))
2727 {
2728 FLD (in_h_gr_13) = 13;
2729 FLD (out_h_gr_13) = 13;
2730 }
2731 #endif
2732 #undef FLD
2733 return idesc;
2734 }
2735
2736 extract_fmt_dmov2r13pib:
2737 {
2738 const IDESC *idesc = &fr30bf_insn_data[itype];
2739 CGEN_INSN_INT insn = base_insn;
2740 #define FLD(f) abuf->fields.fmt_dmov2r13pib.f
2741 UINT f_dir8;
2742
2743 f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2744
2745 /* Record the fields for the semantic handler. */
2746 FLD (f_dir8) = f_dir8;
2747 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmov2r13pib", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2748
2749 #if WITH_PROFILE_MODEL_P
2750 /* Record the fields for profiling. */
2751 if (PROFILE_MODEL_P (current_cpu))
2752 {
2753 FLD (in_h_gr_13) = 13;
2754 FLD (out_h_gr_13) = 13;
2755 }
2756 #endif
2757 #undef FLD
2758 return idesc;
2759 }
2760
2761 extract_fmt_dmov2r15pd:
2762 {
2763 const IDESC *idesc = &fr30bf_insn_data[itype];
2764 CGEN_INSN_INT insn = base_insn;
2765 #define FLD(f) abuf->fields.fmt_dmov2r15pd.f
2766 USI f_dir10;
2767
2768 f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2769
2770 /* Record the fields for the semantic handler. */
2771 FLD (f_dir10) = f_dir10;
2772 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmov2r15pd", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2773
2774 #if WITH_PROFILE_MODEL_P
2775 /* Record the fields for profiling. */
2776 if (PROFILE_MODEL_P (current_cpu))
2777 {
2778 FLD (in_h_gr_15) = 15;
2779 FLD (out_h_gr_15) = 15;
2780 }
2781 #endif
2782 #undef FLD
2783 return idesc;
2784 }
2785
2786 extract_fmt_ldres:
2787 {
2788 const IDESC *idesc = &fr30bf_insn_data[itype];
2789 CGEN_INSN_INT insn = base_insn;
2790 #define FLD(f) abuf->fields.fmt_ldres.f
2791 UINT f_Ri;
2792
2793 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2794
2795 /* Record the fields for the semantic handler. */
2796 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2797 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldres", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2798
2799 #if WITH_PROFILE_MODEL_P
2800 /* Record the fields for profiling. */
2801 if (PROFILE_MODEL_P (current_cpu))
2802 {
2803 FLD (in_Ri) = f_Ri;
2804 FLD (out_Ri) = f_Ri;
2805 }
2806 #endif
2807 #undef FLD
2808 return idesc;
2809 }
2810
2811 extract_fmt_copop:
2812 {
2813 const IDESC *idesc = &fr30bf_insn_data[itype];
2814 CGEN_INSN_INT insn = base_insn;
2815 #define FLD(f) abuf->fields.fmt_copop.f
2816 /* Contents of trailing part of insn. */
2817 UINT word_1;
2818
2819 word_1 = GETIMEMUHI (current_cpu, pc + 2);
2820
2821 /* Record the fields for the semantic handler. */
2822 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_copop", (char *) 0));
2823
2824 #undef FLD
2825 return idesc;
2826 }
2827
2828 extract_fmt_andccr:
2829 {
2830 const IDESC *idesc = &fr30bf_insn_data[itype];
2831 CGEN_INSN_INT insn = base_insn;
2832 #define FLD(f) abuf->fields.fmt_andccr.f
2833 UINT f_u8;
2834
2835 f_u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2836
2837 /* Record the fields for the semantic handler. */
2838 FLD (f_u8) = f_u8;
2839 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_andccr", "f_u8 0x%x", 'x', f_u8, (char *) 0));
2840
2841 #undef FLD
2842 return idesc;
2843 }
2844
2845 extract_fmt_stilm:
2846 {
2847 const IDESC *idesc = &fr30bf_insn_data[itype];
2848 CGEN_INSN_INT insn = base_insn;
2849 #define FLD(f) abuf->fields.fmt_stilm.f
2850 UINT f_u8;
2851
2852 f_u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2853
2854 /* Record the fields for the semantic handler. */
2855 FLD (f_u8) = f_u8;
2856 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_stilm", "f_u8 0x%x", 'x', f_u8, (char *) 0));
2857
2858 #undef FLD
2859 return idesc;
2860 }
2861
2862 extract_fmt_addsp:
2863 {
2864 const IDESC *idesc = &fr30bf_insn_data[itype];
2865 CGEN_INSN_INT insn = base_insn;
2866 #define FLD(f) abuf->fields.fmt_addsp.f
2867 SI f_s10;
2868
2869 f_s10 = ((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (2));
2870
2871 /* Record the fields for the semantic handler. */
2872 FLD (f_s10) = f_s10;
2873 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_addsp", "f_s10 0x%x", 'x', f_s10, (char *) 0));
2874
2875 #if WITH_PROFILE_MODEL_P
2876 /* Record the fields for profiling. */
2877 if (PROFILE_MODEL_P (current_cpu))
2878 {
2879 FLD (in_h_gr_15) = 15;
2880 FLD (out_h_gr_15) = 15;
2881 }
2882 #endif
2883 #undef FLD
2884 return idesc;
2885 }
2886
2887 extract_fmt_extsb:
2888 {
2889 const IDESC *idesc = &fr30bf_insn_data[itype];
2890 CGEN_INSN_INT insn = base_insn;
2891 #define FLD(f) abuf->fields.fmt_extsb.f
2892 UINT f_Ri;
2893
2894 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2895
2896 /* Record the fields for the semantic handler. */
2897 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2898 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_extsb", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2899
2900 #if WITH_PROFILE_MODEL_P
2901 /* Record the fields for profiling. */
2902 if (PROFILE_MODEL_P (current_cpu))
2903 {
2904 FLD (in_Ri) = f_Ri;
2905 FLD (out_Ri) = f_Ri;
2906 }
2907 #endif
2908 #undef FLD
2909 return idesc;
2910 }
2911
2912 extract_fmt_extub:
2913 {
2914 const IDESC *idesc = &fr30bf_insn_data[itype];
2915 CGEN_INSN_INT insn = base_insn;
2916 #define FLD(f) abuf->fields.fmt_extub.f
2917 UINT f_Ri;
2918
2919 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2920
2921 /* Record the fields for the semantic handler. */
2922 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2923 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_extub", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2924
2925 #if WITH_PROFILE_MODEL_P
2926 /* Record the fields for profiling. */
2927 if (PROFILE_MODEL_P (current_cpu))
2928 {
2929 FLD (in_Ri) = f_Ri;
2930 FLD (out_Ri) = f_Ri;
2931 }
2932 #endif
2933 #undef FLD
2934 return idesc;
2935 }
2936
2937 extract_fmt_extsh:
2938 {
2939 const IDESC *idesc = &fr30bf_insn_data[itype];
2940 CGEN_INSN_INT insn = base_insn;
2941 #define FLD(f) abuf->fields.fmt_extsh.f
2942 UINT f_Ri;
2943
2944 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2945
2946 /* Record the fields for the semantic handler. */
2947 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2948 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_extsh", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2949
2950 #if WITH_PROFILE_MODEL_P
2951 /* Record the fields for profiling. */
2952 if (PROFILE_MODEL_P (current_cpu))
2953 {
2954 FLD (in_Ri) = f_Ri;
2955 FLD (out_Ri) = f_Ri;
2956 }
2957 #endif
2958 #undef FLD
2959 return idesc;
2960 }
2961
2962 extract_fmt_extuh:
2963 {
2964 const IDESC *idesc = &fr30bf_insn_data[itype];
2965 CGEN_INSN_INT insn = base_insn;
2966 #define FLD(f) abuf->fields.fmt_extuh.f
2967 UINT f_Ri;
2968
2969 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2970
2971 /* Record the fields for the semantic handler. */
2972 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2973 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_extuh", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2974
2975 #if WITH_PROFILE_MODEL_P
2976 /* Record the fields for profiling. */
2977 if (PROFILE_MODEL_P (current_cpu))
2978 {
2979 FLD (in_Ri) = f_Ri;
2980 FLD (out_Ri) = f_Ri;
2981 }
2982 #endif
2983 #undef FLD
2984 return idesc;
2985 }
2986
2987 extract_fmt_ldm0:
2988 {
2989 const IDESC *idesc = &fr30bf_insn_data[itype];
2990 CGEN_INSN_INT insn = base_insn;
2991 #define FLD(f) abuf->fields.fmt_ldm0.f
2992 UINT f_reglist_low_ld;
2993
2994 f_reglist_low_ld = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2995
2996 /* Record the fields for the semantic handler. */
2997 FLD (f_reglist_low_ld) = f_reglist_low_ld;
2998 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldm0", "f_reglist_low_ld 0x%x", 'x', f_reglist_low_ld, (char *) 0));
2999
3000 #if WITH_PROFILE_MODEL_P
3001 /* Record the fields for profiling. */
3002 if (PROFILE_MODEL_P (current_cpu))
3003 {
3004 FLD (in_h_gr_15) = 15;
3005 FLD (out_h_gr_0) = 0;
3006 FLD (out_h_gr_1) = 1;
3007 FLD (out_h_gr_15) = 15;
3008 FLD (out_h_gr_2) = 2;
3009 FLD (out_h_gr_3) = 3;
3010 FLD (out_h_gr_4) = 4;
3011 FLD (out_h_gr_5) = 5;
3012 FLD (out_h_gr_6) = 6;
3013 FLD (out_h_gr_7) = 7;
3014 }
3015 #endif
3016 #undef FLD
3017 return idesc;
3018 }
3019
3020 extract_fmt_ldm1:
3021 {
3022 const IDESC *idesc = &fr30bf_insn_data[itype];
3023 CGEN_INSN_INT insn = base_insn;
3024 #define FLD(f) abuf->fields.fmt_ldm1.f
3025 UINT f_reglist_hi_ld;
3026
3027 f_reglist_hi_ld = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
3028
3029 /* Record the fields for the semantic handler. */
3030 FLD (f_reglist_hi_ld) = f_reglist_hi_ld;
3031 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldm1", "f_reglist_hi_ld 0x%x", 'x', f_reglist_hi_ld, (char *) 0));
3032
3033 #if WITH_PROFILE_MODEL_P
3034 /* Record the fields for profiling. */
3035 if (PROFILE_MODEL_P (current_cpu))
3036 {
3037 FLD (in_h_gr_15) = 15;
3038 FLD (out_h_gr_10) = 10;
3039 FLD (out_h_gr_11) = 11;
3040 FLD (out_h_gr_12) = 12;
3041 FLD (out_h_gr_13) = 13;
3042 FLD (out_h_gr_14) = 14;
3043 FLD (out_h_gr_15) = 15;
3044 FLD (out_h_gr_8) = 8;
3045 FLD (out_h_gr_9) = 9;
3046 }
3047 #endif
3048 #undef FLD
3049 return idesc;
3050 }
3051
3052 extract_fmt_stm0:
3053 {
3054 const IDESC *idesc = &fr30bf_insn_data[itype];
3055 CGEN_INSN_INT insn = base_insn;
3056 #define FLD(f) abuf->fields.fmt_stm0.f
3057 UINT f_reglist_low_st;
3058
3059 f_reglist_low_st = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
3060
3061 /* Record the fields for the semantic handler. */
3062 FLD (f_reglist_low_st) = f_reglist_low_st;
3063 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_stm0", "f_reglist_low_st 0x%x", 'x', f_reglist_low_st, (char *) 0));
3064
3065 #if WITH_PROFILE_MODEL_P
3066 /* Record the fields for profiling. */
3067 if (PROFILE_MODEL_P (current_cpu))
3068 {
3069 FLD (in_h_gr_0) = 0;
3070 FLD (in_h_gr_1) = 1;
3071 FLD (in_h_gr_15) = 15;
3072 FLD (in_h_gr_2) = 2;
3073 FLD (in_h_gr_3) = 3;
3074 FLD (in_h_gr_4) = 4;
3075 FLD (in_h_gr_5) = 5;
3076 FLD (in_h_gr_6) = 6;
3077 FLD (in_h_gr_7) = 7;
3078 FLD (out_h_gr_15) = 15;
3079 }
3080 #endif
3081 #undef FLD
3082 return idesc;
3083 }
3084
3085 extract_fmt_stm1:
3086 {
3087 const IDESC *idesc = &fr30bf_insn_data[itype];
3088 CGEN_INSN_INT insn = base_insn;
3089 #define FLD(f) abuf->fields.fmt_stm1.f
3090 UINT f_reglist_hi_st;
3091
3092 f_reglist_hi_st = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
3093
3094 /* Record the fields for the semantic handler. */
3095 FLD (f_reglist_hi_st) = f_reglist_hi_st;
3096 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_stm1", "f_reglist_hi_st 0x%x", 'x', f_reglist_hi_st, (char *) 0));
3097
3098 #if WITH_PROFILE_MODEL_P
3099 /* Record the fields for profiling. */
3100 if (PROFILE_MODEL_P (current_cpu))
3101 {
3102 FLD (in_h_gr_10) = 10;
3103 FLD (in_h_gr_11) = 11;
3104 FLD (in_h_gr_12) = 12;
3105 FLD (in_h_gr_13) = 13;
3106 FLD (in_h_gr_14) = 14;
3107 FLD (in_h_gr_15) = 15;
3108 FLD (in_h_gr_8) = 8;
3109 FLD (in_h_gr_9) = 9;
3110 FLD (out_h_gr_15) = 15;
3111 }
3112 #endif
3113 #undef FLD
3114 return idesc;
3115 }
3116
3117 extract_fmt_enter:
3118 {
3119 const IDESC *idesc = &fr30bf_insn_data[itype];
3120 CGEN_INSN_INT insn = base_insn;
3121 #define FLD(f) abuf->fields.fmt_enter.f
3122 USI f_u10;
3123
3124 f_u10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
3125
3126 /* Record the fields for the semantic handler. */
3127 FLD (f_u10) = f_u10;
3128 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_enter", "f_u10 0x%x", 'x', f_u10, (char *) 0));
3129
3130 #if WITH_PROFILE_MODEL_P
3131 /* Record the fields for profiling. */
3132 if (PROFILE_MODEL_P (current_cpu))
3133 {
3134 FLD (in_h_gr_14) = 14;
3135 FLD (in_h_gr_15) = 15;
3136 FLD (out_h_gr_14) = 14;
3137 FLD (out_h_gr_15) = 15;
3138 }
3139 #endif
3140 #undef FLD
3141 return idesc;
3142 }
3143
3144 extract_fmt_leave:
3145 {
3146 const IDESC *idesc = &fr30bf_insn_data[itype];
3147 CGEN_INSN_INT insn = base_insn;
3148 #define FLD(f) abuf->fields.fmt_leave.f
3149
3150
3151 /* Record the fields for the semantic handler. */
3152 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_leave", (char *) 0));
3153
3154 #if WITH_PROFILE_MODEL_P
3155 /* Record the fields for profiling. */
3156 if (PROFILE_MODEL_P (current_cpu))
3157 {
3158 FLD (in_h_gr_14) = 14;
3159 FLD (in_h_gr_15) = 15;
3160 FLD (out_h_gr_14) = 14;
3161 FLD (out_h_gr_15) = 15;
3162 }
3163 #endif
3164 #undef FLD
3165 return idesc;
3166 }
3167
3168 extract_fmt_xchb:
3169 {
3170 const IDESC *idesc = &fr30bf_insn_data[itype];
3171 CGEN_INSN_INT insn = base_insn;
3172 #define FLD(f) abuf->fields.fmt_xchb.f
3173 UINT f_Rj;
3174 UINT f_Ri;
3175
3176 f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
3177 f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
3178
3179 /* Record the fields for the semantic handler. */
3180 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
3181 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
3182 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_xchb", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
3183
3184 #if WITH_PROFILE_MODEL_P
3185 /* Record the fields for profiling. */
3186 if (PROFILE_MODEL_P (current_cpu))
3187 {
3188 FLD (in_Ri) = f_Ri;
3189 FLD (in_Rj) = f_Rj;
3190 FLD (out_Ri) = f_Ri;
3191 }
3192 #endif
3193 #undef FLD
3194 return idesc;
3195 }
3196
3197 }