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