This commit was generated by cvs2svn to track changes on a CVS vendor
[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 (i_Ri) = & CPU (h_gr)[f_Ri];
643   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
644   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
645
646 #if WITH_PROFILE_MODEL_P
647   /* Record the fields for profiling.  */
648   if (PROFILE_MODEL_P (current_cpu))
649     {
650       FLD (in_Ri) = f_Ri;
651       FLD (in_Rj) = f_Rj;
652       FLD (out_Ri) = f_Ri;
653     }
654 #endif
655 #undef FLD
656     return idesc;
657   }
658
659  extract_sfmt_addi:
660   {
661     const IDESC *idesc = &fr30bf_insn_data[itype];
662     CGEN_INSN_INT insn = base_insn;
663 #define FLD(f) abuf->fields.sfmt_addi.f
664     UINT f_u4;
665     UINT f_Ri;
666
667     f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
668     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
669
670   /* Record the fields for the semantic handler.  */
671   FLD (f_u4) = f_u4;
672   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
673   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addi", "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
674
675 #if WITH_PROFILE_MODEL_P
676   /* Record the fields for profiling.  */
677   if (PROFILE_MODEL_P (current_cpu))
678     {
679       FLD (in_Ri) = f_Ri;
680       FLD (out_Ri) = f_Ri;
681     }
682 #endif
683 #undef FLD
684     return idesc;
685   }
686
687  extract_sfmt_add2:
688   {
689     const IDESC *idesc = &fr30bf_insn_data[itype];
690     CGEN_INSN_INT insn = base_insn;
691 #define FLD(f) abuf->fields.sfmt_add2.f
692     SI f_m4;
693     UINT f_Ri;
694
695     f_m4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) | (((-1) << (4))));
696     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
697
698   /* Record the fields for the semantic handler.  */
699   FLD (f_m4) = f_m4;
700   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
701   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add2", "f_m4 0x%x", 'x', f_m4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
702
703 #if WITH_PROFILE_MODEL_P
704   /* Record the fields for profiling.  */
705   if (PROFILE_MODEL_P (current_cpu))
706     {
707       FLD (in_Ri) = f_Ri;
708       FLD (out_Ri) = f_Ri;
709     }
710 #endif
711 #undef FLD
712     return idesc;
713   }
714
715  extract_sfmt_addc:
716   {
717     const IDESC *idesc = &fr30bf_insn_data[itype];
718     CGEN_INSN_INT insn = base_insn;
719 #define FLD(f) abuf->fields.sfmt_add.f
720     UINT f_Rj;
721     UINT f_Ri;
722
723     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
724     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
725
726   /* Record the fields for the semantic handler.  */
727   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
728   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
729   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addc", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
730
731 #if WITH_PROFILE_MODEL_P
732   /* Record the fields for profiling.  */
733   if (PROFILE_MODEL_P (current_cpu))
734     {
735       FLD (in_Ri) = f_Ri;
736       FLD (in_Rj) = f_Rj;
737       FLD (out_Ri) = f_Ri;
738     }
739 #endif
740 #undef FLD
741     return idesc;
742   }
743
744  extract_sfmt_addn:
745   {
746     const IDESC *idesc = &fr30bf_insn_data[itype];
747     CGEN_INSN_INT insn = base_insn;
748 #define FLD(f) abuf->fields.sfmt_add.f
749     UINT f_Rj;
750     UINT f_Ri;
751
752     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
753     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
754
755   /* Record the fields for the semantic handler.  */
756   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
757   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
758   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addn", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
759
760 #if WITH_PROFILE_MODEL_P
761   /* Record the fields for profiling.  */
762   if (PROFILE_MODEL_P (current_cpu))
763     {
764       FLD (in_Ri) = f_Ri;
765       FLD (in_Rj) = f_Rj;
766       FLD (out_Ri) = f_Ri;
767     }
768 #endif
769 #undef FLD
770     return idesc;
771   }
772
773  extract_sfmt_addni:
774   {
775     const IDESC *idesc = &fr30bf_insn_data[itype];
776     CGEN_INSN_INT insn = base_insn;
777 #define FLD(f) abuf->fields.sfmt_addi.f
778     UINT f_u4;
779     UINT f_Ri;
780
781     f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
782     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
783
784   /* Record the fields for the semantic handler.  */
785   FLD (f_u4) = f_u4;
786   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
787   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addni", "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
788
789 #if WITH_PROFILE_MODEL_P
790   /* Record the fields for profiling.  */
791   if (PROFILE_MODEL_P (current_cpu))
792     {
793       FLD (in_Ri) = f_Ri;
794       FLD (out_Ri) = f_Ri;
795     }
796 #endif
797 #undef FLD
798     return idesc;
799   }
800
801  extract_sfmt_addn2:
802   {
803     const IDESC *idesc = &fr30bf_insn_data[itype];
804     CGEN_INSN_INT insn = base_insn;
805 #define FLD(f) abuf->fields.sfmt_add2.f
806     SI f_m4;
807     UINT f_Ri;
808
809     f_m4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) | (((-1) << (4))));
810     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
811
812   /* Record the fields for the semantic handler.  */
813   FLD (f_m4) = f_m4;
814   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
815   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addn2", "f_m4 0x%x", 'x', f_m4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
816
817 #if WITH_PROFILE_MODEL_P
818   /* Record the fields for profiling.  */
819   if (PROFILE_MODEL_P (current_cpu))
820     {
821       FLD (in_Ri) = f_Ri;
822       FLD (out_Ri) = f_Ri;
823     }
824 #endif
825 #undef FLD
826     return idesc;
827   }
828
829  extract_sfmt_cmp:
830   {
831     const IDESC *idesc = &fr30bf_insn_data[itype];
832     CGEN_INSN_INT insn = base_insn;
833 #define FLD(f) abuf->fields.sfmt_str13.f
834     UINT f_Rj;
835     UINT f_Ri;
836
837     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
838     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
839
840   /* Record the fields for the semantic handler.  */
841   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
842   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
843   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
844
845 #if WITH_PROFILE_MODEL_P
846   /* Record the fields for profiling.  */
847   if (PROFILE_MODEL_P (current_cpu))
848     {
849       FLD (in_Ri) = f_Ri;
850       FLD (in_Rj) = f_Rj;
851     }
852 #endif
853 #undef FLD
854     return idesc;
855   }
856
857  extract_sfmt_cmpi:
858   {
859     const IDESC *idesc = &fr30bf_insn_data[itype];
860     CGEN_INSN_INT insn = base_insn;
861 #define FLD(f) abuf->fields.sfmt_addi.f
862     UINT f_u4;
863     UINT f_Ri;
864
865     f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
866     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
867
868   /* Record the fields for the semantic handler.  */
869   FLD (f_u4) = f_u4;
870   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
871   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpi", "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
872
873 #if WITH_PROFILE_MODEL_P
874   /* Record the fields for profiling.  */
875   if (PROFILE_MODEL_P (current_cpu))
876     {
877       FLD (in_Ri) = f_Ri;
878     }
879 #endif
880 #undef FLD
881     return idesc;
882   }
883
884  extract_sfmt_cmp2:
885   {
886     const IDESC *idesc = &fr30bf_insn_data[itype];
887     CGEN_INSN_INT insn = base_insn;
888 #define FLD(f) abuf->fields.sfmt_add2.f
889     SI f_m4;
890     UINT f_Ri;
891
892     f_m4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) | (((-1) << (4))));
893     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
894
895   /* Record the fields for the semantic handler.  */
896   FLD (f_m4) = f_m4;
897   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
898   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp2", "f_m4 0x%x", 'x', f_m4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
899
900 #if WITH_PROFILE_MODEL_P
901   /* Record the fields for profiling.  */
902   if (PROFILE_MODEL_P (current_cpu))
903     {
904       FLD (in_Ri) = f_Ri;
905     }
906 #endif
907 #undef FLD
908     return idesc;
909   }
910
911  extract_sfmt_and:
912   {
913     const IDESC *idesc = &fr30bf_insn_data[itype];
914     CGEN_INSN_INT insn = base_insn;
915 #define FLD(f) abuf->fields.sfmt_add.f
916     UINT f_Rj;
917     UINT f_Ri;
918
919     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
920     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
921
922   /* Record the fields for the semantic handler.  */
923   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
924   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
925   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_and", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
926
927 #if WITH_PROFILE_MODEL_P
928   /* Record the fields for profiling.  */
929   if (PROFILE_MODEL_P (current_cpu))
930     {
931       FLD (in_Ri) = f_Ri;
932       FLD (in_Rj) = f_Rj;
933       FLD (out_Ri) = f_Ri;
934     }
935 #endif
936 #undef FLD
937     return idesc;
938   }
939
940  extract_sfmt_andm:
941   {
942     const IDESC *idesc = &fr30bf_insn_data[itype];
943     CGEN_INSN_INT insn = base_insn;
944 #define FLD(f) abuf->fields.sfmt_str13.f
945     UINT f_Rj;
946     UINT f_Ri;
947
948     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
949     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
950
951   /* Record the fields for the semantic handler.  */
952   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
953   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
954   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andm", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
955
956 #if WITH_PROFILE_MODEL_P
957   /* Record the fields for profiling.  */
958   if (PROFILE_MODEL_P (current_cpu))
959     {
960       FLD (in_Ri) = f_Ri;
961       FLD (in_Rj) = f_Rj;
962     }
963 #endif
964 #undef FLD
965     return idesc;
966   }
967
968  extract_sfmt_andh:
969   {
970     const IDESC *idesc = &fr30bf_insn_data[itype];
971     CGEN_INSN_INT insn = base_insn;
972 #define FLD(f) abuf->fields.sfmt_str13.f
973     UINT f_Rj;
974     UINT f_Ri;
975
976     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
977     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
978
979   /* Record the fields for the semantic handler.  */
980   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
981   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
982   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andh", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
983
984 #if WITH_PROFILE_MODEL_P
985   /* Record the fields for profiling.  */
986   if (PROFILE_MODEL_P (current_cpu))
987     {
988       FLD (in_Ri) = f_Ri;
989       FLD (in_Rj) = f_Rj;
990     }
991 #endif
992 #undef FLD
993     return idesc;
994   }
995
996  extract_sfmt_andb:
997   {
998     const IDESC *idesc = &fr30bf_insn_data[itype];
999     CGEN_INSN_INT insn = base_insn;
1000 #define FLD(f) abuf->fields.sfmt_str13.f
1001     UINT f_Rj;
1002     UINT f_Ri;
1003
1004     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1005     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1006
1007   /* Record the fields for the semantic handler.  */
1008   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1009   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1010   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andb", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1011
1012 #if WITH_PROFILE_MODEL_P
1013   /* Record the fields for profiling.  */
1014   if (PROFILE_MODEL_P (current_cpu))
1015     {
1016       FLD (in_Ri) = f_Ri;
1017       FLD (in_Rj) = f_Rj;
1018     }
1019 #endif
1020 #undef FLD
1021     return idesc;
1022   }
1023
1024  extract_sfmt_bandl:
1025   {
1026     const IDESC *idesc = &fr30bf_insn_data[itype];
1027     CGEN_INSN_INT insn = base_insn;
1028 #define FLD(f) abuf->fields.sfmt_addi.f
1029     UINT f_u4;
1030     UINT f_Ri;
1031
1032     f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1033     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1034
1035   /* Record the fields for the semantic handler.  */
1036   FLD (f_u4) = f_u4;
1037   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1038   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bandl", "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1039
1040 #if WITH_PROFILE_MODEL_P
1041   /* Record the fields for profiling.  */
1042   if (PROFILE_MODEL_P (current_cpu))
1043     {
1044       FLD (in_Ri) = f_Ri;
1045     }
1046 #endif
1047 #undef FLD
1048     return idesc;
1049   }
1050
1051  extract_sfmt_btstl:
1052   {
1053     const IDESC *idesc = &fr30bf_insn_data[itype];
1054     CGEN_INSN_INT insn = base_insn;
1055 #define FLD(f) abuf->fields.sfmt_addi.f
1056     UINT f_u4;
1057     UINT f_Ri;
1058
1059     f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1060     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1061
1062   /* Record the fields for the semantic handler.  */
1063   FLD (f_u4) = f_u4;
1064   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1065   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_btstl", "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1066
1067 #if WITH_PROFILE_MODEL_P
1068   /* Record the fields for profiling.  */
1069   if (PROFILE_MODEL_P (current_cpu))
1070     {
1071       FLD (in_Ri) = f_Ri;
1072     }
1073 #endif
1074 #undef FLD
1075     return idesc;
1076   }
1077
1078  extract_sfmt_mul:
1079   {
1080     const IDESC *idesc = &fr30bf_insn_data[itype];
1081     CGEN_INSN_INT insn = base_insn;
1082 #define FLD(f) abuf->fields.sfmt_str13.f
1083     UINT f_Rj;
1084     UINT f_Ri;
1085
1086     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1087     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1088
1089   /* Record the fields for the semantic handler.  */
1090   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1091   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1092   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mul", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1093
1094 #if WITH_PROFILE_MODEL_P
1095   /* Record the fields for profiling.  */
1096   if (PROFILE_MODEL_P (current_cpu))
1097     {
1098       FLD (in_Ri) = f_Ri;
1099       FLD (in_Rj) = f_Rj;
1100     }
1101 #endif
1102 #undef FLD
1103     return idesc;
1104   }
1105
1106  extract_sfmt_mulu:
1107   {
1108     const IDESC *idesc = &fr30bf_insn_data[itype];
1109     CGEN_INSN_INT insn = base_insn;
1110 #define FLD(f) abuf->fields.sfmt_str13.f
1111     UINT f_Rj;
1112     UINT f_Ri;
1113
1114     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1115     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1116
1117   /* Record the fields for the semantic handler.  */
1118   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1119   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1120   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mulu", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1121
1122 #if WITH_PROFILE_MODEL_P
1123   /* Record the fields for profiling.  */
1124   if (PROFILE_MODEL_P (current_cpu))
1125     {
1126       FLD (in_Ri) = f_Ri;
1127       FLD (in_Rj) = f_Rj;
1128     }
1129 #endif
1130 #undef FLD
1131     return idesc;
1132   }
1133
1134  extract_sfmt_mulh:
1135   {
1136     const IDESC *idesc = &fr30bf_insn_data[itype];
1137     CGEN_INSN_INT insn = base_insn;
1138 #define FLD(f) abuf->fields.sfmt_str13.f
1139     UINT f_Rj;
1140     UINT f_Ri;
1141
1142     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1143     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1144
1145   /* Record the fields for the semantic handler.  */
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_mulh", "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_div0s:
1163   {
1164     const IDESC *idesc = &fr30bf_insn_data[itype];
1165     CGEN_INSN_INT insn = base_insn;
1166 #define FLD(f) abuf->fields.sfmt_mov2dr.f
1167     UINT f_Ri;
1168
1169     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1170
1171   /* Record the fields for the semantic handler.  */
1172   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1173   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div0s", "Ri 0x%x", 'x', f_Ri, (char *) 0));
1174
1175 #if WITH_PROFILE_MODEL_P
1176   /* Record the fields for profiling.  */
1177   if (PROFILE_MODEL_P (current_cpu))
1178     {
1179       FLD (in_Ri) = f_Ri;
1180     }
1181 #endif
1182 #undef FLD
1183     return idesc;
1184   }
1185
1186  extract_sfmt_div0u:
1187   {
1188     const IDESC *idesc = &fr30bf_insn_data[itype];
1189     CGEN_INSN_INT insn = base_insn;
1190 #define FLD(f) abuf->fields.fmt_empty.f
1191
1192
1193   /* Record the fields for the semantic handler.  */
1194   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div0u", (char *) 0));
1195
1196 #undef FLD
1197     return idesc;
1198   }
1199
1200  extract_sfmt_div1:
1201   {
1202     const IDESC *idesc = &fr30bf_insn_data[itype];
1203     CGEN_INSN_INT insn = base_insn;
1204 #define FLD(f) abuf->fields.sfmt_mov2dr.f
1205     UINT f_Ri;
1206
1207     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1208
1209   /* Record the fields for the semantic handler.  */
1210   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1211   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div1", "Ri 0x%x", 'x', f_Ri, (char *) 0));
1212
1213 #if WITH_PROFILE_MODEL_P
1214   /* Record the fields for profiling.  */
1215   if (PROFILE_MODEL_P (current_cpu))
1216     {
1217       FLD (in_Ri) = f_Ri;
1218     }
1219 #endif
1220 #undef FLD
1221     return idesc;
1222   }
1223
1224  extract_sfmt_div2:
1225   {
1226     const IDESC *idesc = &fr30bf_insn_data[itype];
1227     CGEN_INSN_INT insn = base_insn;
1228 #define FLD(f) abuf->fields.sfmt_mov2dr.f
1229     UINT f_Ri;
1230
1231     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1232
1233   /* Record the fields for the semantic handler.  */
1234   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1235   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div2", "Ri 0x%x", 'x', f_Ri, (char *) 0));
1236
1237 #if WITH_PROFILE_MODEL_P
1238   /* Record the fields for profiling.  */
1239   if (PROFILE_MODEL_P (current_cpu))
1240     {
1241       FLD (in_Ri) = f_Ri;
1242     }
1243 #endif
1244 #undef FLD
1245     return idesc;
1246   }
1247
1248  extract_sfmt_div3:
1249   {
1250     const IDESC *idesc = &fr30bf_insn_data[itype];
1251     CGEN_INSN_INT insn = base_insn;
1252 #define FLD(f) abuf->fields.fmt_empty.f
1253
1254
1255   /* Record the fields for the semantic handler.  */
1256   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div3", (char *) 0));
1257
1258 #undef FLD
1259     return idesc;
1260   }
1261
1262  extract_sfmt_div4s:
1263   {
1264     const IDESC *idesc = &fr30bf_insn_data[itype];
1265     CGEN_INSN_INT insn = base_insn;
1266 #define FLD(f) abuf->fields.fmt_empty.f
1267
1268
1269   /* Record the fields for the semantic handler.  */
1270   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div4s", (char *) 0));
1271
1272 #undef FLD
1273     return idesc;
1274   }
1275
1276  extract_sfmt_lsl:
1277   {
1278     const IDESC *idesc = &fr30bf_insn_data[itype];
1279     CGEN_INSN_INT insn = base_insn;
1280 #define FLD(f) abuf->fields.sfmt_add.f
1281     UINT f_Rj;
1282     UINT f_Ri;
1283
1284     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1285     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1286
1287   /* Record the fields for the semantic handler.  */
1288   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1289   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1290   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lsl", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1291
1292 #if WITH_PROFILE_MODEL_P
1293   /* Record the fields for profiling.  */
1294   if (PROFILE_MODEL_P (current_cpu))
1295     {
1296       FLD (in_Ri) = f_Ri;
1297       FLD (in_Rj) = f_Rj;
1298       FLD (out_Ri) = f_Ri;
1299     }
1300 #endif
1301 #undef FLD
1302     return idesc;
1303   }
1304
1305  extract_sfmt_lsli:
1306   {
1307     const IDESC *idesc = &fr30bf_insn_data[itype];
1308     CGEN_INSN_INT insn = base_insn;
1309 #define FLD(f) abuf->fields.sfmt_addi.f
1310     UINT f_u4;
1311     UINT f_Ri;
1312
1313     f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1314     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1315
1316   /* Record the fields for the semantic handler.  */
1317   FLD (f_u4) = f_u4;
1318   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1319   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lsli", "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1320
1321 #if WITH_PROFILE_MODEL_P
1322   /* Record the fields for profiling.  */
1323   if (PROFILE_MODEL_P (current_cpu))
1324     {
1325       FLD (in_Ri) = f_Ri;
1326       FLD (out_Ri) = f_Ri;
1327     }
1328 #endif
1329 #undef FLD
1330     return idesc;
1331   }
1332
1333  extract_sfmt_ldi8:
1334   {
1335     const IDESC *idesc = &fr30bf_insn_data[itype];
1336     CGEN_INSN_INT insn = base_insn;
1337 #define FLD(f) abuf->fields.sfmt_ldi8.f
1338     UINT f_i8;
1339     UINT f_Ri;
1340
1341     f_i8 = EXTRACT_MSB0_UINT (insn, 16, 4, 8);
1342     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1343
1344   /* Record the fields for the semantic handler.  */
1345   FLD (f_i8) = f_i8;
1346   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1347   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi8", "f_i8 0x%x", 'x', f_i8, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1348
1349 #if WITH_PROFILE_MODEL_P
1350   /* Record the fields for profiling.  */
1351   if (PROFILE_MODEL_P (current_cpu))
1352     {
1353       FLD (out_Ri) = f_Ri;
1354     }
1355 #endif
1356 #undef FLD
1357     return idesc;
1358   }
1359
1360  extract_sfmt_ldi20:
1361   {
1362     const IDESC *idesc = &fr30bf_insn_data[itype];
1363     CGEN_INSN_INT insn = base_insn;
1364 #define FLD(f) abuf->fields.sfmt_ldi20.f
1365     UINT f_i20_16;
1366     UINT f_i20_4;
1367     UINT f_Ri;
1368     UINT f_i20;
1369     /* Contents of trailing part of insn.  */
1370     UINT word_1;
1371
1372   word_1 = GETIMEMUHI (current_cpu, pc + 2);
1373     f_i20_16 = (0|(EXTRACT_MSB0_UINT (word_1, 16, 0, 16) << 0));
1374     f_i20_4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1375     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1376 {
1377   f_i20 = ((((f_i20_4) << (16))) | (f_i20_16));
1378 }
1379
1380   /* Record the fields for the semantic handler.  */
1381   FLD (f_i20) = f_i20;
1382   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1383   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi20", "f_i20 0x%x", 'x', f_i20, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1384
1385 #if WITH_PROFILE_MODEL_P
1386   /* Record the fields for profiling.  */
1387   if (PROFILE_MODEL_P (current_cpu))
1388     {
1389       FLD (out_Ri) = f_Ri;
1390     }
1391 #endif
1392 #undef FLD
1393     return idesc;
1394   }
1395
1396  extract_sfmt_ldi32:
1397   {
1398     const IDESC *idesc = &fr30bf_insn_data[itype];
1399     CGEN_INSN_INT insn = base_insn;
1400 #define FLD(f) abuf->fields.sfmt_ldi32.f
1401     UINT f_i32;
1402     UINT f_Ri;
1403     /* Contents of trailing part of insn.  */
1404     UINT word_1;
1405     UINT word_2;
1406
1407   word_1 = GETIMEMUHI (current_cpu, pc + 2);
1408   word_2 = GETIMEMUHI (current_cpu, pc + 4);
1409     f_i32 = (0|(EXTRACT_MSB0_UINT (word_2, 16, 0, 16) << 0)|(EXTRACT_MSB0_UINT (word_1, 16, 0, 16) << 16));
1410     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1411
1412   /* Record the fields for the semantic handler.  */
1413   FLD (f_i32) = f_i32;
1414   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1415   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi32", "f_i32 0x%x", 'x', f_i32, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1416
1417 #if WITH_PROFILE_MODEL_P
1418   /* Record the fields for profiling.  */
1419   if (PROFILE_MODEL_P (current_cpu))
1420     {
1421       FLD (out_Ri) = f_Ri;
1422     }
1423 #endif
1424 #undef FLD
1425     return idesc;
1426   }
1427
1428  extract_sfmt_ld:
1429   {
1430     const IDESC *idesc = &fr30bf_insn_data[itype];
1431     CGEN_INSN_INT insn = base_insn;
1432 #define FLD(f) abuf->fields.sfmt_ldr13.f
1433     UINT f_Rj;
1434     UINT f_Ri;
1435
1436     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1437     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1438
1439   /* Record the fields for the semantic handler.  */
1440   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1441   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1442   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ld", "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1443
1444 #if WITH_PROFILE_MODEL_P
1445   /* Record the fields for profiling.  */
1446   if (PROFILE_MODEL_P (current_cpu))
1447     {
1448       FLD (in_Rj) = f_Rj;
1449       FLD (out_Ri) = f_Ri;
1450     }
1451 #endif
1452 #undef FLD
1453     return idesc;
1454   }
1455
1456  extract_sfmt_ldr13:
1457   {
1458     const IDESC *idesc = &fr30bf_insn_data[itype];
1459     CGEN_INSN_INT insn = base_insn;
1460 #define FLD(f) abuf->fields.sfmt_ldr13.f
1461     UINT f_Rj;
1462     UINT f_Ri;
1463
1464     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1465     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1466
1467   /* Record the fields for the semantic handler.  */
1468   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1469   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1470   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr13", "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1471
1472 #if WITH_PROFILE_MODEL_P
1473   /* Record the fields for profiling.  */
1474   if (PROFILE_MODEL_P (current_cpu))
1475     {
1476       FLD (in_Rj) = f_Rj;
1477       FLD (in_h_gr_13) = 13;
1478       FLD (out_Ri) = f_Ri;
1479     }
1480 #endif
1481 #undef FLD
1482     return idesc;
1483   }
1484
1485  extract_sfmt_ldr14:
1486   {
1487     const IDESC *idesc = &fr30bf_insn_data[itype];
1488     CGEN_INSN_INT insn = base_insn;
1489 #define FLD(f) abuf->fields.sfmt_ldr14.f
1490     SI f_disp10;
1491     UINT f_Ri;
1492
1493     f_disp10 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (2));
1494     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1495
1496   /* Record the fields for the semantic handler.  */
1497   FLD (f_disp10) = f_disp10;
1498   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1499   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr14", "f_disp10 0x%x", 'x', f_disp10, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1500
1501 #if WITH_PROFILE_MODEL_P
1502   /* Record the fields for profiling.  */
1503   if (PROFILE_MODEL_P (current_cpu))
1504     {
1505       FLD (in_h_gr_14) = 14;
1506       FLD (out_Ri) = f_Ri;
1507     }
1508 #endif
1509 #undef FLD
1510     return idesc;
1511   }
1512
1513  extract_sfmt_ldr14uh:
1514   {
1515     const IDESC *idesc = &fr30bf_insn_data[itype];
1516     CGEN_INSN_INT insn = base_insn;
1517 #define FLD(f) abuf->fields.sfmt_ldr14uh.f
1518     SI f_disp9;
1519     UINT f_Ri;
1520
1521     f_disp9 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (1));
1522     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1523
1524   /* Record the fields for the semantic handler.  */
1525   FLD (f_disp9) = f_disp9;
1526   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1527   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr14uh", "f_disp9 0x%x", 'x', f_disp9, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1528
1529 #if WITH_PROFILE_MODEL_P
1530   /* Record the fields for profiling.  */
1531   if (PROFILE_MODEL_P (current_cpu))
1532     {
1533       FLD (in_h_gr_14) = 14;
1534       FLD (out_Ri) = f_Ri;
1535     }
1536 #endif
1537 #undef FLD
1538     return idesc;
1539   }
1540
1541  extract_sfmt_ldr14ub:
1542   {
1543     const IDESC *idesc = &fr30bf_insn_data[itype];
1544     CGEN_INSN_INT insn = base_insn;
1545 #define FLD(f) abuf->fields.sfmt_ldr14ub.f
1546     INT f_disp8;
1547     UINT f_Ri;
1548
1549     f_disp8 = EXTRACT_MSB0_INT (insn, 16, 4, 8);
1550     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1551
1552   /* Record the fields for the semantic handler.  */
1553   FLD (f_disp8) = f_disp8;
1554   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1555   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr14ub", "f_disp8 0x%x", 'x', f_disp8, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1556
1557 #if WITH_PROFILE_MODEL_P
1558   /* Record the fields for profiling.  */
1559   if (PROFILE_MODEL_P (current_cpu))
1560     {
1561       FLD (in_h_gr_14) = 14;
1562       FLD (out_Ri) = f_Ri;
1563     }
1564 #endif
1565 #undef FLD
1566     return idesc;
1567   }
1568
1569  extract_sfmt_ldr15:
1570   {
1571     const IDESC *idesc = &fr30bf_insn_data[itype];
1572     CGEN_INSN_INT insn = base_insn;
1573 #define FLD(f) abuf->fields.sfmt_ldr15.f
1574     USI f_udisp6;
1575     UINT f_Ri;
1576
1577     f_udisp6 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) << (2));
1578     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1579
1580   /* Record the fields for the semantic handler.  */
1581   FLD (f_udisp6) = f_udisp6;
1582   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1583   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr15", "f_udisp6 0x%x", 'x', f_udisp6, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1584
1585 #if WITH_PROFILE_MODEL_P
1586   /* Record the fields for profiling.  */
1587   if (PROFILE_MODEL_P (current_cpu))
1588     {
1589       FLD (in_h_gr_15) = 15;
1590       FLD (out_Ri) = f_Ri;
1591     }
1592 #endif
1593 #undef FLD
1594     return idesc;
1595   }
1596
1597  extract_sfmt_ldr15gr:
1598   {
1599     const IDESC *idesc = &fr30bf_insn_data[itype];
1600     CGEN_INSN_INT insn = base_insn;
1601 #define FLD(f) abuf->fields.sfmt_ldr15gr.f
1602     UINT f_Ri;
1603
1604     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1605
1606   /* Record the fields for the semantic handler.  */
1607   FLD (f_Ri) = f_Ri;
1608   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1609   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));
1610
1611 #if WITH_PROFILE_MODEL_P
1612   /* Record the fields for profiling.  */
1613   if (PROFILE_MODEL_P (current_cpu))
1614     {
1615       FLD (in_h_gr_15) = 15;
1616       FLD (out_Ri) = f_Ri;
1617       FLD (out_h_gr_15) = 15;
1618     }
1619 #endif
1620 #undef FLD
1621     return idesc;
1622   }
1623
1624  extract_sfmt_ldr15dr:
1625   {
1626     const IDESC *idesc = &fr30bf_insn_data[itype];
1627     CGEN_INSN_INT insn = base_insn;
1628 #define FLD(f) abuf->fields.sfmt_ldr15dr.f
1629     UINT f_Rs2;
1630
1631     f_Rs2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1632
1633   /* Record the fields for the semantic handler.  */
1634   FLD (f_Rs2) = f_Rs2;
1635   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr15dr", "f_Rs2 0x%x", 'x', f_Rs2, (char *) 0));
1636
1637 #if WITH_PROFILE_MODEL_P
1638   /* Record the fields for profiling.  */
1639   if (PROFILE_MODEL_P (current_cpu))
1640     {
1641       FLD (in_h_gr_15) = 15;
1642       FLD (out_h_gr_15) = 15;
1643     }
1644 #endif
1645 #undef FLD
1646     return idesc;
1647   }
1648
1649  extract_sfmt_ldr15ps:
1650   {
1651     const IDESC *idesc = &fr30bf_insn_data[itype];
1652     CGEN_INSN_INT insn = base_insn;
1653 #define FLD(f) abuf->fields.sfmt_addsp.f
1654
1655
1656   /* Record the fields for the semantic handler.  */
1657   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr15ps", (char *) 0));
1658
1659 #if WITH_PROFILE_MODEL_P
1660   /* Record the fields for profiling.  */
1661   if (PROFILE_MODEL_P (current_cpu))
1662     {
1663       FLD (in_h_gr_15) = 15;
1664       FLD (out_h_gr_15) = 15;
1665     }
1666 #endif
1667 #undef FLD
1668     return idesc;
1669   }
1670
1671  extract_sfmt_st:
1672   {
1673     const IDESC *idesc = &fr30bf_insn_data[itype];
1674     CGEN_INSN_INT insn = base_insn;
1675 #define FLD(f) abuf->fields.sfmt_str13.f
1676     UINT f_Rj;
1677     UINT f_Ri;
1678
1679     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1680     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1681
1682   /* Record the fields for the semantic handler.  */
1683   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1684   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1685   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_st", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1686
1687 #if WITH_PROFILE_MODEL_P
1688   /* Record the fields for profiling.  */
1689   if (PROFILE_MODEL_P (current_cpu))
1690     {
1691       FLD (in_Ri) = f_Ri;
1692       FLD (in_Rj) = f_Rj;
1693     }
1694 #endif
1695 #undef FLD
1696     return idesc;
1697   }
1698
1699  extract_sfmt_str13:
1700   {
1701     const IDESC *idesc = &fr30bf_insn_data[itype];
1702     CGEN_INSN_INT insn = base_insn;
1703 #define FLD(f) abuf->fields.sfmt_str13.f
1704     UINT f_Rj;
1705     UINT f_Ri;
1706
1707     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1708     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1709
1710   /* Record the fields for the semantic handler.  */
1711   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1712   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1713   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str13", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1714
1715 #if WITH_PROFILE_MODEL_P
1716   /* Record the fields for profiling.  */
1717   if (PROFILE_MODEL_P (current_cpu))
1718     {
1719       FLD (in_Ri) = f_Ri;
1720       FLD (in_Rj) = f_Rj;
1721       FLD (in_h_gr_13) = 13;
1722     }
1723 #endif
1724 #undef FLD
1725     return idesc;
1726   }
1727
1728  extract_sfmt_str14:
1729   {
1730     const IDESC *idesc = &fr30bf_insn_data[itype];
1731     CGEN_INSN_INT insn = base_insn;
1732 #define FLD(f) abuf->fields.sfmt_str14.f
1733     SI f_disp10;
1734     UINT f_Ri;
1735
1736     f_disp10 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (2));
1737     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1738
1739   /* Record the fields for the semantic handler.  */
1740   FLD (f_disp10) = f_disp10;
1741   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1742   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str14", "f_disp10 0x%x", 'x', f_disp10, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1743
1744 #if WITH_PROFILE_MODEL_P
1745   /* Record the fields for profiling.  */
1746   if (PROFILE_MODEL_P (current_cpu))
1747     {
1748       FLD (in_Ri) = f_Ri;
1749       FLD (in_h_gr_14) = 14;
1750     }
1751 #endif
1752 #undef FLD
1753     return idesc;
1754   }
1755
1756  extract_sfmt_str14h:
1757   {
1758     const IDESC *idesc = &fr30bf_insn_data[itype];
1759     CGEN_INSN_INT insn = base_insn;
1760 #define FLD(f) abuf->fields.sfmt_str14h.f
1761     SI f_disp9;
1762     UINT f_Ri;
1763
1764     f_disp9 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (1));
1765     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1766
1767   /* Record the fields for the semantic handler.  */
1768   FLD (f_disp9) = f_disp9;
1769   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1770   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str14h", "f_disp9 0x%x", 'x', f_disp9, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1771
1772 #if WITH_PROFILE_MODEL_P
1773   /* Record the fields for profiling.  */
1774   if (PROFILE_MODEL_P (current_cpu))
1775     {
1776       FLD (in_Ri) = f_Ri;
1777       FLD (in_h_gr_14) = 14;
1778     }
1779 #endif
1780 #undef FLD
1781     return idesc;
1782   }
1783
1784  extract_sfmt_str14b:
1785   {
1786     const IDESC *idesc = &fr30bf_insn_data[itype];
1787     CGEN_INSN_INT insn = base_insn;
1788 #define FLD(f) abuf->fields.sfmt_str14b.f
1789     INT f_disp8;
1790     UINT f_Ri;
1791
1792     f_disp8 = EXTRACT_MSB0_INT (insn, 16, 4, 8);
1793     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1794
1795   /* Record the fields for the semantic handler.  */
1796   FLD (f_disp8) = f_disp8;
1797   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1798   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str14b", "f_disp8 0x%x", 'x', f_disp8, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1799
1800 #if WITH_PROFILE_MODEL_P
1801   /* Record the fields for profiling.  */
1802   if (PROFILE_MODEL_P (current_cpu))
1803     {
1804       FLD (in_Ri) = f_Ri;
1805       FLD (in_h_gr_14) = 14;
1806     }
1807 #endif
1808 #undef FLD
1809     return idesc;
1810   }
1811
1812  extract_sfmt_str15:
1813   {
1814     const IDESC *idesc = &fr30bf_insn_data[itype];
1815     CGEN_INSN_INT insn = base_insn;
1816 #define FLD(f) abuf->fields.sfmt_str15.f
1817     USI f_udisp6;
1818     UINT f_Ri;
1819
1820     f_udisp6 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) << (2));
1821     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1822
1823   /* Record the fields for the semantic handler.  */
1824   FLD (f_udisp6) = f_udisp6;
1825   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1826   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15", "f_udisp6 0x%x", 'x', f_udisp6, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1827
1828 #if WITH_PROFILE_MODEL_P
1829   /* Record the fields for profiling.  */
1830   if (PROFILE_MODEL_P (current_cpu))
1831     {
1832       FLD (in_Ri) = f_Ri;
1833       FLD (in_h_gr_15) = 15;
1834     }
1835 #endif
1836 #undef FLD
1837     return idesc;
1838   }
1839
1840  extract_sfmt_str15gr:
1841   {
1842     const IDESC *idesc = &fr30bf_insn_data[itype];
1843     CGEN_INSN_INT insn = base_insn;
1844 #define FLD(f) abuf->fields.sfmt_str15gr.f
1845     UINT f_Ri;
1846
1847     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1848
1849   /* Record the fields for the semantic handler.  */
1850   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1851   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15gr", "Ri 0x%x", 'x', f_Ri, (char *) 0));
1852
1853 #if WITH_PROFILE_MODEL_P
1854   /* Record the fields for profiling.  */
1855   if (PROFILE_MODEL_P (current_cpu))
1856     {
1857       FLD (in_Ri) = f_Ri;
1858       FLD (in_h_gr_15) = 15;
1859       FLD (out_h_gr_15) = 15;
1860     }
1861 #endif
1862 #undef FLD
1863     return idesc;
1864   }
1865
1866  extract_sfmt_str15dr:
1867   {
1868     const IDESC *idesc = &fr30bf_insn_data[itype];
1869     CGEN_INSN_INT insn = base_insn;
1870 #define FLD(f) abuf->fields.sfmt_ldr15dr.f
1871     UINT f_Rs2;
1872
1873     f_Rs2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1874
1875   /* Record the fields for the semantic handler.  */
1876   FLD (f_Rs2) = f_Rs2;
1877   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15dr", "f_Rs2 0x%x", 'x', f_Rs2, (char *) 0));
1878
1879 #if WITH_PROFILE_MODEL_P
1880   /* Record the fields for profiling.  */
1881   if (PROFILE_MODEL_P (current_cpu))
1882     {
1883       FLD (in_h_gr_15) = 15;
1884       FLD (out_h_gr_15) = 15;
1885     }
1886 #endif
1887 #undef FLD
1888     return idesc;
1889   }
1890
1891  extract_sfmt_str15ps:
1892   {
1893     const IDESC *idesc = &fr30bf_insn_data[itype];
1894     CGEN_INSN_INT insn = base_insn;
1895 #define FLD(f) abuf->fields.sfmt_addsp.f
1896
1897
1898   /* Record the fields for the semantic handler.  */
1899   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15ps", (char *) 0));
1900
1901 #if WITH_PROFILE_MODEL_P
1902   /* Record the fields for profiling.  */
1903   if (PROFILE_MODEL_P (current_cpu))
1904     {
1905       FLD (in_h_gr_15) = 15;
1906       FLD (out_h_gr_15) = 15;
1907     }
1908 #endif
1909 #undef FLD
1910     return idesc;
1911   }
1912
1913  extract_sfmt_mov:
1914   {
1915     const IDESC *idesc = &fr30bf_insn_data[itype];
1916     CGEN_INSN_INT insn = base_insn;
1917 #define FLD(f) abuf->fields.sfmt_ldr13.f
1918     UINT f_Rj;
1919     UINT f_Ri;
1920
1921     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1922     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1923
1924   /* Record the fields for the semantic handler.  */
1925   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1926   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1927   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mov", "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1928
1929 #if WITH_PROFILE_MODEL_P
1930   /* Record the fields for profiling.  */
1931   if (PROFILE_MODEL_P (current_cpu))
1932     {
1933       FLD (in_Rj) = f_Rj;
1934       FLD (out_Ri) = f_Ri;
1935     }
1936 #endif
1937 #undef FLD
1938     return idesc;
1939   }
1940
1941  extract_sfmt_movdr:
1942   {
1943     const IDESC *idesc = &fr30bf_insn_data[itype];
1944     CGEN_INSN_INT insn = base_insn;
1945 #define FLD(f) abuf->fields.sfmt_movdr.f
1946     UINT f_Rs1;
1947     UINT f_Ri;
1948
1949     f_Rs1 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1950     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1951
1952   /* Record the fields for the semantic handler.  */
1953   FLD (f_Rs1) = f_Rs1;
1954   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1955   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movdr", "f_Rs1 0x%x", 'x', f_Rs1, "Ri 0x%x", 'x', f_Ri, (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 (out_Ri) = f_Ri;
1962     }
1963 #endif
1964 #undef FLD
1965     return idesc;
1966   }
1967
1968  extract_sfmt_movps:
1969   {
1970     const IDESC *idesc = &fr30bf_insn_data[itype];
1971     CGEN_INSN_INT insn = base_insn;
1972 #define FLD(f) abuf->fields.sfmt_movdr.f
1973     UINT f_Ri;
1974
1975     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1976
1977   /* Record the fields for the semantic handler.  */
1978   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1979   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movps", "Ri 0x%x", 'x', f_Ri, (char *) 0));
1980
1981 #if WITH_PROFILE_MODEL_P
1982   /* Record the fields for profiling.  */
1983   if (PROFILE_MODEL_P (current_cpu))
1984     {
1985       FLD (out_Ri) = f_Ri;
1986     }
1987 #endif
1988 #undef FLD
1989     return idesc;
1990   }
1991
1992  extract_sfmt_mov2dr:
1993   {
1994     const IDESC *idesc = &fr30bf_insn_data[itype];
1995     CGEN_INSN_INT insn = base_insn;
1996 #define FLD(f) abuf->fields.sfmt_mov2dr.f
1997     UINT f_Rs1;
1998     UINT f_Ri;
1999
2000     f_Rs1 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
2001     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2002
2003   /* Record the fields for the semantic handler.  */
2004   FLD (f_Rs1) = f_Rs1;
2005   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2006   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mov2dr", "f_Rs1 0x%x", 'x', f_Rs1, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2007
2008 #if WITH_PROFILE_MODEL_P
2009   /* Record the fields for profiling.  */
2010   if (PROFILE_MODEL_P (current_cpu))
2011     {
2012       FLD (in_Ri) = f_Ri;
2013     }
2014 #endif
2015 #undef FLD
2016     return idesc;
2017   }
2018
2019  extract_sfmt_mov2ps:
2020   {
2021     const IDESC *idesc = &fr30bf_insn_data[itype];
2022     CGEN_INSN_INT insn = base_insn;
2023 #define FLD(f) abuf->fields.sfmt_mov2dr.f
2024     UINT f_Ri;
2025
2026     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2027
2028   /* Record the fields for the semantic handler.  */
2029   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2030   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mov2ps", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2031
2032 #if WITH_PROFILE_MODEL_P
2033   /* Record the fields for profiling.  */
2034   if (PROFILE_MODEL_P (current_cpu))
2035     {
2036       FLD (in_Ri) = f_Ri;
2037     }
2038 #endif
2039 #undef FLD
2040     return idesc;
2041   }
2042
2043  extract_sfmt_jmp:
2044   {
2045     const IDESC *idesc = &fr30bf_insn_data[itype];
2046     CGEN_INSN_INT insn = base_insn;
2047 #define FLD(f) abuf->fields.sfmt_mov2dr.f
2048     UINT f_Ri;
2049
2050     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2051
2052   /* Record the fields for the semantic handler.  */
2053   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2054   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jmp", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2055
2056 #if WITH_PROFILE_MODEL_P
2057   /* Record the fields for profiling.  */
2058   if (PROFILE_MODEL_P (current_cpu))
2059     {
2060       FLD (in_Ri) = f_Ri;
2061     }
2062 #endif
2063 #undef FLD
2064     return idesc;
2065   }
2066
2067  extract_sfmt_callr:
2068   {
2069     const IDESC *idesc = &fr30bf_insn_data[itype];
2070     CGEN_INSN_INT insn = base_insn;
2071 #define FLD(f) abuf->fields.sfmt_mov2dr.f
2072     UINT f_Ri;
2073
2074     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2075
2076   /* Record the fields for the semantic handler.  */
2077   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2078   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_callr", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2079
2080 #if WITH_PROFILE_MODEL_P
2081   /* Record the fields for profiling.  */
2082   if (PROFILE_MODEL_P (current_cpu))
2083     {
2084       FLD (in_Ri) = f_Ri;
2085     }
2086 #endif
2087 #undef FLD
2088     return idesc;
2089   }
2090
2091  extract_sfmt_call:
2092   {
2093     const IDESC *idesc = &fr30bf_insn_data[itype];
2094     CGEN_INSN_INT insn = base_insn;
2095 #define FLD(f) abuf->fields.sfmt_call.f
2096     SI f_rel12;
2097
2098     f_rel12 = ((((EXTRACT_MSB0_INT (insn, 16, 5, 11)) << (1))) + (((pc) + (2))));
2099
2100   /* Record the fields for the semantic handler.  */
2101   FLD (i_label12) = f_rel12;
2102   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_call", "label12 0x%x", 'x', f_rel12, (char *) 0));
2103
2104 #if WITH_PROFILE_MODEL_P
2105   /* Record the fields for profiling.  */
2106   if (PROFILE_MODEL_P (current_cpu))
2107     {
2108     }
2109 #endif
2110 #undef FLD
2111     return idesc;
2112   }
2113
2114  extract_sfmt_ret:
2115   {
2116     const IDESC *idesc = &fr30bf_insn_data[itype];
2117     CGEN_INSN_INT insn = base_insn;
2118 #define FLD(f) abuf->fields.fmt_empty.f
2119
2120
2121   /* Record the fields for the semantic handler.  */
2122   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ret", (char *) 0));
2123
2124 #if WITH_PROFILE_MODEL_P
2125   /* Record the fields for profiling.  */
2126   if (PROFILE_MODEL_P (current_cpu))
2127     {
2128     }
2129 #endif
2130 #undef FLD
2131     return idesc;
2132   }
2133
2134  extract_sfmt_int:
2135   {
2136     const IDESC *idesc = &fr30bf_insn_data[itype];
2137     CGEN_INSN_INT insn = base_insn;
2138 #define FLD(f) abuf->fields.sfmt_int.f
2139     UINT f_u8;
2140
2141     f_u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2142
2143   /* Record the fields for the semantic handler.  */
2144   FLD (f_u8) = f_u8;
2145   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_int", "f_u8 0x%x", 'x', f_u8, (char *) 0));
2146
2147 #if WITH_PROFILE_MODEL_P
2148   /* Record the fields for profiling.  */
2149   if (PROFILE_MODEL_P (current_cpu))
2150     {
2151     }
2152 #endif
2153 #undef FLD
2154     return idesc;
2155   }
2156
2157  extract_sfmt_inte:
2158   {
2159     const IDESC *idesc = &fr30bf_insn_data[itype];
2160     CGEN_INSN_INT insn = base_insn;
2161 #define FLD(f) abuf->fields.fmt_empty.f
2162
2163
2164   /* Record the fields for the semantic handler.  */
2165   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_inte", (char *) 0));
2166
2167 #if WITH_PROFILE_MODEL_P
2168   /* Record the fields for profiling.  */
2169   if (PROFILE_MODEL_P (current_cpu))
2170     {
2171     }
2172 #endif
2173 #undef FLD
2174     return idesc;
2175   }
2176
2177  extract_sfmt_reti:
2178   {
2179     const IDESC *idesc = &fr30bf_insn_data[itype];
2180     CGEN_INSN_INT insn = base_insn;
2181 #define FLD(f) abuf->fields.fmt_empty.f
2182
2183
2184   /* Record the fields for the semantic handler.  */
2185   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_reti", (char *) 0));
2186
2187 #if WITH_PROFILE_MODEL_P
2188   /* Record the fields for profiling.  */
2189   if (PROFILE_MODEL_P (current_cpu))
2190     {
2191     }
2192 #endif
2193 #undef FLD
2194     return idesc;
2195   }
2196
2197  extract_sfmt_brad:
2198   {
2199     const IDESC *idesc = &fr30bf_insn_data[itype];
2200     CGEN_INSN_INT insn = base_insn;
2201 #define FLD(f) abuf->fields.sfmt_brad.f
2202     SI f_rel9;
2203
2204     f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2205
2206   /* Record the fields for the semantic handler.  */
2207   FLD (i_label9) = f_rel9;
2208   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_brad", "label9 0x%x", 'x', f_rel9, (char *) 0));
2209
2210 #if WITH_PROFILE_MODEL_P
2211   /* Record the fields for profiling.  */
2212   if (PROFILE_MODEL_P (current_cpu))
2213     {
2214     }
2215 #endif
2216 #undef FLD
2217     return idesc;
2218   }
2219
2220  extract_sfmt_bnod:
2221   {
2222     const IDESC *idesc = &fr30bf_insn_data[itype];
2223     CGEN_INSN_INT insn = base_insn;
2224 #define FLD(f) abuf->fields.fmt_empty.f
2225
2226
2227   /* Record the fields for the semantic handler.  */
2228   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bnod", (char *) 0));
2229
2230 #undef FLD
2231     return idesc;
2232   }
2233
2234  extract_sfmt_beqd:
2235   {
2236     const IDESC *idesc = &fr30bf_insn_data[itype];
2237     CGEN_INSN_INT insn = base_insn;
2238 #define FLD(f) abuf->fields.sfmt_brad.f
2239     SI f_rel9;
2240
2241     f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2242
2243   /* Record the fields for the semantic handler.  */
2244   FLD (i_label9) = f_rel9;
2245   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_beqd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2246
2247 #if WITH_PROFILE_MODEL_P
2248   /* Record the fields for profiling.  */
2249   if (PROFILE_MODEL_P (current_cpu))
2250     {
2251     }
2252 #endif
2253 #undef FLD
2254     return idesc;
2255   }
2256
2257  extract_sfmt_bcd:
2258   {
2259     const IDESC *idesc = &fr30bf_insn_data[itype];
2260     CGEN_INSN_INT insn = base_insn;
2261 #define FLD(f) abuf->fields.sfmt_brad.f
2262     SI f_rel9;
2263
2264     f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2265
2266   /* Record the fields for the semantic handler.  */
2267   FLD (i_label9) = f_rel9;
2268   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bcd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2269
2270 #if WITH_PROFILE_MODEL_P
2271   /* Record the fields for profiling.  */
2272   if (PROFILE_MODEL_P (current_cpu))
2273     {
2274     }
2275 #endif
2276 #undef FLD
2277     return idesc;
2278   }
2279
2280  extract_sfmt_bnd:
2281   {
2282     const IDESC *idesc = &fr30bf_insn_data[itype];
2283     CGEN_INSN_INT insn = base_insn;
2284 #define FLD(f) abuf->fields.sfmt_brad.f
2285     SI f_rel9;
2286
2287     f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2288
2289   /* Record the fields for the semantic handler.  */
2290   FLD (i_label9) = f_rel9;
2291   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bnd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2292
2293 #if WITH_PROFILE_MODEL_P
2294   /* Record the fields for profiling.  */
2295   if (PROFILE_MODEL_P (current_cpu))
2296     {
2297     }
2298 #endif
2299 #undef FLD
2300     return idesc;
2301   }
2302
2303  extract_sfmt_bvd:
2304   {
2305     const IDESC *idesc = &fr30bf_insn_data[itype];
2306     CGEN_INSN_INT insn = base_insn;
2307 #define FLD(f) abuf->fields.sfmt_brad.f
2308     SI f_rel9;
2309
2310     f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2311
2312   /* Record the fields for the semantic handler.  */
2313   FLD (i_label9) = f_rel9;
2314   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bvd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2315
2316 #if WITH_PROFILE_MODEL_P
2317   /* Record the fields for profiling.  */
2318   if (PROFILE_MODEL_P (current_cpu))
2319     {
2320     }
2321 #endif
2322 #undef FLD
2323     return idesc;
2324   }
2325
2326  extract_sfmt_bltd:
2327   {
2328     const IDESC *idesc = &fr30bf_insn_data[itype];
2329     CGEN_INSN_INT insn = base_insn;
2330 #define FLD(f) abuf->fields.sfmt_brad.f
2331     SI f_rel9;
2332
2333     f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2334
2335   /* Record the fields for the semantic handler.  */
2336   FLD (i_label9) = f_rel9;
2337   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bltd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2338
2339 #if WITH_PROFILE_MODEL_P
2340   /* Record the fields for profiling.  */
2341   if (PROFILE_MODEL_P (current_cpu))
2342     {
2343     }
2344 #endif
2345 #undef FLD
2346     return idesc;
2347   }
2348
2349  extract_sfmt_bled:
2350   {
2351     const IDESC *idesc = &fr30bf_insn_data[itype];
2352     CGEN_INSN_INT insn = base_insn;
2353 #define FLD(f) abuf->fields.sfmt_brad.f
2354     SI f_rel9;
2355
2356     f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2357
2358   /* Record the fields for the semantic handler.  */
2359   FLD (i_label9) = f_rel9;
2360   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bled", "label9 0x%x", 'x', f_rel9, (char *) 0));
2361
2362 #if WITH_PROFILE_MODEL_P
2363   /* Record the fields for profiling.  */
2364   if (PROFILE_MODEL_P (current_cpu))
2365     {
2366     }
2367 #endif
2368 #undef FLD
2369     return idesc;
2370   }
2371
2372  extract_sfmt_blsd:
2373   {
2374     const IDESC *idesc = &fr30bf_insn_data[itype];
2375     CGEN_INSN_INT insn = base_insn;
2376 #define FLD(f) abuf->fields.sfmt_brad.f
2377     SI f_rel9;
2378
2379     f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2380
2381   /* Record the fields for the semantic handler.  */
2382   FLD (i_label9) = f_rel9;
2383   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_blsd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2384
2385 #if WITH_PROFILE_MODEL_P
2386   /* Record the fields for profiling.  */
2387   if (PROFILE_MODEL_P (current_cpu))
2388     {
2389     }
2390 #endif
2391 #undef FLD
2392     return idesc;
2393   }
2394
2395  extract_sfmt_dmovr13:
2396   {
2397     const IDESC *idesc = &fr30bf_insn_data[itype];
2398     CGEN_INSN_INT insn = base_insn;
2399 #define FLD(f) abuf->fields.sfmt_dmovr13pi.f
2400     USI f_dir10;
2401
2402     f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2403
2404   /* Record the fields for the semantic handler.  */
2405   FLD (f_dir10) = f_dir10;
2406   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2407
2408 #if WITH_PROFILE_MODEL_P
2409   /* Record the fields for profiling.  */
2410   if (PROFILE_MODEL_P (current_cpu))
2411     {
2412       FLD (in_h_gr_13) = 13;
2413     }
2414 #endif
2415 #undef FLD
2416     return idesc;
2417   }
2418
2419  extract_sfmt_dmovr13h:
2420   {
2421     const IDESC *idesc = &fr30bf_insn_data[itype];
2422     CGEN_INSN_INT insn = base_insn;
2423 #define FLD(f) abuf->fields.sfmt_dmovr13pih.f
2424     USI f_dir9;
2425
2426     f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2427
2428   /* Record the fields for the semantic handler.  */
2429   FLD (f_dir9) = f_dir9;
2430   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13h", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2431
2432 #if WITH_PROFILE_MODEL_P
2433   /* Record the fields for profiling.  */
2434   if (PROFILE_MODEL_P (current_cpu))
2435     {
2436       FLD (in_h_gr_13) = 13;
2437     }
2438 #endif
2439 #undef FLD
2440     return idesc;
2441   }
2442
2443  extract_sfmt_dmovr13b:
2444   {
2445     const IDESC *idesc = &fr30bf_insn_data[itype];
2446     CGEN_INSN_INT insn = base_insn;
2447 #define FLD(f) abuf->fields.sfmt_dmovr13pib.f
2448     UINT f_dir8;
2449
2450     f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2451
2452   /* Record the fields for the semantic handler.  */
2453   FLD (f_dir8) = f_dir8;
2454   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13b", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2455
2456 #if WITH_PROFILE_MODEL_P
2457   /* Record the fields for profiling.  */
2458   if (PROFILE_MODEL_P (current_cpu))
2459     {
2460       FLD (in_h_gr_13) = 13;
2461     }
2462 #endif
2463 #undef FLD
2464     return idesc;
2465   }
2466
2467  extract_sfmt_dmovr13pi:
2468   {
2469     const IDESC *idesc = &fr30bf_insn_data[itype];
2470     CGEN_INSN_INT insn = base_insn;
2471 #define FLD(f) abuf->fields.sfmt_dmovr13pi.f
2472     USI f_dir10;
2473
2474     f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2475
2476   /* Record the fields for the semantic handler.  */
2477   FLD (f_dir10) = f_dir10;
2478   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2479
2480 #if WITH_PROFILE_MODEL_P
2481   /* Record the fields for profiling.  */
2482   if (PROFILE_MODEL_P (current_cpu))
2483     {
2484       FLD (in_h_gr_13) = 13;
2485       FLD (out_h_gr_13) = 13;
2486     }
2487 #endif
2488 #undef FLD
2489     return idesc;
2490   }
2491
2492  extract_sfmt_dmovr13pih:
2493   {
2494     const IDESC *idesc = &fr30bf_insn_data[itype];
2495     CGEN_INSN_INT insn = base_insn;
2496 #define FLD(f) abuf->fields.sfmt_dmovr13pih.f
2497     USI f_dir9;
2498
2499     f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2500
2501   /* Record the fields for the semantic handler.  */
2502   FLD (f_dir9) = f_dir9;
2503   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13pih", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2504
2505 #if WITH_PROFILE_MODEL_P
2506   /* Record the fields for profiling.  */
2507   if (PROFILE_MODEL_P (current_cpu))
2508     {
2509       FLD (in_h_gr_13) = 13;
2510       FLD (out_h_gr_13) = 13;
2511     }
2512 #endif
2513 #undef FLD
2514     return idesc;
2515   }
2516
2517  extract_sfmt_dmovr13pib:
2518   {
2519     const IDESC *idesc = &fr30bf_insn_data[itype];
2520     CGEN_INSN_INT insn = base_insn;
2521 #define FLD(f) abuf->fields.sfmt_dmovr13pib.f
2522     UINT f_dir8;
2523
2524     f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2525
2526   /* Record the fields for the semantic handler.  */
2527   FLD (f_dir8) = f_dir8;
2528   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13pib", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2529
2530 #if WITH_PROFILE_MODEL_P
2531   /* Record the fields for profiling.  */
2532   if (PROFILE_MODEL_P (current_cpu))
2533     {
2534       FLD (in_h_gr_13) = 13;
2535       FLD (out_h_gr_13) = 13;
2536     }
2537 #endif
2538 #undef FLD
2539     return idesc;
2540   }
2541
2542  extract_sfmt_dmovr15pi:
2543   {
2544     const IDESC *idesc = &fr30bf_insn_data[itype];
2545     CGEN_INSN_INT insn = base_insn;
2546 #define FLD(f) abuf->fields.sfmt_dmovr15pi.f
2547     USI f_dir10;
2548
2549     f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2550
2551   /* Record the fields for the semantic handler.  */
2552   FLD (f_dir10) = f_dir10;
2553   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr15pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2554
2555 #if WITH_PROFILE_MODEL_P
2556   /* Record the fields for profiling.  */
2557   if (PROFILE_MODEL_P (current_cpu))
2558     {
2559       FLD (in_h_gr_15) = 15;
2560       FLD (out_h_gr_15) = 15;
2561     }
2562 #endif
2563 #undef FLD
2564     return idesc;
2565   }
2566
2567  extract_sfmt_dmov2r13:
2568   {
2569     const IDESC *idesc = &fr30bf_insn_data[itype];
2570     CGEN_INSN_INT insn = base_insn;
2571 #define FLD(f) abuf->fields.sfmt_dmovr13pi.f
2572     USI f_dir10;
2573
2574     f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2575
2576   /* Record the fields for the semantic handler.  */
2577   FLD (f_dir10) = f_dir10;
2578   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2579
2580 #if WITH_PROFILE_MODEL_P
2581   /* Record the fields for profiling.  */
2582   if (PROFILE_MODEL_P (current_cpu))
2583     {
2584       FLD (out_h_gr_13) = 13;
2585     }
2586 #endif
2587 #undef FLD
2588     return idesc;
2589   }
2590
2591  extract_sfmt_dmov2r13h:
2592   {
2593     const IDESC *idesc = &fr30bf_insn_data[itype];
2594     CGEN_INSN_INT insn = base_insn;
2595 #define FLD(f) abuf->fields.sfmt_dmovr13pih.f
2596     USI f_dir9;
2597
2598     f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2599
2600   /* Record the fields for the semantic handler.  */
2601   FLD (f_dir9) = f_dir9;
2602   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13h", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2603
2604 #if WITH_PROFILE_MODEL_P
2605   /* Record the fields for profiling.  */
2606   if (PROFILE_MODEL_P (current_cpu))
2607     {
2608       FLD (out_h_gr_13) = 13;
2609     }
2610 #endif
2611 #undef FLD
2612     return idesc;
2613   }
2614
2615  extract_sfmt_dmov2r13b:
2616   {
2617     const IDESC *idesc = &fr30bf_insn_data[itype];
2618     CGEN_INSN_INT insn = base_insn;
2619 #define FLD(f) abuf->fields.sfmt_dmovr13pib.f
2620     UINT f_dir8;
2621
2622     f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2623
2624   /* Record the fields for the semantic handler.  */
2625   FLD (f_dir8) = f_dir8;
2626   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13b", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2627
2628 #if WITH_PROFILE_MODEL_P
2629   /* Record the fields for profiling.  */
2630   if (PROFILE_MODEL_P (current_cpu))
2631     {
2632       FLD (out_h_gr_13) = 13;
2633     }
2634 #endif
2635 #undef FLD
2636     return idesc;
2637   }
2638
2639  extract_sfmt_dmov2r13pi:
2640   {
2641     const IDESC *idesc = &fr30bf_insn_data[itype];
2642     CGEN_INSN_INT insn = base_insn;
2643 #define FLD(f) abuf->fields.sfmt_dmovr13pi.f
2644     USI f_dir10;
2645
2646     f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2647
2648   /* Record the fields for the semantic handler.  */
2649   FLD (f_dir10) = f_dir10;
2650   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2651
2652 #if WITH_PROFILE_MODEL_P
2653   /* Record the fields for profiling.  */
2654   if (PROFILE_MODEL_P (current_cpu))
2655     {
2656       FLD (in_h_gr_13) = 13;
2657       FLD (out_h_gr_13) = 13;
2658     }
2659 #endif
2660 #undef FLD
2661     return idesc;
2662   }
2663
2664  extract_sfmt_dmov2r13pih:
2665   {
2666     const IDESC *idesc = &fr30bf_insn_data[itype];
2667     CGEN_INSN_INT insn = base_insn;
2668 #define FLD(f) abuf->fields.sfmt_dmovr13pih.f
2669     USI f_dir9;
2670
2671     f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2672
2673   /* Record the fields for the semantic handler.  */
2674   FLD (f_dir9) = f_dir9;
2675   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13pih", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2676
2677 #if WITH_PROFILE_MODEL_P
2678   /* Record the fields for profiling.  */
2679   if (PROFILE_MODEL_P (current_cpu))
2680     {
2681       FLD (in_h_gr_13) = 13;
2682       FLD (out_h_gr_13) = 13;
2683     }
2684 #endif
2685 #undef FLD
2686     return idesc;
2687   }
2688
2689  extract_sfmt_dmov2r13pib:
2690   {
2691     const IDESC *idesc = &fr30bf_insn_data[itype];
2692     CGEN_INSN_INT insn = base_insn;
2693 #define FLD(f) abuf->fields.sfmt_dmovr13pib.f
2694     UINT f_dir8;
2695
2696     f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2697
2698   /* Record the fields for the semantic handler.  */
2699   FLD (f_dir8) = f_dir8;
2700   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13pib", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2701
2702 #if WITH_PROFILE_MODEL_P
2703   /* Record the fields for profiling.  */
2704   if (PROFILE_MODEL_P (current_cpu))
2705     {
2706       FLD (in_h_gr_13) = 13;
2707       FLD (out_h_gr_13) = 13;
2708     }
2709 #endif
2710 #undef FLD
2711     return idesc;
2712   }
2713
2714  extract_sfmt_dmov2r15pd:
2715   {
2716     const IDESC *idesc = &fr30bf_insn_data[itype];
2717     CGEN_INSN_INT insn = base_insn;
2718 #define FLD(f) abuf->fields.sfmt_dmovr15pi.f
2719     USI f_dir10;
2720
2721     f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2722
2723   /* Record the fields for the semantic handler.  */
2724   FLD (f_dir10) = f_dir10;
2725   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r15pd", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2726
2727 #if WITH_PROFILE_MODEL_P
2728   /* Record the fields for profiling.  */
2729   if (PROFILE_MODEL_P (current_cpu))
2730     {
2731       FLD (in_h_gr_15) = 15;
2732       FLD (out_h_gr_15) = 15;
2733     }
2734 #endif
2735 #undef FLD
2736     return idesc;
2737   }
2738
2739  extract_sfmt_ldres:
2740   {
2741     const IDESC *idesc = &fr30bf_insn_data[itype];
2742     CGEN_INSN_INT insn = base_insn;
2743 #define FLD(f) abuf->fields.sfmt_add2.f
2744     UINT f_Ri;
2745
2746     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2747
2748   /* Record the fields for the semantic handler.  */
2749   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2750   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldres", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2751
2752 #if WITH_PROFILE_MODEL_P
2753   /* Record the fields for profiling.  */
2754   if (PROFILE_MODEL_P (current_cpu))
2755     {
2756       FLD (in_Ri) = f_Ri;
2757       FLD (out_Ri) = f_Ri;
2758     }
2759 #endif
2760 #undef FLD
2761     return idesc;
2762   }
2763
2764  extract_sfmt_copop:
2765   {
2766     const IDESC *idesc = &fr30bf_insn_data[itype];
2767     CGEN_INSN_INT insn = base_insn;
2768 #define FLD(f) abuf->fields.fmt_empty.f
2769     /* Contents of trailing part of insn.  */
2770     UINT word_1;
2771
2772   word_1 = GETIMEMUHI (current_cpu, pc + 2);
2773
2774   /* Record the fields for the semantic handler.  */
2775   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_copop", (char *) 0));
2776
2777 #undef FLD
2778     return idesc;
2779   }
2780
2781  extract_sfmt_andccr:
2782   {
2783     const IDESC *idesc = &fr30bf_insn_data[itype];
2784     CGEN_INSN_INT insn = base_insn;
2785 #define FLD(f) abuf->fields.sfmt_int.f
2786     UINT f_u8;
2787
2788     f_u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2789
2790   /* Record the fields for the semantic handler.  */
2791   FLD (f_u8) = f_u8;
2792   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andccr", "f_u8 0x%x", 'x', f_u8, (char *) 0));
2793
2794 #undef FLD
2795     return idesc;
2796   }
2797
2798  extract_sfmt_stilm:
2799   {
2800     const IDESC *idesc = &fr30bf_insn_data[itype];
2801     CGEN_INSN_INT insn = base_insn;
2802 #define FLD(f) abuf->fields.sfmt_int.f
2803     UINT f_u8;
2804
2805     f_u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2806
2807   /* Record the fields for the semantic handler.  */
2808   FLD (f_u8) = f_u8;
2809   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stilm", "f_u8 0x%x", 'x', f_u8, (char *) 0));
2810
2811 #undef FLD
2812     return idesc;
2813   }
2814
2815  extract_sfmt_addsp:
2816   {
2817     const IDESC *idesc = &fr30bf_insn_data[itype];
2818     CGEN_INSN_INT insn = base_insn;
2819 #define FLD(f) abuf->fields.sfmt_addsp.f
2820     SI f_s10;
2821
2822     f_s10 = ((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (2));
2823
2824   /* Record the fields for the semantic handler.  */
2825   FLD (f_s10) = f_s10;
2826   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addsp", "f_s10 0x%x", 'x', f_s10, (char *) 0));
2827
2828 #if WITH_PROFILE_MODEL_P
2829   /* Record the fields for profiling.  */
2830   if (PROFILE_MODEL_P (current_cpu))
2831     {
2832       FLD (in_h_gr_15) = 15;
2833       FLD (out_h_gr_15) = 15;
2834     }
2835 #endif
2836 #undef FLD
2837     return idesc;
2838   }
2839
2840  extract_sfmt_extsb:
2841   {
2842     const IDESC *idesc = &fr30bf_insn_data[itype];
2843     CGEN_INSN_INT insn = base_insn;
2844 #define FLD(f) abuf->fields.sfmt_add2.f
2845     UINT f_Ri;
2846
2847     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2848
2849   /* Record the fields for the semantic handler.  */
2850   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2851   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extsb", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2852
2853 #if WITH_PROFILE_MODEL_P
2854   /* Record the fields for profiling.  */
2855   if (PROFILE_MODEL_P (current_cpu))
2856     {
2857       FLD (in_Ri) = f_Ri;
2858       FLD (out_Ri) = f_Ri;
2859     }
2860 #endif
2861 #undef FLD
2862     return idesc;
2863   }
2864
2865  extract_sfmt_extub:
2866   {
2867     const IDESC *idesc = &fr30bf_insn_data[itype];
2868     CGEN_INSN_INT insn = base_insn;
2869 #define FLD(f) abuf->fields.sfmt_add2.f
2870     UINT f_Ri;
2871
2872     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2873
2874   /* Record the fields for the semantic handler.  */
2875   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2876   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extub", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2877
2878 #if WITH_PROFILE_MODEL_P
2879   /* Record the fields for profiling.  */
2880   if (PROFILE_MODEL_P (current_cpu))
2881     {
2882       FLD (in_Ri) = f_Ri;
2883       FLD (out_Ri) = f_Ri;
2884     }
2885 #endif
2886 #undef FLD
2887     return idesc;
2888   }
2889
2890  extract_sfmt_extsh:
2891   {
2892     const IDESC *idesc = &fr30bf_insn_data[itype];
2893     CGEN_INSN_INT insn = base_insn;
2894 #define FLD(f) abuf->fields.sfmt_add2.f
2895     UINT f_Ri;
2896
2897     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2898
2899   /* Record the fields for the semantic handler.  */
2900   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2901   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extsh", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2902
2903 #if WITH_PROFILE_MODEL_P
2904   /* Record the fields for profiling.  */
2905   if (PROFILE_MODEL_P (current_cpu))
2906     {
2907       FLD (in_Ri) = f_Ri;
2908       FLD (out_Ri) = f_Ri;
2909     }
2910 #endif
2911 #undef FLD
2912     return idesc;
2913   }
2914
2915  extract_sfmt_extuh:
2916   {
2917     const IDESC *idesc = &fr30bf_insn_data[itype];
2918     CGEN_INSN_INT insn = base_insn;
2919 #define FLD(f) abuf->fields.sfmt_add2.f
2920     UINT f_Ri;
2921
2922     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2923
2924   /* Record the fields for the semantic handler.  */
2925   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2926   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extuh", "Ri 0x%x", 'x', f_Ri, (char *) 0));
2927
2928 #if WITH_PROFILE_MODEL_P
2929   /* Record the fields for profiling.  */
2930   if (PROFILE_MODEL_P (current_cpu))
2931     {
2932       FLD (in_Ri) = f_Ri;
2933       FLD (out_Ri) = f_Ri;
2934     }
2935 #endif
2936 #undef FLD
2937     return idesc;
2938   }
2939
2940  extract_sfmt_ldm0:
2941   {
2942     const IDESC *idesc = &fr30bf_insn_data[itype];
2943     CGEN_INSN_INT insn = base_insn;
2944 #define FLD(f) abuf->fields.sfmt_ldm0.f
2945     UINT f_reglist_low_ld;
2946
2947     f_reglist_low_ld = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2948
2949   /* Record the fields for the semantic handler.  */
2950   FLD (f_reglist_low_ld) = f_reglist_low_ld;
2951   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldm0", "f_reglist_low_ld 0x%x", 'x', f_reglist_low_ld, (char *) 0));
2952
2953 #if WITH_PROFILE_MODEL_P
2954   /* Record the fields for profiling.  */
2955   if (PROFILE_MODEL_P (current_cpu))
2956     {
2957       FLD (in_h_gr_15) = 15;
2958       FLD (out_h_gr_0) = 0;
2959       FLD (out_h_gr_1) = 1;
2960       FLD (out_h_gr_15) = 15;
2961       FLD (out_h_gr_2) = 2;
2962       FLD (out_h_gr_3) = 3;
2963       FLD (out_h_gr_4) = 4;
2964       FLD (out_h_gr_5) = 5;
2965       FLD (out_h_gr_6) = 6;
2966       FLD (out_h_gr_7) = 7;
2967     }
2968 #endif
2969 #undef FLD
2970     return idesc;
2971   }
2972
2973  extract_sfmt_ldm1:
2974   {
2975     const IDESC *idesc = &fr30bf_insn_data[itype];
2976     CGEN_INSN_INT insn = base_insn;
2977 #define FLD(f) abuf->fields.sfmt_ldm1.f
2978     UINT f_reglist_hi_ld;
2979
2980     f_reglist_hi_ld = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2981
2982   /* Record the fields for the semantic handler.  */
2983   FLD (f_reglist_hi_ld) = f_reglist_hi_ld;
2984   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldm1", "f_reglist_hi_ld 0x%x", 'x', f_reglist_hi_ld, (char *) 0));
2985
2986 #if WITH_PROFILE_MODEL_P
2987   /* Record the fields for profiling.  */
2988   if (PROFILE_MODEL_P (current_cpu))
2989     {
2990       FLD (in_h_gr_15) = 15;
2991       FLD (out_h_gr_10) = 10;
2992       FLD (out_h_gr_11) = 11;
2993       FLD (out_h_gr_12) = 12;
2994       FLD (out_h_gr_13) = 13;
2995       FLD (out_h_gr_14) = 14;
2996       FLD (out_h_gr_15) = 15;
2997       FLD (out_h_gr_8) = 8;
2998       FLD (out_h_gr_9) = 9;
2999     }
3000 #endif
3001 #undef FLD
3002     return idesc;
3003   }
3004
3005  extract_sfmt_stm0:
3006   {
3007     const IDESC *idesc = &fr30bf_insn_data[itype];
3008     CGEN_INSN_INT insn = base_insn;
3009 #define FLD(f) abuf->fields.sfmt_stm0.f
3010     UINT f_reglist_low_st;
3011
3012     f_reglist_low_st = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
3013
3014   /* Record the fields for the semantic handler.  */
3015   FLD (f_reglist_low_st) = f_reglist_low_st;
3016   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stm0", "f_reglist_low_st 0x%x", 'x', f_reglist_low_st, (char *) 0));
3017
3018 #if WITH_PROFILE_MODEL_P
3019   /* Record the fields for profiling.  */
3020   if (PROFILE_MODEL_P (current_cpu))
3021     {
3022       FLD (in_h_gr_0) = 0;
3023       FLD (in_h_gr_1) = 1;
3024       FLD (in_h_gr_15) = 15;
3025       FLD (in_h_gr_2) = 2;
3026       FLD (in_h_gr_3) = 3;
3027       FLD (in_h_gr_4) = 4;
3028       FLD (in_h_gr_5) = 5;
3029       FLD (in_h_gr_6) = 6;
3030       FLD (in_h_gr_7) = 7;
3031       FLD (out_h_gr_15) = 15;
3032     }
3033 #endif
3034 #undef FLD
3035     return idesc;
3036   }
3037
3038  extract_sfmt_stm1:
3039   {
3040     const IDESC *idesc = &fr30bf_insn_data[itype];
3041     CGEN_INSN_INT insn = base_insn;
3042 #define FLD(f) abuf->fields.sfmt_stm1.f
3043     UINT f_reglist_hi_st;
3044
3045     f_reglist_hi_st = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
3046
3047   /* Record the fields for the semantic handler.  */
3048   FLD (f_reglist_hi_st) = f_reglist_hi_st;
3049   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stm1", "f_reglist_hi_st 0x%x", 'x', f_reglist_hi_st, (char *) 0));
3050
3051 #if WITH_PROFILE_MODEL_P
3052   /* Record the fields for profiling.  */
3053   if (PROFILE_MODEL_P (current_cpu))
3054     {
3055       FLD (in_h_gr_10) = 10;
3056       FLD (in_h_gr_11) = 11;
3057       FLD (in_h_gr_12) = 12;
3058       FLD (in_h_gr_13) = 13;
3059       FLD (in_h_gr_14) = 14;
3060       FLD (in_h_gr_15) = 15;
3061       FLD (in_h_gr_8) = 8;
3062       FLD (in_h_gr_9) = 9;
3063       FLD (out_h_gr_15) = 15;
3064     }
3065 #endif
3066 #undef FLD
3067     return idesc;
3068   }
3069
3070  extract_sfmt_enter:
3071   {
3072     const IDESC *idesc = &fr30bf_insn_data[itype];
3073     CGEN_INSN_INT insn = base_insn;
3074 #define FLD(f) abuf->fields.sfmt_enter.f
3075     USI f_u10;
3076
3077     f_u10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
3078
3079   /* Record the fields for the semantic handler.  */
3080   FLD (f_u10) = f_u10;
3081   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_enter", "f_u10 0x%x", 'x', f_u10, (char *) 0));
3082
3083 #if WITH_PROFILE_MODEL_P
3084   /* Record the fields for profiling.  */
3085   if (PROFILE_MODEL_P (current_cpu))
3086     {
3087       FLD (in_h_gr_14) = 14;
3088       FLD (in_h_gr_15) = 15;
3089       FLD (out_h_gr_14) = 14;
3090       FLD (out_h_gr_15) = 15;
3091     }
3092 #endif
3093 #undef FLD
3094     return idesc;
3095   }
3096
3097  extract_sfmt_leave:
3098   {
3099     const IDESC *idesc = &fr30bf_insn_data[itype];
3100     CGEN_INSN_INT insn = base_insn;
3101 #define FLD(f) abuf->fields.sfmt_enter.f
3102
3103
3104   /* Record the fields for the semantic handler.  */
3105   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_leave", (char *) 0));
3106
3107 #if WITH_PROFILE_MODEL_P
3108   /* Record the fields for profiling.  */
3109   if (PROFILE_MODEL_P (current_cpu))
3110     {
3111       FLD (in_h_gr_14) = 14;
3112       FLD (in_h_gr_15) = 15;
3113       FLD (out_h_gr_14) = 14;
3114       FLD (out_h_gr_15) = 15;
3115     }
3116 #endif
3117 #undef FLD
3118     return idesc;
3119   }
3120
3121  extract_sfmt_xchb:
3122   {
3123     const IDESC *idesc = &fr30bf_insn_data[itype];
3124     CGEN_INSN_INT insn = base_insn;
3125 #define FLD(f) abuf->fields.sfmt_add.f
3126     UINT f_Rj;
3127     UINT f_Ri;
3128
3129     f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
3130     f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
3131
3132   /* Record the fields for the semantic handler.  */
3133   FLD (i_Ri) = & CPU (h_gr)[f_Ri];
3134   FLD (i_Rj) = & CPU (h_gr)[f_Rj];
3135   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_xchb", "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
3136
3137 #if WITH_PROFILE_MODEL_P
3138   /* Record the fields for profiling.  */
3139   if (PROFILE_MODEL_P (current_cpu))
3140     {
3141       FLD (in_Ri) = f_Ri;
3142       FLD (in_Rj) = f_Rj;
3143       FLD (out_Ri) = f_Ri;
3144     }
3145 #endif
3146 #undef FLD
3147     return idesc;
3148   }
3149
3150 }