2001-03-05 Dave Brolley <brolley@
[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, 2000 Free Software Foundation, Inc.
6
7 This file is part of the GNU Simulators.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2, or (at your option)
12 any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License along
20 with this program; if not, write to the Free Software Foundation, Inc.,
21 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
23 */
24
25 #define WANT_CPU fr30bf
26 #define WANT_CPU_FR30BF
27
28 #include "sim-main.h"
29 #include "sim-assert.h"
30
31 /* The instruction descriptor array.
32    This is computed at runtime.  Space for it is not malloc'd to save a
33    teensy bit of cpu in the decoder.  Moving it to malloc space is trivial
34    but won't be done until necessary (we don't currently support the runtime
35    addition of instructions nor an SMP machine with different cpus).  */
36 static IDESC fr30bf_insn_data[FR30BF_INSN_MAX];
37
38 /* Commas between elements are contained in the macros.
39    Some of these are conditionally compiled out.  */
40
41 static const struct insn_sem fr30bf_insn_sem[] =
42 {
43   { VIRTUAL_INSN_X_INVALID, FR30BF_INSN_X_INVALID, FR30BF_SFMT_EMPTY },
44   { VIRTUAL_INSN_X_AFTER, FR30BF_INSN_X_AFTER, FR30BF_SFMT_EMPTY },
45   { VIRTUAL_INSN_X_BEFORE, FR30BF_INSN_X_BEFORE, FR30BF_SFMT_EMPTY },
46   { VIRTUAL_INSN_X_CTI_CHAIN, FR30BF_INSN_X_CTI_CHAIN, FR30BF_SFMT_EMPTY },
47   { VIRTUAL_INSN_X_CHAIN, FR30BF_INSN_X_CHAIN, FR30BF_SFMT_EMPTY },
48   { VIRTUAL_INSN_X_BEGIN, FR30BF_INSN_X_BEGIN, FR30BF_SFMT_EMPTY },
49   { FR30_INSN_ADD, FR30BF_INSN_ADD, FR30BF_SFMT_ADD },
50   { FR30_INSN_ADDI, FR30BF_INSN_ADDI, FR30BF_SFMT_ADDI },
51   { FR30_INSN_ADD2, FR30BF_INSN_ADD2, FR30BF_SFMT_ADD2 },
52   { FR30_INSN_ADDC, FR30BF_INSN_ADDC, FR30BF_SFMT_ADDC },
53   { FR30_INSN_ADDN, FR30BF_INSN_ADDN, FR30BF_SFMT_ADDN },
54   { FR30_INSN_ADDNI, FR30BF_INSN_ADDNI, FR30BF_SFMT_ADDNI },
55   { FR30_INSN_ADDN2, FR30BF_INSN_ADDN2, FR30BF_SFMT_ADDN2 },
56   { FR30_INSN_SUB, FR30BF_INSN_SUB, FR30BF_SFMT_ADD },
57   { FR30_INSN_SUBC, FR30BF_INSN_SUBC, FR30BF_SFMT_ADDC },
58   { FR30_INSN_SUBN, FR30BF_INSN_SUBN, FR30BF_SFMT_ADDN },
59   { FR30_INSN_CMP, FR30BF_INSN_CMP, FR30BF_SFMT_CMP },
60   { FR30_INSN_CMPI, FR30BF_INSN_CMPI, FR30BF_SFMT_CMPI },
61   { FR30_INSN_CMP2, FR30BF_INSN_CMP2, FR30BF_SFMT_CMP2 },
62   { FR30_INSN_AND, FR30BF_INSN_AND, FR30BF_SFMT_AND },
63   { FR30_INSN_OR, FR30BF_INSN_OR, FR30BF_SFMT_AND },
64   { FR30_INSN_EOR, FR30BF_INSN_EOR, FR30BF_SFMT_AND },
65   { FR30_INSN_ANDM, FR30BF_INSN_ANDM, FR30BF_SFMT_ANDM },
66   { FR30_INSN_ANDH, FR30BF_INSN_ANDH, FR30BF_SFMT_ANDH },
67   { FR30_INSN_ANDB, FR30BF_INSN_ANDB, FR30BF_SFMT_ANDB },
68   { FR30_INSN_ORM, FR30BF_INSN_ORM, FR30BF_SFMT_ANDM },
69   { FR30_INSN_ORH, FR30BF_INSN_ORH, FR30BF_SFMT_ANDH },
70   { FR30_INSN_ORB, FR30BF_INSN_ORB, FR30BF_SFMT_ANDB },
71   { FR30_INSN_EORM, FR30BF_INSN_EORM, FR30BF_SFMT_ANDM },
72   { FR30_INSN_EORH, FR30BF_INSN_EORH, FR30BF_SFMT_ANDH },
73   { FR30_INSN_EORB, FR30BF_INSN_EORB, FR30BF_SFMT_ANDB },
74   { FR30_INSN_BANDL, FR30BF_INSN_BANDL, FR30BF_SFMT_BANDL },
75   { FR30_INSN_BORL, FR30BF_INSN_BORL, FR30BF_SFMT_BANDL },
76   { FR30_INSN_BEORL, FR30BF_INSN_BEORL, FR30BF_SFMT_BANDL },
77   { FR30_INSN_BANDH, FR30BF_INSN_BANDH, FR30BF_SFMT_BANDL },
78   { FR30_INSN_BORH, FR30BF_INSN_BORH, FR30BF_SFMT_BANDL },
79   { FR30_INSN_BEORH, FR30BF_INSN_BEORH, FR30BF_SFMT_BANDL },
80   { FR30_INSN_BTSTL, FR30BF_INSN_BTSTL, FR30BF_SFMT_BTSTL },
81   { FR30_INSN_BTSTH, FR30BF_INSN_BTSTH, FR30BF_SFMT_BTSTL },
82   { FR30_INSN_MUL, FR30BF_INSN_MUL, FR30BF_SFMT_MUL },
83   { FR30_INSN_MULU, FR30BF_INSN_MULU, FR30BF_SFMT_MULU },
84   { FR30_INSN_MULH, FR30BF_INSN_MULH, FR30BF_SFMT_MULH },
85   { FR30_INSN_MULUH, FR30BF_INSN_MULUH, FR30BF_SFMT_MULH },
86   { FR30_INSN_DIV0S, FR30BF_INSN_DIV0S, FR30BF_SFMT_DIV0S },
87   { FR30_INSN_DIV0U, FR30BF_INSN_DIV0U, FR30BF_SFMT_DIV0U },
88   { FR30_INSN_DIV1, FR30BF_INSN_DIV1, FR30BF_SFMT_DIV1 },
89   { FR30_INSN_DIV2, FR30BF_INSN_DIV2, FR30BF_SFMT_DIV2 },
90   { FR30_INSN_DIV3, FR30BF_INSN_DIV3, FR30BF_SFMT_DIV3 },
91   { FR30_INSN_DIV4S, FR30BF_INSN_DIV4S, FR30BF_SFMT_DIV4S },
92   { FR30_INSN_LSL, FR30BF_INSN_LSL, FR30BF_SFMT_LSL },
93   { FR30_INSN_LSLI, FR30BF_INSN_LSLI, FR30BF_SFMT_LSLI },
94   { FR30_INSN_LSL2, FR30BF_INSN_LSL2, FR30BF_SFMT_LSLI },
95   { FR30_INSN_LSR, FR30BF_INSN_LSR, FR30BF_SFMT_LSL },
96   { FR30_INSN_LSRI, FR30BF_INSN_LSRI, FR30BF_SFMT_LSLI },
97   { FR30_INSN_LSR2, FR30BF_INSN_LSR2, FR30BF_SFMT_LSLI },
98   { FR30_INSN_ASR, FR30BF_INSN_ASR, FR30BF_SFMT_LSL },
99   { FR30_INSN_ASRI, FR30BF_INSN_ASRI, FR30BF_SFMT_LSLI },
100   { FR30_INSN_ASR2, FR30BF_INSN_ASR2, FR30BF_SFMT_LSLI },
101   { FR30_INSN_LDI8, FR30BF_INSN_LDI8, FR30BF_SFMT_LDI8 },
102   { FR30_INSN_LDI20, FR30BF_INSN_LDI20, FR30BF_SFMT_LDI20 },
103   { FR30_INSN_LDI32, FR30BF_INSN_LDI32, FR30BF_SFMT_LDI32 },
104   { FR30_INSN_LD, FR30BF_INSN_LD, FR30BF_SFMT_LD },
105   { FR30_INSN_LDUH, FR30BF_INSN_LDUH, FR30BF_SFMT_LD },
106   { FR30_INSN_LDUB, FR30BF_INSN_LDUB, FR30BF_SFMT_LD },
107   { FR30_INSN_LDR13, FR30BF_INSN_LDR13, FR30BF_SFMT_LDR13 },
108   { FR30_INSN_LDR13UH, FR30BF_INSN_LDR13UH, FR30BF_SFMT_LDR13 },
109   { FR30_INSN_LDR13UB, FR30BF_INSN_LDR13UB, FR30BF_SFMT_LDR13 },
110   { FR30_INSN_LDR14, FR30BF_INSN_LDR14, FR30BF_SFMT_LDR14 },
111   { FR30_INSN_LDR14UH, FR30BF_INSN_LDR14UH, FR30BF_SFMT_LDR14UH },
112   { FR30_INSN_LDR14UB, FR30BF_INSN_LDR14UB, FR30BF_SFMT_LDR14UB },
113   { FR30_INSN_LDR15, FR30BF_INSN_LDR15, FR30BF_SFMT_LDR15 },
114   { FR30_INSN_LDR15GR, FR30BF_INSN_LDR15GR, FR30BF_SFMT_LDR15GR },
115   { FR30_INSN_LDR15DR, FR30BF_INSN_LDR15DR, FR30BF_SFMT_LDR15DR },
116   { FR30_INSN_LDR15PS, FR30BF_INSN_LDR15PS, FR30BF_SFMT_LDR15PS },
117   { FR30_INSN_ST, FR30BF_INSN_ST, FR30BF_SFMT_ST },
118   { FR30_INSN_STH, FR30BF_INSN_STH, FR30BF_SFMT_ST },
119   { FR30_INSN_STB, FR30BF_INSN_STB, FR30BF_SFMT_ST },
120   { FR30_INSN_STR13, FR30BF_INSN_STR13, FR30BF_SFMT_STR13 },
121   { FR30_INSN_STR13H, FR30BF_INSN_STR13H, FR30BF_SFMT_STR13 },
122   { FR30_INSN_STR13B, FR30BF_INSN_STR13B, FR30BF_SFMT_STR13 },
123   { FR30_INSN_STR14, FR30BF_INSN_STR14, FR30BF_SFMT_STR14 },
124   { FR30_INSN_STR14H, FR30BF_INSN_STR14H, FR30BF_SFMT_STR14H },
125   { FR30_INSN_STR14B, FR30BF_INSN_STR14B, FR30BF_SFMT_STR14B },
126   { FR30_INSN_STR15, FR30BF_INSN_STR15, FR30BF_SFMT_STR15 },
127   { FR30_INSN_STR15GR, FR30BF_INSN_STR15GR, FR30BF_SFMT_STR15GR },
128   { FR30_INSN_STR15DR, FR30BF_INSN_STR15DR, FR30BF_SFMT_STR15DR },
129   { FR30_INSN_STR15PS, FR30BF_INSN_STR15PS, FR30BF_SFMT_STR15PS },
130   { FR30_INSN_MOV, FR30BF_INSN_MOV, FR30BF_SFMT_MOV },
131   { FR30_INSN_MOVDR, FR30BF_INSN_MOVDR, FR30BF_SFMT_MOVDR },
132   { FR30_INSN_MOVPS, FR30BF_INSN_MOVPS, FR30BF_SFMT_MOVPS },
133   { FR30_INSN_MOV2DR, FR30BF_INSN_MOV2DR, FR30BF_SFMT_MOV2DR },
134   { FR30_INSN_MOV2PS, FR30BF_INSN_MOV2PS, FR30BF_SFMT_MOV2PS },
135   { FR30_INSN_JMP, FR30BF_INSN_JMP, FR30BF_SFMT_JMP },
136   { FR30_INSN_JMPD, FR30BF_INSN_JMPD, FR30BF_SFMT_JMP },
137   { FR30_INSN_CALLR, FR30BF_INSN_CALLR, FR30BF_SFMT_CALLR },
138   { FR30_INSN_CALLRD, FR30BF_INSN_CALLRD, FR30BF_SFMT_CALLR },
139   { FR30_INSN_CALL, FR30BF_INSN_CALL, FR30BF_SFMT_CALL },
140   { FR30_INSN_CALLD, FR30BF_INSN_CALLD, FR30BF_SFMT_CALL },
141   { FR30_INSN_RET, FR30BF_INSN_RET, FR30BF_SFMT_RET },
142   { FR30_INSN_RET_D, FR30BF_INSN_RET_D, FR30BF_SFMT_RET },
143   { FR30_INSN_INT, FR30BF_INSN_INT, FR30BF_SFMT_INT },
144   { FR30_INSN_INTE, FR30BF_INSN_INTE, FR30BF_SFMT_INTE },
145   { FR30_INSN_RETI, FR30BF_INSN_RETI, FR30BF_SFMT_RETI },
146   { FR30_INSN_BRAD, FR30BF_INSN_BRAD, FR30BF_SFMT_BRAD },
147   { FR30_INSN_BRA, FR30BF_INSN_BRA, FR30BF_SFMT_BRAD },
148   { FR30_INSN_BNOD, FR30BF_INSN_BNOD, FR30BF_SFMT_BNOD },
149   { FR30_INSN_BNO, FR30BF_INSN_BNO, FR30BF_SFMT_BNOD },
150   { FR30_INSN_BEQD, FR30BF_INSN_BEQD, FR30BF_SFMT_BEQD },
151   { FR30_INSN_BEQ, FR30BF_INSN_BEQ, FR30BF_SFMT_BEQD },
152   { FR30_INSN_BNED, FR30BF_INSN_BNED, FR30BF_SFMT_BEQD },
153   { FR30_INSN_BNE, FR30BF_INSN_BNE, FR30BF_SFMT_BEQD },
154   { FR30_INSN_BCD, FR30BF_INSN_BCD, FR30BF_SFMT_BCD },
155   { FR30_INSN_BC, FR30BF_INSN_BC, FR30BF_SFMT_BCD },
156   { FR30_INSN_BNCD, FR30BF_INSN_BNCD, FR30BF_SFMT_BCD },
157   { FR30_INSN_BNC, FR30BF_INSN_BNC, FR30BF_SFMT_BCD },
158   { FR30_INSN_BND, FR30BF_INSN_BND, FR30BF_SFMT_BND },
159   { FR30_INSN_BN, FR30BF_INSN_BN, FR30BF_SFMT_BND },
160   { FR30_INSN_BPD, FR30BF_INSN_BPD, FR30BF_SFMT_BND },
161   { FR30_INSN_BP, FR30BF_INSN_BP, FR30BF_SFMT_BND },
162   { FR30_INSN_BVD, FR30BF_INSN_BVD, FR30BF_SFMT_BVD },
163   { FR30_INSN_BV, FR30BF_INSN_BV, FR30BF_SFMT_BVD },
164   { FR30_INSN_BNVD, FR30BF_INSN_BNVD, FR30BF_SFMT_BVD },
165   { FR30_INSN_BNV, FR30BF_INSN_BNV, FR30BF_SFMT_BVD },
166   { FR30_INSN_BLTD, FR30BF_INSN_BLTD, FR30BF_SFMT_BLTD },
167   { FR30_INSN_BLT, FR30BF_INSN_BLT, FR30BF_SFMT_BLTD },
168   { FR30_INSN_BGED, FR30BF_INSN_BGED, FR30BF_SFMT_BLTD },
169   { FR30_INSN_BGE, FR30BF_INSN_BGE, FR30BF_SFMT_BLTD },
170   { FR30_INSN_BLED, FR30BF_INSN_BLED, FR30BF_SFMT_BLED },
171   { FR30_INSN_BLE, FR30BF_INSN_BLE, FR30BF_SFMT_BLED },
172   { FR30_INSN_BGTD, FR30BF_INSN_BGTD, FR30BF_SFMT_BLED },
173   { FR30_INSN_BGT, FR30BF_INSN_BGT, FR30BF_SFMT_BLED },
174   { FR30_INSN_BLSD, FR30BF_INSN_BLSD, FR30BF_SFMT_BLSD },
175   { FR30_INSN_BLS, FR30BF_INSN_BLS, FR30BF_SFMT_BLSD },
176   { FR30_INSN_BHID, FR30BF_INSN_BHID, FR30BF_SFMT_BLSD },
177   { FR30_INSN_BHI, FR30BF_INSN_BHI, FR30BF_SFMT_BLSD },
178   { FR30_INSN_DMOVR13, FR30BF_INSN_DMOVR13, FR30BF_SFMT_DMOVR13 },
179   { FR30_INSN_DMOVR13H, FR30BF_INSN_DMOVR13H, FR30BF_SFMT_DMOVR13H },
180   { FR30_INSN_DMOVR13B, FR30BF_INSN_DMOVR13B, FR30BF_SFMT_DMOVR13B },
181   { FR30_INSN_DMOVR13PI, FR30BF_INSN_DMOVR13PI, FR30BF_SFMT_DMOVR13PI },
182   { FR30_INSN_DMOVR13PIH, FR30BF_INSN_DMOVR13PIH, FR30BF_SFMT_DMOVR13PIH },
183   { FR30_INSN_DMOVR13PIB, FR30BF_INSN_DMOVR13PIB, FR30BF_SFMT_DMOVR13PIB },
184   { FR30_INSN_DMOVR15PI, FR30BF_INSN_DMOVR15PI, FR30BF_SFMT_DMOVR15PI },
185   { FR30_INSN_DMOV2R13, FR30BF_INSN_DMOV2R13, FR30BF_SFMT_DMOV2R13 },
186   { FR30_INSN_DMOV2R13H, FR30BF_INSN_DMOV2R13H, FR30BF_SFMT_DMOV2R13H },
187   { FR30_INSN_DMOV2R13B, FR30BF_INSN_DMOV2R13B, FR30BF_SFMT_DMOV2R13B },
188   { FR30_INSN_DMOV2R13PI, FR30BF_INSN_DMOV2R13PI, FR30BF_SFMT_DMOV2R13PI },
189   { FR30_INSN_DMOV2R13PIH, FR30BF_INSN_DMOV2R13PIH, FR30BF_SFMT_DMOV2R13PIH },
190   { FR30_INSN_DMOV2R13PIB, FR30BF_INSN_DMOV2R13PIB, FR30BF_SFMT_DMOV2R13PIB },
191   { FR30_INSN_DMOV2R15PD, FR30BF_INSN_DMOV2R15PD, FR30BF_SFMT_DMOV2R15PD },
192   { FR30_INSN_LDRES, FR30BF_INSN_LDRES, FR30BF_SFMT_LDRES },
193   { FR30_INSN_STRES, FR30BF_INSN_STRES, FR30BF_SFMT_LDRES },
194   { FR30_INSN_COPOP, FR30BF_INSN_COPOP, FR30BF_SFMT_COPOP },
195   { FR30_INSN_COPLD, FR30BF_INSN_COPLD, FR30BF_SFMT_COPOP },
196   { FR30_INSN_COPST, FR30BF_INSN_COPST, FR30BF_SFMT_COPOP },
197   { FR30_INSN_COPSV, FR30BF_INSN_COPSV, FR30BF_SFMT_COPOP },
198   { FR30_INSN_NOP, FR30BF_INSN_NOP, FR30BF_SFMT_BNOD },
199   { FR30_INSN_ANDCCR, FR30BF_INSN_ANDCCR, FR30BF_SFMT_ANDCCR },
200   { FR30_INSN_ORCCR, FR30BF_INSN_ORCCR, FR30BF_SFMT_ANDCCR },
201   { FR30_INSN_STILM, FR30BF_INSN_STILM, FR30BF_SFMT_STILM },
202   { FR30_INSN_ADDSP, FR30BF_INSN_ADDSP, FR30BF_SFMT_ADDSP },
203   { FR30_INSN_EXTSB, FR30BF_INSN_EXTSB, FR30BF_SFMT_EXTSB },
204   { FR30_INSN_EXTUB, FR30BF_INSN_EXTUB, FR30BF_SFMT_EXTUB },
205   { FR30_INSN_EXTSH, FR30BF_INSN_EXTSH, FR30BF_SFMT_EXTSH },
206   { FR30_INSN_EXTUH, FR30BF_INSN_EXTUH, FR30BF_SFMT_EXTUH },
207   { FR30_INSN_LDM0, FR30BF_INSN_LDM0, FR30BF_SFMT_LDM0 },
208   { FR30_INSN_LDM1, FR30BF_INSN_LDM1, FR30BF_SFMT_LDM1 },
209   { FR30_INSN_STM0, FR30BF_INSN_STM0, FR30BF_SFMT_STM0 },
210   { FR30_INSN_STM1, FR30BF_INSN_STM1, FR30BF_SFMT_STM1 },
211   { FR30_INSN_ENTER, FR30BF_INSN_ENTER, FR30BF_SFMT_ENTER },
212   { FR30_INSN_LEAVE, FR30BF_INSN_LEAVE, FR30BF_SFMT_LEAVE },
213   { FR30_INSN_XCHB, FR30BF_INSN_XCHB, FR30BF_SFMT_XCHB },
214 };
215
216 static const struct insn_sem fr30bf_insn_sem_invalid = {
217   VIRTUAL_INSN_X_INVALID, FR30BF_INSN_X_INVALID, FR30BF_SFMT_EMPTY
218 };
219
220 /* Initialize an IDESC from the compile-time computable parts.  */
221
222 static INLINE void
223 init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t)
224 {
225   const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries;
226
227   id->num = t->index;
228   id->sfmt = t->sfmt;
229   if ((int) t->type <= 0)
230     id->idata = & cgen_virtual_insn_table[- (int) t->type];
231   else
232     id->idata = & insn_table[t->type];
233   id->attrs = CGEN_INSN_ATTRS (id->idata);
234   /* Oh my god, a magic number.  */
235   id->length = CGEN_INSN_BITSIZE (id->idata) / 8;
236
237 #if WITH_PROFILE_MODEL_P
238   id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index];
239   {
240     SIM_DESC sd = CPU_STATE (cpu);
241     SIM_ASSERT (t->index == id->timing->num);
242   }
243 #endif
244
245   /* Semantic pointers are initialized elsewhere.  */
246 }
247
248 /* Initialize the instruction descriptor table.  */
249
250 void
251 fr30bf_init_idesc_table (SIM_CPU *cpu)
252 {
253   IDESC *id,*tabend;
254   const struct insn_sem *t,*tend;
255   int tabsize = FR30BF_INSN_MAX;
256   IDESC *table = fr30bf_insn_data;
257
258   memset (table, 0, tabsize * sizeof (IDESC));
259
260   /* First set all entries to the `invalid insn'.  */
261   t = & fr30bf_insn_sem_invalid;
262   for (id = table, tabend = table + tabsize; id < tabend; ++id)
263     init_idesc (cpu, id, t);
264
265   /* Now fill in the values for the chosen cpu.  */
266   for (t = fr30bf_insn_sem, tend = t + sizeof (fr30bf_insn_sem) / sizeof (*t);
267        t != tend; ++t)
268     {
269       init_idesc (cpu, & table[t->index], t);
270     }
271
272   /* Link the IDESC table into the cpu.  */
273   CPU_IDESC (cpu) = table;
274 }
275
276 /* Given an instruction, return a pointer to its IDESC entry.  */
277
278 const IDESC *
279 fr30bf_decode (SIM_CPU *current_cpu, IADDR pc,
280               CGEN_INSN_INT base_insn,
281               ARGBUF *abuf)
282 {
283   /* Result of decoder.  */
284   FR30BF_INSN_TYPE itype;
285   CGEN_INSN_INT insn = base_insn;
286
287   {
288
289     {
290       unsigned int val = (((insn >> 8) & (255 << 0)));
291       switch (val)
292       {
293       case 0 : itype = FR30BF_INSN_LDR13; goto extract_sfmt_ldr13;      case 1 : itype = FR30BF_INSN_LDR13UH; goto extract_sfmt_ldr13;      case 2 : itype = FR30BF_INSN_LDR13UB; goto extract_sfmt_ldr13;      case 3 : itype = FR30BF_INSN_LDR15; goto extract_sfmt_ldr15;      case 4 : itype = FR30BF_INSN_LD; goto extract_sfmt_ld;      case 5 : itype = FR30BF_INSN_LDUH; goto extract_sfmt_ld;      case 6 : itype = FR30BF_INSN_LDUB; goto extract_sfmt_ld;      case 7 :
294         {
295           unsigned int val = (((insn >> 6) & (1 << 1)) | ((insn >> 4) & (1 << 0)));
296           switch (val)
297           {
298           case 0 : itype = FR30BF_INSN_LDR15GR; goto extract_sfmt_ldr15gr;          case 1 : itype = FR30BF_INSN_MOV2PS; goto extract_sfmt_mov2ps;          case 2 : itype = FR30BF_INSN_LDR15DR; goto extract_sfmt_ldr15dr;          case 3 : itype = FR30BF_INSN_LDR15PS; goto extract_sfmt_ldr15ps;          default : itype = FR30BF_INSN_X_INVALID; goto extract_sfmt_empty;
299           }
300         }
301       case 8 : itype = FR30BF_INSN_DMOV2R13; goto extract_sfmt_dmov2r13;      case 9 : itype = FR30BF_INSN_DMOV2R13H; goto extract_sfmt_dmov2r13h;      case 10 : itype = FR30BF_INSN_DMOV2R13B; goto extract_sfmt_dmov2r13b;      case 11 : itype = FR30BF_INSN_DMOV2R15PD; goto extract_sfmt_dmov2r15pd;      case 12 : itype = FR30BF_INSN_DMOV2R13PI; goto extract_sfmt_dmov2r13pi;      case 13 : itype = FR30BF_INSN_DMOV2R13PIH; goto extract_sfmt_dmov2r13pih;      case 14 : itype = FR30BF_INSN_DMOV2R13PIB; goto extract_sfmt_dmov2r13pib;      case 15 : itype = FR30BF_INSN_ENTER; goto extract_sfmt_enter;      case 16 : itype = FR30BF_INSN_STR13; goto extract_sfmt_str13;      case 17 : itype = FR30BF_INSN_STR13H; goto extract_sfmt_str13;      case 18 : itype = FR30BF_INSN_STR13B; goto extract_sfmt_str13;      case 19 : itype = FR30BF_INSN_STR15; goto extract_sfmt_str15;      case 20 : itype = FR30BF_INSN_ST; goto extract_sfmt_st;      case 21 : itype = FR30BF_INSN_STH; goto extract_sfmt_st;      case 22 : itype = FR30BF_INSN_STB; goto extract_sfmt_st;      case 23 :
302         {
303           unsigned int val = (((insn >> 6) & (1 << 1)) | ((insn >> 4) & (1 << 0)));
304           switch (val)
305           {
306           case 0 : itype = FR30BF_INSN_STR15GR; goto extract_sfmt_str15gr;          case 1 : itype = FR30BF_INSN_MOVPS; goto extract_sfmt_movps;          case 2 : itype = FR30BF_INSN_STR15DR; goto extract_sfmt_str15dr;          case 3 : itype = FR30BF_INSN_STR15PS; goto extract_sfmt_str15ps;          default : itype = FR30BF_INSN_X_INVALID; goto extract_sfmt_empty;
307           }
308         }
309       case 24 : itype = FR30BF_INSN_DMOVR13; goto extract_sfmt_dmovr13;      case 25 : itype = FR30BF_INSN_DMOVR13H; goto extract_sfmt_dmovr13h;      case 26 : itype = FR30BF_INSN_DMOVR13B; goto extract_sfmt_dmovr13b;      case 27 : itype = FR30BF_INSN_DMOVR15PI; goto extract_sfmt_dmovr15pi;      case 28 : itype = FR30BF_INSN_DMOVR13PI; goto extract_sfmt_dmovr13pi;      case 29 : itype = FR30BF_INSN_DMOVR13PIH; goto extract_sfmt_dmovr13pih;      case 30 : itype = FR30BF_INSN_DMOVR13PIB; goto extract_sfmt_dmovr13pib;      case 31 : itype = FR30BF_INSN_INT; goto extract_sfmt_int;      case 32 : /* fall through */
310       case 33 : /* fall through */
311       case 34 : /* fall through */
312       case 35 : /* fall through */
313       case 36 : /* fall through */
314       case 37 : /* fall through */
315       case 38 : /* fall through */
316       case 39 : /* fall through */
317       case 40 : /* fall through */
318       case 41 : /* fall through */
319       case 42 : /* fall through */
320       case 43 : /* fall through */
321       case 44 : /* fall through */
322       case 45 : /* fall through */
323       case 46 : /* fall through */
324       case 47 : itype = FR30BF_INSN_LDR14; goto extract_sfmt_ldr14;      case 48 : /* fall through */
325       case 49 : /* fall through */
326       case 50 : /* fall through */
327       case 51 : /* fall through */
328       case 52 : /* fall through */
329       case 53 : /* fall through */
330       case 54 : /* fall through */
331       case 55 : /* fall through */
332       case 56 : /* fall through */
333       case 57 : /* fall through */
334       case 58 : /* fall through */
335       case 59 : /* fall through */
336       case 60 : /* fall through */
337       case 61 : /* fall through */
338       case 62 : /* fall through */
339       case 63 : itype = FR30BF_INSN_STR14; goto extract_sfmt_str14;      case 64 : /* fall through */
340       case 65 : /* fall through */
341       case 66 : /* fall through */
342       case 67 : /* fall through */
343       case 68 : /* fall through */
344       case 69 : /* fall through */
345       case 70 : /* fall through */
346       case 71 : /* fall through */
347       case 72 : /* fall through */
348       case 73 : /* fall through */
349       case 74 : /* fall through */
350       case 75 : /* fall through */
351       case 76 : /* fall through */
352       case 77 : /* fall through */
353       case 78 : /* fall through */
354       case 79 : itype = FR30BF_INSN_LDR14UH; goto extract_sfmt_ldr14uh;      case 80 : /* fall through */
355       case 81 : /* fall through */
356       case 82 : /* fall through */
357       case 83 : /* fall through */
358       case 84 : /* fall through */
359       case 85 : /* fall through */
360       case 86 : /* fall through */
361       case 87 : /* fall through */
362       case 88 : /* fall through */
363       case 89 : /* fall through */
364       case 90 : /* fall through */
365       case 91 : /* fall through */
366       case 92 : /* fall through */
367       case 93 : /* fall through */
368       case 94 : /* fall through */
369       case 95 : itype = FR30BF_INSN_STR14H; goto extract_sfmt_str14h;      case 96 : /* fall through */
370       case 97 : /* fall through */
371       case 98 : /* fall through */
372       case 99 : /* fall through */
373       case 100 : /* fall through */
374       case 101 : /* fall through */
375       case 102 : /* fall through */
376       case 103 : /* fall through */
377       case 104 : /* fall through */
378       case 105 : /* fall through */
379       case 106 : /* fall through */
380       case 107 : /* fall through */
381       case 108 : /* fall through */
382       case 109 : /* fall through */
383       case 110 : /* fall through */
384       case 111 : itype = FR30BF_INSN_LDR14UB; goto extract_sfmt_ldr14ub;      case 112 : /* fall through */
385       case 113 : /* fall through */
386       case 114 : /* fall through */
387       case 115 : /* fall through */
388       case 116 : /* fall through */
389       case 117 : /* fall through */
390       case 118 : /* fall through */
391       case 119 : /* fall through */
392       case 120 : /* fall through */
393       case 121 : /* fall through */
394       case 122 : /* fall through */
395       case 123 : /* fall through */
396       case 124 : /* fall through */
397       case 125 : /* fall through */
398       case 126 : /* fall through */
399       case 127 : itype = FR30BF_INSN_STR14B; goto extract_sfmt_str14b;      case 128 : itype = FR30BF_INSN_BANDL; goto extract_sfmt_bandl;      case 129 : itype = FR30BF_INSN_BANDH; goto extract_sfmt_bandl;      case 130 : itype = FR30BF_INSN_AND; goto extract_sfmt_and;      case 131 : itype = FR30BF_INSN_ANDCCR; goto extract_sfmt_andccr;      case 132 : itype = FR30BF_INSN_ANDM; goto extract_sfmt_andm;      case 133 : itype = FR30BF_INSN_ANDH; goto extract_sfmt_andh;      case 134 : itype = FR30BF_INSN_ANDB; goto extract_sfmt_andb;      case 135 : itype = FR30BF_INSN_STILM; goto extract_sfmt_stilm;      case 136 : itype = FR30BF_INSN_BTSTL; goto extract_sfmt_btstl;      case 137 : itype = FR30BF_INSN_BTSTH; goto extract_sfmt_btstl;      case 138 : itype = FR30BF_INSN_XCHB; goto extract_sfmt_xchb;      case 139 : itype = FR30BF_INSN_MOV; goto extract_sfmt_mov;      case 140 : itype = FR30BF_INSN_LDM0; goto extract_sfmt_ldm0;      case 141 : itype = FR30BF_INSN_LDM1; goto extract_sfmt_ldm1;      case 142 : itype = FR30BF_INSN_STM0; goto extract_sfmt_stm0;      case 143 : itype = FR30BF_INSN_STM1; goto extract_sfmt_stm1;      case 144 : itype = FR30BF_INSN_BORL; goto extract_sfmt_bandl;      case 145 : itype = FR30BF_INSN_BORH; goto extract_sfmt_bandl;      case 146 : itype = FR30BF_INSN_OR; goto extract_sfmt_and;      case 147 : itype = FR30BF_INSN_ORCCR; goto extract_sfmt_andccr;      case 148 : itype = FR30BF_INSN_ORM; goto extract_sfmt_andm;      case 149 : itype = FR30BF_INSN_ORH; goto extract_sfmt_andh;      case 150 : itype = FR30BF_INSN_ORB; goto extract_sfmt_andb;      case 151 :
400         {
401           unsigned int val = (((insn >> 4) & (15 << 0)));
402           switch (val)
403           {
404           case 0 : itype = FR30BF_INSN_JMP; goto extract_sfmt_jmp;          case 1 : itype = FR30BF_INSN_CALLR; goto extract_sfmt_callr;          case 2 : itype = FR30BF_INSN_RET; goto extract_sfmt_ret;          case 3 : itype = FR30BF_INSN_RETI; goto extract_sfmt_reti;          case 4 : itype = FR30BF_INSN_DIV0S; goto extract_sfmt_div0s;          case 5 : itype = FR30BF_INSN_DIV0U; goto extract_sfmt_div0u;          case 6 : itype = FR30BF_INSN_DIV1; goto extract_sfmt_div1;          case 7 : itype = FR30BF_INSN_DIV2; goto extract_sfmt_div2;          case 8 : itype = FR30BF_INSN_EXTSB; goto extract_sfmt_extsb;          case 9 : itype = FR30BF_INSN_EXTUB; goto extract_sfmt_extub;          case 10 : itype = FR30BF_INSN_EXTSH; goto extract_sfmt_extsh;          case 11 : itype = FR30BF_INSN_EXTUH; goto extract_sfmt_extuh;          default : itype = FR30BF_INSN_X_INVALID; goto extract_sfmt_empty;
405           }
406         }
407       case 152 : itype = FR30BF_INSN_BEORL; goto extract_sfmt_bandl;      case 153 : itype = FR30BF_INSN_BEORH; goto extract_sfmt_bandl;      case 154 : itype = FR30BF_INSN_EOR; goto extract_sfmt_and;      case 155 : itype = FR30BF_INSN_LDI20; goto extract_sfmt_ldi20;      case 156 : itype = FR30BF_INSN_EORM; goto extract_sfmt_andm;      case 157 : itype = FR30BF_INSN_EORH; goto extract_sfmt_andh;      case 158 : itype = FR30BF_INSN_EORB; goto extract_sfmt_andb;      case 159 :
408         {
409           unsigned int val = (((insn >> 4) & (15 << 0)));
410           switch (val)
411           {
412           case 0 : itype = FR30BF_INSN_JMPD; goto extract_sfmt_jmp;          case 1 : itype = FR30BF_INSN_CALLRD; goto extract_sfmt_callr;          case 2 : itype = FR30BF_INSN_RET_D; goto extract_sfmt_ret;          case 3 : itype = FR30BF_INSN_INTE; goto extract_sfmt_inte;          case 6 : itype = FR30BF_INSN_DIV3; goto extract_sfmt_div3;          case 7 : itype = FR30BF_INSN_DIV4S; goto extract_sfmt_div4s;          case 8 : itype = FR30BF_INSN_LDI32; goto extract_sfmt_ldi32;          case 9 : itype = FR30BF_INSN_LEAVE; goto extract_sfmt_leave;          case 10 : itype = FR30BF_INSN_NOP; goto extract_sfmt_bnod;          case 12 : itype = FR30BF_INSN_COPOP; goto extract_sfmt_copop;          case 13 : itype = FR30BF_INSN_COPLD; goto extract_sfmt_copop;          case 14 : itype = FR30BF_INSN_COPST; goto extract_sfmt_copop;          case 15 : itype = FR30BF_INSN_COPSV; goto extract_sfmt_copop;          default : itype = FR30BF_INSN_X_INVALID; goto extract_sfmt_empty;
413           }
414         }
415       case 160 : itype = FR30BF_INSN_ADDNI; goto extract_sfmt_addni;      case 161 : itype = FR30BF_INSN_ADDN2; goto extract_sfmt_addn2;      case 162 : itype = FR30BF_INSN_ADDN; goto extract_sfmt_addn;      case 163 : itype = FR30BF_INSN_ADDSP; goto extract_sfmt_addsp;      case 164 : itype = FR30BF_INSN_ADDI; goto extract_sfmt_addi;      case 165 : itype = FR30BF_INSN_ADD2; goto extract_sfmt_add2;      case 166 : itype = FR30BF_INSN_ADD; goto extract_sfmt_add;      case 167 : itype = FR30BF_INSN_ADDC; goto extract_sfmt_addc;      case 168 : itype = FR30BF_INSN_CMPI; goto extract_sfmt_cmpi;      case 169 : itype = FR30BF_INSN_CMP2; goto extract_sfmt_cmp2;      case 170 : itype = FR30BF_INSN_CMP; goto extract_sfmt_cmp;      case 171 : itype = FR30BF_INSN_MULU; goto extract_sfmt_mulu;      case 172 : itype = FR30BF_INSN_SUB; goto extract_sfmt_add;      case 173 : itype = FR30BF_INSN_SUBC; goto extract_sfmt_addc;      case 174 : itype = FR30BF_INSN_SUBN; goto extract_sfmt_addn;      case 175 : itype = FR30BF_INSN_MUL; goto extract_sfmt_mul;      case 176 : itype = FR30BF_INSN_LSRI; goto extract_sfmt_lsli;      case 177 : itype = FR30BF_INSN_LSR2; goto extract_sfmt_lsli;      case 178 : itype = FR30BF_INSN_LSR; goto extract_sfmt_lsl;      case 179 : itype = FR30BF_INSN_MOV2DR; goto extract_sfmt_mov2dr;      case 180 : itype = FR30BF_INSN_LSLI; goto extract_sfmt_lsli;      case 181 : itype = FR30BF_INSN_LSL2; goto extract_sfmt_lsli;      case 182 : itype = FR30BF_INSN_LSL; goto extract_sfmt_lsl;      case 183 : itype = FR30BF_INSN_MOVDR; goto extract_sfmt_movdr;      case 184 : itype = FR30BF_INSN_ASRI; goto extract_sfmt_lsli;      case 185 : itype = FR30BF_INSN_ASR2; goto extract_sfmt_lsli;      case 186 : itype = FR30BF_INSN_ASR; goto extract_sfmt_lsl;      case 187 : itype = FR30BF_INSN_MULUH; goto extract_sfmt_mulh;      case 188 : itype = FR30BF_INSN_LDRES; goto extract_sfmt_ldres;      case 189 : itype = FR30BF_INSN_STRES; goto extract_sfmt_ldres;      case 191 : itype = FR30BF_INSN_MULH; goto extract_sfmt_mulh;      case 192 : /* fall through */
416       case 193 : /* fall through */
417       case 194 : /* fall through */
418       case 195 : /* fall through */
419       case 196 : /* fall through */
420       case 197 : /* fall through */
421       case 198 : /* fall through */
422       case 199 : /* fall through */
423       case 200 : /* fall through */
424       case 201 : /* fall through */
425       case 202 : /* fall through */
426       case 203 : /* fall through */
427       case 204 : /* fall through */
428       case 205 : /* fall through */
429       case 206 : /* fall through */
430       case 207 : itype = FR30BF_INSN_LDI8; goto extract_sfmt_ldi8;      case 208 : /* fall through */
431       case 209 : /* fall through */
432       case 210 : /* fall through */
433       case 211 : /* fall through */
434       case 212 : /* fall through */
435       case 213 : /* fall through */
436       case 214 : /* fall through */
437       case 215 : itype = FR30BF_INSN_CALL; goto extract_sfmt_call;      case 216 : /* fall through */
438       case 217 : /* fall through */
439       case 218 : /* fall through */
440       case 219 : /* fall through */
441       case 220 : /* fall through */
442       case 221 : /* fall through */
443       case 222 : /* fall through */
444       case 223 : itype = FR30BF_INSN_CALLD; goto extract_sfmt_call;      case 224 : itype = FR30BF_INSN_BRA; goto extract_sfmt_brad;      case 225 : itype = FR30BF_INSN_BNO; goto extract_sfmt_bnod;      case 226 : itype = FR30BF_INSN_BEQ; goto extract_sfmt_beqd;      case 227 : itype = FR30BF_INSN_BNE; goto extract_sfmt_beqd;      case 228 : itype = FR30BF_INSN_BC; goto extract_sfmt_bcd;      case 229 : itype = FR30BF_INSN_BNC; goto extract_sfmt_bcd;      case 230 : itype = FR30BF_INSN_BN; goto extract_sfmt_bnd;      case 231 : itype = FR30BF_INSN_BP; goto extract_sfmt_bnd;      case 232 : itype = FR30BF_INSN_BV; goto extract_sfmt_bvd;      case 233 : itype = FR30BF_INSN_BNV; goto extract_sfmt_bvd;      case 234 : itype = FR30BF_INSN_BLT; goto extract_sfmt_bltd;      case 235 : itype = FR30BF_INSN_BGE; goto extract_sfmt_bltd;      case 236 : itype = FR30BF_INSN_BLE; goto extract_sfmt_bled;      case 237 : itype = FR30BF_INSN_BGT; goto extract_sfmt_bled;      case 238 : itype = FR30BF_INSN_BLS; goto extract_sfmt_blsd;      case 239 : itype = FR30BF_INSN_BHI; goto extract_sfmt_blsd;      case 240 : itype = FR30BF_INSN_BRAD; goto extract_sfmt_brad;      case 241 : itype = FR30BF_INSN_BNOD; goto extract_sfmt_bnod;      case 242 : itype = FR30BF_INSN_BEQD; goto extract_sfmt_beqd;      case 243 : itype = FR30BF_INSN_BNED; goto extract_sfmt_beqd;      case 244 : itype = FR30BF_INSN_BCD; goto extract_sfmt_bcd;      case 245 : itype = FR30BF_INSN_BNCD; goto extract_sfmt_bcd;      case 246 : itype = FR30BF_INSN_BND; goto extract_sfmt_bnd;      case 247 : itype = FR30BF_INSN_BPD; goto extract_sfmt_bnd;      case 248 : itype = FR30BF_INSN_BVD; goto extract_sfmt_bvd;      case 249 : itype = FR30BF_INSN_BNVD; goto extract_sfmt_bvd;      case 250 : itype = FR30BF_INSN_BLTD; goto extract_sfmt_bltd;      case 251 : itype = FR30BF_INSN_BGED; goto extract_sfmt_bltd;      case 252 : itype = FR30BF_INSN_BLED; goto extract_sfmt_bled;      case 253 : itype = FR30BF_INSN_BGTD; goto extract_sfmt_bled;      case 254 : itype = FR30BF_INSN_BLSD; goto extract_sfmt_blsd;      case 255 : itype = FR30BF_INSN_BHID; goto extract_sfmt_blsd;      default : itype = FR30BF_INSN_X_INVALID; goto extract_sfmt_empty;
445       }
446     }
447   }
448
449   /* The instruction has been decoded, now extract the fields.  */
450
451  extract_sfmt_empty:
452   {
453     const IDESC *idesc = &fr30bf_insn_data[itype];
454 #define FLD(f) abuf->fields.fmt_empty.f
455
456
457   /* Record the fields for the semantic handler.  */
458   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0));
459
460 #undef FLD
461     return idesc;
462   }
463
464  extract_sfmt_add:
465   {
466     const IDESC *idesc = &fr30bf_insn_data[itype];
467 #define FLD(f) abuf->fields.sfmt_add.f
468     UINT f_Rj;
469     UINT f_Ri;
470
471     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
472     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
473
474   /* Record the fields for the semantic handler.  */
475   FLD (f_Ri) = f_Ri;
476   FLD (f_Rj) = f_Rj;
477   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
478   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
479   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
480
481 #if WITH_PROFILE_MODEL_P
482   /* Record the fields for profiling.  */
483   if (PROFILE_MODEL_P (current_cpu))
484     {
485       FLD (in_Ri) = f_Ri;
486       FLD (in_Rj) = f_Rj;
487       FLD (out_Ri) = f_Ri;
488     }
489 #endif
490 #undef FLD
491     return idesc;
492   }
493
494  extract_sfmt_addi:
495   {
496     const IDESC *idesc = &fr30bf_insn_data[itype];
497 #define FLD(f) abuf->fields.sfmt_addi.f
498     UINT f_u4;
499     UINT f_Ri;
500
501     f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
502     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
503
504   /* Record the fields for the semantic handler.  */
505   FLD (f_Ri) = f_Ri;
506   FLD (f_u4) = f_u4;
507   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
508   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addi", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
509
510 #if WITH_PROFILE_MODEL_P
511   /* Record the fields for profiling.  */
512   if (PROFILE_MODEL_P (current_cpu))
513     {
514       FLD (in_Ri) = f_Ri;
515       FLD (out_Ri) = f_Ri;
516     }
517 #endif
518 #undef FLD
519     return idesc;
520   }
521
522  extract_sfmt_add2:
523   {
524     const IDESC *idesc = &fr30bf_insn_data[itype];
525 #define FLD(f) abuf->fields.sfmt_add2.f
526     SI f_m4;
527     UINT f_Ri;
528
529     f_m4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) | (((-1) << (4))));
530     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
531
532   /* Record the fields for the semantic handler.  */
533   FLD (f_Ri) = f_Ri;
534   FLD (f_m4) = f_m4;
535   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
536   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add2", "f_Ri 0x%x", 'x', f_Ri, "f_m4 0x%x", 'x', f_m4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
537
538 #if WITH_PROFILE_MODEL_P
539   /* Record the fields for profiling.  */
540   if (PROFILE_MODEL_P (current_cpu))
541     {
542       FLD (in_Ri) = f_Ri;
543       FLD (out_Ri) = f_Ri;
544     }
545 #endif
546 #undef FLD
547     return idesc;
548   }
549
550  extract_sfmt_addc:
551   {
552     const IDESC *idesc = &fr30bf_insn_data[itype];
553 #define FLD(f) abuf->fields.sfmt_add.f
554     UINT f_Rj;
555     UINT f_Ri;
556
557     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
558     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
559
560   /* Record the fields for the semantic handler.  */
561   FLD (f_Ri) = f_Ri;
562   FLD (f_Rj) = f_Rj;
563   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
564   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
565   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addc", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
566
567 #if WITH_PROFILE_MODEL_P
568   /* Record the fields for profiling.  */
569   if (PROFILE_MODEL_P (current_cpu))
570     {
571       FLD (in_Ri) = f_Ri;
572       FLD (in_Rj) = f_Rj;
573       FLD (out_Ri) = f_Ri;
574     }
575 #endif
576 #undef FLD
577     return idesc;
578   }
579
580  extract_sfmt_addn:
581   {
582     const IDESC *idesc = &fr30bf_insn_data[itype];
583 #define FLD(f) abuf->fields.sfmt_add.f
584     UINT f_Rj;
585     UINT f_Ri;
586
587     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
588     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
589
590   /* Record the fields for the semantic handler.  */
591   FLD (f_Ri) = f_Ri;
592   FLD (f_Rj) = f_Rj;
593   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
594   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
595   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addn", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
596
597 #if WITH_PROFILE_MODEL_P
598   /* Record the fields for profiling.  */
599   if (PROFILE_MODEL_P (current_cpu))
600     {
601       FLD (in_Ri) = f_Ri;
602       FLD (in_Rj) = f_Rj;
603       FLD (out_Ri) = f_Ri;
604     }
605 #endif
606 #undef FLD
607     return idesc;
608   }
609
610  extract_sfmt_addni:
611   {
612     const IDESC *idesc = &fr30bf_insn_data[itype];
613 #define FLD(f) abuf->fields.sfmt_addi.f
614     UINT f_u4;
615     UINT f_Ri;
616
617     f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
618     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
619
620   /* Record the fields for the semantic handler.  */
621   FLD (f_Ri) = f_Ri;
622   FLD (f_u4) = f_u4;
623   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
624   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addni", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
625
626 #if WITH_PROFILE_MODEL_P
627   /* Record the fields for profiling.  */
628   if (PROFILE_MODEL_P (current_cpu))
629     {
630       FLD (in_Ri) = f_Ri;
631       FLD (out_Ri) = f_Ri;
632     }
633 #endif
634 #undef FLD
635     return idesc;
636   }
637
638  extract_sfmt_addn2:
639   {
640     const IDESC *idesc = &fr30bf_insn_data[itype];
641 #define FLD(f) abuf->fields.sfmt_add2.f
642     SI f_m4;
643     UINT f_Ri;
644
645     f_m4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) | (((-1) << (4))));
646     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
647
648   /* Record the fields for the semantic handler.  */
649   FLD (f_Ri) = f_Ri;
650   FLD (f_m4) = f_m4;
651   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
652   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addn2", "f_Ri 0x%x", 'x', f_Ri, "f_m4 0x%x", 'x', f_m4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
653
654 #if WITH_PROFILE_MODEL_P
655   /* Record the fields for profiling.  */
656   if (PROFILE_MODEL_P (current_cpu))
657     {
658       FLD (in_Ri) = f_Ri;
659       FLD (out_Ri) = f_Ri;
660     }
661 #endif
662 #undef FLD
663     return idesc;
664   }
665
666  extract_sfmt_cmp:
667   {
668     const IDESC *idesc = &fr30bf_insn_data[itype];
669 #define FLD(f) abuf->fields.sfmt_str13.f
670     UINT f_Rj;
671     UINT f_Ri;
672
673     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
674     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
675
676   /* Record the fields for the semantic handler.  */
677   FLD (f_Ri) = f_Ri;
678   FLD (f_Rj) = f_Rj;
679   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
680   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
681   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
682
683 #if WITH_PROFILE_MODEL_P
684   /* Record the fields for profiling.  */
685   if (PROFILE_MODEL_P (current_cpu))
686     {
687       FLD (in_Ri) = f_Ri;
688       FLD (in_Rj) = f_Rj;
689     }
690 #endif
691 #undef FLD
692     return idesc;
693   }
694
695  extract_sfmt_cmpi:
696   {
697     const IDESC *idesc = &fr30bf_insn_data[itype];
698 #define FLD(f) abuf->fields.sfmt_addi.f
699     UINT f_u4;
700     UINT f_Ri;
701
702     f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
703     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
704
705   /* Record the fields for the semantic handler.  */
706   FLD (f_Ri) = f_Ri;
707   FLD (f_u4) = f_u4;
708   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
709   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpi", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
710
711 #if WITH_PROFILE_MODEL_P
712   /* Record the fields for profiling.  */
713   if (PROFILE_MODEL_P (current_cpu))
714     {
715       FLD (in_Ri) = f_Ri;
716     }
717 #endif
718 #undef FLD
719     return idesc;
720   }
721
722  extract_sfmt_cmp2:
723   {
724     const IDESC *idesc = &fr30bf_insn_data[itype];
725 #define FLD(f) abuf->fields.sfmt_add2.f
726     SI f_m4;
727     UINT f_Ri;
728
729     f_m4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) | (((-1) << (4))));
730     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
731
732   /* Record the fields for the semantic handler.  */
733   FLD (f_Ri) = f_Ri;
734   FLD (f_m4) = f_m4;
735   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
736   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp2", "f_Ri 0x%x", 'x', f_Ri, "f_m4 0x%x", 'x', f_m4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
737
738 #if WITH_PROFILE_MODEL_P
739   /* Record the fields for profiling.  */
740   if (PROFILE_MODEL_P (current_cpu))
741     {
742       FLD (in_Ri) = f_Ri;
743     }
744 #endif
745 #undef FLD
746     return idesc;
747   }
748
749  extract_sfmt_and:
750   {
751     const IDESC *idesc = &fr30bf_insn_data[itype];
752 #define FLD(f) abuf->fields.sfmt_add.f
753     UINT f_Rj;
754     UINT f_Ri;
755
756     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
757     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
758
759   /* Record the fields for the semantic handler.  */
760   FLD (f_Ri) = f_Ri;
761   FLD (f_Rj) = f_Rj;
762   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
763   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
764   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_and", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
765
766 #if WITH_PROFILE_MODEL_P
767   /* Record the fields for profiling.  */
768   if (PROFILE_MODEL_P (current_cpu))
769     {
770       FLD (in_Ri) = f_Ri;
771       FLD (in_Rj) = f_Rj;
772       FLD (out_Ri) = f_Ri;
773     }
774 #endif
775 #undef FLD
776     return idesc;
777   }
778
779  extract_sfmt_andm:
780   {
781     const IDESC *idesc = &fr30bf_insn_data[itype];
782 #define FLD(f) abuf->fields.sfmt_str13.f
783     UINT f_Rj;
784     UINT f_Ri;
785
786     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
787     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
788
789   /* Record the fields for the semantic handler.  */
790   FLD (f_Ri) = f_Ri;
791   FLD (f_Rj) = f_Rj;
792   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
793   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
794   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andm", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
795
796 #if WITH_PROFILE_MODEL_P
797   /* Record the fields for profiling.  */
798   if (PROFILE_MODEL_P (current_cpu))
799     {
800       FLD (in_Ri) = f_Ri;
801       FLD (in_Rj) = f_Rj;
802     }
803 #endif
804 #undef FLD
805     return idesc;
806   }
807
808  extract_sfmt_andh:
809   {
810     const IDESC *idesc = &fr30bf_insn_data[itype];
811 #define FLD(f) abuf->fields.sfmt_str13.f
812     UINT f_Rj;
813     UINT f_Ri;
814
815     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
816     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
817
818   /* Record the fields for the semantic handler.  */
819   FLD (f_Ri) = f_Ri;
820   FLD (f_Rj) = f_Rj;
821   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
822   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
823   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andh", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
824
825 #if WITH_PROFILE_MODEL_P
826   /* Record the fields for profiling.  */
827   if (PROFILE_MODEL_P (current_cpu))
828     {
829       FLD (in_Ri) = f_Ri;
830       FLD (in_Rj) = f_Rj;
831     }
832 #endif
833 #undef FLD
834     return idesc;
835   }
836
837  extract_sfmt_andb:
838   {
839     const IDESC *idesc = &fr30bf_insn_data[itype];
840 #define FLD(f) abuf->fields.sfmt_str13.f
841     UINT f_Rj;
842     UINT f_Ri;
843
844     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
845     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
846
847   /* Record the fields for the semantic handler.  */
848   FLD (f_Ri) = f_Ri;
849   FLD (f_Rj) = f_Rj;
850   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
851   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
852   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andb", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
853
854 #if WITH_PROFILE_MODEL_P
855   /* Record the fields for profiling.  */
856   if (PROFILE_MODEL_P (current_cpu))
857     {
858       FLD (in_Ri) = f_Ri;
859       FLD (in_Rj) = f_Rj;
860     }
861 #endif
862 #undef FLD
863     return idesc;
864   }
865
866  extract_sfmt_bandl:
867   {
868     const IDESC *idesc = &fr30bf_insn_data[itype];
869 #define FLD(f) abuf->fields.sfmt_addi.f
870     UINT f_u4;
871     UINT f_Ri;
872
873     f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
874     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
875
876   /* Record the fields for the semantic handler.  */
877   FLD (f_Ri) = f_Ri;
878   FLD (f_u4) = f_u4;
879   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
880   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bandl", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
881
882 #if WITH_PROFILE_MODEL_P
883   /* Record the fields for profiling.  */
884   if (PROFILE_MODEL_P (current_cpu))
885     {
886       FLD (in_Ri) = f_Ri;
887     }
888 #endif
889 #undef FLD
890     return idesc;
891   }
892
893  extract_sfmt_btstl:
894   {
895     const IDESC *idesc = &fr30bf_insn_data[itype];
896 #define FLD(f) abuf->fields.sfmt_addi.f
897     UINT f_u4;
898     UINT f_Ri;
899
900     f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
901     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
902
903   /* Record the fields for the semantic handler.  */
904   FLD (f_Ri) = f_Ri;
905   FLD (f_u4) = f_u4;
906   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
907   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_btstl", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
908
909 #if WITH_PROFILE_MODEL_P
910   /* Record the fields for profiling.  */
911   if (PROFILE_MODEL_P (current_cpu))
912     {
913       FLD (in_Ri) = f_Ri;
914     }
915 #endif
916 #undef FLD
917     return idesc;
918   }
919
920  extract_sfmt_mul:
921   {
922     const IDESC *idesc = &fr30bf_insn_data[itype];
923 #define FLD(f) abuf->fields.sfmt_str13.f
924     UINT f_Rj;
925     UINT f_Ri;
926
927     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
928     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
929
930   /* Record the fields for the semantic handler.  */
931   FLD (f_Ri) = f_Ri;
932   FLD (f_Rj) = f_Rj;
933   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
934   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
935   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mul", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
936
937 #if WITH_PROFILE_MODEL_P
938   /* Record the fields for profiling.  */
939   if (PROFILE_MODEL_P (current_cpu))
940     {
941       FLD (in_Ri) = f_Ri;
942       FLD (in_Rj) = f_Rj;
943     }
944 #endif
945 #undef FLD
946     return idesc;
947   }
948
949  extract_sfmt_mulu:
950   {
951     const IDESC *idesc = &fr30bf_insn_data[itype];
952 #define FLD(f) abuf->fields.sfmt_str13.f
953     UINT f_Rj;
954     UINT f_Ri;
955
956     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
957     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
958
959   /* Record the fields for the semantic handler.  */
960   FLD (f_Ri) = f_Ri;
961   FLD (f_Rj) = f_Rj;
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, "sfmt_mulu", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "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_sfmt_mulh:
979   {
980     const IDESC *idesc = &fr30bf_insn_data[itype];
981 #define FLD(f) abuf->fields.sfmt_str13.f
982     UINT f_Rj;
983     UINT f_Ri;
984
985     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
986     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
987
988   /* Record the fields for the semantic handler.  */
989   FLD (f_Ri) = f_Ri;
990   FLD (f_Rj) = f_Rj;
991   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
992   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
993   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mulh", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
994
995 #if WITH_PROFILE_MODEL_P
996   /* Record the fields for profiling.  */
997   if (PROFILE_MODEL_P (current_cpu))
998     {
999       FLD (in_Ri) = f_Ri;
1000       FLD (in_Rj) = f_Rj;
1001     }
1002 #endif
1003 #undef FLD
1004     return idesc;
1005   }
1006
1007  extract_sfmt_div0s:
1008   {
1009     const IDESC *idesc = &fr30bf_insn_data[itype];
1010 #define FLD(f) abuf->fields.sfmt_mov2dr.f
1011     UINT f_Ri;
1012
1013     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1014
1015   /* Record the fields for the semantic handler.  */
1016   FLD (f_Ri) = f_Ri;
1017   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1018   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div0s", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1019
1020 #if WITH_PROFILE_MODEL_P
1021   /* Record the fields for profiling.  */
1022   if (PROFILE_MODEL_P (current_cpu))
1023     {
1024       FLD (in_Ri) = f_Ri;
1025     }
1026 #endif
1027 #undef FLD
1028     return idesc;
1029   }
1030
1031  extract_sfmt_div0u:
1032   {
1033     const IDESC *idesc = &fr30bf_insn_data[itype];
1034 #define FLD(f) abuf->fields.fmt_empty.f
1035
1036
1037   /* Record the fields for the semantic handler.  */
1038   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div0u", (char *) 0));
1039
1040 #undef FLD
1041     return idesc;
1042   }
1043
1044  extract_sfmt_div1:
1045   {
1046     const IDESC *idesc = &fr30bf_insn_data[itype];
1047 #define FLD(f) abuf->fields.sfmt_mov2dr.f
1048     UINT f_Ri;
1049
1050     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1051
1052   /* Record the fields for the semantic handler.  */
1053   FLD (f_Ri) = f_Ri;
1054   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1055   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div1", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1056
1057 #if WITH_PROFILE_MODEL_P
1058   /* Record the fields for profiling.  */
1059   if (PROFILE_MODEL_P (current_cpu))
1060     {
1061       FLD (in_Ri) = f_Ri;
1062     }
1063 #endif
1064 #undef FLD
1065     return idesc;
1066   }
1067
1068  extract_sfmt_div2:
1069   {
1070     const IDESC *idesc = &fr30bf_insn_data[itype];
1071 #define FLD(f) abuf->fields.sfmt_mov2dr.f
1072     UINT f_Ri;
1073
1074     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1075
1076   /* Record the fields for the semantic handler.  */
1077   FLD (f_Ri) = f_Ri;
1078   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1079   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div2", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1080
1081 #if WITH_PROFILE_MODEL_P
1082   /* Record the fields for profiling.  */
1083   if (PROFILE_MODEL_P (current_cpu))
1084     {
1085       FLD (in_Ri) = f_Ri;
1086     }
1087 #endif
1088 #undef FLD
1089     return idesc;
1090   }
1091
1092  extract_sfmt_div3:
1093   {
1094     const IDESC *idesc = &fr30bf_insn_data[itype];
1095 #define FLD(f) abuf->fields.fmt_empty.f
1096
1097
1098   /* Record the fields for the semantic handler.  */
1099   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div3", (char *) 0));
1100
1101 #undef FLD
1102     return idesc;
1103   }
1104
1105  extract_sfmt_div4s:
1106   {
1107     const IDESC *idesc = &fr30bf_insn_data[itype];
1108 #define FLD(f) abuf->fields.fmt_empty.f
1109
1110
1111   /* Record the fields for the semantic handler.  */
1112   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div4s", (char *) 0));
1113
1114 #undef FLD
1115     return idesc;
1116   }
1117
1118  extract_sfmt_lsl:
1119   {
1120     const IDESC *idesc = &fr30bf_insn_data[itype];
1121 #define FLD(f) abuf->fields.sfmt_add.f
1122     UINT f_Rj;
1123     UINT f_Ri;
1124
1125     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1126     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1127
1128   /* Record the fields for the semantic handler.  */
1129   FLD (f_Ri) = f_Ri;
1130   FLD (f_Rj) = f_Rj;
1131   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1132   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1133   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lsl", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1134
1135 #if WITH_PROFILE_MODEL_P
1136   /* Record the fields for profiling.  */
1137   if (PROFILE_MODEL_P (current_cpu))
1138     {
1139       FLD (in_Ri) = f_Ri;
1140       FLD (in_Rj) = f_Rj;
1141       FLD (out_Ri) = f_Ri;
1142     }
1143 #endif
1144 #undef FLD
1145     return idesc;
1146   }
1147
1148  extract_sfmt_lsli:
1149   {
1150     const IDESC *idesc = &fr30bf_insn_data[itype];
1151 #define FLD(f) abuf->fields.sfmt_addi.f
1152     UINT f_u4;
1153     UINT f_Ri;
1154
1155     f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1156     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1157
1158   /* Record the fields for the semantic handler.  */
1159   FLD (f_Ri) = f_Ri;
1160   FLD (f_u4) = f_u4;
1161   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1162   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lsli", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1163
1164 #if WITH_PROFILE_MODEL_P
1165   /* Record the fields for profiling.  */
1166   if (PROFILE_MODEL_P (current_cpu))
1167     {
1168       FLD (in_Ri) = f_Ri;
1169       FLD (out_Ri) = f_Ri;
1170     }
1171 #endif
1172 #undef FLD
1173     return idesc;
1174   }
1175
1176  extract_sfmt_ldi8:
1177   {
1178     const IDESC *idesc = &fr30bf_insn_data[itype];
1179 #define FLD(f) abuf->fields.sfmt_ldi8.f
1180     UINT f_i8;
1181     UINT f_Ri;
1182
1183     f_i8 = EXTRACT_MSB0_UINT (insn, 16, 4, 8);
1184     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1185
1186   /* Record the fields for the semantic handler.  */
1187   FLD (f_i8) = f_i8;
1188   FLD (f_Ri) = f_Ri;
1189   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1190   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi8", "f_i8 0x%x", 'x', f_i8, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1191
1192 #if WITH_PROFILE_MODEL_P
1193   /* Record the fields for profiling.  */
1194   if (PROFILE_MODEL_P (current_cpu))
1195     {
1196       FLD (out_Ri) = f_Ri;
1197     }
1198 #endif
1199 #undef FLD
1200     return idesc;
1201   }
1202
1203  extract_sfmt_ldi20:
1204   {
1205     const IDESC *idesc = &fr30bf_insn_data[itype];
1206 #define FLD(f) abuf->fields.sfmt_ldi20.f
1207     UINT f_i20_16;
1208     UINT f_i20_4;
1209     UINT f_Ri;
1210     UINT f_i20;
1211     /* Contents of trailing part of insn.  */
1212     UINT word_1;
1213
1214   word_1 = GETIMEMUHI (current_cpu, pc + 2);
1215     f_i20_16 = (0|(EXTRACT_MSB0_UINT (word_1, 16, 0, 16) << 0));
1216     f_i20_4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1217     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1218 {
1219   f_i20 = ((((f_i20_4) << (16))) | (f_i20_16));
1220 }
1221
1222   /* Record the fields for the semantic handler.  */
1223   FLD (f_i20) = f_i20;
1224   FLD (f_Ri) = f_Ri;
1225   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1226   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi20", "f_i20 0x%x", 'x', f_i20, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1227
1228 #if WITH_PROFILE_MODEL_P
1229   /* Record the fields for profiling.  */
1230   if (PROFILE_MODEL_P (current_cpu))
1231     {
1232       FLD (out_Ri) = f_Ri;
1233     }
1234 #endif
1235 #undef FLD
1236     return idesc;
1237   }
1238
1239  extract_sfmt_ldi32:
1240   {
1241     const IDESC *idesc = &fr30bf_insn_data[itype];
1242 #define FLD(f) abuf->fields.sfmt_ldi32.f
1243     UINT f_i32;
1244     UINT f_Ri;
1245     /* Contents of trailing part of insn.  */
1246     UINT word_1;
1247     UINT word_2;
1248
1249   word_1 = GETIMEMUHI (current_cpu, pc + 2);
1250   word_2 = GETIMEMUHI (current_cpu, pc + 4);
1251     f_i32 = (0|(EXTRACT_MSB0_UINT (word_2, 16, 0, 16) << 0)|(EXTRACT_MSB0_UINT (word_1, 16, 0, 16) << 16));
1252     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1253
1254   /* Record the fields for the semantic handler.  */
1255   FLD (f_i32) = f_i32;
1256   FLD (f_Ri) = f_Ri;
1257   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1258   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi32", "f_i32 0x%x", 'x', f_i32, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1259
1260 #if WITH_PROFILE_MODEL_P
1261   /* Record the fields for profiling.  */
1262   if (PROFILE_MODEL_P (current_cpu))
1263     {
1264       FLD (out_Ri) = f_Ri;
1265     }
1266 #endif
1267 #undef FLD
1268     return idesc;
1269   }
1270
1271  extract_sfmt_ld:
1272   {
1273     const IDESC *idesc = &fr30bf_insn_data[itype];
1274 #define FLD(f) abuf->fields.sfmt_ldr13.f
1275     UINT f_Rj;
1276     UINT f_Ri;
1277
1278     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1279     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1280
1281   /* Record the fields for the semantic handler.  */
1282   FLD (f_Rj) = f_Rj;
1283   FLD (f_Ri) = f_Ri;
1284   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1285   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1286   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ld", "f_Rj 0x%x", 'x', f_Rj, "f_Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1287
1288 #if WITH_PROFILE_MODEL_P
1289   /* Record the fields for profiling.  */
1290   if (PROFILE_MODEL_P (current_cpu))
1291     {
1292       FLD (in_Rj) = f_Rj;
1293       FLD (out_Ri) = f_Ri;
1294     }
1295 #endif
1296 #undef FLD
1297     return idesc;
1298   }
1299
1300  extract_sfmt_ldr13:
1301   {
1302     const IDESC *idesc = &fr30bf_insn_data[itype];
1303 #define FLD(f) abuf->fields.sfmt_ldr13.f
1304     UINT f_Rj;
1305     UINT f_Ri;
1306
1307     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1308     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1309
1310   /* Record the fields for the semantic handler.  */
1311   FLD (f_Rj) = f_Rj;
1312   FLD (f_Ri) = f_Ri;
1313   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1314   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1315   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr13", "f_Rj 0x%x", 'x', f_Rj, "f_Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1316
1317 #if WITH_PROFILE_MODEL_P
1318   /* Record the fields for profiling.  */
1319   if (PROFILE_MODEL_P (current_cpu))
1320     {
1321       FLD (in_Rj) = f_Rj;
1322       FLD (in_h_gr_13) = 13;
1323       FLD (out_Ri) = f_Ri;
1324     }
1325 #endif
1326 #undef FLD
1327     return idesc;
1328   }
1329
1330  extract_sfmt_ldr14:
1331   {
1332     const IDESC *idesc = &fr30bf_insn_data[itype];
1333 #define FLD(f) abuf->fields.sfmt_ldr14.f
1334     SI f_disp10;
1335     UINT f_Ri;
1336
1337     f_disp10 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (2));
1338     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1339
1340   /* Record the fields for the semantic handler.  */
1341   FLD (f_disp10) = f_disp10;
1342   FLD (f_Ri) = f_Ri;
1343   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1344   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr14", "f_disp10 0x%x", 'x', f_disp10, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1345
1346 #if WITH_PROFILE_MODEL_P
1347   /* Record the fields for profiling.  */
1348   if (PROFILE_MODEL_P (current_cpu))
1349     {
1350       FLD (in_h_gr_14) = 14;
1351       FLD (out_Ri) = f_Ri;
1352     }
1353 #endif
1354 #undef FLD
1355     return idesc;
1356   }
1357
1358  extract_sfmt_ldr14uh:
1359   {
1360     const IDESC *idesc = &fr30bf_insn_data[itype];
1361 #define FLD(f) abuf->fields.sfmt_ldr14uh.f
1362     SI f_disp9;
1363     UINT f_Ri;
1364
1365     f_disp9 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (1));
1366     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1367
1368   /* Record the fields for the semantic handler.  */
1369   FLD (f_disp9) = f_disp9;
1370   FLD (f_Ri) = f_Ri;
1371   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1372   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr14uh", "f_disp9 0x%x", 'x', f_disp9, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1373
1374 #if WITH_PROFILE_MODEL_P
1375   /* Record the fields for profiling.  */
1376   if (PROFILE_MODEL_P (current_cpu))
1377     {
1378       FLD (in_h_gr_14) = 14;
1379       FLD (out_Ri) = f_Ri;
1380     }
1381 #endif
1382 #undef FLD
1383     return idesc;
1384   }
1385
1386  extract_sfmt_ldr14ub:
1387   {
1388     const IDESC *idesc = &fr30bf_insn_data[itype];
1389 #define FLD(f) abuf->fields.sfmt_ldr14ub.f
1390     INT f_disp8;
1391     UINT f_Ri;
1392
1393     f_disp8 = EXTRACT_MSB0_INT (insn, 16, 4, 8);
1394     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1395
1396   /* Record the fields for the semantic handler.  */
1397   FLD (f_disp8) = f_disp8;
1398   FLD (f_Ri) = f_Ri;
1399   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1400   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr14ub", "f_disp8 0x%x", 'x', f_disp8, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1401
1402 #if WITH_PROFILE_MODEL_P
1403   /* Record the fields for profiling.  */
1404   if (PROFILE_MODEL_P (current_cpu))
1405     {
1406       FLD (in_h_gr_14) = 14;
1407       FLD (out_Ri) = f_Ri;
1408     }
1409 #endif
1410 #undef FLD
1411     return idesc;
1412   }
1413
1414  extract_sfmt_ldr15:
1415   {
1416     const IDESC *idesc = &fr30bf_insn_data[itype];
1417 #define FLD(f) abuf->fields.sfmt_ldr15.f
1418     USI f_udisp6;
1419     UINT f_Ri;
1420
1421     f_udisp6 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) << (2));
1422     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1423
1424   /* Record the fields for the semantic handler.  */
1425   FLD (f_udisp6) = f_udisp6;
1426   FLD (f_Ri) = f_Ri;
1427   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1428   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr15", "f_udisp6 0x%x", 'x', f_udisp6, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1429
1430 #if WITH_PROFILE_MODEL_P
1431   /* Record the fields for profiling.  */
1432   if (PROFILE_MODEL_P (current_cpu))
1433     {
1434       FLD (in_h_gr_15) = 15;
1435       FLD (out_Ri) = f_Ri;
1436     }
1437 #endif
1438 #undef FLD
1439     return idesc;
1440   }
1441
1442  extract_sfmt_ldr15gr:
1443   {
1444     const IDESC *idesc = &fr30bf_insn_data[itype];
1445 #define FLD(f) abuf->fields.sfmt_ldr15gr.f
1446     UINT f_Ri;
1447
1448     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1449
1450   /* Record the fields for the semantic handler.  */
1451   FLD (f_Ri) = f_Ri;
1452   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1453   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr15gr", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1454
1455 #if WITH_PROFILE_MODEL_P
1456   /* Record the fields for profiling.  */
1457   if (PROFILE_MODEL_P (current_cpu))
1458     {
1459       FLD (in_h_gr_15) = 15;
1460       FLD (out_Ri) = f_Ri;
1461       FLD (out_h_gr_15) = 15;
1462     }
1463 #endif
1464 #undef FLD
1465     return idesc;
1466   }
1467
1468  extract_sfmt_ldr15dr:
1469   {
1470     const IDESC *idesc = &fr30bf_insn_data[itype];
1471 #define FLD(f) abuf->fields.sfmt_ldr15dr.f
1472     UINT f_Rs2;
1473
1474     f_Rs2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1475
1476   /* Record the fields for the semantic handler.  */
1477   FLD (f_Rs2) = f_Rs2;
1478   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr15dr", "f_Rs2 0x%x", 'x', f_Rs2, (char *) 0));
1479
1480 #if WITH_PROFILE_MODEL_P
1481   /* Record the fields for profiling.  */
1482   if (PROFILE_MODEL_P (current_cpu))
1483     {
1484       FLD (in_h_gr_15) = 15;
1485       FLD (out_h_gr_15) = 15;
1486     }
1487 #endif
1488 #undef FLD
1489     return idesc;
1490   }
1491
1492  extract_sfmt_ldr15ps:
1493   {
1494     const IDESC *idesc = &fr30bf_insn_data[itype];
1495 #define FLD(f) abuf->fields.sfmt_addsp.f
1496
1497
1498   /* Record the fields for the semantic handler.  */
1499   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr15ps", (char *) 0));
1500
1501 #if WITH_PROFILE_MODEL_P
1502   /* Record the fields for profiling.  */
1503   if (PROFILE_MODEL_P (current_cpu))
1504     {
1505       FLD (in_h_gr_15) = 15;
1506       FLD (out_h_gr_15) = 15;
1507     }
1508 #endif
1509 #undef FLD
1510     return idesc;
1511   }
1512
1513  extract_sfmt_st:
1514   {
1515     const IDESC *idesc = &fr30bf_insn_data[itype];
1516 #define FLD(f) abuf->fields.sfmt_str13.f
1517     UINT f_Rj;
1518     UINT f_Ri;
1519
1520     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1521     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1522
1523   /* Record the fields for the semantic handler.  */
1524   FLD (f_Ri) = f_Ri;
1525   FLD (f_Rj) = f_Rj;
1526   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1527   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1528   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_st", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1529
1530 #if WITH_PROFILE_MODEL_P
1531   /* Record the fields for profiling.  */
1532   if (PROFILE_MODEL_P (current_cpu))
1533     {
1534       FLD (in_Ri) = f_Ri;
1535       FLD (in_Rj) = f_Rj;
1536     }
1537 #endif
1538 #undef FLD
1539     return idesc;
1540   }
1541
1542  extract_sfmt_str13:
1543   {
1544     const IDESC *idesc = &fr30bf_insn_data[itype];
1545 #define FLD(f) abuf->fields.sfmt_str13.f
1546     UINT f_Rj;
1547     UINT f_Ri;
1548
1549     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1550     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1551
1552   /* Record the fields for the semantic handler.  */
1553   FLD (f_Ri) = f_Ri;
1554   FLD (f_Rj) = f_Rj;
1555   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1556   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1557   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str13", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1558
1559 #if WITH_PROFILE_MODEL_P
1560   /* Record the fields for profiling.  */
1561   if (PROFILE_MODEL_P (current_cpu))
1562     {
1563       FLD (in_Ri) = f_Ri;
1564       FLD (in_Rj) = f_Rj;
1565       FLD (in_h_gr_13) = 13;
1566     }
1567 #endif
1568 #undef FLD
1569     return idesc;
1570   }
1571
1572  extract_sfmt_str14:
1573   {
1574     const IDESC *idesc = &fr30bf_insn_data[itype];
1575 #define FLD(f) abuf->fields.sfmt_str14.f
1576     SI f_disp10;
1577     UINT f_Ri;
1578
1579     f_disp10 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (2));
1580     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1581
1582   /* Record the fields for the semantic handler.  */
1583   FLD (f_Ri) = f_Ri;
1584   FLD (f_disp10) = f_disp10;
1585   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1586   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str14", "f_Ri 0x%x", 'x', f_Ri, "f_disp10 0x%x", 'x', f_disp10, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1587
1588 #if WITH_PROFILE_MODEL_P
1589   /* Record the fields for profiling.  */
1590   if (PROFILE_MODEL_P (current_cpu))
1591     {
1592       FLD (in_Ri) = f_Ri;
1593       FLD (in_h_gr_14) = 14;
1594     }
1595 #endif
1596 #undef FLD
1597     return idesc;
1598   }
1599
1600  extract_sfmt_str14h:
1601   {
1602     const IDESC *idesc = &fr30bf_insn_data[itype];
1603 #define FLD(f) abuf->fields.sfmt_str14h.f
1604     SI f_disp9;
1605     UINT f_Ri;
1606
1607     f_disp9 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (1));
1608     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1609
1610   /* Record the fields for the semantic handler.  */
1611   FLD (f_Ri) = f_Ri;
1612   FLD (f_disp9) = f_disp9;
1613   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1614   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str14h", "f_Ri 0x%x", 'x', f_Ri, "f_disp9 0x%x", 'x', f_disp9, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1615
1616 #if WITH_PROFILE_MODEL_P
1617   /* Record the fields for profiling.  */
1618   if (PROFILE_MODEL_P (current_cpu))
1619     {
1620       FLD (in_Ri) = f_Ri;
1621       FLD (in_h_gr_14) = 14;
1622     }
1623 #endif
1624 #undef FLD
1625     return idesc;
1626   }
1627
1628  extract_sfmt_str14b:
1629   {
1630     const IDESC *idesc = &fr30bf_insn_data[itype];
1631 #define FLD(f) abuf->fields.sfmt_str14b.f
1632     INT f_disp8;
1633     UINT f_Ri;
1634
1635     f_disp8 = EXTRACT_MSB0_INT (insn, 16, 4, 8);
1636     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1637
1638   /* Record the fields for the semantic handler.  */
1639   FLD (f_Ri) = f_Ri;
1640   FLD (f_disp8) = f_disp8;
1641   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1642   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str14b", "f_Ri 0x%x", 'x', f_Ri, "f_disp8 0x%x", 'x', f_disp8, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1643
1644 #if WITH_PROFILE_MODEL_P
1645   /* Record the fields for profiling.  */
1646   if (PROFILE_MODEL_P (current_cpu))
1647     {
1648       FLD (in_Ri) = f_Ri;
1649       FLD (in_h_gr_14) = 14;
1650     }
1651 #endif
1652 #undef FLD
1653     return idesc;
1654   }
1655
1656  extract_sfmt_str15:
1657   {
1658     const IDESC *idesc = &fr30bf_insn_data[itype];
1659 #define FLD(f) abuf->fields.sfmt_str15.f
1660     USI f_udisp6;
1661     UINT f_Ri;
1662
1663     f_udisp6 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) << (2));
1664     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1665
1666   /* Record the fields for the semantic handler.  */
1667   FLD (f_Ri) = f_Ri;
1668   FLD (f_udisp6) = f_udisp6;
1669   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1670   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15", "f_Ri 0x%x", 'x', f_Ri, "f_udisp6 0x%x", 'x', f_udisp6, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1671
1672 #if WITH_PROFILE_MODEL_P
1673   /* Record the fields for profiling.  */
1674   if (PROFILE_MODEL_P (current_cpu))
1675     {
1676       FLD (in_Ri) = f_Ri;
1677       FLD (in_h_gr_15) = 15;
1678     }
1679 #endif
1680 #undef FLD
1681     return idesc;
1682   }
1683
1684  extract_sfmt_str15gr:
1685   {
1686     const IDESC *idesc = &fr30bf_insn_data[itype];
1687 #define FLD(f) abuf->fields.sfmt_str15gr.f
1688     UINT f_Ri;
1689
1690     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1691
1692   /* Record the fields for the semantic handler.  */
1693   FLD (f_Ri) = f_Ri;
1694   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1695   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15gr", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1696
1697 #if WITH_PROFILE_MODEL_P
1698   /* Record the fields for profiling.  */
1699   if (PROFILE_MODEL_P (current_cpu))
1700     {
1701       FLD (in_Ri) = f_Ri;
1702       FLD (in_h_gr_15) = 15;
1703       FLD (out_h_gr_15) = 15;
1704     }
1705 #endif
1706 #undef FLD
1707     return idesc;
1708   }
1709
1710  extract_sfmt_str15dr:
1711   {
1712     const IDESC *idesc = &fr30bf_insn_data[itype];
1713 #define FLD(f) abuf->fields.sfmt_ldr15dr.f
1714     UINT f_Rs2;
1715
1716     f_Rs2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1717
1718   /* Record the fields for the semantic handler.  */
1719   FLD (f_Rs2) = f_Rs2;
1720   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15dr", "f_Rs2 0x%x", 'x', f_Rs2, (char *) 0));
1721
1722 #if WITH_PROFILE_MODEL_P
1723   /* Record the fields for profiling.  */
1724   if (PROFILE_MODEL_P (current_cpu))
1725     {
1726       FLD (in_h_gr_15) = 15;
1727       FLD (out_h_gr_15) = 15;
1728     }
1729 #endif
1730 #undef FLD
1731     return idesc;
1732   }
1733
1734  extract_sfmt_str15ps:
1735   {
1736     const IDESC *idesc = &fr30bf_insn_data[itype];
1737 #define FLD(f) abuf->fields.sfmt_addsp.f
1738
1739
1740   /* Record the fields for the semantic handler.  */
1741   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15ps", (char *) 0));
1742
1743 #if WITH_PROFILE_MODEL_P
1744   /* Record the fields for profiling.  */
1745   if (PROFILE_MODEL_P (current_cpu))
1746     {
1747       FLD (in_h_gr_15) = 15;
1748       FLD (out_h_gr_15) = 15;
1749     }
1750 #endif
1751 #undef FLD
1752     return idesc;
1753   }
1754
1755  extract_sfmt_mov:
1756   {
1757     const IDESC *idesc = &fr30bf_insn_data[itype];
1758 #define FLD(f) abuf->fields.sfmt_ldr13.f
1759     UINT f_Rj;
1760     UINT f_Ri;
1761
1762     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1763     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1764
1765   /* Record the fields for the semantic handler.  */
1766   FLD (f_Rj) = f_Rj;
1767   FLD (f_Ri) = f_Ri;
1768   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1769   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1770   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mov", "f_Rj 0x%x", 'x', f_Rj, "f_Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1771
1772 #if WITH_PROFILE_MODEL_P
1773   /* Record the fields for profiling.  */
1774   if (PROFILE_MODEL_P (current_cpu))
1775     {
1776       FLD (in_Rj) = f_Rj;
1777       FLD (out_Ri) = f_Ri;
1778     }
1779 #endif
1780 #undef FLD
1781     return idesc;
1782   }
1783
1784  extract_sfmt_movdr:
1785   {
1786     const IDESC *idesc = &fr30bf_insn_data[itype];
1787 #define FLD(f) abuf->fields.sfmt_movdr.f
1788     UINT f_Rs1;
1789     UINT f_Ri;
1790
1791     f_Rs1 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1792     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1793
1794   /* Record the fields for the semantic handler.  */
1795   FLD (f_Rs1) = f_Rs1;
1796   FLD (f_Ri) = f_Ri;
1797   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1798   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movdr", "f_Rs1 0x%x", 'x', f_Rs1, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1799
1800 #if WITH_PROFILE_MODEL_P
1801   /* Record the fields for profiling.  */
1802   if (PROFILE_MODEL_P (current_cpu))
1803     {
1804       FLD (out_Ri) = f_Ri;
1805     }
1806 #endif
1807 #undef FLD
1808     return idesc;
1809   }
1810
1811  extract_sfmt_movps:
1812   {
1813     const IDESC *idesc = &fr30bf_insn_data[itype];
1814 #define FLD(f) abuf->fields.sfmt_movdr.f
1815     UINT f_Ri;
1816
1817     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1818
1819   /* Record the fields for the semantic handler.  */
1820   FLD (f_Ri) = f_Ri;
1821   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1822   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movps", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1823
1824 #if WITH_PROFILE_MODEL_P
1825   /* Record the fields for profiling.  */
1826   if (PROFILE_MODEL_P (current_cpu))
1827     {
1828       FLD (out_Ri) = f_Ri;
1829     }
1830 #endif
1831 #undef FLD
1832     return idesc;
1833   }
1834
1835  extract_sfmt_mov2dr:
1836   {
1837     const IDESC *idesc = &fr30bf_insn_data[itype];
1838 #define FLD(f) abuf->fields.sfmt_mov2dr.f
1839     UINT f_Rs1;
1840     UINT f_Ri;
1841
1842     f_Rs1 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1843     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1844
1845   /* Record the fields for the semantic handler.  */
1846   FLD (f_Ri) = f_Ri;
1847   FLD (f_Rs1) = f_Rs1;
1848   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1849   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mov2dr", "f_Ri 0x%x", 'x', f_Ri, "f_Rs1 0x%x", 'x', f_Rs1, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1850
1851 #if WITH_PROFILE_MODEL_P
1852   /* Record the fields for profiling.  */
1853   if (PROFILE_MODEL_P (current_cpu))
1854     {
1855       FLD (in_Ri) = f_Ri;
1856     }
1857 #endif
1858 #undef FLD
1859     return idesc;
1860   }
1861
1862  extract_sfmt_mov2ps:
1863   {
1864     const IDESC *idesc = &fr30bf_insn_data[itype];
1865 #define FLD(f) abuf->fields.sfmt_mov2dr.f
1866     UINT f_Ri;
1867
1868     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1869
1870   /* Record the fields for the semantic handler.  */
1871   FLD (f_Ri) = f_Ri;
1872   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1873   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mov2ps", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1874
1875 #if WITH_PROFILE_MODEL_P
1876   /* Record the fields for profiling.  */
1877   if (PROFILE_MODEL_P (current_cpu))
1878     {
1879       FLD (in_Ri) = f_Ri;
1880     }
1881 #endif
1882 #undef FLD
1883     return idesc;
1884   }
1885
1886  extract_sfmt_jmp:
1887   {
1888     const IDESC *idesc = &fr30bf_insn_data[itype];
1889 #define FLD(f) abuf->fields.sfmt_mov2dr.f
1890     UINT f_Ri;
1891
1892     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1893
1894   /* Record the fields for the semantic handler.  */
1895   FLD (f_Ri) = f_Ri;
1896   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1897   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jmp", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1898
1899 #if WITH_PROFILE_MODEL_P
1900   /* Record the fields for profiling.  */
1901   if (PROFILE_MODEL_P (current_cpu))
1902     {
1903       FLD (in_Ri) = f_Ri;
1904     }
1905 #endif
1906 #undef FLD
1907     return idesc;
1908   }
1909
1910  extract_sfmt_callr:
1911   {
1912     const IDESC *idesc = &fr30bf_insn_data[itype];
1913 #define FLD(f) abuf->fields.sfmt_mov2dr.f
1914     UINT f_Ri;
1915
1916     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1917
1918   /* Record the fields for the semantic handler.  */
1919   FLD (f_Ri) = f_Ri;
1920   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1921   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_callr", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1922
1923 #if WITH_PROFILE_MODEL_P
1924   /* Record the fields for profiling.  */
1925   if (PROFILE_MODEL_P (current_cpu))
1926     {
1927       FLD (in_Ri) = f_Ri;
1928     }
1929 #endif
1930 #undef FLD
1931     return idesc;
1932   }
1933
1934  extract_sfmt_call:
1935   {
1936     const IDESC *idesc = &fr30bf_insn_data[itype];
1937 #define FLD(f) abuf->fields.sfmt_call.f
1938     SI f_rel12;
1939
1940     f_rel12 = ((((EXTRACT_MSB0_INT (insn, 16, 5, 11)) << (1))) + (((pc) + (2))));
1941
1942   /* Record the fields for the semantic handler.  */
1943   FLD (i_label12) = f_rel12;
1944   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_call", "label12 0x%x", 'x', f_rel12, (char *) 0));
1945
1946 #if WITH_PROFILE_MODEL_P
1947   /* Record the fields for profiling.  */
1948   if (PROFILE_MODEL_P (current_cpu))
1949     {
1950     }
1951 #endif
1952 #undef FLD
1953     return idesc;
1954   }
1955
1956  extract_sfmt_ret:
1957   {
1958     const IDESC *idesc = &fr30bf_insn_data[itype];
1959 #define FLD(f) abuf->fields.fmt_empty.f
1960
1961
1962   /* Record the fields for the semantic handler.  */
1963   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ret", (char *) 0));
1964
1965 #if WITH_PROFILE_MODEL_P
1966   /* Record the fields for profiling.  */
1967   if (PROFILE_MODEL_P (current_cpu))
1968     {
1969     }
1970 #endif
1971 #undef FLD
1972     return idesc;
1973   }
1974
1975  extract_sfmt_int:
1976   {
1977     const IDESC *idesc = &fr30bf_insn_data[itype];
1978 #define FLD(f) abuf->fields.sfmt_int.f
1979     UINT f_u8;
1980
1981     f_u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
1982
1983   /* Record the fields for the semantic handler.  */
1984   FLD (f_u8) = f_u8;
1985   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_int", "f_u8 0x%x", 'x', f_u8, (char *) 0));
1986
1987 #if WITH_PROFILE_MODEL_P
1988   /* Record the fields for profiling.  */
1989   if (PROFILE_MODEL_P (current_cpu))
1990     {
1991     }
1992 #endif
1993 #undef FLD
1994     return idesc;
1995   }
1996
1997  extract_sfmt_inte:
1998   {
1999     const IDESC *idesc = &fr30bf_insn_data[itype];
2000 #define FLD(f) abuf->fields.fmt_empty.f
2001
2002
2003   /* Record the fields for the semantic handler.  */
2004   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_inte", (char *) 0));
2005
2006 #if WITH_PROFILE_MODEL_P
2007   /* Record the fields for profiling.  */
2008   if (PROFILE_MODEL_P (current_cpu))
2009     {
2010     }
2011 #endif
2012 #undef FLD
2013     return idesc;
2014   }
2015
2016  extract_sfmt_reti:
2017   {
2018     const IDESC *idesc = &fr30bf_insn_data[itype];
2019 #define FLD(f) abuf->fields.fmt_empty.f
2020
2021
2022   /* Record the fields for the semantic handler.  */
2023   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_reti", (char *) 0));
2024
2025 #if WITH_PROFILE_MODEL_P
2026   /* Record the fields for profiling.  */
2027   if (PROFILE_MODEL_P (current_cpu))
2028     {
2029     }
2030 #endif
2031 #undef FLD
2032     return idesc;
2033   }
2034
2035  extract_sfmt_brad:
2036   {
2037     const IDESC *idesc = &fr30bf_insn_data[itype];
2038 #define FLD(f) abuf->fields.sfmt_brad.f
2039     SI f_rel9;
2040
2041     f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2042
2043   /* Record the fields for the semantic handler.  */
2044   FLD (i_label9) = f_rel9;
2045   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_brad", "label9 0x%x", 'x', f_rel9, (char *) 0));
2046
2047 #if WITH_PROFILE_MODEL_P
2048   /* Record the fields for profiling.  */
2049   if (PROFILE_MODEL_P (current_cpu))
2050     {
2051     }
2052 #endif
2053 #undef FLD
2054     return idesc;
2055   }
2056
2057  extract_sfmt_bnod:
2058   {
2059     const IDESC *idesc = &fr30bf_insn_data[itype];
2060 #define FLD(f) abuf->fields.fmt_empty.f
2061
2062
2063   /* Record the fields for the semantic handler.  */
2064   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bnod", (char *) 0));
2065
2066 #undef FLD
2067     return idesc;
2068   }
2069
2070  extract_sfmt_beqd:
2071   {
2072     const IDESC *idesc = &fr30bf_insn_data[itype];
2073 #define FLD(f) abuf->fields.sfmt_brad.f
2074     SI f_rel9;
2075
2076     f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2077
2078   /* Record the fields for the semantic handler.  */
2079   FLD (i_label9) = f_rel9;
2080   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_beqd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2081
2082 #if WITH_PROFILE_MODEL_P
2083   /* Record the fields for profiling.  */
2084   if (PROFILE_MODEL_P (current_cpu))
2085     {
2086     }
2087 #endif
2088 #undef FLD
2089     return idesc;
2090   }
2091
2092  extract_sfmt_bcd:
2093   {
2094     const IDESC *idesc = &fr30bf_insn_data[itype];
2095 #define FLD(f) abuf->fields.sfmt_brad.f
2096     SI f_rel9;
2097
2098     f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2099
2100   /* Record the fields for the semantic handler.  */
2101   FLD (i_label9) = f_rel9;
2102   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bcd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2103
2104 #if WITH_PROFILE_MODEL_P
2105   /* Record the fields for profiling.  */
2106   if (PROFILE_MODEL_P (current_cpu))
2107     {
2108     }
2109 #endif
2110 #undef FLD
2111     return idesc;
2112   }
2113
2114  extract_sfmt_bnd:
2115   {
2116     const IDESC *idesc = &fr30bf_insn_data[itype];
2117 #define FLD(f) abuf->fields.sfmt_brad.f
2118     SI f_rel9;
2119
2120     f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2121
2122   /* Record the fields for the semantic handler.  */
2123   FLD (i_label9) = f_rel9;
2124   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bnd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2125
2126 #if WITH_PROFILE_MODEL_P
2127   /* Record the fields for profiling.  */
2128   if (PROFILE_MODEL_P (current_cpu))
2129     {
2130     }
2131 #endif
2132 #undef FLD
2133     return idesc;
2134   }
2135
2136  extract_sfmt_bvd:
2137   {
2138     const IDESC *idesc = &fr30bf_insn_data[itype];
2139 #define FLD(f) abuf->fields.sfmt_brad.f
2140     SI f_rel9;
2141
2142     f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2143
2144   /* Record the fields for the semantic handler.  */
2145   FLD (i_label9) = f_rel9;
2146   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bvd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2147
2148 #if WITH_PROFILE_MODEL_P
2149   /* Record the fields for profiling.  */
2150   if (PROFILE_MODEL_P (current_cpu))
2151     {
2152     }
2153 #endif
2154 #undef FLD
2155     return idesc;
2156   }
2157
2158  extract_sfmt_bltd:
2159   {
2160     const IDESC *idesc = &fr30bf_insn_data[itype];
2161 #define FLD(f) abuf->fields.sfmt_brad.f
2162     SI f_rel9;
2163
2164     f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2165
2166   /* Record the fields for the semantic handler.  */
2167   FLD (i_label9) = f_rel9;
2168   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bltd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2169
2170 #if WITH_PROFILE_MODEL_P
2171   /* Record the fields for profiling.  */
2172   if (PROFILE_MODEL_P (current_cpu))
2173     {
2174     }
2175 #endif
2176 #undef FLD
2177     return idesc;
2178   }
2179
2180  extract_sfmt_bled:
2181   {
2182     const IDESC *idesc = &fr30bf_insn_data[itype];
2183 #define FLD(f) abuf->fields.sfmt_brad.f
2184     SI f_rel9;
2185
2186     f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2187
2188   /* Record the fields for the semantic handler.  */
2189   FLD (i_label9) = f_rel9;
2190   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bled", "label9 0x%x", 'x', f_rel9, (char *) 0));
2191
2192 #if WITH_PROFILE_MODEL_P
2193   /* Record the fields for profiling.  */
2194   if (PROFILE_MODEL_P (current_cpu))
2195     {
2196     }
2197 #endif
2198 #undef FLD
2199     return idesc;
2200   }
2201
2202  extract_sfmt_blsd:
2203   {
2204     const IDESC *idesc = &fr30bf_insn_data[itype];
2205 #define FLD(f) abuf->fields.sfmt_brad.f
2206     SI f_rel9;
2207
2208     f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2209
2210   /* Record the fields for the semantic handler.  */
2211   FLD (i_label9) = f_rel9;
2212   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_blsd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2213
2214 #if WITH_PROFILE_MODEL_P
2215   /* Record the fields for profiling.  */
2216   if (PROFILE_MODEL_P (current_cpu))
2217     {
2218     }
2219 #endif
2220 #undef FLD
2221     return idesc;
2222   }
2223
2224  extract_sfmt_dmovr13:
2225   {
2226     const IDESC *idesc = &fr30bf_insn_data[itype];
2227 #define FLD(f) abuf->fields.sfmt_dmovr13pi.f
2228     USI f_dir10;
2229
2230     f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2231
2232   /* Record the fields for the semantic handler.  */
2233   FLD (f_dir10) = f_dir10;
2234   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2235
2236 #if WITH_PROFILE_MODEL_P
2237   /* Record the fields for profiling.  */
2238   if (PROFILE_MODEL_P (current_cpu))
2239     {
2240       FLD (in_h_gr_13) = 13;
2241     }
2242 #endif
2243 #undef FLD
2244     return idesc;
2245   }
2246
2247  extract_sfmt_dmovr13h:
2248   {
2249     const IDESC *idesc = &fr30bf_insn_data[itype];
2250 #define FLD(f) abuf->fields.sfmt_dmovr13pih.f
2251     USI f_dir9;
2252
2253     f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2254
2255   /* Record the fields for the semantic handler.  */
2256   FLD (f_dir9) = f_dir9;
2257   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13h", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2258
2259 #if WITH_PROFILE_MODEL_P
2260   /* Record the fields for profiling.  */
2261   if (PROFILE_MODEL_P (current_cpu))
2262     {
2263       FLD (in_h_gr_13) = 13;
2264     }
2265 #endif
2266 #undef FLD
2267     return idesc;
2268   }
2269
2270  extract_sfmt_dmovr13b:
2271   {
2272     const IDESC *idesc = &fr30bf_insn_data[itype];
2273 #define FLD(f) abuf->fields.sfmt_dmovr13pib.f
2274     UINT f_dir8;
2275
2276     f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2277
2278   /* Record the fields for the semantic handler.  */
2279   FLD (f_dir8) = f_dir8;
2280   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13b", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2281
2282 #if WITH_PROFILE_MODEL_P
2283   /* Record the fields for profiling.  */
2284   if (PROFILE_MODEL_P (current_cpu))
2285     {
2286       FLD (in_h_gr_13) = 13;
2287     }
2288 #endif
2289 #undef FLD
2290     return idesc;
2291   }
2292
2293  extract_sfmt_dmovr13pi:
2294   {
2295     const IDESC *idesc = &fr30bf_insn_data[itype];
2296 #define FLD(f) abuf->fields.sfmt_dmovr13pi.f
2297     USI f_dir10;
2298
2299     f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2300
2301   /* Record the fields for the semantic handler.  */
2302   FLD (f_dir10) = f_dir10;
2303   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2304
2305 #if WITH_PROFILE_MODEL_P
2306   /* Record the fields for profiling.  */
2307   if (PROFILE_MODEL_P (current_cpu))
2308     {
2309       FLD (in_h_gr_13) = 13;
2310       FLD (out_h_gr_13) = 13;
2311     }
2312 #endif
2313 #undef FLD
2314     return idesc;
2315   }
2316
2317  extract_sfmt_dmovr13pih:
2318   {
2319     const IDESC *idesc = &fr30bf_insn_data[itype];
2320 #define FLD(f) abuf->fields.sfmt_dmovr13pih.f
2321     USI f_dir9;
2322
2323     f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2324
2325   /* Record the fields for the semantic handler.  */
2326   FLD (f_dir9) = f_dir9;
2327   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13pih", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2328
2329 #if WITH_PROFILE_MODEL_P
2330   /* Record the fields for profiling.  */
2331   if (PROFILE_MODEL_P (current_cpu))
2332     {
2333       FLD (in_h_gr_13) = 13;
2334       FLD (out_h_gr_13) = 13;
2335     }
2336 #endif
2337 #undef FLD
2338     return idesc;
2339   }
2340
2341  extract_sfmt_dmovr13pib:
2342   {
2343     const IDESC *idesc = &fr30bf_insn_data[itype];
2344 #define FLD(f) abuf->fields.sfmt_dmovr13pib.f
2345     UINT f_dir8;
2346
2347     f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2348
2349   /* Record the fields for the semantic handler.  */
2350   FLD (f_dir8) = f_dir8;
2351   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13pib", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2352
2353 #if WITH_PROFILE_MODEL_P
2354   /* Record the fields for profiling.  */
2355   if (PROFILE_MODEL_P (current_cpu))
2356     {
2357       FLD (in_h_gr_13) = 13;
2358       FLD (out_h_gr_13) = 13;
2359     }
2360 #endif
2361 #undef FLD
2362     return idesc;
2363   }
2364
2365  extract_sfmt_dmovr15pi:
2366   {
2367     const IDESC *idesc = &fr30bf_insn_data[itype];
2368 #define FLD(f) abuf->fields.sfmt_dmovr15pi.f
2369     USI f_dir10;
2370
2371     f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2372
2373   /* Record the fields for the semantic handler.  */
2374   FLD (f_dir10) = f_dir10;
2375   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr15pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2376
2377 #if WITH_PROFILE_MODEL_P
2378   /* Record the fields for profiling.  */
2379   if (PROFILE_MODEL_P (current_cpu))
2380     {
2381       FLD (in_h_gr_15) = 15;
2382       FLD (out_h_gr_15) = 15;
2383     }
2384 #endif
2385 #undef FLD
2386     return idesc;
2387   }
2388
2389  extract_sfmt_dmov2r13:
2390   {
2391     const IDESC *idesc = &fr30bf_insn_data[itype];
2392 #define FLD(f) abuf->fields.sfmt_dmovr13pi.f
2393     USI f_dir10;
2394
2395     f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2396
2397   /* Record the fields for the semantic handler.  */
2398   FLD (f_dir10) = f_dir10;
2399   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2400
2401 #if WITH_PROFILE_MODEL_P
2402   /* Record the fields for profiling.  */
2403   if (PROFILE_MODEL_P (current_cpu))
2404     {
2405       FLD (out_h_gr_13) = 13;
2406     }
2407 #endif
2408 #undef FLD
2409     return idesc;
2410   }
2411
2412  extract_sfmt_dmov2r13h:
2413   {
2414     const IDESC *idesc = &fr30bf_insn_data[itype];
2415 #define FLD(f) abuf->fields.sfmt_dmovr13pih.f
2416     USI f_dir9;
2417
2418     f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2419
2420   /* Record the fields for the semantic handler.  */
2421   FLD (f_dir9) = f_dir9;
2422   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13h", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2423
2424 #if WITH_PROFILE_MODEL_P
2425   /* Record the fields for profiling.  */
2426   if (PROFILE_MODEL_P (current_cpu))
2427     {
2428       FLD (out_h_gr_13) = 13;
2429     }
2430 #endif
2431 #undef FLD
2432     return idesc;
2433   }
2434
2435  extract_sfmt_dmov2r13b:
2436   {
2437     const IDESC *idesc = &fr30bf_insn_data[itype];
2438 #define FLD(f) abuf->fields.sfmt_dmovr13pib.f
2439     UINT f_dir8;
2440
2441     f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2442
2443   /* Record the fields for the semantic handler.  */
2444   FLD (f_dir8) = f_dir8;
2445   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13b", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2446
2447 #if WITH_PROFILE_MODEL_P
2448   /* Record the fields for profiling.  */
2449   if (PROFILE_MODEL_P (current_cpu))
2450     {
2451       FLD (out_h_gr_13) = 13;
2452     }
2453 #endif
2454 #undef FLD
2455     return idesc;
2456   }
2457
2458  extract_sfmt_dmov2r13pi:
2459   {
2460     const IDESC *idesc = &fr30bf_insn_data[itype];
2461 #define FLD(f) abuf->fields.sfmt_dmovr13pi.f
2462     USI f_dir10;
2463
2464     f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2465
2466   /* Record the fields for the semantic handler.  */
2467   FLD (f_dir10) = f_dir10;
2468   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2469
2470 #if WITH_PROFILE_MODEL_P
2471   /* Record the fields for profiling.  */
2472   if (PROFILE_MODEL_P (current_cpu))
2473     {
2474       FLD (in_h_gr_13) = 13;
2475       FLD (out_h_gr_13) = 13;
2476     }
2477 #endif
2478 #undef FLD
2479     return idesc;
2480   }
2481
2482  extract_sfmt_dmov2r13pih:
2483   {
2484     const IDESC *idesc = &fr30bf_insn_data[itype];
2485 #define FLD(f) abuf->fields.sfmt_dmovr13pih.f
2486     USI f_dir9;
2487
2488     f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2489
2490   /* Record the fields for the semantic handler.  */
2491   FLD (f_dir9) = f_dir9;
2492   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13pih", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2493
2494 #if WITH_PROFILE_MODEL_P
2495   /* Record the fields for profiling.  */
2496   if (PROFILE_MODEL_P (current_cpu))
2497     {
2498       FLD (in_h_gr_13) = 13;
2499       FLD (out_h_gr_13) = 13;
2500     }
2501 #endif
2502 #undef FLD
2503     return idesc;
2504   }
2505
2506  extract_sfmt_dmov2r13pib:
2507   {
2508     const IDESC *idesc = &fr30bf_insn_data[itype];
2509 #define FLD(f) abuf->fields.sfmt_dmovr13pib.f
2510     UINT f_dir8;
2511
2512     f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2513
2514   /* Record the fields for the semantic handler.  */
2515   FLD (f_dir8) = f_dir8;
2516   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13pib", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2517
2518 #if WITH_PROFILE_MODEL_P
2519   /* Record the fields for profiling.  */
2520   if (PROFILE_MODEL_P (current_cpu))
2521     {
2522       FLD (in_h_gr_13) = 13;
2523       FLD (out_h_gr_13) = 13;
2524     }
2525 #endif
2526 #undef FLD
2527     return idesc;
2528   }
2529
2530  extract_sfmt_dmov2r15pd:
2531   {
2532     const IDESC *idesc = &fr30bf_insn_data[itype];
2533 #define FLD(f) abuf->fields.sfmt_dmovr15pi.f
2534     USI f_dir10;
2535
2536     f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2537
2538   /* Record the fields for the semantic handler.  */
2539   FLD (f_dir10) = f_dir10;
2540   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r15pd", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2541
2542 #if WITH_PROFILE_MODEL_P
2543   /* Record the fields for profiling.  */
2544   if (PROFILE_MODEL_P (current_cpu))
2545     {
2546       FLD (in_h_gr_15) = 15;
2547       FLD (out_h_gr_15) = 15;
2548     }
2549 #endif
2550 #undef FLD
2551     return idesc;
2552   }
2553
2554  extract_sfmt_ldres:
2555   {
2556     const IDESC *idesc = &fr30bf_insn_data[itype];
2557 #define FLD(f) abuf->fields.sfmt_add2.f
2558     UINT f_Ri;
2559
2560     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2561
2562   /* Record the fields for the semantic handler.  */
2563   FLD (f_Ri) = f_Ri;
2564   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2565   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldres", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2566
2567 #if WITH_PROFILE_MODEL_P
2568   /* Record the fields for profiling.  */
2569   if (PROFILE_MODEL_P (current_cpu))
2570     {
2571       FLD (in_Ri) = f_Ri;
2572       FLD (out_Ri) = f_Ri;
2573     }
2574 #endif
2575 #undef FLD
2576     return idesc;
2577   }
2578
2579  extract_sfmt_copop:
2580   {
2581     const IDESC *idesc = &fr30bf_insn_data[itype];
2582 #define FLD(f) abuf->fields.fmt_empty.f
2583     /* Contents of trailing part of insn.  */
2584     UINT word_1;
2585
2586   word_1 = GETIMEMUHI (current_cpu, pc + 2);
2587
2588   /* Record the fields for the semantic handler.  */
2589   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_copop", (char *) 0));
2590
2591 #undef FLD
2592     return idesc;
2593   }
2594
2595  extract_sfmt_andccr:
2596   {
2597     const IDESC *idesc = &fr30bf_insn_data[itype];
2598 #define FLD(f) abuf->fields.sfmt_int.f
2599     UINT f_u8;
2600
2601     f_u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2602
2603   /* Record the fields for the semantic handler.  */
2604   FLD (f_u8) = f_u8;
2605   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andccr", "f_u8 0x%x", 'x', f_u8, (char *) 0));
2606
2607 #undef FLD
2608     return idesc;
2609   }
2610
2611  extract_sfmt_stilm:
2612   {
2613     const IDESC *idesc = &fr30bf_insn_data[itype];
2614 #define FLD(f) abuf->fields.sfmt_int.f
2615     UINT f_u8;
2616
2617     f_u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2618
2619   /* Record the fields for the semantic handler.  */
2620   FLD (f_u8) = f_u8;
2621   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stilm", "f_u8 0x%x", 'x', f_u8, (char *) 0));
2622
2623 #undef FLD
2624     return idesc;
2625   }
2626
2627  extract_sfmt_addsp:
2628   {
2629     const IDESC *idesc = &fr30bf_insn_data[itype];
2630 #define FLD(f) abuf->fields.sfmt_addsp.f
2631     SI f_s10;
2632
2633     f_s10 = ((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (2));
2634
2635   /* Record the fields for the semantic handler.  */
2636   FLD (f_s10) = f_s10;
2637   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addsp", "f_s10 0x%x", 'x', f_s10, (char *) 0));
2638
2639 #if WITH_PROFILE_MODEL_P
2640   /* Record the fields for profiling.  */
2641   if (PROFILE_MODEL_P (current_cpu))
2642     {
2643       FLD (in_h_gr_15) = 15;
2644       FLD (out_h_gr_15) = 15;
2645     }
2646 #endif
2647 #undef FLD
2648     return idesc;
2649   }
2650
2651  extract_sfmt_extsb:
2652   {
2653     const IDESC *idesc = &fr30bf_insn_data[itype];
2654 #define FLD(f) abuf->fields.sfmt_add2.f
2655     UINT f_Ri;
2656
2657     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2658
2659   /* Record the fields for the semantic handler.  */
2660   FLD (f_Ri) = f_Ri;
2661   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2662   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extsb", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2663
2664 #if WITH_PROFILE_MODEL_P
2665   /* Record the fields for profiling.  */
2666   if (PROFILE_MODEL_P (current_cpu))
2667     {
2668       FLD (in_Ri) = f_Ri;
2669       FLD (out_Ri) = f_Ri;
2670     }
2671 #endif
2672 #undef FLD
2673     return idesc;
2674   }
2675
2676  extract_sfmt_extub:
2677   {
2678     const IDESC *idesc = &fr30bf_insn_data[itype];
2679 #define FLD(f) abuf->fields.sfmt_add2.f
2680     UINT f_Ri;
2681
2682     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2683
2684   /* Record the fields for the semantic handler.  */
2685   FLD (f_Ri) = f_Ri;
2686   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2687   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extub", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2688
2689 #if WITH_PROFILE_MODEL_P
2690   /* Record the fields for profiling.  */
2691   if (PROFILE_MODEL_P (current_cpu))
2692     {
2693       FLD (in_Ri) = f_Ri;
2694       FLD (out_Ri) = f_Ri;
2695     }
2696 #endif
2697 #undef FLD
2698     return idesc;
2699   }
2700
2701  extract_sfmt_extsh:
2702   {
2703     const IDESC *idesc = &fr30bf_insn_data[itype];
2704 #define FLD(f) abuf->fields.sfmt_add2.f
2705     UINT f_Ri;
2706
2707     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2708
2709   /* Record the fields for the semantic handler.  */
2710   FLD (f_Ri) = f_Ri;
2711   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2712   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extsh", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2713
2714 #if WITH_PROFILE_MODEL_P
2715   /* Record the fields for profiling.  */
2716   if (PROFILE_MODEL_P (current_cpu))
2717     {
2718       FLD (in_Ri) = f_Ri;
2719       FLD (out_Ri) = f_Ri;
2720     }
2721 #endif
2722 #undef FLD
2723     return idesc;
2724   }
2725
2726  extract_sfmt_extuh:
2727   {
2728     const IDESC *idesc = &fr30bf_insn_data[itype];
2729 #define FLD(f) abuf->fields.sfmt_add2.f
2730     UINT f_Ri;
2731
2732     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2733
2734   /* Record the fields for the semantic handler.  */
2735   FLD (f_Ri) = f_Ri;
2736   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2737   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extuh", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2738
2739 #if WITH_PROFILE_MODEL_P
2740   /* Record the fields for profiling.  */
2741   if (PROFILE_MODEL_P (current_cpu))
2742     {
2743       FLD (in_Ri) = f_Ri;
2744       FLD (out_Ri) = f_Ri;
2745     }
2746 #endif
2747 #undef FLD
2748     return idesc;
2749   }
2750
2751  extract_sfmt_ldm0:
2752   {
2753     const IDESC *idesc = &fr30bf_insn_data[itype];
2754 #define FLD(f) abuf->fields.sfmt_ldm0.f
2755     UINT f_reglist_low_ld;
2756
2757     f_reglist_low_ld = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2758
2759   /* Record the fields for the semantic handler.  */
2760   FLD (f_reglist_low_ld) = f_reglist_low_ld;
2761   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldm0", "f_reglist_low_ld 0x%x", 'x', f_reglist_low_ld, (char *) 0));
2762
2763 #if WITH_PROFILE_MODEL_P
2764   /* Record the fields for profiling.  */
2765   if (PROFILE_MODEL_P (current_cpu))
2766     {
2767       FLD (in_h_gr_15) = 15;
2768       FLD (out_h_gr_0) = 0;
2769       FLD (out_h_gr_1) = 1;
2770       FLD (out_h_gr_15) = 15;
2771       FLD (out_h_gr_2) = 2;
2772       FLD (out_h_gr_3) = 3;
2773       FLD (out_h_gr_4) = 4;
2774       FLD (out_h_gr_5) = 5;
2775       FLD (out_h_gr_6) = 6;
2776       FLD (out_h_gr_7) = 7;
2777     }
2778 #endif
2779 #undef FLD
2780     return idesc;
2781   }
2782
2783  extract_sfmt_ldm1:
2784   {
2785     const IDESC *idesc = &fr30bf_insn_data[itype];
2786 #define FLD(f) abuf->fields.sfmt_ldm1.f
2787     UINT f_reglist_hi_ld;
2788
2789     f_reglist_hi_ld = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2790
2791   /* Record the fields for the semantic handler.  */
2792   FLD (f_reglist_hi_ld) = f_reglist_hi_ld;
2793   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldm1", "f_reglist_hi_ld 0x%x", 'x', f_reglist_hi_ld, (char *) 0));
2794
2795 #if WITH_PROFILE_MODEL_P
2796   /* Record the fields for profiling.  */
2797   if (PROFILE_MODEL_P (current_cpu))
2798     {
2799       FLD (in_h_gr_15) = 15;
2800       FLD (out_h_gr_10) = 10;
2801       FLD (out_h_gr_11) = 11;
2802       FLD (out_h_gr_12) = 12;
2803       FLD (out_h_gr_13) = 13;
2804       FLD (out_h_gr_14) = 14;
2805       FLD (out_h_gr_15) = 15;
2806       FLD (out_h_gr_8) = 8;
2807       FLD (out_h_gr_9) = 9;
2808     }
2809 #endif
2810 #undef FLD
2811     return idesc;
2812   }
2813
2814  extract_sfmt_stm0:
2815   {
2816     const IDESC *idesc = &fr30bf_insn_data[itype];
2817 #define FLD(f) abuf->fields.sfmt_stm0.f
2818     UINT f_reglist_low_st;
2819
2820     f_reglist_low_st = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2821
2822   /* Record the fields for the semantic handler.  */
2823   FLD (f_reglist_low_st) = f_reglist_low_st;
2824   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stm0", "f_reglist_low_st 0x%x", 'x', f_reglist_low_st, (char *) 0));
2825
2826 #if WITH_PROFILE_MODEL_P
2827   /* Record the fields for profiling.  */
2828   if (PROFILE_MODEL_P (current_cpu))
2829     {
2830       FLD (in_h_gr_0) = 0;
2831       FLD (in_h_gr_1) = 1;
2832       FLD (in_h_gr_15) = 15;
2833       FLD (in_h_gr_2) = 2;
2834       FLD (in_h_gr_3) = 3;
2835       FLD (in_h_gr_4) = 4;
2836       FLD (in_h_gr_5) = 5;
2837       FLD (in_h_gr_6) = 6;
2838       FLD (in_h_gr_7) = 7;
2839       FLD (out_h_gr_15) = 15;
2840     }
2841 #endif
2842 #undef FLD
2843     return idesc;
2844   }
2845
2846  extract_sfmt_stm1:
2847   {
2848     const IDESC *idesc = &fr30bf_insn_data[itype];
2849 #define FLD(f) abuf->fields.sfmt_stm1.f
2850     UINT f_reglist_hi_st;
2851
2852     f_reglist_hi_st = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2853
2854   /* Record the fields for the semantic handler.  */
2855   FLD (f_reglist_hi_st) = f_reglist_hi_st;
2856   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stm1", "f_reglist_hi_st 0x%x", 'x', f_reglist_hi_st, (char *) 0));
2857
2858 #if WITH_PROFILE_MODEL_P
2859   /* Record the fields for profiling.  */
2860   if (PROFILE_MODEL_P (current_cpu))
2861     {
2862       FLD (in_h_gr_10) = 10;
2863       FLD (in_h_gr_11) = 11;
2864       FLD (in_h_gr_12) = 12;
2865       FLD (in_h_gr_13) = 13;
2866       FLD (in_h_gr_14) = 14;
2867       FLD (in_h_gr_15) = 15;
2868       FLD (in_h_gr_8) = 8;
2869       FLD (in_h_gr_9) = 9;
2870       FLD (out_h_gr_15) = 15;
2871     }
2872 #endif
2873 #undef FLD
2874     return idesc;
2875   }
2876
2877  extract_sfmt_enter:
2878   {
2879     const IDESC *idesc = &fr30bf_insn_data[itype];
2880 #define FLD(f) abuf->fields.sfmt_enter.f
2881     USI f_u10;
2882
2883     f_u10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2884
2885   /* Record the fields for the semantic handler.  */
2886   FLD (f_u10) = f_u10;
2887   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_enter", "f_u10 0x%x", 'x', f_u10, (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_14) = 14;
2894       FLD (in_h_gr_15) = 15;
2895       FLD (out_h_gr_14) = 14;
2896       FLD (out_h_gr_15) = 15;
2897     }
2898 #endif
2899 #undef FLD
2900     return idesc;
2901   }
2902
2903  extract_sfmt_leave:
2904   {
2905     const IDESC *idesc = &fr30bf_insn_data[itype];
2906 #define FLD(f) abuf->fields.sfmt_enter.f
2907
2908
2909   /* Record the fields for the semantic handler.  */
2910   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_leave", (char *) 0));
2911
2912 #if WITH_PROFILE_MODEL_P
2913   /* Record the fields for profiling.  */
2914   if (PROFILE_MODEL_P (current_cpu))
2915     {
2916       FLD (in_h_gr_14) = 14;
2917       FLD (in_h_gr_15) = 15;
2918       FLD (out_h_gr_14) = 14;
2919       FLD (out_h_gr_15) = 15;
2920     }
2921 #endif
2922 #undef FLD
2923     return idesc;
2924   }
2925
2926  extract_sfmt_xchb:
2927   {
2928     const IDESC *idesc = &fr30bf_insn_data[itype];
2929 #define FLD(f) abuf->fields.sfmt_add.f
2930     UINT f_Rj;
2931     UINT f_Ri;
2932
2933     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
2934     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2935
2936   /* Record the fields for the semantic handler.  */
2937   FLD (f_Ri) = f_Ri;
2938   FLD (f_Rj) = f_Rj;
2939   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2940   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
2941   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_xchb", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
2942
2943 #if WITH_PROFILE_MODEL_P
2944   /* Record the fields for profiling.  */
2945   if (PROFILE_MODEL_P (current_cpu))
2946     {
2947       FLD (in_Ri) = f_Ri;
2948       FLD (in_Rj) = f_Rj;
2949       FLD (out_Ri) = f_Ri;
2950     }
2951 #endif
2952 #undef FLD
2953     return idesc;
2954   }
2955
2956 }