]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - sim/fr30/decode.c
import gdb-19990422 snapshot
[thirdparty/binutils-gdb.git] / sim / fr30 / decode.c
CommitLineData
c906108c
SS
1/* Simulator instruction decoder for fr30bf.
2
3THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
6
7This file is part of the GNU Simulators.
8
9This program is free software; you can redistribute it and/or modify
10it under the terms of the GNU General Public License as published by
11the Free Software Foundation; either version 2, or (at your option)
12any later version.
13
14This program is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17GNU General Public License for more details.
18
19You should have received a copy of the GNU General Public License along
20with this program; if not, write to the Free Software Foundation, Inc.,
2159 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
23*/
24
25#define WANT_CPU 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
7a292a7a
SS
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
c906108c
SS
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). */
59static IDESC fr30bf_insn_data[FR30BF_INSN_MAX];
60
c906108c
SS
61/* Commas between elements are contained in the macros.
62 Some of these are conditionally compiled out. */
63
64static 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
239static 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
7a292a7a
SS
244#undef FMT
245#undef FULL
246#undef FAST
c906108c
SS
247#undef IDX
248#undef TYPE
249
250/* Initialize an IDESC from the compile-time computable parts. */
251
252static INLINE void
253init_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
282void
283fr30bf_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
c906108c
SS
308/* Given an instruction, return a pointer to its IDESC entry. */
309
310const IDESC *
311fr30bf_decode (SIM_CPU *current_cpu, IADDR pc,
312 CGEN_INSN_INT base_insn,
313 ARGBUF *abuf)
314{
7a292a7a
SS
315 /* Result of decoder. */
316 FR30BF_INSN_TYPE itype;
c906108c
SS
317
318 {
7a292a7a
SS
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_ldr13uh;
327 case 2 : itype = FR30BF_INSN_LDR13UB; goto extract_fmt_ldr13ub;
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_lduh;
331 case 6 : itype = FR30BF_INSN_LDUB; goto extract_fmt_ldub;
332 case 7 :
c906108c 333 {
7a292a7a
SS
334 unsigned int val = (((insn >> 4) & (15 << 0)));
335 switch (val)
c906108c 336 {
7a292a7a
SS
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;
c906108c 342 }
7a292a7a
SS
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_str13h;
354 case 18 : itype = FR30BF_INSN_STR13B; goto extract_fmt_str13b;
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_sth;
358 case 22 : itype = FR30BF_INSN_STB; goto extract_fmt_stb;
359 case 23 :
360 {
361 unsigned int val = (((insn >> 4) & (15 << 0)));
362 switch (val)
c906108c 363 {
7a292a7a
SS
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;
c906108c 369 }
7a292a7a
SS
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)
c906108c 502 {
7a292a7a
SS
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;
c906108c 516 }
7a292a7a
SS
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)
c906108c 529 {
7a292a7a
SS
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_nop;
539 case 12 : itype = FR30BF_INSN_COPOP; goto extract_fmt_copop;
540 case 13 : itype = FR30BF_INSN_COPLD; goto extract_fmt_copld;
541 case 14 : itype = FR30BF_INSN_COPST; goto extract_fmt_copst;
542 case 15 : itype = FR30BF_INSN_COPSV; goto extract_fmt_copst;
543 default : itype = FR30BF_INSN_X_INVALID; goto extract_fmt_empty;
c906108c 544 }
c906108c 545 }
7a292a7a
SS
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 }
c906108c 643 }
c906108c
SS
644 }
645
646 /* The instruction has been decoded, now extract the fields. */
647
7a292a7a 648 extract_fmt_empty:
c906108c 649 {
7a292a7a 650 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
651 CGEN_INSN_INT insn = base_insn;
652#define FLD(f) abuf->fields.fmt_empty.f
653 EXTRACT_IFMT_EMPTY_VARS /* */
654
655 EXTRACT_IFMT_EMPTY_CODE
656
657 /* Record the fields for the semantic handler. */
658 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_empty", (char *) 0));
659
660#undef FLD
7a292a7a 661 return idesc;
c906108c
SS
662 }
663
7a292a7a 664 extract_fmt_add:
c906108c 665 {
7a292a7a 666 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
667 CGEN_INSN_INT insn = base_insn;
668#define FLD(f) abuf->fields.fmt_add.f
669 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
670
671 EXTRACT_IFMT_ADD_CODE
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
7a292a7a 688 return idesc;
c906108c
SS
689 }
690
7a292a7a 691 extract_fmt_addi:
c906108c 692 {
7a292a7a 693 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
694 CGEN_INSN_INT insn = base_insn;
695#define FLD(f) abuf->fields.fmt_addi.f
696 EXTRACT_IFMT_ADDI_VARS /* f-op1 f-op2 f-u4 f-Ri */
697
698 EXTRACT_IFMT_ADDI_CODE
699
700 /* Record the fields for the semantic handler. */
701 FLD (f_u4) = f_u4;
702 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
703 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));
704
705#if WITH_PROFILE_MODEL_P
706 /* Record the fields for profiling. */
707 if (PROFILE_MODEL_P (current_cpu))
708 {
709 FLD (in_Ri) = f_Ri;
710 FLD (out_Ri) = f_Ri;
711 }
712#endif
713#undef FLD
7a292a7a 714 return idesc;
c906108c
SS
715 }
716
7a292a7a 717 extract_fmt_add2:
c906108c 718 {
7a292a7a 719 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
720 CGEN_INSN_INT insn = base_insn;
721#define FLD(f) abuf->fields.fmt_add2.f
722 EXTRACT_IFMT_ADD2_VARS /* f-op1 f-op2 f-m4 f-Ri */
723
724 EXTRACT_IFMT_ADD2_CODE
725
726 /* Record the fields for the semantic handler. */
727 FLD (f_m4) = f_m4;
728 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
729 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));
730
731#if WITH_PROFILE_MODEL_P
732 /* Record the fields for profiling. */
733 if (PROFILE_MODEL_P (current_cpu))
734 {
735 FLD (in_Ri) = f_Ri;
736 FLD (out_Ri) = f_Ri;
737 }
738#endif
739#undef FLD
7a292a7a 740 return idesc;
c906108c
SS
741 }
742
7a292a7a 743 extract_fmt_addc:
c906108c 744 {
7a292a7a 745 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
746 CGEN_INSN_INT insn = base_insn;
747#define FLD(f) abuf->fields.fmt_addc.f
748 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
749
750 EXTRACT_IFMT_ADD_CODE
751
752 /* Record the fields for the semantic handler. */
753 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
754 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
755 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_addc", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
756
757#if WITH_PROFILE_MODEL_P
758 /* Record the fields for profiling. */
759 if (PROFILE_MODEL_P (current_cpu))
760 {
761 FLD (in_Ri) = f_Ri;
762 FLD (in_Rj) = f_Rj;
763 FLD (out_Ri) = f_Ri;
764 }
765#endif
766#undef FLD
7a292a7a 767 return idesc;
c906108c
SS
768 }
769
7a292a7a 770 extract_fmt_addn:
c906108c 771 {
7a292a7a 772 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
773 CGEN_INSN_INT insn = base_insn;
774#define FLD(f) abuf->fields.fmt_addn.f
775 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
776
777 EXTRACT_IFMT_ADD_CODE
778
779 /* Record the fields for the semantic handler. */
780 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
781 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
782 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_addn", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
783
784#if WITH_PROFILE_MODEL_P
785 /* Record the fields for profiling. */
786 if (PROFILE_MODEL_P (current_cpu))
787 {
788 FLD (in_Ri) = f_Ri;
789 FLD (in_Rj) = f_Rj;
790 FLD (out_Ri) = f_Ri;
791 }
792#endif
793#undef FLD
7a292a7a 794 return idesc;
c906108c
SS
795 }
796
7a292a7a 797 extract_fmt_addni:
c906108c 798 {
7a292a7a 799 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
800 CGEN_INSN_INT insn = base_insn;
801#define FLD(f) abuf->fields.fmt_addni.f
802 EXTRACT_IFMT_ADDI_VARS /* f-op1 f-op2 f-u4 f-Ri */
803
804 EXTRACT_IFMT_ADDI_CODE
805
806 /* Record the fields for the semantic handler. */
807 FLD (f_u4) = f_u4;
808 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
809 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));
810
811#if WITH_PROFILE_MODEL_P
812 /* Record the fields for profiling. */
813 if (PROFILE_MODEL_P (current_cpu))
814 {
815 FLD (in_Ri) = f_Ri;
816 FLD (out_Ri) = f_Ri;
817 }
818#endif
819#undef FLD
7a292a7a 820 return idesc;
c906108c
SS
821 }
822
7a292a7a 823 extract_fmt_addn2:
c906108c 824 {
7a292a7a 825 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
826 CGEN_INSN_INT insn = base_insn;
827#define FLD(f) abuf->fields.fmt_addn2.f
828 EXTRACT_IFMT_ADD2_VARS /* f-op1 f-op2 f-m4 f-Ri */
829
830 EXTRACT_IFMT_ADD2_CODE
831
832 /* Record the fields for the semantic handler. */
833 FLD (f_m4) = f_m4;
834 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
835 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));
836
837#if WITH_PROFILE_MODEL_P
838 /* Record the fields for profiling. */
839 if (PROFILE_MODEL_P (current_cpu))
840 {
841 FLD (in_Ri) = f_Ri;
842 FLD (out_Ri) = f_Ri;
843 }
844#endif
845#undef FLD
7a292a7a 846 return idesc;
c906108c
SS
847 }
848
7a292a7a 849 extract_fmt_cmp:
c906108c 850 {
7a292a7a 851 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
852 CGEN_INSN_INT insn = base_insn;
853#define FLD(f) abuf->fields.fmt_cmp.f
854 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
855
856 EXTRACT_IFMT_ADD_CODE
857
858 /* Record the fields for the semantic handler. */
859 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
860 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
861 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_cmp", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
862
863#if WITH_PROFILE_MODEL_P
864 /* Record the fields for profiling. */
865 if (PROFILE_MODEL_P (current_cpu))
866 {
867 FLD (in_Ri) = f_Ri;
868 FLD (in_Rj) = f_Rj;
869 }
870#endif
871#undef FLD
7a292a7a 872 return idesc;
c906108c
SS
873 }
874
7a292a7a 875 extract_fmt_cmpi:
c906108c 876 {
7a292a7a 877 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
878 CGEN_INSN_INT insn = base_insn;
879#define FLD(f) abuf->fields.fmt_cmpi.f
880 EXTRACT_IFMT_ADDI_VARS /* f-op1 f-op2 f-u4 f-Ri */
881
882 EXTRACT_IFMT_ADDI_CODE
883
884 /* Record the fields for the semantic handler. */
885 FLD (f_u4) = f_u4;
886 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
887 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));
888
889#if WITH_PROFILE_MODEL_P
890 /* Record the fields for profiling. */
891 if (PROFILE_MODEL_P (current_cpu))
892 {
893 FLD (in_Ri) = f_Ri;
894 }
895#endif
896#undef FLD
7a292a7a 897 return idesc;
c906108c
SS
898 }
899
7a292a7a 900 extract_fmt_cmp2:
c906108c 901 {
7a292a7a 902 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
903 CGEN_INSN_INT insn = base_insn;
904#define FLD(f) abuf->fields.fmt_cmp2.f
905 EXTRACT_IFMT_ADD2_VARS /* f-op1 f-op2 f-m4 f-Ri */
906
907 EXTRACT_IFMT_ADD2_CODE
908
909 /* Record the fields for the semantic handler. */
910 FLD (f_m4) = f_m4;
911 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
912 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));
913
914#if WITH_PROFILE_MODEL_P
915 /* Record the fields for profiling. */
916 if (PROFILE_MODEL_P (current_cpu))
917 {
918 FLD (in_Ri) = f_Ri;
919 }
920#endif
921#undef FLD
7a292a7a 922 return idesc;
c906108c
SS
923 }
924
7a292a7a 925 extract_fmt_and:
c906108c 926 {
7a292a7a 927 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
928 CGEN_INSN_INT insn = base_insn;
929#define FLD(f) abuf->fields.fmt_and.f
930 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
931
932 EXTRACT_IFMT_ADD_CODE
933
934 /* Record the fields for the semantic handler. */
935 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
936 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
937 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_and", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
938
939#if WITH_PROFILE_MODEL_P
940 /* Record the fields for profiling. */
941 if (PROFILE_MODEL_P (current_cpu))
942 {
943 FLD (in_Ri) = f_Ri;
944 FLD (in_Rj) = f_Rj;
945 FLD (out_Ri) = f_Ri;
946 }
947#endif
948#undef FLD
7a292a7a 949 return idesc;
c906108c
SS
950 }
951
7a292a7a 952 extract_fmt_andm:
c906108c 953 {
7a292a7a 954 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
955 CGEN_INSN_INT insn = base_insn;
956#define FLD(f) abuf->fields.fmt_andm.f
957 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
958
959 EXTRACT_IFMT_ADD_CODE
960
961 /* Record the fields for the semantic handler. */
962 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
963 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
964 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_andm", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
965
966#if WITH_PROFILE_MODEL_P
967 /* Record the fields for profiling. */
968 if (PROFILE_MODEL_P (current_cpu))
969 {
970 FLD (in_Ri) = f_Ri;
971 FLD (in_Rj) = f_Rj;
972 }
973#endif
974#undef FLD
7a292a7a 975 return idesc;
c906108c
SS
976 }
977
7a292a7a 978 extract_fmt_andh:
c906108c 979 {
7a292a7a 980 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
981 CGEN_INSN_INT insn = base_insn;
982#define FLD(f) abuf->fields.fmt_andh.f
983 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
984
985 EXTRACT_IFMT_ADD_CODE
986
987 /* Record the fields for the semantic handler. */
988 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
989 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
990 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_andh", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
991
992#if WITH_PROFILE_MODEL_P
993 /* Record the fields for profiling. */
994 if (PROFILE_MODEL_P (current_cpu))
995 {
996 FLD (in_Ri) = f_Ri;
997 FLD (in_Rj) = f_Rj;
998 }
999#endif
1000#undef FLD
7a292a7a 1001 return idesc;
c906108c
SS
1002 }
1003
7a292a7a 1004 extract_fmt_andb:
c906108c 1005 {
7a292a7a 1006 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1007 CGEN_INSN_INT insn = base_insn;
1008#define FLD(f) abuf->fields.fmt_andb.f
1009 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
1010
1011 EXTRACT_IFMT_ADD_CODE
1012
1013 /* Record the fields for the semantic handler. */
1014 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1015 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1016 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_andb", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1017
1018#if WITH_PROFILE_MODEL_P
1019 /* Record the fields for profiling. */
1020 if (PROFILE_MODEL_P (current_cpu))
1021 {
1022 FLD (in_Ri) = f_Ri;
1023 FLD (in_Rj) = f_Rj;
1024 }
1025#endif
1026#undef FLD
7a292a7a 1027 return idesc;
c906108c
SS
1028 }
1029
7a292a7a 1030 extract_fmt_bandl:
c906108c 1031 {
7a292a7a 1032 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1033 CGEN_INSN_INT insn = base_insn;
1034#define FLD(f) abuf->fields.fmt_bandl.f
1035 EXTRACT_IFMT_ADDI_VARS /* f-op1 f-op2 f-u4 f-Ri */
1036
1037 EXTRACT_IFMT_ADDI_CODE
1038
1039 /* Record the fields for the semantic handler. */
1040 FLD (f_u4) = f_u4;
1041 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1042 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));
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 }
1050#endif
1051#undef FLD
7a292a7a 1052 return idesc;
c906108c
SS
1053 }
1054
7a292a7a 1055 extract_fmt_btstl:
c906108c 1056 {
7a292a7a 1057 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1058 CGEN_INSN_INT insn = base_insn;
1059#define FLD(f) abuf->fields.fmt_btstl.f
1060 EXTRACT_IFMT_ADDI_VARS /* f-op1 f-op2 f-u4 f-Ri */
1061
1062 EXTRACT_IFMT_ADDI_CODE
1063
1064 /* Record the fields for the semantic handler. */
1065 FLD (f_u4) = f_u4;
1066 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1067 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));
1068
1069#if WITH_PROFILE_MODEL_P
1070 /* Record the fields for profiling. */
1071 if (PROFILE_MODEL_P (current_cpu))
1072 {
1073 FLD (in_Ri) = f_Ri;
1074 }
1075#endif
1076#undef FLD
7a292a7a 1077 return idesc;
c906108c
SS
1078 }
1079
7a292a7a 1080 extract_fmt_mul:
c906108c 1081 {
7a292a7a 1082 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1083 CGEN_INSN_INT insn = base_insn;
1084#define FLD(f) abuf->fields.fmt_mul.f
1085 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
1086
1087 EXTRACT_IFMT_ADD_CODE
1088
1089 /* Record the fields for the semantic handler. */
1090 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1091 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1092 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_mul", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1093
1094#if WITH_PROFILE_MODEL_P
1095 /* Record the fields for profiling. */
1096 if (PROFILE_MODEL_P (current_cpu))
1097 {
1098 FLD (in_Ri) = f_Ri;
1099 FLD (in_Rj) = f_Rj;
1100 }
1101#endif
1102#undef FLD
7a292a7a 1103 return idesc;
c906108c
SS
1104 }
1105
7a292a7a 1106 extract_fmt_mulu:
c906108c 1107 {
7a292a7a 1108 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1109 CGEN_INSN_INT insn = base_insn;
1110#define FLD(f) abuf->fields.fmt_mulu.f
1111 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
1112
1113 EXTRACT_IFMT_ADD_CODE
1114
1115 /* Record the fields for the semantic handler. */
1116 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1117 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1118 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_mulu", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1119
1120#if WITH_PROFILE_MODEL_P
1121 /* Record the fields for profiling. */
1122 if (PROFILE_MODEL_P (current_cpu))
1123 {
1124 FLD (in_Ri) = f_Ri;
1125 FLD (in_Rj) = f_Rj;
1126 }
1127#endif
1128#undef FLD
7a292a7a 1129 return idesc;
c906108c
SS
1130 }
1131
7a292a7a 1132 extract_fmt_mulh:
c906108c 1133 {
7a292a7a 1134 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1135 CGEN_INSN_INT insn = base_insn;
1136#define FLD(f) abuf->fields.fmt_mulh.f
1137 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
1138
1139 EXTRACT_IFMT_ADD_CODE
1140
1141 /* Record the fields for the semantic handler. */
1142 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1143 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1144 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_mulh", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1145
1146#if WITH_PROFILE_MODEL_P
1147 /* Record the fields for profiling. */
1148 if (PROFILE_MODEL_P (current_cpu))
1149 {
1150 FLD (in_Ri) = f_Ri;
1151 FLD (in_Rj) = f_Rj;
1152 }
1153#endif
1154#undef FLD
7a292a7a 1155 return idesc;
c906108c
SS
1156 }
1157
7a292a7a 1158 extract_fmt_div0s:
c906108c 1159 {
7a292a7a 1160 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1161 CGEN_INSN_INT insn = base_insn;
1162#define FLD(f) abuf->fields.fmt_div0s.f
1163 EXTRACT_IFMT_DIV0S_VARS /* f-op1 f-op2 f-op3 f-Ri */
1164
1165 EXTRACT_IFMT_DIV0S_CODE
1166
1167 /* Record the fields for the semantic handler. */
1168 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1169 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_div0s", "Ri 0x%x", 'x', f_Ri, (char *) 0));
1170
1171#if WITH_PROFILE_MODEL_P
1172 /* Record the fields for profiling. */
1173 if (PROFILE_MODEL_P (current_cpu))
1174 {
1175 FLD (in_Ri) = f_Ri;
1176 }
1177#endif
1178#undef FLD
7a292a7a 1179 return idesc;
c906108c
SS
1180 }
1181
7a292a7a 1182 extract_fmt_div0u:
c906108c 1183 {
7a292a7a 1184 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1185 CGEN_INSN_INT insn = base_insn;
1186#define FLD(f) abuf->fields.fmt_div0u.f
1187 EXTRACT_IFMT_DIV0S_VARS /* f-op1 f-op2 f-op3 f-Ri */
1188
1189 EXTRACT_IFMT_DIV0S_CODE
1190
1191 /* Record the fields for the semantic handler. */
1192 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_div0u", (char *) 0));
1193
1194#undef FLD
7a292a7a 1195 return idesc;
c906108c
SS
1196 }
1197
7a292a7a 1198 extract_fmt_div1:
c906108c 1199 {
7a292a7a 1200 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1201 CGEN_INSN_INT insn = base_insn;
1202#define FLD(f) abuf->fields.fmt_div1.f
1203 EXTRACT_IFMT_DIV0S_VARS /* f-op1 f-op2 f-op3 f-Ri */
1204
1205 EXTRACT_IFMT_DIV0S_CODE
1206
1207 /* Record the fields for the semantic handler. */
1208 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1209 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_div1", "Ri 0x%x", 'x', f_Ri, (char *) 0));
1210
1211#if WITH_PROFILE_MODEL_P
1212 /* Record the fields for profiling. */
1213 if (PROFILE_MODEL_P (current_cpu))
1214 {
1215 FLD (in_Ri) = f_Ri;
1216 }
1217#endif
1218#undef FLD
7a292a7a 1219 return idesc;
c906108c
SS
1220 }
1221
7a292a7a 1222 extract_fmt_div2:
c906108c 1223 {
7a292a7a 1224 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1225 CGEN_INSN_INT insn = base_insn;
1226#define FLD(f) abuf->fields.fmt_div2.f
1227 EXTRACT_IFMT_DIV0S_VARS /* f-op1 f-op2 f-op3 f-Ri */
1228
1229 EXTRACT_IFMT_DIV0S_CODE
1230
1231 /* Record the fields for the semantic handler. */
1232 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1233 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_div2", "Ri 0x%x", 'x', f_Ri, (char *) 0));
1234
1235#if WITH_PROFILE_MODEL_P
1236 /* Record the fields for profiling. */
1237 if (PROFILE_MODEL_P (current_cpu))
1238 {
1239 FLD (in_Ri) = f_Ri;
1240 }
1241#endif
1242#undef FLD
7a292a7a 1243 return idesc;
c906108c
SS
1244 }
1245
7a292a7a 1246 extract_fmt_div3:
c906108c 1247 {
7a292a7a 1248 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1249 CGEN_INSN_INT insn = base_insn;
1250#define FLD(f) abuf->fields.fmt_div3.f
1251 EXTRACT_IFMT_DIV3_VARS /* f-op1 f-op2 f-op3 f-op4 */
1252
1253 EXTRACT_IFMT_DIV3_CODE
1254
1255 /* Record the fields for the semantic handler. */
1256 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_div3", (char *) 0));
1257
1258#undef FLD
7a292a7a 1259 return idesc;
c906108c
SS
1260 }
1261
7a292a7a 1262 extract_fmt_div4s:
c906108c 1263 {
7a292a7a 1264 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1265 CGEN_INSN_INT insn = base_insn;
1266#define FLD(f) abuf->fields.fmt_div4s.f
1267 EXTRACT_IFMT_DIV3_VARS /* f-op1 f-op2 f-op3 f-op4 */
1268
1269 EXTRACT_IFMT_DIV3_CODE
1270
1271 /* Record the fields for the semantic handler. */
1272 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_div4s", (char *) 0));
1273
1274#undef FLD
7a292a7a 1275 return idesc;
c906108c
SS
1276 }
1277
7a292a7a 1278 extract_fmt_lsl:
c906108c 1279 {
7a292a7a 1280 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1281 CGEN_INSN_INT insn = base_insn;
1282#define FLD(f) abuf->fields.fmt_lsl.f
1283 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
1284
1285 EXTRACT_IFMT_ADD_CODE
1286
1287 /* Record the fields for the semantic handler. */
1288 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1289 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1290 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_lsl", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1291
1292#if WITH_PROFILE_MODEL_P
1293 /* Record the fields for profiling. */
1294 if (PROFILE_MODEL_P (current_cpu))
1295 {
1296 FLD (in_Ri) = f_Ri;
1297 FLD (in_Rj) = f_Rj;
1298 FLD (out_Ri) = f_Ri;
1299 }
1300#endif
1301#undef FLD
7a292a7a 1302 return idesc;
c906108c
SS
1303 }
1304
7a292a7a 1305 extract_fmt_lsli:
c906108c 1306 {
7a292a7a 1307 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1308 CGEN_INSN_INT insn = base_insn;
1309#define FLD(f) abuf->fields.fmt_lsli.f
1310 EXTRACT_IFMT_ADDI_VARS /* f-op1 f-op2 f-u4 f-Ri */
1311
1312 EXTRACT_IFMT_ADDI_CODE
1313
1314 /* Record the fields for the semantic handler. */
1315 FLD (f_u4) = f_u4;
1316 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1317 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));
1318
1319#if WITH_PROFILE_MODEL_P
1320 /* Record the fields for profiling. */
1321 if (PROFILE_MODEL_P (current_cpu))
1322 {
1323 FLD (in_Ri) = f_Ri;
1324 FLD (out_Ri) = f_Ri;
1325 }
1326#endif
1327#undef FLD
7a292a7a 1328 return idesc;
c906108c
SS
1329 }
1330
7a292a7a 1331 extract_fmt_ldi8:
c906108c 1332 {
7a292a7a 1333 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1334 CGEN_INSN_INT insn = base_insn;
1335#define FLD(f) abuf->fields.fmt_ldi8.f
1336 EXTRACT_IFMT_LDI8_VARS /* f-op1 f-i8 f-Ri */
1337
1338 EXTRACT_IFMT_LDI8_CODE
1339
1340 /* Record the fields for the semantic handler. */
1341 FLD (f_i8) = f_i8;
1342 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1343 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));
1344
1345#if WITH_PROFILE_MODEL_P
1346 /* Record the fields for profiling. */
1347 if (PROFILE_MODEL_P (current_cpu))
1348 {
1349 FLD (out_Ri) = f_Ri;
1350 }
1351#endif
1352#undef FLD
7a292a7a 1353 return idesc;
c906108c
SS
1354 }
1355
7a292a7a 1356 extract_fmt_ldi20:
c906108c 1357 {
7a292a7a 1358 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1359 CGEN_INSN_INT insn = base_insn;
1360#define FLD(f) abuf->fields.fmt_ldi20.f
1361 EXTRACT_IFMT_LDI20_VARS /* f-op1 f-i20 f-op2 f-Ri */
1362
1363 EXTRACT_IFMT_LDI20_CODE
1364
1365 /* Record the fields for the semantic handler. */
1366 FLD (f_i20) = f_i20;
1367 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1368 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));
1369
1370#if WITH_PROFILE_MODEL_P
1371 /* Record the fields for profiling. */
1372 if (PROFILE_MODEL_P (current_cpu))
1373 {
1374 FLD (out_Ri) = f_Ri;
1375 }
1376#endif
1377#undef FLD
7a292a7a 1378 return idesc;
c906108c
SS
1379 }
1380
7a292a7a 1381 extract_fmt_ldi32:
c906108c 1382 {
7a292a7a 1383 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1384 CGEN_INSN_INT insn = base_insn;
1385#define FLD(f) abuf->fields.fmt_ldi32.f
1386 EXTRACT_IFMT_LDI32_VARS /* f-op1 f-i32 f-op2 f-op3 f-Ri */
1387
1388 EXTRACT_IFMT_LDI32_CODE
1389
1390 /* Record the fields for the semantic handler. */
1391 FLD (f_i32) = f_i32;
1392 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1393 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));
1394
1395#if WITH_PROFILE_MODEL_P
1396 /* Record the fields for profiling. */
1397 if (PROFILE_MODEL_P (current_cpu))
1398 {
1399 FLD (out_Ri) = f_Ri;
1400 }
1401#endif
1402#undef FLD
7a292a7a 1403 return idesc;
c906108c
SS
1404 }
1405
7a292a7a 1406 extract_fmt_ld:
c906108c 1407 {
7a292a7a 1408 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1409 CGEN_INSN_INT insn = base_insn;
1410#define FLD(f) abuf->fields.fmt_ld.f
1411 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
1412
1413 EXTRACT_IFMT_ADD_CODE
1414
1415 /* Record the fields for the semantic handler. */
1416 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1417 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1418 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ld", "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1419
1420#if WITH_PROFILE_MODEL_P
1421 /* Record the fields for profiling. */
1422 if (PROFILE_MODEL_P (current_cpu))
1423 {
1424 FLD (in_Rj) = f_Rj;
1425 FLD (out_Ri) = f_Ri;
1426 }
1427#endif
1428#undef FLD
7a292a7a 1429 return idesc;
c906108c
SS
1430 }
1431
7a292a7a 1432 extract_fmt_lduh:
c906108c 1433 {
7a292a7a 1434 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1435 CGEN_INSN_INT insn = base_insn;
1436#define FLD(f) abuf->fields.fmt_lduh.f
1437 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
1438
1439 EXTRACT_IFMT_ADD_CODE
1440
1441 /* Record the fields for the semantic handler. */
1442 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1443 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1444 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_lduh", "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1445
1446#if WITH_PROFILE_MODEL_P
1447 /* Record the fields for profiling. */
1448 if (PROFILE_MODEL_P (current_cpu))
1449 {
1450 FLD (in_Rj) = f_Rj;
1451 FLD (out_Ri) = f_Ri;
1452 }
1453#endif
1454#undef FLD
7a292a7a 1455 return idesc;
c906108c
SS
1456 }
1457
7a292a7a 1458 extract_fmt_ldub:
c906108c 1459 {
7a292a7a 1460 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1461 CGEN_INSN_INT insn = base_insn;
1462#define FLD(f) abuf->fields.fmt_ldub.f
1463 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
1464
1465 EXTRACT_IFMT_ADD_CODE
1466
1467 /* Record the fields for the semantic handler. */
1468 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1469 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1470 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldub", "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1471
1472#if WITH_PROFILE_MODEL_P
1473 /* Record the fields for profiling. */
1474 if (PROFILE_MODEL_P (current_cpu))
1475 {
1476 FLD (in_Rj) = f_Rj;
1477 FLD (out_Ri) = f_Ri;
1478 }
1479#endif
1480#undef FLD
7a292a7a 1481 return idesc;
c906108c
SS
1482 }
1483
7a292a7a 1484 extract_fmt_ldr13:
c906108c 1485 {
7a292a7a 1486 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1487 CGEN_INSN_INT insn = base_insn;
1488#define FLD(f) abuf->fields.fmt_ldr13.f
1489 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
1490
1491 EXTRACT_IFMT_ADD_CODE
1492
1493 /* Record the fields for the semantic handler. */
1494 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1495 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1496 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldr13", "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1497
1498#if WITH_PROFILE_MODEL_P
1499 /* Record the fields for profiling. */
1500 if (PROFILE_MODEL_P (current_cpu))
1501 {
1502 FLD (in_Rj) = f_Rj;
1503 FLD (in_h_gr_13) = 13;
1504 FLD (out_Ri) = f_Ri;
1505 }
1506#endif
1507#undef FLD
7a292a7a 1508 return idesc;
c906108c
SS
1509 }
1510
7a292a7a 1511 extract_fmt_ldr13uh:
c906108c 1512 {
7a292a7a 1513 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1514 CGEN_INSN_INT insn = base_insn;
1515#define FLD(f) abuf->fields.fmt_ldr13uh.f
1516 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
1517
1518 EXTRACT_IFMT_ADD_CODE
1519
1520 /* Record the fields for the semantic handler. */
1521 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1522 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1523 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldr13uh", "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1524
1525#if WITH_PROFILE_MODEL_P
1526 /* Record the fields for profiling. */
1527 if (PROFILE_MODEL_P (current_cpu))
1528 {
1529 FLD (in_Rj) = f_Rj;
1530 FLD (in_h_gr_13) = 13;
1531 FLD (out_Ri) = f_Ri;
1532 }
1533#endif
1534#undef FLD
7a292a7a 1535 return idesc;
c906108c
SS
1536 }
1537
7a292a7a 1538 extract_fmt_ldr13ub:
c906108c 1539 {
7a292a7a 1540 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1541 CGEN_INSN_INT insn = base_insn;
1542#define FLD(f) abuf->fields.fmt_ldr13ub.f
1543 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
1544
1545 EXTRACT_IFMT_ADD_CODE
1546
1547 /* Record the fields for the semantic handler. */
1548 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1549 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1550 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldr13ub", "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1551
1552#if WITH_PROFILE_MODEL_P
1553 /* Record the fields for profiling. */
1554 if (PROFILE_MODEL_P (current_cpu))
1555 {
1556 FLD (in_Rj) = f_Rj;
1557 FLD (in_h_gr_13) = 13;
1558 FLD (out_Ri) = f_Ri;
1559 }
1560#endif
1561#undef FLD
7a292a7a 1562 return idesc;
c906108c
SS
1563 }
1564
7a292a7a 1565 extract_fmt_ldr14:
c906108c 1566 {
7a292a7a 1567 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1568 CGEN_INSN_INT insn = base_insn;
1569#define FLD(f) abuf->fields.fmt_ldr14.f
1570 EXTRACT_IFMT_LDR14_VARS /* f-op1 f-disp10 f-Ri */
1571
1572 EXTRACT_IFMT_LDR14_CODE
1573
1574 /* Record the fields for the semantic handler. */
1575 FLD (f_disp10) = f_disp10;
1576 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1577 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));
1578
1579#if WITH_PROFILE_MODEL_P
1580 /* Record the fields for profiling. */
1581 if (PROFILE_MODEL_P (current_cpu))
1582 {
1583 FLD (in_h_gr_14) = 14;
1584 FLD (out_Ri) = f_Ri;
1585 }
1586#endif
1587#undef FLD
7a292a7a 1588 return idesc;
c906108c
SS
1589 }
1590
7a292a7a 1591 extract_fmt_ldr14uh:
c906108c 1592 {
7a292a7a 1593 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1594 CGEN_INSN_INT insn = base_insn;
1595#define FLD(f) abuf->fields.fmt_ldr14uh.f
1596 EXTRACT_IFMT_LDR14UH_VARS /* f-op1 f-disp9 f-Ri */
1597
1598 EXTRACT_IFMT_LDR14UH_CODE
1599
1600 /* Record the fields for the semantic handler. */
1601 FLD (f_disp9) = f_disp9;
1602 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1603 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));
1604
1605#if WITH_PROFILE_MODEL_P
1606 /* Record the fields for profiling. */
1607 if (PROFILE_MODEL_P (current_cpu))
1608 {
1609 FLD (in_h_gr_14) = 14;
1610 FLD (out_Ri) = f_Ri;
1611 }
1612#endif
1613#undef FLD
7a292a7a 1614 return idesc;
c906108c
SS
1615 }
1616
7a292a7a 1617 extract_fmt_ldr14ub:
c906108c 1618 {
7a292a7a 1619 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1620 CGEN_INSN_INT insn = base_insn;
1621#define FLD(f) abuf->fields.fmt_ldr14ub.f
1622 EXTRACT_IFMT_LDR14UB_VARS /* f-op1 f-disp8 f-Ri */
1623
1624 EXTRACT_IFMT_LDR14UB_CODE
1625
1626 /* Record the fields for the semantic handler. */
1627 FLD (f_disp8) = f_disp8;
1628 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1629 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));
1630
1631#if WITH_PROFILE_MODEL_P
1632 /* Record the fields for profiling. */
1633 if (PROFILE_MODEL_P (current_cpu))
1634 {
1635 FLD (in_h_gr_14) = 14;
1636 FLD (out_Ri) = f_Ri;
1637 }
1638#endif
1639#undef FLD
7a292a7a 1640 return idesc;
c906108c
SS
1641 }
1642
7a292a7a 1643 extract_fmt_ldr15:
c906108c 1644 {
7a292a7a 1645 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1646 CGEN_INSN_INT insn = base_insn;
1647#define FLD(f) abuf->fields.fmt_ldr15.f
1648 EXTRACT_IFMT_LDR15_VARS /* f-op1 f-op2 f-udisp6 f-Ri */
1649
1650 EXTRACT_IFMT_LDR15_CODE
1651
1652 /* Record the fields for the semantic handler. */
1653 FLD (f_udisp6) = f_udisp6;
1654 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1655 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));
1656
1657#if WITH_PROFILE_MODEL_P
1658 /* Record the fields for profiling. */
1659 if (PROFILE_MODEL_P (current_cpu))
1660 {
1661 FLD (in_h_gr_15) = 15;
1662 FLD (out_Ri) = f_Ri;
1663 }
1664#endif
1665#undef FLD
7a292a7a 1666 return idesc;
c906108c
SS
1667 }
1668
7a292a7a 1669 extract_fmt_ldr15gr:
c906108c 1670 {
7a292a7a 1671 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1672 CGEN_INSN_INT insn = base_insn;
1673#define FLD(f) abuf->fields.fmt_ldr15gr.f
1674 EXTRACT_IFMT_DIV0S_VARS /* f-op1 f-op2 f-op3 f-Ri */
1675
1676 EXTRACT_IFMT_DIV0S_CODE
1677
1678 /* Record the fields for the semantic handler. */
1679 FLD (f_Ri) = f_Ri;
1680 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1681 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));
1682
1683#if WITH_PROFILE_MODEL_P
1684 /* Record the fields for profiling. */
1685 if (PROFILE_MODEL_P (current_cpu))
1686 {
1687 FLD (in_h_gr_15) = 15;
1688 FLD (out_Ri) = f_Ri;
1689 FLD (out_h_gr_15) = 15;
1690 }
1691#endif
1692#undef FLD
7a292a7a 1693 return idesc;
c906108c
SS
1694 }
1695
7a292a7a 1696 extract_fmt_ldr15dr:
c906108c 1697 {
7a292a7a 1698 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1699 CGEN_INSN_INT insn = base_insn;
1700#define FLD(f) abuf->fields.fmt_ldr15dr.f
1701 EXTRACT_IFMT_LDR15DR_VARS /* f-op1 f-op2 f-op3 f-Rs2 */
1702
1703 EXTRACT_IFMT_LDR15DR_CODE
1704
1705 /* Record the fields for the semantic handler. */
1706 FLD (f_Rs2) = f_Rs2;
1707 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldr15dr", "f_Rs2 0x%x", 'x', f_Rs2, (char *) 0));
1708
1709#if WITH_PROFILE_MODEL_P
1710 /* Record the fields for profiling. */
1711 if (PROFILE_MODEL_P (current_cpu))
1712 {
1713 FLD (in_h_gr_15) = 15;
1714 FLD (out_h_gr_15) = 15;
1715 }
1716#endif
1717#undef FLD
7a292a7a 1718 return idesc;
c906108c
SS
1719 }
1720
7a292a7a 1721 extract_fmt_ldr15ps:
c906108c 1722 {
7a292a7a 1723 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1724 CGEN_INSN_INT insn = base_insn;
1725#define FLD(f) abuf->fields.fmt_ldr15ps.f
1726 EXTRACT_IFMT_DIV3_VARS /* f-op1 f-op2 f-op3 f-op4 */
1727
1728 EXTRACT_IFMT_DIV3_CODE
1729
1730 /* Record the fields for the semantic handler. */
1731 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldr15ps", (char *) 0));
1732
1733#if WITH_PROFILE_MODEL_P
1734 /* Record the fields for profiling. */
1735 if (PROFILE_MODEL_P (current_cpu))
1736 {
1737 FLD (in_h_gr_15) = 15;
1738 FLD (out_h_gr_15) = 15;
1739 }
1740#endif
1741#undef FLD
7a292a7a 1742 return idesc;
c906108c
SS
1743 }
1744
7a292a7a 1745 extract_fmt_st:
c906108c 1746 {
7a292a7a 1747 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1748 CGEN_INSN_INT insn = base_insn;
1749#define FLD(f) abuf->fields.fmt_st.f
1750 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
1751
1752 EXTRACT_IFMT_ADD_CODE
1753
1754 /* Record the fields for the semantic handler. */
1755 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1756 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1757 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_st", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1758
1759#if WITH_PROFILE_MODEL_P
1760 /* Record the fields for profiling. */
1761 if (PROFILE_MODEL_P (current_cpu))
1762 {
1763 FLD (in_Ri) = f_Ri;
1764 FLD (in_Rj) = f_Rj;
1765 }
1766#endif
1767#undef FLD
7a292a7a 1768 return idesc;
c906108c
SS
1769 }
1770
7a292a7a 1771 extract_fmt_sth:
c906108c 1772 {
7a292a7a 1773 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1774 CGEN_INSN_INT insn = base_insn;
1775#define FLD(f) abuf->fields.fmt_sth.f
1776 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
1777
1778 EXTRACT_IFMT_ADD_CODE
1779
1780 /* Record the fields for the semantic handler. */
1781 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1782 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1783 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_sth", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1784
1785#if WITH_PROFILE_MODEL_P
1786 /* Record the fields for profiling. */
1787 if (PROFILE_MODEL_P (current_cpu))
1788 {
1789 FLD (in_Ri) = f_Ri;
1790 FLD (in_Rj) = f_Rj;
1791 }
1792#endif
1793#undef FLD
7a292a7a 1794 return idesc;
c906108c
SS
1795 }
1796
7a292a7a 1797 extract_fmt_stb:
c906108c 1798 {
7a292a7a 1799 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1800 CGEN_INSN_INT insn = base_insn;
1801#define FLD(f) abuf->fields.fmt_stb.f
1802 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
1803
1804 EXTRACT_IFMT_ADD_CODE
1805
1806 /* Record the fields for the semantic handler. */
1807 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1808 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1809 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_stb", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1810
1811#if WITH_PROFILE_MODEL_P
1812 /* Record the fields for profiling. */
1813 if (PROFILE_MODEL_P (current_cpu))
1814 {
1815 FLD (in_Ri) = f_Ri;
1816 FLD (in_Rj) = f_Rj;
1817 }
1818#endif
1819#undef FLD
7a292a7a 1820 return idesc;
c906108c
SS
1821 }
1822
7a292a7a 1823 extract_fmt_str13:
c906108c 1824 {
7a292a7a 1825 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1826 CGEN_INSN_INT insn = base_insn;
1827#define FLD(f) abuf->fields.fmt_str13.f
1828 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
1829
1830 EXTRACT_IFMT_ADD_CODE
1831
1832 /* Record the fields for the semantic handler. */
1833 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1834 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1835 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_str13", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1836
1837#if WITH_PROFILE_MODEL_P
1838 /* Record the fields for profiling. */
1839 if (PROFILE_MODEL_P (current_cpu))
1840 {
1841 FLD (in_Ri) = f_Ri;
1842 FLD (in_Rj) = f_Rj;
1843 FLD (in_h_gr_13) = 13;
1844 }
1845#endif
1846#undef FLD
7a292a7a 1847 return idesc;
c906108c
SS
1848 }
1849
7a292a7a 1850 extract_fmt_str13h:
c906108c 1851 {
7a292a7a 1852 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1853 CGEN_INSN_INT insn = base_insn;
1854#define FLD(f) abuf->fields.fmt_str13h.f
1855 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
1856
1857 EXTRACT_IFMT_ADD_CODE
1858
1859 /* Record the fields for the semantic handler. */
1860 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1861 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1862 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_str13h", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1863
1864#if WITH_PROFILE_MODEL_P
1865 /* Record the fields for profiling. */
1866 if (PROFILE_MODEL_P (current_cpu))
1867 {
1868 FLD (in_Ri) = f_Ri;
1869 FLD (in_Rj) = f_Rj;
1870 FLD (in_h_gr_13) = 13;
1871 }
1872#endif
1873#undef FLD
7a292a7a 1874 return idesc;
c906108c
SS
1875 }
1876
7a292a7a 1877 extract_fmt_str13b:
c906108c 1878 {
7a292a7a 1879 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1880 CGEN_INSN_INT insn = base_insn;
1881#define FLD(f) abuf->fields.fmt_str13b.f
1882 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
1883
1884 EXTRACT_IFMT_ADD_CODE
1885
1886 /* Record the fields for the semantic handler. */
1887 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1888 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1889 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_str13b", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1890
1891#if WITH_PROFILE_MODEL_P
1892 /* Record the fields for profiling. */
1893 if (PROFILE_MODEL_P (current_cpu))
1894 {
1895 FLD (in_Ri) = f_Ri;
1896 FLD (in_Rj) = f_Rj;
1897 FLD (in_h_gr_13) = 13;
1898 }
1899#endif
1900#undef FLD
7a292a7a 1901 return idesc;
c906108c
SS
1902 }
1903
7a292a7a 1904 extract_fmt_str14:
c906108c 1905 {
7a292a7a 1906 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1907 CGEN_INSN_INT insn = base_insn;
1908#define FLD(f) abuf->fields.fmt_str14.f
1909 EXTRACT_IFMT_LDR14_VARS /* f-op1 f-disp10 f-Ri */
1910
1911 EXTRACT_IFMT_LDR14_CODE
1912
1913 /* Record the fields for the semantic handler. */
1914 FLD (f_disp10) = f_disp10;
1915 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1916 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));
1917
1918#if WITH_PROFILE_MODEL_P
1919 /* Record the fields for profiling. */
1920 if (PROFILE_MODEL_P (current_cpu))
1921 {
1922 FLD (in_Ri) = f_Ri;
1923 FLD (in_h_gr_14) = 14;
1924 }
1925#endif
1926#undef FLD
7a292a7a 1927 return idesc;
c906108c
SS
1928 }
1929
7a292a7a 1930 extract_fmt_str14h:
c906108c 1931 {
7a292a7a 1932 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1933 CGEN_INSN_INT insn = base_insn;
1934#define FLD(f) abuf->fields.fmt_str14h.f
1935 EXTRACT_IFMT_LDR14UH_VARS /* f-op1 f-disp9 f-Ri */
1936
1937 EXTRACT_IFMT_LDR14UH_CODE
1938
1939 /* Record the fields for the semantic handler. */
1940 FLD (f_disp9) = f_disp9;
1941 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1942 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));
1943
1944#if WITH_PROFILE_MODEL_P
1945 /* Record the fields for profiling. */
1946 if (PROFILE_MODEL_P (current_cpu))
1947 {
1948 FLD (in_Ri) = f_Ri;
1949 FLD (in_h_gr_14) = 14;
1950 }
1951#endif
1952#undef FLD
7a292a7a 1953 return idesc;
c906108c
SS
1954 }
1955
7a292a7a 1956 extract_fmt_str14b:
c906108c 1957 {
7a292a7a 1958 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1959 CGEN_INSN_INT insn = base_insn;
1960#define FLD(f) abuf->fields.fmt_str14b.f
1961 EXTRACT_IFMT_LDR14UB_VARS /* f-op1 f-disp8 f-Ri */
1962
1963 EXTRACT_IFMT_LDR14UB_CODE
1964
1965 /* Record the fields for the semantic handler. */
1966 FLD (f_disp8) = f_disp8;
1967 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1968 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));
1969
1970#if WITH_PROFILE_MODEL_P
1971 /* Record the fields for profiling. */
1972 if (PROFILE_MODEL_P (current_cpu))
1973 {
1974 FLD (in_Ri) = f_Ri;
1975 FLD (in_h_gr_14) = 14;
1976 }
1977#endif
1978#undef FLD
7a292a7a 1979 return idesc;
c906108c
SS
1980 }
1981
7a292a7a 1982 extract_fmt_str15:
c906108c 1983 {
7a292a7a 1984 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
1985 CGEN_INSN_INT insn = base_insn;
1986#define FLD(f) abuf->fields.fmt_str15.f
1987 EXTRACT_IFMT_LDR15_VARS /* f-op1 f-op2 f-udisp6 f-Ri */
1988
1989 EXTRACT_IFMT_LDR15_CODE
1990
1991 /* Record the fields for the semantic handler. */
1992 FLD (f_udisp6) = f_udisp6;
1993 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1994 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));
1995
1996#if WITH_PROFILE_MODEL_P
1997 /* Record the fields for profiling. */
1998 if (PROFILE_MODEL_P (current_cpu))
1999 {
2000 FLD (in_Ri) = f_Ri;
2001 FLD (in_h_gr_15) = 15;
2002 }
2003#endif
2004#undef FLD
7a292a7a 2005 return idesc;
c906108c
SS
2006 }
2007
7a292a7a 2008 extract_fmt_str15gr:
c906108c 2009 {
7a292a7a 2010 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2011 CGEN_INSN_INT insn = base_insn;
2012#define FLD(f) abuf->fields.fmt_str15gr.f
2013 EXTRACT_IFMT_DIV0S_VARS /* f-op1 f-op2 f-op3 f-Ri */
2014
2015 EXTRACT_IFMT_DIV0S_CODE
2016
2017 /* Record the fields for the semantic handler. */
2018 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2019 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_str15gr", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2020
2021#if WITH_PROFILE_MODEL_P
2022 /* Record the fields for profiling. */
2023 if (PROFILE_MODEL_P (current_cpu))
2024 {
2025 FLD (in_Ri) = f_Ri;
2026 FLD (in_h_gr_15) = 15;
2027 FLD (out_h_gr_15) = 15;
2028 }
2029#endif
2030#undef FLD
7a292a7a 2031 return idesc;
c906108c
SS
2032 }
2033
7a292a7a 2034 extract_fmt_str15dr:
c906108c 2035 {
7a292a7a 2036 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2037 CGEN_INSN_INT insn = base_insn;
2038#define FLD(f) abuf->fields.fmt_str15dr.f
2039 EXTRACT_IFMT_LDR15DR_VARS /* f-op1 f-op2 f-op3 f-Rs2 */
2040
2041 EXTRACT_IFMT_LDR15DR_CODE
2042
2043 /* Record the fields for the semantic handler. */
2044 FLD (f_Rs2) = f_Rs2;
2045 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_str15dr", "f_Rs2 0x%x", 'x', f_Rs2, (char *) 0));
2046
2047#if WITH_PROFILE_MODEL_P
2048 /* Record the fields for profiling. */
2049 if (PROFILE_MODEL_P (current_cpu))
2050 {
2051 FLD (in_h_gr_15) = 15;
2052 FLD (out_h_gr_15) = 15;
2053 }
2054#endif
2055#undef FLD
7a292a7a 2056 return idesc;
c906108c
SS
2057 }
2058
7a292a7a 2059 extract_fmt_str15ps:
c906108c 2060 {
7a292a7a 2061 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2062 CGEN_INSN_INT insn = base_insn;
2063#define FLD(f) abuf->fields.fmt_str15ps.f
2064 EXTRACT_IFMT_DIV3_VARS /* f-op1 f-op2 f-op3 f-op4 */
2065
2066 EXTRACT_IFMT_DIV3_CODE
2067
2068 /* Record the fields for the semantic handler. */
2069 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_str15ps", (char *) 0));
2070
2071#if WITH_PROFILE_MODEL_P
2072 /* Record the fields for profiling. */
2073 if (PROFILE_MODEL_P (current_cpu))
2074 {
2075 FLD (in_h_gr_15) = 15;
2076 FLD (out_h_gr_15) = 15;
2077 }
2078#endif
2079#undef FLD
7a292a7a 2080 return idesc;
c906108c
SS
2081 }
2082
7a292a7a 2083 extract_fmt_mov:
c906108c 2084 {
7a292a7a 2085 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2086 CGEN_INSN_INT insn = base_insn;
2087#define FLD(f) abuf->fields.fmt_mov.f
2088 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
2089
2090 EXTRACT_IFMT_ADD_CODE
2091
2092 /* Record the fields for the semantic handler. */
2093 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
2094 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2095 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_mov", "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2096
2097#if WITH_PROFILE_MODEL_P
2098 /* Record the fields for profiling. */
2099 if (PROFILE_MODEL_P (current_cpu))
2100 {
2101 FLD (in_Rj) = f_Rj;
2102 FLD (out_Ri) = f_Ri;
2103 }
2104#endif
2105#undef FLD
7a292a7a 2106 return idesc;
c906108c
SS
2107 }
2108
7a292a7a 2109 extract_fmt_movdr:
c906108c 2110 {
7a292a7a 2111 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2112 CGEN_INSN_INT insn = base_insn;
2113#define FLD(f) abuf->fields.fmt_movdr.f
2114 EXTRACT_IFMT_MOVDR_VARS /* f-op1 f-op2 f-Rs1 f-Ri */
2115
2116 EXTRACT_IFMT_MOVDR_CODE
2117
2118 /* Record the fields for the semantic handler. */
2119 FLD (f_Rs1) = f_Rs1;
2120 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2121 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));
2122
2123#if WITH_PROFILE_MODEL_P
2124 /* Record the fields for profiling. */
2125 if (PROFILE_MODEL_P (current_cpu))
2126 {
2127 FLD (out_Ri) = f_Ri;
2128 }
2129#endif
2130#undef FLD
7a292a7a 2131 return idesc;
c906108c
SS
2132 }
2133
7a292a7a 2134 extract_fmt_movps:
c906108c 2135 {
7a292a7a 2136 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2137 CGEN_INSN_INT insn = base_insn;
2138#define FLD(f) abuf->fields.fmt_movps.f
2139 EXTRACT_IFMT_DIV0S_VARS /* f-op1 f-op2 f-op3 f-Ri */
2140
2141 EXTRACT_IFMT_DIV0S_CODE
2142
2143 /* Record the fields for the semantic handler. */
2144 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2145 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_movps", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2146
2147#if WITH_PROFILE_MODEL_P
2148 /* Record the fields for profiling. */
2149 if (PROFILE_MODEL_P (current_cpu))
2150 {
2151 FLD (out_Ri) = f_Ri;
2152 }
2153#endif
2154#undef FLD
7a292a7a 2155 return idesc;
c906108c
SS
2156 }
2157
7a292a7a 2158 extract_fmt_mov2dr:
c906108c 2159 {
7a292a7a 2160 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2161 CGEN_INSN_INT insn = base_insn;
2162#define FLD(f) abuf->fields.fmt_mov2dr.f
2163 EXTRACT_IFMT_MOVDR_VARS /* f-op1 f-op2 f-Rs1 f-Ri */
2164
2165 EXTRACT_IFMT_MOVDR_CODE
2166
2167 /* Record the fields for the semantic handler. */
2168 FLD (f_Rs1) = f_Rs1;
2169 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2170 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));
2171
2172#if WITH_PROFILE_MODEL_P
2173 /* Record the fields for profiling. */
2174 if (PROFILE_MODEL_P (current_cpu))
2175 {
2176 FLD (in_Ri) = f_Ri;
2177 }
2178#endif
2179#undef FLD
7a292a7a 2180 return idesc;
c906108c
SS
2181 }
2182
7a292a7a 2183 extract_fmt_mov2ps:
c906108c 2184 {
7a292a7a 2185 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2186 CGEN_INSN_INT insn = base_insn;
2187#define FLD(f) abuf->fields.fmt_mov2ps.f
2188 EXTRACT_IFMT_DIV0S_VARS /* f-op1 f-op2 f-op3 f-Ri */
2189
2190 EXTRACT_IFMT_DIV0S_CODE
2191
2192 /* Record the fields for the semantic handler. */
2193 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2194 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_mov2ps", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2195
2196#if WITH_PROFILE_MODEL_P
2197 /* Record the fields for profiling. */
2198 if (PROFILE_MODEL_P (current_cpu))
2199 {
2200 FLD (in_Ri) = f_Ri;
2201 }
2202#endif
2203#undef FLD
7a292a7a 2204 return idesc;
c906108c
SS
2205 }
2206
7a292a7a 2207 extract_fmt_jmp:
c906108c 2208 {
7a292a7a 2209 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2210 CGEN_INSN_INT insn = base_insn;
2211#define FLD(f) abuf->fields.cti.fields.fmt_jmp.f
2212 EXTRACT_IFMT_DIV0S_VARS /* f-op1 f-op2 f-op3 f-Ri */
2213
2214 EXTRACT_IFMT_DIV0S_CODE
2215
2216 /* Record the fields for the semantic handler. */
2217 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2218 SEM_BRANCH_INIT_EXTRACT (abuf);
2219 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_jmp", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2220
2221#if WITH_PROFILE_MODEL_P
2222 /* Record the fields for profiling. */
2223 if (PROFILE_MODEL_P (current_cpu))
2224 {
2225 FLD (in_Ri) = f_Ri;
2226 }
2227#endif
2228#undef FLD
7a292a7a 2229 return idesc;
c906108c
SS
2230 }
2231
7a292a7a 2232 extract_fmt_callr:
c906108c 2233 {
7a292a7a 2234 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2235 CGEN_INSN_INT insn = base_insn;
2236#define FLD(f) abuf->fields.cti.fields.fmt_callr.f
2237 EXTRACT_IFMT_DIV0S_VARS /* f-op1 f-op2 f-op3 f-Ri */
2238
2239 EXTRACT_IFMT_DIV0S_CODE
2240
2241 /* Record the fields for the semantic handler. */
2242 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2243 SEM_BRANCH_INIT_EXTRACT (abuf);
2244 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_callr", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2245
2246#if WITH_PROFILE_MODEL_P
2247 /* Record the fields for profiling. */
2248 if (PROFILE_MODEL_P (current_cpu))
2249 {
2250 FLD (in_Ri) = f_Ri;
2251 }
2252#endif
2253#undef FLD
7a292a7a 2254 return idesc;
c906108c
SS
2255 }
2256
7a292a7a 2257 extract_fmt_call:
c906108c 2258 {
7a292a7a 2259 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2260 CGEN_INSN_INT insn = base_insn;
2261#define FLD(f) abuf->fields.cti.fields.fmt_call.f
2262 EXTRACT_IFMT_CALL_VARS /* f-op1 f-op5 f-rel12 */
2263
2264 EXTRACT_IFMT_CALL_CODE
2265
2266 /* Record the fields for the semantic handler. */
2267 FLD (i_label12) = f_rel12;
2268 SEM_BRANCH_INIT_EXTRACT (abuf);
2269 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_call", "label12 0x%x", 'x', f_rel12, (char *) 0));
2270
2271#if WITH_PROFILE_MODEL_P
2272 /* Record the fields for profiling. */
2273 if (PROFILE_MODEL_P (current_cpu))
2274 {
2275 }
2276#endif
2277#undef FLD
7a292a7a 2278 return idesc;
c906108c
SS
2279 }
2280
7a292a7a 2281 extract_fmt_ret:
c906108c 2282 {
7a292a7a 2283 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2284 CGEN_INSN_INT insn = base_insn;
2285#define FLD(f) abuf->fields.cti.fields.fmt_ret.f
2286 EXTRACT_IFMT_DIV3_VARS /* f-op1 f-op2 f-op3 f-op4 */
2287
2288 EXTRACT_IFMT_DIV3_CODE
2289
2290 /* Record the fields for the semantic handler. */
2291 SEM_BRANCH_INIT_EXTRACT (abuf);
2292 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ret", (char *) 0));
2293
2294#if WITH_PROFILE_MODEL_P
2295 /* Record the fields for profiling. */
2296 if (PROFILE_MODEL_P (current_cpu))
2297 {
2298 }
2299#endif
2300#undef FLD
7a292a7a 2301 return idesc;
c906108c
SS
2302 }
2303
7a292a7a 2304 extract_fmt_int:
c906108c 2305 {
7a292a7a 2306 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2307 CGEN_INSN_INT insn = base_insn;
2308#define FLD(f) abuf->fields.cti.fields.fmt_int.f
2309 EXTRACT_IFMT_INT_VARS /* f-op1 f-op2 f-u8 */
2310
2311 EXTRACT_IFMT_INT_CODE
2312
2313 /* Record the fields for the semantic handler. */
2314 FLD (f_u8) = f_u8;
2315 SEM_BRANCH_INIT_EXTRACT (abuf);
2316 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_int", "f_u8 0x%x", 'x', f_u8, (char *) 0));
2317
2318#if WITH_PROFILE_MODEL_P
2319 /* Record the fields for profiling. */
2320 if (PROFILE_MODEL_P (current_cpu))
2321 {
2322 }
2323#endif
2324#undef FLD
7a292a7a 2325 return idesc;
c906108c
SS
2326 }
2327
7a292a7a 2328 extract_fmt_inte:
c906108c 2329 {
7a292a7a 2330 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2331 CGEN_INSN_INT insn = base_insn;
2332#define FLD(f) abuf->fields.cti.fields.fmt_inte.f
2333 EXTRACT_IFMT_DIV3_VARS /* f-op1 f-op2 f-op3 f-op4 */
2334
2335 EXTRACT_IFMT_DIV3_CODE
2336
2337 /* Record the fields for the semantic handler. */
2338 SEM_BRANCH_INIT_EXTRACT (abuf);
2339 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_inte", (char *) 0));
2340
2341#if WITH_PROFILE_MODEL_P
2342 /* Record the fields for profiling. */
2343 if (PROFILE_MODEL_P (current_cpu))
2344 {
2345 }
2346#endif
2347#undef FLD
7a292a7a 2348 return idesc;
c906108c
SS
2349 }
2350
7a292a7a 2351 extract_fmt_reti:
c906108c 2352 {
7a292a7a 2353 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2354 CGEN_INSN_INT insn = base_insn;
2355#define FLD(f) abuf->fields.cti.fields.fmt_reti.f
2356 EXTRACT_IFMT_DIV3_VARS /* f-op1 f-op2 f-op3 f-op4 */
2357
2358 EXTRACT_IFMT_DIV3_CODE
2359
2360 /* Record the fields for the semantic handler. */
2361 SEM_BRANCH_INIT_EXTRACT (abuf);
2362 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_reti", (char *) 0));
2363
2364#if WITH_PROFILE_MODEL_P
2365 /* Record the fields for profiling. */
2366 if (PROFILE_MODEL_P (current_cpu))
2367 {
2368 }
2369#endif
2370#undef FLD
7a292a7a 2371 return idesc;
c906108c
SS
2372 }
2373
7a292a7a 2374 extract_fmt_brad:
c906108c 2375 {
7a292a7a 2376 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2377 CGEN_INSN_INT insn = base_insn;
2378#define FLD(f) abuf->fields.cti.fields.fmt_brad.f
2379 EXTRACT_IFMT_BRAD_VARS /* f-op1 f-cc f-rel9 */
2380
2381 EXTRACT_IFMT_BRAD_CODE
2382
2383 /* Record the fields for the semantic handler. */
2384 FLD (i_label9) = f_rel9;
2385 SEM_BRANCH_INIT_EXTRACT (abuf);
2386 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_brad", "label9 0x%x", 'x', f_rel9, (char *) 0));
2387
2388#if WITH_PROFILE_MODEL_P
2389 /* Record the fields for profiling. */
2390 if (PROFILE_MODEL_P (current_cpu))
2391 {
2392 }
2393#endif
2394#undef FLD
7a292a7a 2395 return idesc;
c906108c
SS
2396 }
2397
7a292a7a 2398 extract_fmt_bnod:
c906108c 2399 {
7a292a7a 2400 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2401 CGEN_INSN_INT insn = base_insn;
2402#define FLD(f) abuf->fields.fmt_bnod.f
2403 EXTRACT_IFMT_BRAD_VARS /* f-op1 f-cc f-rel9 */
2404
2405 EXTRACT_IFMT_BRAD_CODE
2406
2407 /* Record the fields for the semantic handler. */
2408 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_bnod", (char *) 0));
2409
2410#undef FLD
7a292a7a 2411 return idesc;
c906108c
SS
2412 }
2413
7a292a7a 2414 extract_fmt_beqd:
c906108c 2415 {
7a292a7a 2416 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2417 CGEN_INSN_INT insn = base_insn;
2418#define FLD(f) abuf->fields.cti.fields.fmt_beqd.f
2419 EXTRACT_IFMT_BRAD_VARS /* f-op1 f-cc f-rel9 */
2420
2421 EXTRACT_IFMT_BRAD_CODE
2422
2423 /* Record the fields for the semantic handler. */
2424 FLD (i_label9) = f_rel9;
2425 SEM_BRANCH_INIT_EXTRACT (abuf);
2426 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_beqd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2427
2428#if WITH_PROFILE_MODEL_P
2429 /* Record the fields for profiling. */
2430 if (PROFILE_MODEL_P (current_cpu))
2431 {
2432 }
2433#endif
2434#undef FLD
7a292a7a 2435 return idesc;
c906108c
SS
2436 }
2437
7a292a7a 2438 extract_fmt_bcd:
c906108c 2439 {
7a292a7a 2440 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2441 CGEN_INSN_INT insn = base_insn;
2442#define FLD(f) abuf->fields.cti.fields.fmt_bcd.f
2443 EXTRACT_IFMT_BRAD_VARS /* f-op1 f-cc f-rel9 */
2444
2445 EXTRACT_IFMT_BRAD_CODE
2446
2447 /* Record the fields for the semantic handler. */
2448 FLD (i_label9) = f_rel9;
2449 SEM_BRANCH_INIT_EXTRACT (abuf);
2450 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_bcd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2451
2452#if WITH_PROFILE_MODEL_P
2453 /* Record the fields for profiling. */
2454 if (PROFILE_MODEL_P (current_cpu))
2455 {
2456 }
2457#endif
2458#undef FLD
7a292a7a 2459 return idesc;
c906108c
SS
2460 }
2461
7a292a7a 2462 extract_fmt_bnd:
c906108c 2463 {
7a292a7a 2464 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2465 CGEN_INSN_INT insn = base_insn;
2466#define FLD(f) abuf->fields.cti.fields.fmt_bnd.f
2467 EXTRACT_IFMT_BRAD_VARS /* f-op1 f-cc f-rel9 */
2468
2469 EXTRACT_IFMT_BRAD_CODE
2470
2471 /* Record the fields for the semantic handler. */
2472 FLD (i_label9) = f_rel9;
2473 SEM_BRANCH_INIT_EXTRACT (abuf);
2474 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_bnd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2475
2476#if WITH_PROFILE_MODEL_P
2477 /* Record the fields for profiling. */
2478 if (PROFILE_MODEL_P (current_cpu))
2479 {
2480 }
2481#endif
2482#undef FLD
7a292a7a 2483 return idesc;
c906108c
SS
2484 }
2485
7a292a7a 2486 extract_fmt_bvd:
c906108c 2487 {
7a292a7a 2488 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2489 CGEN_INSN_INT insn = base_insn;
2490#define FLD(f) abuf->fields.cti.fields.fmt_bvd.f
2491 EXTRACT_IFMT_BRAD_VARS /* f-op1 f-cc f-rel9 */
2492
2493 EXTRACT_IFMT_BRAD_CODE
2494
2495 /* Record the fields for the semantic handler. */
2496 FLD (i_label9) = f_rel9;
2497 SEM_BRANCH_INIT_EXTRACT (abuf);
2498 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_bvd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2499
2500#if WITH_PROFILE_MODEL_P
2501 /* Record the fields for profiling. */
2502 if (PROFILE_MODEL_P (current_cpu))
2503 {
2504 }
2505#endif
2506#undef FLD
7a292a7a 2507 return idesc;
c906108c
SS
2508 }
2509
7a292a7a 2510 extract_fmt_bltd:
c906108c 2511 {
7a292a7a 2512 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2513 CGEN_INSN_INT insn = base_insn;
2514#define FLD(f) abuf->fields.cti.fields.fmt_bltd.f
2515 EXTRACT_IFMT_BRAD_VARS /* f-op1 f-cc f-rel9 */
2516
2517 EXTRACT_IFMT_BRAD_CODE
2518
2519 /* Record the fields for the semantic handler. */
2520 FLD (i_label9) = f_rel9;
2521 SEM_BRANCH_INIT_EXTRACT (abuf);
2522 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_bltd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2523
2524#if WITH_PROFILE_MODEL_P
2525 /* Record the fields for profiling. */
2526 if (PROFILE_MODEL_P (current_cpu))
2527 {
2528 }
2529#endif
2530#undef FLD
7a292a7a 2531 return idesc;
c906108c
SS
2532 }
2533
7a292a7a 2534 extract_fmt_bled:
c906108c 2535 {
7a292a7a 2536 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2537 CGEN_INSN_INT insn = base_insn;
2538#define FLD(f) abuf->fields.cti.fields.fmt_bled.f
2539 EXTRACT_IFMT_BRAD_VARS /* f-op1 f-cc f-rel9 */
2540
2541 EXTRACT_IFMT_BRAD_CODE
2542
2543 /* Record the fields for the semantic handler. */
2544 FLD (i_label9) = f_rel9;
2545 SEM_BRANCH_INIT_EXTRACT (abuf);
2546 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_bled", "label9 0x%x", 'x', f_rel9, (char *) 0));
2547
2548#if WITH_PROFILE_MODEL_P
2549 /* Record the fields for profiling. */
2550 if (PROFILE_MODEL_P (current_cpu))
2551 {
2552 }
2553#endif
2554#undef FLD
7a292a7a 2555 return idesc;
c906108c
SS
2556 }
2557
7a292a7a 2558 extract_fmt_blsd:
c906108c 2559 {
7a292a7a 2560 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2561 CGEN_INSN_INT insn = base_insn;
2562#define FLD(f) abuf->fields.cti.fields.fmt_blsd.f
2563 EXTRACT_IFMT_BRAD_VARS /* f-op1 f-cc f-rel9 */
2564
2565 EXTRACT_IFMT_BRAD_CODE
2566
2567 /* Record the fields for the semantic handler. */
2568 FLD (i_label9) = f_rel9;
2569 SEM_BRANCH_INIT_EXTRACT (abuf);
2570 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_blsd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2571
2572#if WITH_PROFILE_MODEL_P
2573 /* Record the fields for profiling. */
2574 if (PROFILE_MODEL_P (current_cpu))
2575 {
2576 }
2577#endif
2578#undef FLD
7a292a7a 2579 return idesc;
c906108c
SS
2580 }
2581
7a292a7a 2582 extract_fmt_dmovr13:
c906108c 2583 {
7a292a7a 2584 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2585 CGEN_INSN_INT insn = base_insn;
2586#define FLD(f) abuf->fields.fmt_dmovr13.f
2587 EXTRACT_IFMT_DMOVR13_VARS /* f-op1 f-op2 f-dir10 */
2588
2589 EXTRACT_IFMT_DMOVR13_CODE
2590
2591 /* Record the fields for the semantic handler. */
2592 FLD (f_dir10) = f_dir10;
2593 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmovr13", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2594
2595#if WITH_PROFILE_MODEL_P
2596 /* Record the fields for profiling. */
2597 if (PROFILE_MODEL_P (current_cpu))
2598 {
2599 FLD (in_h_gr_13) = 13;
2600 }
2601#endif
2602#undef FLD
7a292a7a 2603 return idesc;
c906108c
SS
2604 }
2605
7a292a7a 2606 extract_fmt_dmovr13h:
c906108c 2607 {
7a292a7a 2608 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2609 CGEN_INSN_INT insn = base_insn;
2610#define FLD(f) abuf->fields.fmt_dmovr13h.f
2611 EXTRACT_IFMT_DMOVR13H_VARS /* f-op1 f-op2 f-dir9 */
2612
2613 EXTRACT_IFMT_DMOVR13H_CODE
2614
2615 /* Record the fields for the semantic handler. */
2616 FLD (f_dir9) = f_dir9;
2617 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmovr13h", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2618
2619#if WITH_PROFILE_MODEL_P
2620 /* Record the fields for profiling. */
2621 if (PROFILE_MODEL_P (current_cpu))
2622 {
2623 FLD (in_h_gr_13) = 13;
2624 }
2625#endif
2626#undef FLD
7a292a7a 2627 return idesc;
c906108c
SS
2628 }
2629
7a292a7a 2630 extract_fmt_dmovr13b:
c906108c 2631 {
7a292a7a 2632 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2633 CGEN_INSN_INT insn = base_insn;
2634#define FLD(f) abuf->fields.fmt_dmovr13b.f
2635 EXTRACT_IFMT_DMOVR13B_VARS /* f-op1 f-op2 f-dir8 */
2636
2637 EXTRACT_IFMT_DMOVR13B_CODE
2638
2639 /* Record the fields for the semantic handler. */
2640 FLD (f_dir8) = f_dir8;
2641 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmovr13b", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2642
2643#if WITH_PROFILE_MODEL_P
2644 /* Record the fields for profiling. */
2645 if (PROFILE_MODEL_P (current_cpu))
2646 {
2647 FLD (in_h_gr_13) = 13;
2648 }
2649#endif
2650#undef FLD
7a292a7a 2651 return idesc;
c906108c
SS
2652 }
2653
7a292a7a 2654 extract_fmt_dmovr13pi:
c906108c 2655 {
7a292a7a 2656 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2657 CGEN_INSN_INT insn = base_insn;
2658#define FLD(f) abuf->fields.fmt_dmovr13pi.f
2659 EXTRACT_IFMT_DMOVR13_VARS /* f-op1 f-op2 f-dir10 */
2660
2661 EXTRACT_IFMT_DMOVR13_CODE
2662
2663 /* Record the fields for the semantic handler. */
2664 FLD (f_dir10) = f_dir10;
2665 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmovr13pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2666
2667#if WITH_PROFILE_MODEL_P
2668 /* Record the fields for profiling. */
2669 if (PROFILE_MODEL_P (current_cpu))
2670 {
2671 FLD (in_h_gr_13) = 13;
2672 FLD (out_h_gr_13) = 13;
2673 }
2674#endif
2675#undef FLD
7a292a7a 2676 return idesc;
c906108c
SS
2677 }
2678
7a292a7a 2679 extract_fmt_dmovr13pih:
c906108c 2680 {
7a292a7a 2681 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2682 CGEN_INSN_INT insn = base_insn;
2683#define FLD(f) abuf->fields.fmt_dmovr13pih.f
2684 EXTRACT_IFMT_DMOVR13H_VARS /* f-op1 f-op2 f-dir9 */
2685
2686 EXTRACT_IFMT_DMOVR13H_CODE
2687
2688 /* Record the fields for the semantic handler. */
2689 FLD (f_dir9) = f_dir9;
2690 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmovr13pih", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2691
2692#if WITH_PROFILE_MODEL_P
2693 /* Record the fields for profiling. */
2694 if (PROFILE_MODEL_P (current_cpu))
2695 {
2696 FLD (in_h_gr_13) = 13;
2697 FLD (out_h_gr_13) = 13;
2698 }
2699#endif
2700#undef FLD
7a292a7a 2701 return idesc;
c906108c
SS
2702 }
2703
7a292a7a 2704 extract_fmt_dmovr13pib:
c906108c 2705 {
7a292a7a 2706 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2707 CGEN_INSN_INT insn = base_insn;
2708#define FLD(f) abuf->fields.fmt_dmovr13pib.f
2709 EXTRACT_IFMT_DMOVR13B_VARS /* f-op1 f-op2 f-dir8 */
2710
2711 EXTRACT_IFMT_DMOVR13B_CODE
2712
2713 /* Record the fields for the semantic handler. */
2714 FLD (f_dir8) = f_dir8;
2715 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmovr13pib", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2716
2717#if WITH_PROFILE_MODEL_P
2718 /* Record the fields for profiling. */
2719 if (PROFILE_MODEL_P (current_cpu))
2720 {
2721 FLD (in_h_gr_13) = 13;
2722 FLD (out_h_gr_13) = 13;
2723 }
2724#endif
2725#undef FLD
7a292a7a 2726 return idesc;
c906108c
SS
2727 }
2728
7a292a7a 2729 extract_fmt_dmovr15pi:
c906108c 2730 {
7a292a7a 2731 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2732 CGEN_INSN_INT insn = base_insn;
2733#define FLD(f) abuf->fields.fmt_dmovr15pi.f
2734 EXTRACT_IFMT_DMOVR13_VARS /* f-op1 f-op2 f-dir10 */
2735
2736 EXTRACT_IFMT_DMOVR13_CODE
2737
2738 /* Record the fields for the semantic handler. */
2739 FLD (f_dir10) = f_dir10;
2740 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmovr15pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2741
2742#if WITH_PROFILE_MODEL_P
2743 /* Record the fields for profiling. */
2744 if (PROFILE_MODEL_P (current_cpu))
2745 {
2746 FLD (in_h_gr_15) = 15;
2747 FLD (out_h_gr_15) = 15;
2748 }
2749#endif
2750#undef FLD
7a292a7a 2751 return idesc;
c906108c
SS
2752 }
2753
7a292a7a 2754 extract_fmt_dmov2r13:
c906108c 2755 {
7a292a7a 2756 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2757 CGEN_INSN_INT insn = base_insn;
2758#define FLD(f) abuf->fields.fmt_dmov2r13.f
2759 EXTRACT_IFMT_DMOVR13_VARS /* f-op1 f-op2 f-dir10 */
2760
2761 EXTRACT_IFMT_DMOVR13_CODE
2762
2763 /* Record the fields for the semantic handler. */
2764 FLD (f_dir10) = f_dir10;
2765 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmov2r13", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2766
2767#if WITH_PROFILE_MODEL_P
2768 /* Record the fields for profiling. */
2769 if (PROFILE_MODEL_P (current_cpu))
2770 {
2771 FLD (out_h_gr_13) = 13;
2772 }
2773#endif
2774#undef FLD
7a292a7a 2775 return idesc;
c906108c
SS
2776 }
2777
7a292a7a 2778 extract_fmt_dmov2r13h:
c906108c 2779 {
7a292a7a 2780 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2781 CGEN_INSN_INT insn = base_insn;
2782#define FLD(f) abuf->fields.fmt_dmov2r13h.f
2783 EXTRACT_IFMT_DMOVR13H_VARS /* f-op1 f-op2 f-dir9 */
2784
2785 EXTRACT_IFMT_DMOVR13H_CODE
2786
2787 /* Record the fields for the semantic handler. */
2788 FLD (f_dir9) = f_dir9;
2789 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmov2r13h", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2790
2791#if WITH_PROFILE_MODEL_P
2792 /* Record the fields for profiling. */
2793 if (PROFILE_MODEL_P (current_cpu))
2794 {
2795 FLD (out_h_gr_13) = 13;
2796 }
2797#endif
2798#undef FLD
7a292a7a 2799 return idesc;
c906108c
SS
2800 }
2801
7a292a7a 2802 extract_fmt_dmov2r13b:
c906108c 2803 {
7a292a7a 2804 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2805 CGEN_INSN_INT insn = base_insn;
2806#define FLD(f) abuf->fields.fmt_dmov2r13b.f
2807 EXTRACT_IFMT_DMOVR13B_VARS /* f-op1 f-op2 f-dir8 */
2808
2809 EXTRACT_IFMT_DMOVR13B_CODE
2810
2811 /* Record the fields for the semantic handler. */
2812 FLD (f_dir8) = f_dir8;
2813 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmov2r13b", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2814
2815#if WITH_PROFILE_MODEL_P
2816 /* Record the fields for profiling. */
2817 if (PROFILE_MODEL_P (current_cpu))
2818 {
2819 FLD (out_h_gr_13) = 13;
2820 }
2821#endif
2822#undef FLD
7a292a7a 2823 return idesc;
c906108c
SS
2824 }
2825
7a292a7a 2826 extract_fmt_dmov2r13pi:
c906108c 2827 {
7a292a7a 2828 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2829 CGEN_INSN_INT insn = base_insn;
2830#define FLD(f) abuf->fields.fmt_dmov2r13pi.f
2831 EXTRACT_IFMT_DMOVR13_VARS /* f-op1 f-op2 f-dir10 */
2832
2833 EXTRACT_IFMT_DMOVR13_CODE
2834
2835 /* Record the fields for the semantic handler. */
2836 FLD (f_dir10) = f_dir10;
2837 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmov2r13pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2838
2839#if WITH_PROFILE_MODEL_P
2840 /* Record the fields for profiling. */
2841 if (PROFILE_MODEL_P (current_cpu))
2842 {
2843 FLD (in_h_gr_13) = 13;
2844 FLD (out_h_gr_13) = 13;
2845 }
2846#endif
2847#undef FLD
7a292a7a 2848 return idesc;
c906108c
SS
2849 }
2850
7a292a7a 2851 extract_fmt_dmov2r13pih:
c906108c 2852 {
7a292a7a 2853 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2854 CGEN_INSN_INT insn = base_insn;
2855#define FLD(f) abuf->fields.fmt_dmov2r13pih.f
2856 EXTRACT_IFMT_DMOVR13H_VARS /* f-op1 f-op2 f-dir9 */
2857
2858 EXTRACT_IFMT_DMOVR13H_CODE
2859
2860 /* Record the fields for the semantic handler. */
2861 FLD (f_dir9) = f_dir9;
2862 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmov2r13pih", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2863
2864#if WITH_PROFILE_MODEL_P
2865 /* Record the fields for profiling. */
2866 if (PROFILE_MODEL_P (current_cpu))
2867 {
2868 FLD (in_h_gr_13) = 13;
2869 FLD (out_h_gr_13) = 13;
2870 }
2871#endif
2872#undef FLD
7a292a7a 2873 return idesc;
c906108c
SS
2874 }
2875
7a292a7a 2876 extract_fmt_dmov2r13pib:
c906108c 2877 {
7a292a7a 2878 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2879 CGEN_INSN_INT insn = base_insn;
2880#define FLD(f) abuf->fields.fmt_dmov2r13pib.f
2881 EXTRACT_IFMT_DMOVR13B_VARS /* f-op1 f-op2 f-dir8 */
2882
2883 EXTRACT_IFMT_DMOVR13B_CODE
2884
2885 /* Record the fields for the semantic handler. */
2886 FLD (f_dir8) = f_dir8;
2887 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmov2r13pib", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2888
2889#if WITH_PROFILE_MODEL_P
2890 /* Record the fields for profiling. */
2891 if (PROFILE_MODEL_P (current_cpu))
2892 {
2893 FLD (in_h_gr_13) = 13;
2894 FLD (out_h_gr_13) = 13;
2895 }
2896#endif
2897#undef FLD
7a292a7a 2898 return idesc;
c906108c
SS
2899 }
2900
7a292a7a 2901 extract_fmt_dmov2r15pd:
c906108c 2902 {
7a292a7a 2903 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2904 CGEN_INSN_INT insn = base_insn;
2905#define FLD(f) abuf->fields.fmt_dmov2r15pd.f
2906 EXTRACT_IFMT_DMOVR13_VARS /* f-op1 f-op2 f-dir10 */
2907
2908 EXTRACT_IFMT_DMOVR13_CODE
2909
2910 /* Record the fields for the semantic handler. */
2911 FLD (f_dir10) = f_dir10;
2912 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_dmov2r15pd", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2913
2914#if WITH_PROFILE_MODEL_P
2915 /* Record the fields for profiling. */
2916 if (PROFILE_MODEL_P (current_cpu))
2917 {
2918 FLD (in_h_gr_15) = 15;
2919 FLD (out_h_gr_15) = 15;
2920 }
2921#endif
2922#undef FLD
7a292a7a 2923 return idesc;
c906108c
SS
2924 }
2925
7a292a7a 2926 extract_fmt_ldres:
c906108c 2927 {
7a292a7a 2928 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2929 CGEN_INSN_INT insn = base_insn;
2930#define FLD(f) abuf->fields.fmt_ldres.f
2931 EXTRACT_IFMT_ADDI_VARS /* f-op1 f-op2 f-u4 f-Ri */
2932
2933 EXTRACT_IFMT_ADDI_CODE
2934
2935 /* Record the fields for the semantic handler. */
2936 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2937 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldres", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2938
2939#if WITH_PROFILE_MODEL_P
2940 /* Record the fields for profiling. */
2941 if (PROFILE_MODEL_P (current_cpu))
2942 {
2943 FLD (in_Ri) = f_Ri;
2944 FLD (out_Ri) = f_Ri;
2945 }
2946#endif
2947#undef FLD
7a292a7a 2948 return idesc;
c906108c
SS
2949 }
2950
7a292a7a 2951 extract_fmt_copop:
c906108c 2952 {
7a292a7a 2953 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2954 CGEN_INSN_INT insn = base_insn;
2955#define FLD(f) abuf->fields.fmt_copop.f
2956 EXTRACT_IFMT_COPOP_VARS /* f-op1 f-ccc f-op2 f-op3 f-CRj f-u4c f-CRi */
2957
2958 EXTRACT_IFMT_COPOP_CODE
2959
2960 /* Record the fields for the semantic handler. */
2961 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_copop", (char *) 0));
2962
2963#undef FLD
7a292a7a 2964 return idesc;
c906108c
SS
2965 }
2966
7a292a7a 2967 extract_fmt_copld:
c906108c 2968 {
7a292a7a 2969 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2970 CGEN_INSN_INT insn = base_insn;
2971#define FLD(f) abuf->fields.fmt_copld.f
2972 EXTRACT_IFMT_COPLD_VARS /* f-op1 f-ccc f-op2 f-op3 f-Rjc f-u4c f-CRi */
2973
2974 EXTRACT_IFMT_COPLD_CODE
2975
2976 /* Record the fields for the semantic handler. */
2977 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_copld", (char *) 0));
2978
2979#undef FLD
7a292a7a 2980 return idesc;
c906108c
SS
2981 }
2982
7a292a7a 2983 extract_fmt_copst:
c906108c 2984 {
7a292a7a 2985 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
2986 CGEN_INSN_INT insn = base_insn;
2987#define FLD(f) abuf->fields.fmt_copst.f
2988 EXTRACT_IFMT_COPST_VARS /* f-op1 f-ccc f-op2 f-op3 f-CRj f-u4c f-Ric */
2989
2990 EXTRACT_IFMT_COPST_CODE
2991
2992 /* Record the fields for the semantic handler. */
2993 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_copst", (char *) 0));
2994
2995#undef FLD
7a292a7a 2996 return idesc;
c906108c
SS
2997 }
2998
7a292a7a 2999 extract_fmt_nop:
c906108c 3000 {
7a292a7a 3001 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
3002 CGEN_INSN_INT insn = base_insn;
3003#define FLD(f) abuf->fields.fmt_nop.f
3004 EXTRACT_IFMT_DIV3_VARS /* f-op1 f-op2 f-op3 f-op4 */
3005
3006 EXTRACT_IFMT_DIV3_CODE
3007
3008 /* Record the fields for the semantic handler. */
3009 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_nop", (char *) 0));
3010
3011#undef FLD
7a292a7a 3012 return idesc;
c906108c
SS
3013 }
3014
7a292a7a 3015 extract_fmt_andccr:
c906108c 3016 {
7a292a7a 3017 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
3018 CGEN_INSN_INT insn = base_insn;
3019#define FLD(f) abuf->fields.fmt_andccr.f
3020 EXTRACT_IFMT_INT_VARS /* f-op1 f-op2 f-u8 */
3021
3022 EXTRACT_IFMT_INT_CODE
3023
3024 /* Record the fields for the semantic handler. */
3025 FLD (f_u8) = f_u8;
3026 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_andccr", "f_u8 0x%x", 'x', f_u8, (char *) 0));
3027
3028#undef FLD
7a292a7a 3029 return idesc;
c906108c
SS
3030 }
3031
7a292a7a 3032 extract_fmt_stilm:
c906108c 3033 {
7a292a7a 3034 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
3035 CGEN_INSN_INT insn = base_insn;
3036#define FLD(f) abuf->fields.fmt_stilm.f
3037 EXTRACT_IFMT_INT_VARS /* f-op1 f-op2 f-u8 */
3038
3039 EXTRACT_IFMT_INT_CODE
3040
3041 /* Record the fields for the semantic handler. */
3042 FLD (f_u8) = f_u8;
3043 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_stilm", "f_u8 0x%x", 'x', f_u8, (char *) 0));
3044
3045#undef FLD
7a292a7a 3046 return idesc;
c906108c
SS
3047 }
3048
7a292a7a 3049 extract_fmt_addsp:
c906108c 3050 {
7a292a7a 3051 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
3052 CGEN_INSN_INT insn = base_insn;
3053#define FLD(f) abuf->fields.fmt_addsp.f
3054 EXTRACT_IFMT_ADDSP_VARS /* f-op1 f-op2 f-s10 */
3055
3056 EXTRACT_IFMT_ADDSP_CODE
3057
3058 /* Record the fields for the semantic handler. */
3059 FLD (f_s10) = f_s10;
3060 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_addsp", "f_s10 0x%x", 'x', f_s10, (char *) 0));
3061
3062#if WITH_PROFILE_MODEL_P
3063 /* Record the fields for profiling. */
3064 if (PROFILE_MODEL_P (current_cpu))
3065 {
3066 FLD (in_h_gr_15) = 15;
3067 FLD (out_h_gr_15) = 15;
3068 }
3069#endif
3070#undef FLD
7a292a7a 3071 return idesc;
c906108c
SS
3072 }
3073
7a292a7a 3074 extract_fmt_extsb:
c906108c 3075 {
7a292a7a 3076 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
3077 CGEN_INSN_INT insn = base_insn;
3078#define FLD(f) abuf->fields.fmt_extsb.f
3079 EXTRACT_IFMT_DIV0S_VARS /* f-op1 f-op2 f-op3 f-Ri */
3080
3081 EXTRACT_IFMT_DIV0S_CODE
3082
3083 /* Record the fields for the semantic handler. */
3084 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
3085 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_extsb", "Ri 0x%x", 'x', f_Ri, (char *) 0));
3086
3087#if WITH_PROFILE_MODEL_P
3088 /* Record the fields for profiling. */
3089 if (PROFILE_MODEL_P (current_cpu))
3090 {
3091 FLD (in_Ri) = f_Ri;
3092 FLD (out_Ri) = f_Ri;
3093 }
3094#endif
3095#undef FLD
7a292a7a 3096 return idesc;
c906108c
SS
3097 }
3098
7a292a7a 3099 extract_fmt_extub:
c906108c 3100 {
7a292a7a 3101 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
3102 CGEN_INSN_INT insn = base_insn;
3103#define FLD(f) abuf->fields.fmt_extub.f
3104 EXTRACT_IFMT_DIV0S_VARS /* f-op1 f-op2 f-op3 f-Ri */
3105
3106 EXTRACT_IFMT_DIV0S_CODE
3107
3108 /* Record the fields for the semantic handler. */
3109 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
3110 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_extub", "Ri 0x%x", 'x', f_Ri, (char *) 0));
3111
3112#if WITH_PROFILE_MODEL_P
3113 /* Record the fields for profiling. */
3114 if (PROFILE_MODEL_P (current_cpu))
3115 {
3116 FLD (in_Ri) = f_Ri;
3117 FLD (out_Ri) = f_Ri;
3118 }
3119#endif
3120#undef FLD
7a292a7a 3121 return idesc;
c906108c
SS
3122 }
3123
7a292a7a 3124 extract_fmt_extsh:
c906108c 3125 {
7a292a7a 3126 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
3127 CGEN_INSN_INT insn = base_insn;
3128#define FLD(f) abuf->fields.fmt_extsh.f
3129 EXTRACT_IFMT_DIV0S_VARS /* f-op1 f-op2 f-op3 f-Ri */
3130
3131 EXTRACT_IFMT_DIV0S_CODE
3132
3133 /* Record the fields for the semantic handler. */
3134 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
3135 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_extsh", "Ri 0x%x", 'x', f_Ri, (char *) 0));
3136
3137#if WITH_PROFILE_MODEL_P
3138 /* Record the fields for profiling. */
3139 if (PROFILE_MODEL_P (current_cpu))
3140 {
3141 FLD (in_Ri) = f_Ri;
3142 FLD (out_Ri) = f_Ri;
3143 }
3144#endif
3145#undef FLD
7a292a7a 3146 return idesc;
c906108c
SS
3147 }
3148
7a292a7a 3149 extract_fmt_extuh:
c906108c 3150 {
7a292a7a 3151 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
3152 CGEN_INSN_INT insn = base_insn;
3153#define FLD(f) abuf->fields.fmt_extuh.f
3154 EXTRACT_IFMT_DIV0S_VARS /* f-op1 f-op2 f-op3 f-Ri */
3155
3156 EXTRACT_IFMT_DIV0S_CODE
3157
3158 /* Record the fields for the semantic handler. */
3159 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
3160 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_extuh", "Ri 0x%x", 'x', f_Ri, (char *) 0));
3161
3162#if WITH_PROFILE_MODEL_P
3163 /* Record the fields for profiling. */
3164 if (PROFILE_MODEL_P (current_cpu))
3165 {
3166 FLD (in_Ri) = f_Ri;
3167 FLD (out_Ri) = f_Ri;
3168 }
3169#endif
3170#undef FLD
7a292a7a 3171 return idesc;
c906108c
SS
3172 }
3173
7a292a7a 3174 extract_fmt_ldm0:
c906108c 3175 {
7a292a7a 3176 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
3177 CGEN_INSN_INT insn = base_insn;
3178#define FLD(f) abuf->fields.fmt_ldm0.f
3179 EXTRACT_IFMT_LDM0_VARS /* f-op1 f-op2 f-reglist_low_ld */
3180
3181 EXTRACT_IFMT_LDM0_CODE
3182
3183 /* Record the fields for the semantic handler. */
3184 FLD (f_reglist_low_ld) = f_reglist_low_ld;
3185 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldm0", "f_reglist_low_ld 0x%x", 'x', f_reglist_low_ld, (char *) 0));
3186
3187#if WITH_PROFILE_MODEL_P
3188 /* Record the fields for profiling. */
3189 if (PROFILE_MODEL_P (current_cpu))
3190 {
3191 FLD (in_h_gr_15) = 15;
3192 FLD (out_h_gr_0) = 0;
3193 FLD (out_h_gr_1) = 1;
3194 FLD (out_h_gr_15) = 15;
3195 FLD (out_h_gr_2) = 2;
3196 FLD (out_h_gr_3) = 3;
3197 FLD (out_h_gr_4) = 4;
3198 FLD (out_h_gr_5) = 5;
3199 FLD (out_h_gr_6) = 6;
3200 FLD (out_h_gr_7) = 7;
3201 }
3202#endif
3203#undef FLD
7a292a7a 3204 return idesc;
c906108c
SS
3205 }
3206
7a292a7a 3207 extract_fmt_ldm1:
c906108c 3208 {
7a292a7a 3209 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
3210 CGEN_INSN_INT insn = base_insn;
3211#define FLD(f) abuf->fields.fmt_ldm1.f
3212 EXTRACT_IFMT_LDM1_VARS /* f-op1 f-op2 f-reglist_hi_ld */
3213
3214 EXTRACT_IFMT_LDM1_CODE
3215
3216 /* Record the fields for the semantic handler. */
3217 FLD (f_reglist_hi_ld) = f_reglist_hi_ld;
3218 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_ldm1", "f_reglist_hi_ld 0x%x", 'x', f_reglist_hi_ld, (char *) 0));
3219
3220#if WITH_PROFILE_MODEL_P
3221 /* Record the fields for profiling. */
3222 if (PROFILE_MODEL_P (current_cpu))
3223 {
3224 FLD (in_h_gr_15) = 15;
3225 FLD (out_h_gr_10) = 10;
3226 FLD (out_h_gr_11) = 11;
3227 FLD (out_h_gr_12) = 12;
3228 FLD (out_h_gr_13) = 13;
3229 FLD (out_h_gr_14) = 14;
3230 FLD (out_h_gr_15) = 15;
3231 FLD (out_h_gr_8) = 8;
3232 FLD (out_h_gr_9) = 9;
3233 }
3234#endif
3235#undef FLD
7a292a7a 3236 return idesc;
c906108c
SS
3237 }
3238
7a292a7a 3239 extract_fmt_stm0:
c906108c 3240 {
7a292a7a 3241 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
3242 CGEN_INSN_INT insn = base_insn;
3243#define FLD(f) abuf->fields.fmt_stm0.f
3244 EXTRACT_IFMT_STM0_VARS /* f-op1 f-op2 f-reglist_low_st */
3245
3246 EXTRACT_IFMT_STM0_CODE
3247
3248 /* Record the fields for the semantic handler. */
3249 FLD (f_reglist_low_st) = f_reglist_low_st;
3250 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_stm0", "f_reglist_low_st 0x%x", 'x', f_reglist_low_st, (char *) 0));
3251
3252#if WITH_PROFILE_MODEL_P
3253 /* Record the fields for profiling. */
3254 if (PROFILE_MODEL_P (current_cpu))
3255 {
3256 FLD (in_h_gr_0) = 0;
3257 FLD (in_h_gr_1) = 1;
3258 FLD (in_h_gr_15) = 15;
3259 FLD (in_h_gr_2) = 2;
3260 FLD (in_h_gr_3) = 3;
3261 FLD (in_h_gr_4) = 4;
3262 FLD (in_h_gr_5) = 5;
3263 FLD (in_h_gr_6) = 6;
3264 FLD (in_h_gr_7) = 7;
3265 FLD (out_h_gr_15) = 15;
3266 }
3267#endif
3268#undef FLD
7a292a7a 3269 return idesc;
c906108c
SS
3270 }
3271
7a292a7a 3272 extract_fmt_stm1:
c906108c 3273 {
7a292a7a 3274 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
3275 CGEN_INSN_INT insn = base_insn;
3276#define FLD(f) abuf->fields.fmt_stm1.f
3277 EXTRACT_IFMT_STM1_VARS /* f-op1 f-op2 f-reglist_hi_st */
3278
3279 EXTRACT_IFMT_STM1_CODE
3280
3281 /* Record the fields for the semantic handler. */
3282 FLD (f_reglist_hi_st) = f_reglist_hi_st;
3283 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_stm1", "f_reglist_hi_st 0x%x", 'x', f_reglist_hi_st, (char *) 0));
3284
3285#if WITH_PROFILE_MODEL_P
3286 /* Record the fields for profiling. */
3287 if (PROFILE_MODEL_P (current_cpu))
3288 {
3289 FLD (in_h_gr_10) = 10;
3290 FLD (in_h_gr_11) = 11;
3291 FLD (in_h_gr_12) = 12;
3292 FLD (in_h_gr_13) = 13;
3293 FLD (in_h_gr_14) = 14;
3294 FLD (in_h_gr_15) = 15;
3295 FLD (in_h_gr_8) = 8;
3296 FLD (in_h_gr_9) = 9;
3297 FLD (out_h_gr_15) = 15;
3298 }
3299#endif
3300#undef FLD
7a292a7a 3301 return idesc;
c906108c
SS
3302 }
3303
7a292a7a 3304 extract_fmt_enter:
c906108c 3305 {
7a292a7a 3306 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
3307 CGEN_INSN_INT insn = base_insn;
3308#define FLD(f) abuf->fields.fmt_enter.f
3309 EXTRACT_IFMT_ENTER_VARS /* f-op1 f-op2 f-u10 */
3310
3311 EXTRACT_IFMT_ENTER_CODE
3312
3313 /* Record the fields for the semantic handler. */
3314 FLD (f_u10) = f_u10;
3315 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_enter", "f_u10 0x%x", 'x', f_u10, (char *) 0));
3316
3317#if WITH_PROFILE_MODEL_P
3318 /* Record the fields for profiling. */
3319 if (PROFILE_MODEL_P (current_cpu))
3320 {
3321 FLD (in_h_gr_14) = 14;
3322 FLD (in_h_gr_15) = 15;
3323 FLD (out_h_gr_14) = 14;
3324 FLD (out_h_gr_15) = 15;
3325 }
3326#endif
3327#undef FLD
7a292a7a 3328 return idesc;
c906108c
SS
3329 }
3330
7a292a7a 3331 extract_fmt_leave:
c906108c 3332 {
7a292a7a 3333 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
3334 CGEN_INSN_INT insn = base_insn;
3335#define FLD(f) abuf->fields.fmt_leave.f
3336 EXTRACT_IFMT_DIV3_VARS /* f-op1 f-op2 f-op3 f-op4 */
3337
3338 EXTRACT_IFMT_DIV3_CODE
3339
3340 /* Record the fields for the semantic handler. */
3341 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_leave", (char *) 0));
3342
3343#if WITH_PROFILE_MODEL_P
3344 /* Record the fields for profiling. */
3345 if (PROFILE_MODEL_P (current_cpu))
3346 {
3347 FLD (in_h_gr_14) = 14;
3348 FLD (in_h_gr_15) = 15;
3349 FLD (out_h_gr_14) = 14;
3350 FLD (out_h_gr_15) = 15;
3351 }
3352#endif
3353#undef FLD
7a292a7a 3354 return idesc;
c906108c
SS
3355 }
3356
7a292a7a 3357 extract_fmt_xchb:
c906108c 3358 {
7a292a7a 3359 const IDESC *idesc = &fr30bf_insn_data[itype];
c906108c
SS
3360 CGEN_INSN_INT insn = base_insn;
3361#define FLD(f) abuf->fields.fmt_xchb.f
3362 EXTRACT_IFMT_ADD_VARS /* f-op1 f-op2 f-Rj f-Ri */
3363
3364 EXTRACT_IFMT_ADD_CODE
3365
3366 /* Record the fields for the semantic handler. */
3367 FLD (i_Ri) = & CPU (h_gr)[f_Ri];
3368 FLD (i_Rj) = & CPU (h_gr)[f_Rj];
3369 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "fmt_xchb", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
3370
3371#if WITH_PROFILE_MODEL_P
3372 /* Record the fields for profiling. */
3373 if (PROFILE_MODEL_P (current_cpu))
3374 {
3375 FLD (in_Ri) = f_Ri;
3376 FLD (in_Rj) = f_Rj;
3377 FLD (out_Ri) = f_Ri;
3378 }
3379#endif
3380#undef FLD
7a292a7a 3381 return idesc;
c906108c
SS
3382 }
3383
c906108c 3384}