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