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