* Makefile.in (mloop.c): Add @true to rule.
[platform/upstream/binutils.git] / sim / m32r / decode.c
1 /* Simulator instruction decoder for m32rbf.
2
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5 Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 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 3 of the License, or
12 (at your option) 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
20 along with this program.  If not, see <http://www.gnu.org/licenses/>.
21
22 */
23
24 #define WANT_CPU m32rbf
25 #define WANT_CPU_M32RBF
26
27 #include "sim-main.h"
28 #include "sim-assert.h"
29
30 /* The instruction descriptor array.
31    This is computed at runtime.  Space for it is not malloc'd to save a
32    teensy bit of cpu in the decoder.  Moving it to malloc space is trivial
33    but won't be done until necessary (we don't currently support the runtime
34    addition of instructions nor an SMP machine with different cpus).  */
35 static IDESC m32rbf_insn_data[M32RBF_INSN__MAX];
36
37 /* Commas between elements are contained in the macros.
38    Some of these are conditionally compiled out.  */
39
40 static const struct insn_sem m32rbf_insn_sem[] =
41 {
42   { VIRTUAL_INSN_X_INVALID, M32RBF_INSN_X_INVALID, M32RBF_SFMT_EMPTY },
43   { VIRTUAL_INSN_X_AFTER, M32RBF_INSN_X_AFTER, M32RBF_SFMT_EMPTY },
44   { VIRTUAL_INSN_X_BEFORE, M32RBF_INSN_X_BEFORE, M32RBF_SFMT_EMPTY },
45   { VIRTUAL_INSN_X_CTI_CHAIN, M32RBF_INSN_X_CTI_CHAIN, M32RBF_SFMT_EMPTY },
46   { VIRTUAL_INSN_X_CHAIN, M32RBF_INSN_X_CHAIN, M32RBF_SFMT_EMPTY },
47   { VIRTUAL_INSN_X_BEGIN, M32RBF_INSN_X_BEGIN, M32RBF_SFMT_EMPTY },
48   { M32R_INSN_ADD, M32RBF_INSN_ADD, M32RBF_SFMT_ADD },
49   { M32R_INSN_ADD3, M32RBF_INSN_ADD3, M32RBF_SFMT_ADD3 },
50   { M32R_INSN_AND, M32RBF_INSN_AND, M32RBF_SFMT_ADD },
51   { M32R_INSN_AND3, M32RBF_INSN_AND3, M32RBF_SFMT_AND3 },
52   { M32R_INSN_OR, M32RBF_INSN_OR, M32RBF_SFMT_ADD },
53   { M32R_INSN_OR3, M32RBF_INSN_OR3, M32RBF_SFMT_OR3 },
54   { M32R_INSN_XOR, M32RBF_INSN_XOR, M32RBF_SFMT_ADD },
55   { M32R_INSN_XOR3, M32RBF_INSN_XOR3, M32RBF_SFMT_AND3 },
56   { M32R_INSN_ADDI, M32RBF_INSN_ADDI, M32RBF_SFMT_ADDI },
57   { M32R_INSN_ADDV, M32RBF_INSN_ADDV, M32RBF_SFMT_ADDV },
58   { M32R_INSN_ADDV3, M32RBF_INSN_ADDV3, M32RBF_SFMT_ADDV3 },
59   { M32R_INSN_ADDX, M32RBF_INSN_ADDX, M32RBF_SFMT_ADDX },
60   { M32R_INSN_BC8, M32RBF_INSN_BC8, M32RBF_SFMT_BC8 },
61   { M32R_INSN_BC24, M32RBF_INSN_BC24, M32RBF_SFMT_BC24 },
62   { M32R_INSN_BEQ, M32RBF_INSN_BEQ, M32RBF_SFMT_BEQ },
63   { M32R_INSN_BEQZ, M32RBF_INSN_BEQZ, M32RBF_SFMT_BEQZ },
64   { M32R_INSN_BGEZ, M32RBF_INSN_BGEZ, M32RBF_SFMT_BEQZ },
65   { M32R_INSN_BGTZ, M32RBF_INSN_BGTZ, M32RBF_SFMT_BEQZ },
66   { M32R_INSN_BLEZ, M32RBF_INSN_BLEZ, M32RBF_SFMT_BEQZ },
67   { M32R_INSN_BLTZ, M32RBF_INSN_BLTZ, M32RBF_SFMT_BEQZ },
68   { M32R_INSN_BNEZ, M32RBF_INSN_BNEZ, M32RBF_SFMT_BEQZ },
69   { M32R_INSN_BL8, M32RBF_INSN_BL8, M32RBF_SFMT_BL8 },
70   { M32R_INSN_BL24, M32RBF_INSN_BL24, M32RBF_SFMT_BL24 },
71   { M32R_INSN_BNC8, M32RBF_INSN_BNC8, M32RBF_SFMT_BC8 },
72   { M32R_INSN_BNC24, M32RBF_INSN_BNC24, M32RBF_SFMT_BC24 },
73   { M32R_INSN_BNE, M32RBF_INSN_BNE, M32RBF_SFMT_BEQ },
74   { M32R_INSN_BRA8, M32RBF_INSN_BRA8, M32RBF_SFMT_BRA8 },
75   { M32R_INSN_BRA24, M32RBF_INSN_BRA24, M32RBF_SFMT_BRA24 },
76   { M32R_INSN_CMP, M32RBF_INSN_CMP, M32RBF_SFMT_CMP },
77   { M32R_INSN_CMPI, M32RBF_INSN_CMPI, M32RBF_SFMT_CMPI },
78   { M32R_INSN_CMPU, M32RBF_INSN_CMPU, M32RBF_SFMT_CMP },
79   { M32R_INSN_CMPUI, M32RBF_INSN_CMPUI, M32RBF_SFMT_CMPI },
80   { M32R_INSN_DIV, M32RBF_INSN_DIV, M32RBF_SFMT_DIV },
81   { M32R_INSN_DIVU, M32RBF_INSN_DIVU, M32RBF_SFMT_DIV },
82   { M32R_INSN_REM, M32RBF_INSN_REM, M32RBF_SFMT_DIV },
83   { M32R_INSN_REMU, M32RBF_INSN_REMU, M32RBF_SFMT_DIV },
84   { M32R_INSN_JL, M32RBF_INSN_JL, M32RBF_SFMT_JL },
85   { M32R_INSN_JMP, M32RBF_INSN_JMP, M32RBF_SFMT_JMP },
86   { M32R_INSN_LD, M32RBF_INSN_LD, M32RBF_SFMT_LD },
87   { M32R_INSN_LD_D, M32RBF_INSN_LD_D, M32RBF_SFMT_LD_D },
88   { M32R_INSN_LDB, M32RBF_INSN_LDB, M32RBF_SFMT_LDB },
89   { M32R_INSN_LDB_D, M32RBF_INSN_LDB_D, M32RBF_SFMT_LDB_D },
90   { M32R_INSN_LDH, M32RBF_INSN_LDH, M32RBF_SFMT_LDH },
91   { M32R_INSN_LDH_D, M32RBF_INSN_LDH_D, M32RBF_SFMT_LDH_D },
92   { M32R_INSN_LDUB, M32RBF_INSN_LDUB, M32RBF_SFMT_LDB },
93   { M32R_INSN_LDUB_D, M32RBF_INSN_LDUB_D, M32RBF_SFMT_LDB_D },
94   { M32R_INSN_LDUH, M32RBF_INSN_LDUH, M32RBF_SFMT_LDH },
95   { M32R_INSN_LDUH_D, M32RBF_INSN_LDUH_D, M32RBF_SFMT_LDH_D },
96   { M32R_INSN_LD_PLUS, M32RBF_INSN_LD_PLUS, M32RBF_SFMT_LD_PLUS },
97   { M32R_INSN_LD24, M32RBF_INSN_LD24, M32RBF_SFMT_LD24 },
98   { M32R_INSN_LDI8, M32RBF_INSN_LDI8, M32RBF_SFMT_LDI8 },
99   { M32R_INSN_LDI16, M32RBF_INSN_LDI16, M32RBF_SFMT_LDI16 },
100   { M32R_INSN_LOCK, M32RBF_INSN_LOCK, M32RBF_SFMT_LOCK },
101   { M32R_INSN_MACHI, M32RBF_INSN_MACHI, M32RBF_SFMT_MACHI },
102   { M32R_INSN_MACLO, M32RBF_INSN_MACLO, M32RBF_SFMT_MACHI },
103   { M32R_INSN_MACWHI, M32RBF_INSN_MACWHI, M32RBF_SFMT_MACHI },
104   { M32R_INSN_MACWLO, M32RBF_INSN_MACWLO, M32RBF_SFMT_MACHI },
105   { M32R_INSN_MUL, M32RBF_INSN_MUL, M32RBF_SFMT_ADD },
106   { M32R_INSN_MULHI, M32RBF_INSN_MULHI, M32RBF_SFMT_MULHI },
107   { M32R_INSN_MULLO, M32RBF_INSN_MULLO, M32RBF_SFMT_MULHI },
108   { M32R_INSN_MULWHI, M32RBF_INSN_MULWHI, M32RBF_SFMT_MULHI },
109   { M32R_INSN_MULWLO, M32RBF_INSN_MULWLO, M32RBF_SFMT_MULHI },
110   { M32R_INSN_MV, M32RBF_INSN_MV, M32RBF_SFMT_MV },
111   { M32R_INSN_MVFACHI, M32RBF_INSN_MVFACHI, M32RBF_SFMT_MVFACHI },
112   { M32R_INSN_MVFACLO, M32RBF_INSN_MVFACLO, M32RBF_SFMT_MVFACHI },
113   { M32R_INSN_MVFACMI, M32RBF_INSN_MVFACMI, M32RBF_SFMT_MVFACHI },
114   { M32R_INSN_MVFC, M32RBF_INSN_MVFC, M32RBF_SFMT_MVFC },
115   { M32R_INSN_MVTACHI, M32RBF_INSN_MVTACHI, M32RBF_SFMT_MVTACHI },
116   { M32R_INSN_MVTACLO, M32RBF_INSN_MVTACLO, M32RBF_SFMT_MVTACHI },
117   { M32R_INSN_MVTC, M32RBF_INSN_MVTC, M32RBF_SFMT_MVTC },
118   { M32R_INSN_NEG, M32RBF_INSN_NEG, M32RBF_SFMT_MV },
119   { M32R_INSN_NOP, M32RBF_INSN_NOP, M32RBF_SFMT_NOP },
120   { M32R_INSN_NOT, M32RBF_INSN_NOT, M32RBF_SFMT_MV },
121   { M32R_INSN_RAC, M32RBF_INSN_RAC, M32RBF_SFMT_RAC },
122   { M32R_INSN_RACH, M32RBF_INSN_RACH, M32RBF_SFMT_RAC },
123   { M32R_INSN_RTE, M32RBF_INSN_RTE, M32RBF_SFMT_RTE },
124   { M32R_INSN_SETH, M32RBF_INSN_SETH, M32RBF_SFMT_SETH },
125   { M32R_INSN_SLL, M32RBF_INSN_SLL, M32RBF_SFMT_ADD },
126   { M32R_INSN_SLL3, M32RBF_INSN_SLL3, M32RBF_SFMT_SLL3 },
127   { M32R_INSN_SLLI, M32RBF_INSN_SLLI, M32RBF_SFMT_SLLI },
128   { M32R_INSN_SRA, M32RBF_INSN_SRA, M32RBF_SFMT_ADD },
129   { M32R_INSN_SRA3, M32RBF_INSN_SRA3, M32RBF_SFMT_SLL3 },
130   { M32R_INSN_SRAI, M32RBF_INSN_SRAI, M32RBF_SFMT_SLLI },
131   { M32R_INSN_SRL, M32RBF_INSN_SRL, M32RBF_SFMT_ADD },
132   { M32R_INSN_SRL3, M32RBF_INSN_SRL3, M32RBF_SFMT_SLL3 },
133   { M32R_INSN_SRLI, M32RBF_INSN_SRLI, M32RBF_SFMT_SLLI },
134   { M32R_INSN_ST, M32RBF_INSN_ST, M32RBF_SFMT_ST },
135   { M32R_INSN_ST_D, M32RBF_INSN_ST_D, M32RBF_SFMT_ST_D },
136   { M32R_INSN_STB, M32RBF_INSN_STB, M32RBF_SFMT_STB },
137   { M32R_INSN_STB_D, M32RBF_INSN_STB_D, M32RBF_SFMT_STB_D },
138   { M32R_INSN_STH, M32RBF_INSN_STH, M32RBF_SFMT_STH },
139   { M32R_INSN_STH_D, M32RBF_INSN_STH_D, M32RBF_SFMT_STH_D },
140   { M32R_INSN_ST_PLUS, M32RBF_INSN_ST_PLUS, M32RBF_SFMT_ST_PLUS },
141   { M32R_INSN_ST_MINUS, M32RBF_INSN_ST_MINUS, M32RBF_SFMT_ST_PLUS },
142   { M32R_INSN_SUB, M32RBF_INSN_SUB, M32RBF_SFMT_ADD },
143   { M32R_INSN_SUBV, M32RBF_INSN_SUBV, M32RBF_SFMT_ADDV },
144   { M32R_INSN_SUBX, M32RBF_INSN_SUBX, M32RBF_SFMT_ADDX },
145   { M32R_INSN_TRAP, M32RBF_INSN_TRAP, M32RBF_SFMT_TRAP },
146   { M32R_INSN_UNLOCK, M32RBF_INSN_UNLOCK, M32RBF_SFMT_UNLOCK },
147   { M32R_INSN_CLRPSW, M32RBF_INSN_CLRPSW, M32RBF_SFMT_CLRPSW },
148   { M32R_INSN_SETPSW, M32RBF_INSN_SETPSW, M32RBF_SFMT_SETPSW },
149   { M32R_INSN_BSET, M32RBF_INSN_BSET, M32RBF_SFMT_BSET },
150   { M32R_INSN_BCLR, M32RBF_INSN_BCLR, M32RBF_SFMT_BSET },
151   { M32R_INSN_BTST, M32RBF_INSN_BTST, M32RBF_SFMT_BTST },
152 };
153
154 static const struct insn_sem m32rbf_insn_sem_invalid = {
155   VIRTUAL_INSN_X_INVALID, M32RBF_INSN_X_INVALID, M32RBF_SFMT_EMPTY
156 };
157
158 /* Initialize an IDESC from the compile-time computable parts.  */
159
160 static INLINE void
161 init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t)
162 {
163   const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries;
164
165   id->num = t->index;
166   id->sfmt = t->sfmt;
167   if ((int) t->type <= 0)
168     id->idata = & cgen_virtual_insn_table[- (int) t->type];
169   else
170     id->idata = & insn_table[t->type];
171   id->attrs = CGEN_INSN_ATTRS (id->idata);
172   /* Oh my god, a magic number.  */
173   id->length = CGEN_INSN_BITSIZE (id->idata) / 8;
174
175 #if WITH_PROFILE_MODEL_P
176   id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index];
177   {
178     SIM_DESC sd = CPU_STATE (cpu);
179     SIM_ASSERT (t->index == id->timing->num);
180   }
181 #endif
182
183   /* Semantic pointers are initialized elsewhere.  */
184 }
185
186 /* Initialize the instruction descriptor table.  */
187
188 void
189 m32rbf_init_idesc_table (SIM_CPU *cpu)
190 {
191   IDESC *id,*tabend;
192   const struct insn_sem *t,*tend;
193   int tabsize = M32RBF_INSN__MAX;
194   IDESC *table = m32rbf_insn_data;
195
196   memset (table, 0, tabsize * sizeof (IDESC));
197
198   /* First set all entries to the `invalid insn'.  */
199   t = & m32rbf_insn_sem_invalid;
200   for (id = table, tabend = table + tabsize; id < tabend; ++id)
201     init_idesc (cpu, id, t);
202
203   /* Now fill in the values for the chosen cpu.  */
204   for (t = m32rbf_insn_sem, tend = t + sizeof (m32rbf_insn_sem) / sizeof (*t);
205        t != tend; ++t)
206     {
207       init_idesc (cpu, & table[t->index], t);
208     }
209
210   /* Link the IDESC table into the cpu.  */
211   CPU_IDESC (cpu) = table;
212 }
213
214 /* Given an instruction, return a pointer to its IDESC entry.  */
215
216 const IDESC *
217 m32rbf_decode (SIM_CPU *current_cpu, IADDR pc,
218               CGEN_INSN_INT base_insn, CGEN_INSN_INT entire_insn,
219               ARGBUF *abuf)
220 {
221   /* Result of decoder.  */
222   M32RBF_INSN_TYPE itype;
223
224   {
225     CGEN_INSN_INT insn = base_insn;
226
227     {
228       unsigned int val = (((insn >> 8) & (15 << 4)) | ((insn >> 4) & (15 << 0)));
229       switch (val)
230       {
231       case 0 : itype = M32RBF_INSN_SUBV; goto extract_sfmt_addv;
232       case 1 : itype = M32RBF_INSN_SUBX; goto extract_sfmt_addx;
233       case 2 : itype = M32RBF_INSN_SUB; goto extract_sfmt_add;
234       case 3 : itype = M32RBF_INSN_NEG; goto extract_sfmt_mv;
235       case 4 : itype = M32RBF_INSN_CMP; goto extract_sfmt_cmp;
236       case 5 : itype = M32RBF_INSN_CMPU; goto extract_sfmt_cmp;
237       case 8 : itype = M32RBF_INSN_ADDV; goto extract_sfmt_addv;
238       case 9 : itype = M32RBF_INSN_ADDX; goto extract_sfmt_addx;
239       case 10 : itype = M32RBF_INSN_ADD; goto extract_sfmt_add;
240       case 11 : itype = M32RBF_INSN_NOT; goto extract_sfmt_mv;
241       case 12 : itype = M32RBF_INSN_AND; goto extract_sfmt_add;
242       case 13 : itype = M32RBF_INSN_XOR; goto extract_sfmt_add;
243       case 14 : itype = M32RBF_INSN_OR; goto extract_sfmt_add;
244       case 15 : itype = M32RBF_INSN_BTST; goto extract_sfmt_btst;
245       case 16 : itype = M32RBF_INSN_SRL; goto extract_sfmt_add;
246       case 18 : itype = M32RBF_INSN_SRA; goto extract_sfmt_add;
247       case 20 : itype = M32RBF_INSN_SLL; goto extract_sfmt_add;
248       case 22 : itype = M32RBF_INSN_MUL; goto extract_sfmt_add;
249       case 24 : itype = M32RBF_INSN_MV; goto extract_sfmt_mv;
250       case 25 : itype = M32RBF_INSN_MVFC; goto extract_sfmt_mvfc;
251       case 26 : itype = M32RBF_INSN_MVTC; goto extract_sfmt_mvtc;
252       case 28 :
253         {
254           unsigned int val = (((insn >> 8) & (1 << 0)));
255           switch (val)
256           {
257           case 0 : itype = M32RBF_INSN_JL; goto extract_sfmt_jl;
258           case 1 : itype = M32RBF_INSN_JMP; goto extract_sfmt_jmp;
259           default : itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
260           }
261         }
262       case 29 : itype = M32RBF_INSN_RTE; goto extract_sfmt_rte;
263       case 31 : itype = M32RBF_INSN_TRAP; goto extract_sfmt_trap;
264       case 32 : itype = M32RBF_INSN_STB; goto extract_sfmt_stb;
265       case 34 : itype = M32RBF_INSN_STH; goto extract_sfmt_sth;
266       case 36 : itype = M32RBF_INSN_ST; goto extract_sfmt_st;
267       case 37 : itype = M32RBF_INSN_UNLOCK; goto extract_sfmt_unlock;
268       case 38 : itype = M32RBF_INSN_ST_PLUS; goto extract_sfmt_st_plus;
269       case 39 : itype = M32RBF_INSN_ST_MINUS; goto extract_sfmt_st_plus;
270       case 40 : itype = M32RBF_INSN_LDB; goto extract_sfmt_ldb;
271       case 41 : itype = M32RBF_INSN_LDUB; goto extract_sfmt_ldb;
272       case 42 : itype = M32RBF_INSN_LDH; goto extract_sfmt_ldh;
273       case 43 : itype = M32RBF_INSN_LDUH; goto extract_sfmt_ldh;
274       case 44 : itype = M32RBF_INSN_LD; goto extract_sfmt_ld;
275       case 45 : itype = M32RBF_INSN_LOCK; goto extract_sfmt_lock;
276       case 46 : itype = M32RBF_INSN_LD_PLUS; goto extract_sfmt_ld_plus;
277       case 48 : itype = M32RBF_INSN_MULHI; goto extract_sfmt_mulhi;
278       case 49 : itype = M32RBF_INSN_MULLO; goto extract_sfmt_mulhi;
279       case 50 : itype = M32RBF_INSN_MULWHI; goto extract_sfmt_mulhi;
280       case 51 : itype = M32RBF_INSN_MULWLO; goto extract_sfmt_mulhi;
281       case 52 : itype = M32RBF_INSN_MACHI; goto extract_sfmt_machi;
282       case 53 : itype = M32RBF_INSN_MACLO; goto extract_sfmt_machi;
283       case 54 : itype = M32RBF_INSN_MACWHI; goto extract_sfmt_machi;
284       case 55 : itype = M32RBF_INSN_MACWLO; goto extract_sfmt_machi;
285       case 64 : /* fall through */
286       case 65 : /* fall through */
287       case 66 : /* fall through */
288       case 67 : /* fall through */
289       case 68 : /* fall through */
290       case 69 : /* fall through */
291       case 70 : /* fall through */
292       case 71 : /* fall through */
293       case 72 : /* fall through */
294       case 73 : /* fall through */
295       case 74 : /* fall through */
296       case 75 : /* fall through */
297       case 76 : /* fall through */
298       case 77 : /* fall through */
299       case 78 : /* fall through */
300       case 79 : itype = M32RBF_INSN_ADDI; goto extract_sfmt_addi;
301       case 80 : /* fall through */
302       case 81 : itype = M32RBF_INSN_SRLI; goto extract_sfmt_slli;
303       case 82 : /* fall through */
304       case 83 : itype = M32RBF_INSN_SRAI; goto extract_sfmt_slli;
305       case 84 : /* fall through */
306       case 85 : itype = M32RBF_INSN_SLLI; goto extract_sfmt_slli;
307       case 87 :
308         {
309           unsigned int val = (((insn >> 0) & (1 << 0)));
310           switch (val)
311           {
312           case 0 : itype = M32RBF_INSN_MVTACHI; goto extract_sfmt_mvtachi;
313           case 1 : itype = M32RBF_INSN_MVTACLO; goto extract_sfmt_mvtachi;
314           default : itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
315           }
316         }
317       case 88 : itype = M32RBF_INSN_RACH; goto extract_sfmt_rac;
318       case 89 : itype = M32RBF_INSN_RAC; goto extract_sfmt_rac;
319       case 95 :
320         {
321           unsigned int val = (((insn >> 0) & (3 << 0)));
322           switch (val)
323           {
324           case 0 : itype = M32RBF_INSN_MVFACHI; goto extract_sfmt_mvfachi;
325           case 1 : itype = M32RBF_INSN_MVFACLO; goto extract_sfmt_mvfachi;
326           case 2 : itype = M32RBF_INSN_MVFACMI; goto extract_sfmt_mvfachi;
327           default : itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
328           }
329         }
330       case 96 : /* fall through */
331       case 97 : /* fall through */
332       case 98 : /* fall through */
333       case 99 : /* fall through */
334       case 100 : /* fall through */
335       case 101 : /* fall through */
336       case 102 : /* fall through */
337       case 103 : /* fall through */
338       case 104 : /* fall through */
339       case 105 : /* fall through */
340       case 106 : /* fall through */
341       case 107 : /* fall through */
342       case 108 : /* fall through */
343       case 109 : /* fall through */
344       case 110 : /* fall through */
345       case 111 : itype = M32RBF_INSN_LDI8; goto extract_sfmt_ldi8;
346       case 112 :
347         {
348           unsigned int val = (((insn >> 8) & (15 << 0)));
349           switch (val)
350           {
351           case 0 : itype = M32RBF_INSN_NOP; goto extract_sfmt_nop;
352           case 1 : itype = M32RBF_INSN_SETPSW; goto extract_sfmt_setpsw;
353           case 2 : itype = M32RBF_INSN_CLRPSW; goto extract_sfmt_clrpsw;
354           case 12 : itype = M32RBF_INSN_BC8; goto extract_sfmt_bc8;
355           case 13 : itype = M32RBF_INSN_BNC8; goto extract_sfmt_bc8;
356           case 14 : itype = M32RBF_INSN_BL8; goto extract_sfmt_bl8;
357           case 15 : itype = M32RBF_INSN_BRA8; goto extract_sfmt_bra8;
358           default : itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
359           }
360         }
361       case 113 : /* fall through */
362       case 114 : /* fall through */
363       case 115 : /* fall through */
364       case 116 : /* fall through */
365       case 117 : /* fall through */
366       case 118 : /* fall through */
367       case 119 : /* fall through */
368       case 120 : /* fall through */
369       case 121 : /* fall through */
370       case 122 : /* fall through */
371       case 123 : /* fall through */
372       case 124 : /* fall through */
373       case 125 : /* fall through */
374       case 126 : /* fall through */
375       case 127 :
376         {
377           unsigned int val = (((insn >> 8) & (15 << 0)));
378           switch (val)
379           {
380           case 1 : itype = M32RBF_INSN_SETPSW; goto extract_sfmt_setpsw;
381           case 2 : itype = M32RBF_INSN_CLRPSW; goto extract_sfmt_clrpsw;
382           case 12 : itype = M32RBF_INSN_BC8; goto extract_sfmt_bc8;
383           case 13 : itype = M32RBF_INSN_BNC8; goto extract_sfmt_bc8;
384           case 14 : itype = M32RBF_INSN_BL8; goto extract_sfmt_bl8;
385           case 15 : itype = M32RBF_INSN_BRA8; goto extract_sfmt_bra8;
386           default : itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
387           }
388         }
389       case 132 : itype = M32RBF_INSN_CMPI; goto extract_sfmt_cmpi;
390       case 133 : itype = M32RBF_INSN_CMPUI; goto extract_sfmt_cmpi;
391       case 136 : itype = M32RBF_INSN_ADDV3; goto extract_sfmt_addv3;
392       case 138 : itype = M32RBF_INSN_ADD3; goto extract_sfmt_add3;
393       case 140 : itype = M32RBF_INSN_AND3; goto extract_sfmt_and3;
394       case 141 : itype = M32RBF_INSN_XOR3; goto extract_sfmt_and3;
395       case 142 : itype = M32RBF_INSN_OR3; goto extract_sfmt_or3;
396       case 144 : itype = M32RBF_INSN_DIV; goto extract_sfmt_div;
397       case 145 : itype = M32RBF_INSN_DIVU; goto extract_sfmt_div;
398       case 146 : itype = M32RBF_INSN_REM; goto extract_sfmt_div;
399       case 147 : itype = M32RBF_INSN_REMU; goto extract_sfmt_div;
400       case 152 : itype = M32RBF_INSN_SRL3; goto extract_sfmt_sll3;
401       case 154 : itype = M32RBF_INSN_SRA3; goto extract_sfmt_sll3;
402       case 156 : itype = M32RBF_INSN_SLL3; goto extract_sfmt_sll3;
403       case 159 : itype = M32RBF_INSN_LDI16; goto extract_sfmt_ldi16;
404       case 160 : itype = M32RBF_INSN_STB_D; goto extract_sfmt_stb_d;
405       case 162 : itype = M32RBF_INSN_STH_D; goto extract_sfmt_sth_d;
406       case 164 : itype = M32RBF_INSN_ST_D; goto extract_sfmt_st_d;
407       case 166 : itype = M32RBF_INSN_BSET; goto extract_sfmt_bset;
408       case 167 : itype = M32RBF_INSN_BCLR; goto extract_sfmt_bset;
409       case 168 : itype = M32RBF_INSN_LDB_D; goto extract_sfmt_ldb_d;
410       case 169 : itype = M32RBF_INSN_LDUB_D; goto extract_sfmt_ldb_d;
411       case 170 : itype = M32RBF_INSN_LDH_D; goto extract_sfmt_ldh_d;
412       case 171 : itype = M32RBF_INSN_LDUH_D; goto extract_sfmt_ldh_d;
413       case 172 : itype = M32RBF_INSN_LD_D; goto extract_sfmt_ld_d;
414       case 176 : itype = M32RBF_INSN_BEQ; goto extract_sfmt_beq;
415       case 177 : itype = M32RBF_INSN_BNE; goto extract_sfmt_beq;
416       case 184 : itype = M32RBF_INSN_BEQZ; goto extract_sfmt_beqz;
417       case 185 : itype = M32RBF_INSN_BNEZ; goto extract_sfmt_beqz;
418       case 186 : itype = M32RBF_INSN_BLTZ; goto extract_sfmt_beqz;
419       case 187 : itype = M32RBF_INSN_BGEZ; goto extract_sfmt_beqz;
420       case 188 : itype = M32RBF_INSN_BLEZ; goto extract_sfmt_beqz;
421       case 189 : itype = M32RBF_INSN_BGTZ; goto extract_sfmt_beqz;
422       case 220 : itype = M32RBF_INSN_SETH; goto extract_sfmt_seth;
423       case 224 : /* fall through */
424       case 225 : /* fall through */
425       case 226 : /* fall through */
426       case 227 : /* fall through */
427       case 228 : /* fall through */
428       case 229 : /* fall through */
429       case 230 : /* fall through */
430       case 231 : /* fall through */
431       case 232 : /* fall through */
432       case 233 : /* fall through */
433       case 234 : /* fall through */
434       case 235 : /* fall through */
435       case 236 : /* fall through */
436       case 237 : /* fall through */
437       case 238 : /* fall through */
438       case 239 : itype = M32RBF_INSN_LD24; goto extract_sfmt_ld24;
439       case 240 : /* fall through */
440       case 241 : /* fall through */
441       case 242 : /* fall through */
442       case 243 : /* fall through */
443       case 244 : /* fall through */
444       case 245 : /* fall through */
445       case 246 : /* fall through */
446       case 247 : /* fall through */
447       case 248 : /* fall through */
448       case 249 : /* fall through */
449       case 250 : /* fall through */
450       case 251 : /* fall through */
451       case 252 : /* fall through */
452       case 253 : /* fall through */
453       case 254 : /* fall through */
454       case 255 :
455         {
456           unsigned int val = (((insn >> 8) & (3 << 0)));
457           switch (val)
458           {
459           case 0 : itype = M32RBF_INSN_BC24; goto extract_sfmt_bc24;
460           case 1 : itype = M32RBF_INSN_BNC24; goto extract_sfmt_bc24;
461           case 2 : itype = M32RBF_INSN_BL24; goto extract_sfmt_bl24;
462           case 3 : itype = M32RBF_INSN_BRA24; goto extract_sfmt_bra24;
463           default : itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
464           }
465         }
466       default : itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
467       }
468     }
469   }
470
471   /* The instruction has been decoded, now extract the fields.  */
472
473  extract_sfmt_empty:
474   {
475     const IDESC *idesc = &m32rbf_insn_data[itype];
476 #define FLD(f) abuf->fields.fmt_empty.f
477
478
479   /* Record the fields for the semantic handler.  */
480   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0));
481
482 #undef FLD
483     return idesc;
484   }
485
486  extract_sfmt_add:
487   {
488     const IDESC *idesc = &m32rbf_insn_data[itype];
489     CGEN_INSN_INT insn = entire_insn;
490 #define FLD(f) abuf->fields.sfmt_add.f
491     UINT f_r1;
492     UINT f_r2;
493
494     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
495     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
496
497   /* Record the fields for the semantic handler.  */
498   FLD (f_r1) = f_r1;
499   FLD (f_r2) = f_r2;
500   FLD (i_dr) = & CPU (h_gr)[f_r1];
501   FLD (i_sr) = & CPU (h_gr)[f_r2];
502   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, (char *) 0));
503
504 #if WITH_PROFILE_MODEL_P
505   /* Record the fields for profiling.  */
506   if (PROFILE_MODEL_P (current_cpu))
507     {
508       FLD (in_dr) = f_r1;
509       FLD (in_sr) = f_r2;
510       FLD (out_dr) = f_r1;
511     }
512 #endif
513 #undef FLD
514     return idesc;
515   }
516
517  extract_sfmt_add3:
518   {
519     const IDESC *idesc = &m32rbf_insn_data[itype];
520     CGEN_INSN_INT insn = entire_insn;
521 #define FLD(f) abuf->fields.sfmt_add3.f
522     UINT f_r1;
523     UINT f_r2;
524     INT f_simm16;
525
526     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
527     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
528     f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
529
530   /* Record the fields for the semantic handler.  */
531   FLD (f_simm16) = f_simm16;
532   FLD (f_r2) = f_r2;
533   FLD (f_r1) = f_r1;
534   FLD (i_sr) = & CPU (h_gr)[f_r2];
535   FLD (i_dr) = & CPU (h_gr)[f_r1];
536   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add3", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
537
538 #if WITH_PROFILE_MODEL_P
539   /* Record the fields for profiling.  */
540   if (PROFILE_MODEL_P (current_cpu))
541     {
542       FLD (in_sr) = f_r2;
543       FLD (out_dr) = f_r1;
544     }
545 #endif
546 #undef FLD
547     return idesc;
548   }
549
550  extract_sfmt_and3:
551   {
552     const IDESC *idesc = &m32rbf_insn_data[itype];
553     CGEN_INSN_INT insn = entire_insn;
554 #define FLD(f) abuf->fields.sfmt_and3.f
555     UINT f_r1;
556     UINT f_r2;
557     UINT f_uimm16;
558
559     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
560     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
561     f_uimm16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
562
563   /* Record the fields for the semantic handler.  */
564   FLD (f_r2) = f_r2;
565   FLD (f_uimm16) = f_uimm16;
566   FLD (f_r1) = f_r1;
567   FLD (i_sr) = & CPU (h_gr)[f_r2];
568   FLD (i_dr) = & CPU (h_gr)[f_r1];
569   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_and3", "f_r2 0x%x", 'x', f_r2, "f_uimm16 0x%x", 'x', f_uimm16, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
570
571 #if WITH_PROFILE_MODEL_P
572   /* Record the fields for profiling.  */
573   if (PROFILE_MODEL_P (current_cpu))
574     {
575       FLD (in_sr) = f_r2;
576       FLD (out_dr) = f_r1;
577     }
578 #endif
579 #undef FLD
580     return idesc;
581   }
582
583  extract_sfmt_or3:
584   {
585     const IDESC *idesc = &m32rbf_insn_data[itype];
586     CGEN_INSN_INT insn = entire_insn;
587 #define FLD(f) abuf->fields.sfmt_and3.f
588     UINT f_r1;
589     UINT f_r2;
590     UINT f_uimm16;
591
592     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
593     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
594     f_uimm16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
595
596   /* Record the fields for the semantic handler.  */
597   FLD (f_r2) = f_r2;
598   FLD (f_uimm16) = f_uimm16;
599   FLD (f_r1) = f_r1;
600   FLD (i_sr) = & CPU (h_gr)[f_r2];
601   FLD (i_dr) = & CPU (h_gr)[f_r1];
602   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_or3", "f_r2 0x%x", 'x', f_r2, "f_uimm16 0x%x", 'x', f_uimm16, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
603
604 #if WITH_PROFILE_MODEL_P
605   /* Record the fields for profiling.  */
606   if (PROFILE_MODEL_P (current_cpu))
607     {
608       FLD (in_sr) = f_r2;
609       FLD (out_dr) = f_r1;
610     }
611 #endif
612 #undef FLD
613     return idesc;
614   }
615
616  extract_sfmt_addi:
617   {
618     const IDESC *idesc = &m32rbf_insn_data[itype];
619     CGEN_INSN_INT insn = entire_insn;
620 #define FLD(f) abuf->fields.sfmt_addi.f
621     UINT f_r1;
622     INT f_simm8;
623
624     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
625     f_simm8 = EXTRACT_MSB0_INT (insn, 16, 8, 8);
626
627   /* Record the fields for the semantic handler.  */
628   FLD (f_r1) = f_r1;
629   FLD (f_simm8) = f_simm8;
630   FLD (i_dr) = & CPU (h_gr)[f_r1];
631   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addi", "f_r1 0x%x", 'x', f_r1, "f_simm8 0x%x", 'x', f_simm8, "dr 0x%x", 'x', f_r1, (char *) 0));
632
633 #if WITH_PROFILE_MODEL_P
634   /* Record the fields for profiling.  */
635   if (PROFILE_MODEL_P (current_cpu))
636     {
637       FLD (in_dr) = f_r1;
638       FLD (out_dr) = f_r1;
639     }
640 #endif
641 #undef FLD
642     return idesc;
643   }
644
645  extract_sfmt_addv:
646   {
647     const IDESC *idesc = &m32rbf_insn_data[itype];
648     CGEN_INSN_INT insn = entire_insn;
649 #define FLD(f) abuf->fields.sfmt_add.f
650     UINT f_r1;
651     UINT f_r2;
652
653     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
654     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
655
656   /* Record the fields for the semantic handler.  */
657   FLD (f_r1) = f_r1;
658   FLD (f_r2) = f_r2;
659   FLD (i_dr) = & CPU (h_gr)[f_r1];
660   FLD (i_sr) = & CPU (h_gr)[f_r2];
661   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addv", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, (char *) 0));
662
663 #if WITH_PROFILE_MODEL_P
664   /* Record the fields for profiling.  */
665   if (PROFILE_MODEL_P (current_cpu))
666     {
667       FLD (in_dr) = f_r1;
668       FLD (in_sr) = f_r2;
669       FLD (out_dr) = f_r1;
670     }
671 #endif
672 #undef FLD
673     return idesc;
674   }
675
676  extract_sfmt_addv3:
677   {
678     const IDESC *idesc = &m32rbf_insn_data[itype];
679     CGEN_INSN_INT insn = entire_insn;
680 #define FLD(f) abuf->fields.sfmt_add3.f
681     UINT f_r1;
682     UINT f_r2;
683     INT f_simm16;
684
685     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
686     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
687     f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
688
689   /* Record the fields for the semantic handler.  */
690   FLD (f_simm16) = f_simm16;
691   FLD (f_r2) = f_r2;
692   FLD (f_r1) = f_r1;
693   FLD (i_sr) = & CPU (h_gr)[f_r2];
694   FLD (i_dr) = & CPU (h_gr)[f_r1];
695   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addv3", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
696
697 #if WITH_PROFILE_MODEL_P
698   /* Record the fields for profiling.  */
699   if (PROFILE_MODEL_P (current_cpu))
700     {
701       FLD (in_sr) = f_r2;
702       FLD (out_dr) = f_r1;
703     }
704 #endif
705 #undef FLD
706     return idesc;
707   }
708
709  extract_sfmt_addx:
710   {
711     const IDESC *idesc = &m32rbf_insn_data[itype];
712     CGEN_INSN_INT insn = entire_insn;
713 #define FLD(f) abuf->fields.sfmt_add.f
714     UINT f_r1;
715     UINT f_r2;
716
717     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
718     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
719
720   /* Record the fields for the semantic handler.  */
721   FLD (f_r1) = f_r1;
722   FLD (f_r2) = f_r2;
723   FLD (i_dr) = & CPU (h_gr)[f_r1];
724   FLD (i_sr) = & CPU (h_gr)[f_r2];
725   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addx", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, (char *) 0));
726
727 #if WITH_PROFILE_MODEL_P
728   /* Record the fields for profiling.  */
729   if (PROFILE_MODEL_P (current_cpu))
730     {
731       FLD (in_dr) = f_r1;
732       FLD (in_sr) = f_r2;
733       FLD (out_dr) = f_r1;
734     }
735 #endif
736 #undef FLD
737     return idesc;
738   }
739
740  extract_sfmt_bc8:
741   {
742     const IDESC *idesc = &m32rbf_insn_data[itype];
743     CGEN_INSN_INT insn = entire_insn;
744 #define FLD(f) abuf->fields.sfmt_bl8.f
745     SI f_disp8;
746
747     f_disp8 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (2))) + (((pc) & (-4))));
748
749   /* Record the fields for the semantic handler.  */
750   FLD (i_disp8) = f_disp8;
751   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bc8", "disp8 0x%x", 'x', f_disp8, (char *) 0));
752
753 #if WITH_PROFILE_MODEL_P
754   /* Record the fields for profiling.  */
755   if (PROFILE_MODEL_P (current_cpu))
756     {
757     }
758 #endif
759 #undef FLD
760     return idesc;
761   }
762
763  extract_sfmt_bc24:
764   {
765     const IDESC *idesc = &m32rbf_insn_data[itype];
766     CGEN_INSN_INT insn = entire_insn;
767 #define FLD(f) abuf->fields.sfmt_bl24.f
768     SI f_disp24;
769
770     f_disp24 = ((((EXTRACT_MSB0_INT (insn, 32, 8, 24)) << (2))) + (pc));
771
772   /* Record the fields for the semantic handler.  */
773   FLD (i_disp24) = f_disp24;
774   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bc24", "disp24 0x%x", 'x', f_disp24, (char *) 0));
775
776 #if WITH_PROFILE_MODEL_P
777   /* Record the fields for profiling.  */
778   if (PROFILE_MODEL_P (current_cpu))
779     {
780     }
781 #endif
782 #undef FLD
783     return idesc;
784   }
785
786  extract_sfmt_beq:
787   {
788     const IDESC *idesc = &m32rbf_insn_data[itype];
789     CGEN_INSN_INT insn = entire_insn;
790 #define FLD(f) abuf->fields.sfmt_beq.f
791     UINT f_r1;
792     UINT f_r2;
793     SI f_disp16;
794
795     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
796     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
797     f_disp16 = ((((EXTRACT_MSB0_INT (insn, 32, 16, 16)) << (2))) + (pc));
798
799   /* Record the fields for the semantic handler.  */
800   FLD (f_r1) = f_r1;
801   FLD (f_r2) = f_r2;
802   FLD (i_disp16) = f_disp16;
803   FLD (i_src1) = & CPU (h_gr)[f_r1];
804   FLD (i_src2) = & CPU (h_gr)[f_r2];
805   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_beq", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "disp16 0x%x", 'x', f_disp16, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
806
807 #if WITH_PROFILE_MODEL_P
808   /* Record the fields for profiling.  */
809   if (PROFILE_MODEL_P (current_cpu))
810     {
811       FLD (in_src1) = f_r1;
812       FLD (in_src2) = f_r2;
813     }
814 #endif
815 #undef FLD
816     return idesc;
817   }
818
819  extract_sfmt_beqz:
820   {
821     const IDESC *idesc = &m32rbf_insn_data[itype];
822     CGEN_INSN_INT insn = entire_insn;
823 #define FLD(f) abuf->fields.sfmt_beq.f
824     UINT f_r2;
825     SI f_disp16;
826
827     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
828     f_disp16 = ((((EXTRACT_MSB0_INT (insn, 32, 16, 16)) << (2))) + (pc));
829
830   /* Record the fields for the semantic handler.  */
831   FLD (f_r2) = f_r2;
832   FLD (i_disp16) = f_disp16;
833   FLD (i_src2) = & CPU (h_gr)[f_r2];
834   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_beqz", "f_r2 0x%x", 'x', f_r2, "disp16 0x%x", 'x', f_disp16, "src2 0x%x", 'x', f_r2, (char *) 0));
835
836 #if WITH_PROFILE_MODEL_P
837   /* Record the fields for profiling.  */
838   if (PROFILE_MODEL_P (current_cpu))
839     {
840       FLD (in_src2) = f_r2;
841     }
842 #endif
843 #undef FLD
844     return idesc;
845   }
846
847  extract_sfmt_bl8:
848   {
849     const IDESC *idesc = &m32rbf_insn_data[itype];
850     CGEN_INSN_INT insn = entire_insn;
851 #define FLD(f) abuf->fields.sfmt_bl8.f
852     SI f_disp8;
853
854     f_disp8 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (2))) + (((pc) & (-4))));
855
856   /* Record the fields for the semantic handler.  */
857   FLD (i_disp8) = f_disp8;
858   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bl8", "disp8 0x%x", 'x', f_disp8, (char *) 0));
859
860 #if WITH_PROFILE_MODEL_P
861   /* Record the fields for profiling.  */
862   if (PROFILE_MODEL_P (current_cpu))
863     {
864       FLD (out_h_gr_SI_14) = 14;
865     }
866 #endif
867 #undef FLD
868     return idesc;
869   }
870
871  extract_sfmt_bl24:
872   {
873     const IDESC *idesc = &m32rbf_insn_data[itype];
874     CGEN_INSN_INT insn = entire_insn;
875 #define FLD(f) abuf->fields.sfmt_bl24.f
876     SI f_disp24;
877
878     f_disp24 = ((((EXTRACT_MSB0_INT (insn, 32, 8, 24)) << (2))) + (pc));
879
880   /* Record the fields for the semantic handler.  */
881   FLD (i_disp24) = f_disp24;
882   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bl24", "disp24 0x%x", 'x', f_disp24, (char *) 0));
883
884 #if WITH_PROFILE_MODEL_P
885   /* Record the fields for profiling.  */
886   if (PROFILE_MODEL_P (current_cpu))
887     {
888       FLD (out_h_gr_SI_14) = 14;
889     }
890 #endif
891 #undef FLD
892     return idesc;
893   }
894
895  extract_sfmt_bra8:
896   {
897     const IDESC *idesc = &m32rbf_insn_data[itype];
898     CGEN_INSN_INT insn = entire_insn;
899 #define FLD(f) abuf->fields.sfmt_bl8.f
900     SI f_disp8;
901
902     f_disp8 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (2))) + (((pc) & (-4))));
903
904   /* Record the fields for the semantic handler.  */
905   FLD (i_disp8) = f_disp8;
906   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bra8", "disp8 0x%x", 'x', f_disp8, (char *) 0));
907
908 #if WITH_PROFILE_MODEL_P
909   /* Record the fields for profiling.  */
910   if (PROFILE_MODEL_P (current_cpu))
911     {
912     }
913 #endif
914 #undef FLD
915     return idesc;
916   }
917
918  extract_sfmt_bra24:
919   {
920     const IDESC *idesc = &m32rbf_insn_data[itype];
921     CGEN_INSN_INT insn = entire_insn;
922 #define FLD(f) abuf->fields.sfmt_bl24.f
923     SI f_disp24;
924
925     f_disp24 = ((((EXTRACT_MSB0_INT (insn, 32, 8, 24)) << (2))) + (pc));
926
927   /* Record the fields for the semantic handler.  */
928   FLD (i_disp24) = f_disp24;
929   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bra24", "disp24 0x%x", 'x', f_disp24, (char *) 0));
930
931 #if WITH_PROFILE_MODEL_P
932   /* Record the fields for profiling.  */
933   if (PROFILE_MODEL_P (current_cpu))
934     {
935     }
936 #endif
937 #undef FLD
938     return idesc;
939   }
940
941  extract_sfmt_cmp:
942   {
943     const IDESC *idesc = &m32rbf_insn_data[itype];
944     CGEN_INSN_INT insn = entire_insn;
945 #define FLD(f) abuf->fields.sfmt_st_plus.f
946     UINT f_r1;
947     UINT f_r2;
948
949     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
950     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
951
952   /* Record the fields for the semantic handler.  */
953   FLD (f_r1) = f_r1;
954   FLD (f_r2) = f_r2;
955   FLD (i_src1) = & CPU (h_gr)[f_r1];
956   FLD (i_src2) = & CPU (h_gr)[f_r2];
957   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
958
959 #if WITH_PROFILE_MODEL_P
960   /* Record the fields for profiling.  */
961   if (PROFILE_MODEL_P (current_cpu))
962     {
963       FLD (in_src1) = f_r1;
964       FLD (in_src2) = f_r2;
965     }
966 #endif
967 #undef FLD
968     return idesc;
969   }
970
971  extract_sfmt_cmpi:
972   {
973     const IDESC *idesc = &m32rbf_insn_data[itype];
974     CGEN_INSN_INT insn = entire_insn;
975 #define FLD(f) abuf->fields.sfmt_st_d.f
976     UINT f_r2;
977     INT f_simm16;
978
979     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
980     f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
981
982   /* Record the fields for the semantic handler.  */
983   FLD (f_simm16) = f_simm16;
984   FLD (f_r2) = f_r2;
985   FLD (i_src2) = & CPU (h_gr)[f_r2];
986   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpi", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "src2 0x%x", 'x', f_r2, (char *) 0));
987
988 #if WITH_PROFILE_MODEL_P
989   /* Record the fields for profiling.  */
990   if (PROFILE_MODEL_P (current_cpu))
991     {
992       FLD (in_src2) = f_r2;
993     }
994 #endif
995 #undef FLD
996     return idesc;
997   }
998
999  extract_sfmt_div:
1000   {
1001     const IDESC *idesc = &m32rbf_insn_data[itype];
1002     CGEN_INSN_INT insn = entire_insn;
1003 #define FLD(f) abuf->fields.sfmt_add.f
1004     UINT f_r1;
1005     UINT f_r2;
1006
1007     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1008     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
1009
1010   /* Record the fields for the semantic handler.  */
1011   FLD (f_r1) = f_r1;
1012   FLD (f_r2) = f_r2;
1013   FLD (i_dr) = & CPU (h_gr)[f_r1];
1014   FLD (i_sr) = & CPU (h_gr)[f_r2];
1015   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, (char *) 0));
1016
1017 #if WITH_PROFILE_MODEL_P
1018   /* Record the fields for profiling.  */
1019   if (PROFILE_MODEL_P (current_cpu))
1020     {
1021       FLD (in_dr) = f_r1;
1022       FLD (in_sr) = f_r2;
1023       FLD (out_dr) = f_r1;
1024     }
1025 #endif
1026 #undef FLD
1027     return idesc;
1028   }
1029
1030  extract_sfmt_jl:
1031   {
1032     const IDESC *idesc = &m32rbf_insn_data[itype];
1033     CGEN_INSN_INT insn = entire_insn;
1034 #define FLD(f) abuf->fields.sfmt_jl.f
1035     UINT f_r2;
1036
1037     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1038
1039   /* Record the fields for the semantic handler.  */
1040   FLD (f_r2) = f_r2;
1041   FLD (i_sr) = & CPU (h_gr)[f_r2];
1042   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jl", "f_r2 0x%x", 'x', f_r2, "sr 0x%x", 'x', f_r2, (char *) 0));
1043
1044 #if WITH_PROFILE_MODEL_P
1045   /* Record the fields for profiling.  */
1046   if (PROFILE_MODEL_P (current_cpu))
1047     {
1048       FLD (in_sr) = f_r2;
1049       FLD (out_h_gr_SI_14) = 14;
1050     }
1051 #endif
1052 #undef FLD
1053     return idesc;
1054   }
1055
1056  extract_sfmt_jmp:
1057   {
1058     const IDESC *idesc = &m32rbf_insn_data[itype];
1059     CGEN_INSN_INT insn = entire_insn;
1060 #define FLD(f) abuf->fields.sfmt_jl.f
1061     UINT f_r2;
1062
1063     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1064
1065   /* Record the fields for the semantic handler.  */
1066   FLD (f_r2) = f_r2;
1067   FLD (i_sr) = & CPU (h_gr)[f_r2];
1068   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jmp", "f_r2 0x%x", 'x', f_r2, "sr 0x%x", 'x', f_r2, (char *) 0));
1069
1070 #if WITH_PROFILE_MODEL_P
1071   /* Record the fields for profiling.  */
1072   if (PROFILE_MODEL_P (current_cpu))
1073     {
1074       FLD (in_sr) = f_r2;
1075     }
1076 #endif
1077 #undef FLD
1078     return idesc;
1079   }
1080
1081  extract_sfmt_ld:
1082   {
1083     const IDESC *idesc = &m32rbf_insn_data[itype];
1084     CGEN_INSN_INT insn = entire_insn;
1085 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1086     UINT f_r1;
1087     UINT f_r2;
1088
1089     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1090     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1091
1092   /* Record the fields for the semantic handler.  */
1093   FLD (f_r2) = f_r2;
1094   FLD (f_r1) = f_r1;
1095   FLD (i_sr) = & CPU (h_gr)[f_r2];
1096   FLD (i_dr) = & CPU (h_gr)[f_r1];
1097   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ld", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
1098
1099 #if WITH_PROFILE_MODEL_P
1100   /* Record the fields for profiling.  */
1101   if (PROFILE_MODEL_P (current_cpu))
1102     {
1103       FLD (in_sr) = f_r2;
1104       FLD (out_dr) = f_r1;
1105     }
1106 #endif
1107 #undef FLD
1108     return idesc;
1109   }
1110
1111  extract_sfmt_ld_d:
1112   {
1113     const IDESC *idesc = &m32rbf_insn_data[itype];
1114     CGEN_INSN_INT insn = entire_insn;
1115 #define FLD(f) abuf->fields.sfmt_add3.f
1116     UINT f_r1;
1117     UINT f_r2;
1118     INT f_simm16;
1119
1120     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1121     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
1122     f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
1123
1124   /* Record the fields for the semantic handler.  */
1125   FLD (f_simm16) = f_simm16;
1126   FLD (f_r2) = f_r2;
1127   FLD (f_r1) = f_r1;
1128   FLD (i_sr) = & CPU (h_gr)[f_r2];
1129   FLD (i_dr) = & CPU (h_gr)[f_r1];
1130   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ld_d", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
1131
1132 #if WITH_PROFILE_MODEL_P
1133   /* Record the fields for profiling.  */
1134   if (PROFILE_MODEL_P (current_cpu))
1135     {
1136       FLD (in_sr) = f_r2;
1137       FLD (out_dr) = f_r1;
1138     }
1139 #endif
1140 #undef FLD
1141     return idesc;
1142   }
1143
1144  extract_sfmt_ldb:
1145   {
1146     const IDESC *idesc = &m32rbf_insn_data[itype];
1147     CGEN_INSN_INT insn = entire_insn;
1148 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1149     UINT f_r1;
1150     UINT f_r2;
1151
1152     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1153     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1154
1155   /* Record the fields for the semantic handler.  */
1156   FLD (f_r2) = f_r2;
1157   FLD (f_r1) = f_r1;
1158   FLD (i_sr) = & CPU (h_gr)[f_r2];
1159   FLD (i_dr) = & CPU (h_gr)[f_r1];
1160   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldb", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
1161
1162 #if WITH_PROFILE_MODEL_P
1163   /* Record the fields for profiling.  */
1164   if (PROFILE_MODEL_P (current_cpu))
1165     {
1166       FLD (in_sr) = f_r2;
1167       FLD (out_dr) = f_r1;
1168     }
1169 #endif
1170 #undef FLD
1171     return idesc;
1172   }
1173
1174  extract_sfmt_ldb_d:
1175   {
1176     const IDESC *idesc = &m32rbf_insn_data[itype];
1177     CGEN_INSN_INT insn = entire_insn;
1178 #define FLD(f) abuf->fields.sfmt_add3.f
1179     UINT f_r1;
1180     UINT f_r2;
1181     INT f_simm16;
1182
1183     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1184     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
1185     f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
1186
1187   /* Record the fields for the semantic handler.  */
1188   FLD (f_simm16) = f_simm16;
1189   FLD (f_r2) = f_r2;
1190   FLD (f_r1) = f_r1;
1191   FLD (i_sr) = & CPU (h_gr)[f_r2];
1192   FLD (i_dr) = & CPU (h_gr)[f_r1];
1193   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldb_d", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
1194
1195 #if WITH_PROFILE_MODEL_P
1196   /* Record the fields for profiling.  */
1197   if (PROFILE_MODEL_P (current_cpu))
1198     {
1199       FLD (in_sr) = f_r2;
1200       FLD (out_dr) = f_r1;
1201     }
1202 #endif
1203 #undef FLD
1204     return idesc;
1205   }
1206
1207  extract_sfmt_ldh:
1208   {
1209     const IDESC *idesc = &m32rbf_insn_data[itype];
1210     CGEN_INSN_INT insn = entire_insn;
1211 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1212     UINT f_r1;
1213     UINT f_r2;
1214
1215     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1216     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1217
1218   /* Record the fields for the semantic handler.  */
1219   FLD (f_r2) = f_r2;
1220   FLD (f_r1) = f_r1;
1221   FLD (i_sr) = & CPU (h_gr)[f_r2];
1222   FLD (i_dr) = & CPU (h_gr)[f_r1];
1223   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldh", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
1224
1225 #if WITH_PROFILE_MODEL_P
1226   /* Record the fields for profiling.  */
1227   if (PROFILE_MODEL_P (current_cpu))
1228     {
1229       FLD (in_sr) = f_r2;
1230       FLD (out_dr) = f_r1;
1231     }
1232 #endif
1233 #undef FLD
1234     return idesc;
1235   }
1236
1237  extract_sfmt_ldh_d:
1238   {
1239     const IDESC *idesc = &m32rbf_insn_data[itype];
1240     CGEN_INSN_INT insn = entire_insn;
1241 #define FLD(f) abuf->fields.sfmt_add3.f
1242     UINT f_r1;
1243     UINT f_r2;
1244     INT f_simm16;
1245
1246     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1247     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
1248     f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
1249
1250   /* Record the fields for the semantic handler.  */
1251   FLD (f_simm16) = f_simm16;
1252   FLD (f_r2) = f_r2;
1253   FLD (f_r1) = f_r1;
1254   FLD (i_sr) = & CPU (h_gr)[f_r2];
1255   FLD (i_dr) = & CPU (h_gr)[f_r1];
1256   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldh_d", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
1257
1258 #if WITH_PROFILE_MODEL_P
1259   /* Record the fields for profiling.  */
1260   if (PROFILE_MODEL_P (current_cpu))
1261     {
1262       FLD (in_sr) = f_r2;
1263       FLD (out_dr) = f_r1;
1264     }
1265 #endif
1266 #undef FLD
1267     return idesc;
1268   }
1269
1270  extract_sfmt_ld_plus:
1271   {
1272     const IDESC *idesc = &m32rbf_insn_data[itype];
1273     CGEN_INSN_INT insn = entire_insn;
1274 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1275     UINT f_r1;
1276     UINT f_r2;
1277
1278     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1279     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1280
1281   /* Record the fields for the semantic handler.  */
1282   FLD (f_r2) = f_r2;
1283   FLD (f_r1) = f_r1;
1284   FLD (i_sr) = & CPU (h_gr)[f_r2];
1285   FLD (i_dr) = & CPU (h_gr)[f_r1];
1286   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ld_plus", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
1287
1288 #if WITH_PROFILE_MODEL_P
1289   /* Record the fields for profiling.  */
1290   if (PROFILE_MODEL_P (current_cpu))
1291     {
1292       FLD (in_sr) = f_r2;
1293       FLD (out_dr) = f_r1;
1294       FLD (out_sr) = f_r2;
1295     }
1296 #endif
1297 #undef FLD
1298     return idesc;
1299   }
1300
1301  extract_sfmt_ld24:
1302   {
1303     const IDESC *idesc = &m32rbf_insn_data[itype];
1304     CGEN_INSN_INT insn = entire_insn;
1305 #define FLD(f) abuf->fields.sfmt_ld24.f
1306     UINT f_r1;
1307     UINT f_uimm24;
1308
1309     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1310     f_uimm24 = EXTRACT_MSB0_UINT (insn, 32, 8, 24);
1311
1312   /* Record the fields for the semantic handler.  */
1313   FLD (f_r1) = f_r1;
1314   FLD (i_uimm24) = f_uimm24;
1315   FLD (i_dr) = & CPU (h_gr)[f_r1];
1316   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ld24", "f_r1 0x%x", 'x', f_r1, "uimm24 0x%x", 'x', f_uimm24, "dr 0x%x", 'x', f_r1, (char *) 0));
1317
1318 #if WITH_PROFILE_MODEL_P
1319   /* Record the fields for profiling.  */
1320   if (PROFILE_MODEL_P (current_cpu))
1321     {
1322       FLD (out_dr) = f_r1;
1323     }
1324 #endif
1325 #undef FLD
1326     return idesc;
1327   }
1328
1329  extract_sfmt_ldi8:
1330   {
1331     const IDESC *idesc = &m32rbf_insn_data[itype];
1332     CGEN_INSN_INT insn = entire_insn;
1333 #define FLD(f) abuf->fields.sfmt_addi.f
1334     UINT f_r1;
1335     INT f_simm8;
1336
1337     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1338     f_simm8 = EXTRACT_MSB0_INT (insn, 16, 8, 8);
1339
1340   /* Record the fields for the semantic handler.  */
1341   FLD (f_simm8) = f_simm8;
1342   FLD (f_r1) = f_r1;
1343   FLD (i_dr) = & CPU (h_gr)[f_r1];
1344   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi8", "f_simm8 0x%x", 'x', f_simm8, "f_r1 0x%x", 'x', f_r1, "dr 0x%x", 'x', f_r1, (char *) 0));
1345
1346 #if WITH_PROFILE_MODEL_P
1347   /* Record the fields for profiling.  */
1348   if (PROFILE_MODEL_P (current_cpu))
1349     {
1350       FLD (out_dr) = f_r1;
1351     }
1352 #endif
1353 #undef FLD
1354     return idesc;
1355   }
1356
1357  extract_sfmt_ldi16:
1358   {
1359     const IDESC *idesc = &m32rbf_insn_data[itype];
1360     CGEN_INSN_INT insn = entire_insn;
1361 #define FLD(f) abuf->fields.sfmt_add3.f
1362     UINT f_r1;
1363     INT f_simm16;
1364
1365     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1366     f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
1367
1368   /* Record the fields for the semantic handler.  */
1369   FLD (f_simm16) = f_simm16;
1370   FLD (f_r1) = f_r1;
1371   FLD (i_dr) = & CPU (h_gr)[f_r1];
1372   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi16", "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, "dr 0x%x", 'x', f_r1, (char *) 0));
1373
1374 #if WITH_PROFILE_MODEL_P
1375   /* Record the fields for profiling.  */
1376   if (PROFILE_MODEL_P (current_cpu))
1377     {
1378       FLD (out_dr) = f_r1;
1379     }
1380 #endif
1381 #undef FLD
1382     return idesc;
1383   }
1384
1385  extract_sfmt_lock:
1386   {
1387     const IDESC *idesc = &m32rbf_insn_data[itype];
1388     CGEN_INSN_INT insn = entire_insn;
1389 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1390     UINT f_r1;
1391     UINT f_r2;
1392
1393     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1394     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1395
1396   /* Record the fields for the semantic handler.  */
1397   FLD (f_r2) = f_r2;
1398   FLD (f_r1) = f_r1;
1399   FLD (i_sr) = & CPU (h_gr)[f_r2];
1400   FLD (i_dr) = & CPU (h_gr)[f_r1];
1401   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lock", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
1402
1403 #if WITH_PROFILE_MODEL_P
1404   /* Record the fields for profiling.  */
1405   if (PROFILE_MODEL_P (current_cpu))
1406     {
1407       FLD (in_sr) = f_r2;
1408       FLD (out_dr) = f_r1;
1409     }
1410 #endif
1411 #undef FLD
1412     return idesc;
1413   }
1414
1415  extract_sfmt_machi:
1416   {
1417     const IDESC *idesc = &m32rbf_insn_data[itype];
1418     CGEN_INSN_INT insn = entire_insn;
1419 #define FLD(f) abuf->fields.sfmt_st_plus.f
1420     UINT f_r1;
1421     UINT f_r2;
1422
1423     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1424     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1425
1426   /* Record the fields for the semantic handler.  */
1427   FLD (f_r1) = f_r1;
1428   FLD (f_r2) = f_r2;
1429   FLD (i_src1) = & CPU (h_gr)[f_r1];
1430   FLD (i_src2) = & CPU (h_gr)[f_r2];
1431   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_machi", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
1432
1433 #if WITH_PROFILE_MODEL_P
1434   /* Record the fields for profiling.  */
1435   if (PROFILE_MODEL_P (current_cpu))
1436     {
1437       FLD (in_src1) = f_r1;
1438       FLD (in_src2) = f_r2;
1439     }
1440 #endif
1441 #undef FLD
1442     return idesc;
1443   }
1444
1445  extract_sfmt_mulhi:
1446   {
1447     const IDESC *idesc = &m32rbf_insn_data[itype];
1448     CGEN_INSN_INT insn = entire_insn;
1449 #define FLD(f) abuf->fields.sfmt_st_plus.f
1450     UINT f_r1;
1451     UINT f_r2;
1452
1453     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1454     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1455
1456   /* Record the fields for the semantic handler.  */
1457   FLD (f_r1) = f_r1;
1458   FLD (f_r2) = f_r2;
1459   FLD (i_src1) = & CPU (h_gr)[f_r1];
1460   FLD (i_src2) = & CPU (h_gr)[f_r2];
1461   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mulhi", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
1462
1463 #if WITH_PROFILE_MODEL_P
1464   /* Record the fields for profiling.  */
1465   if (PROFILE_MODEL_P (current_cpu))
1466     {
1467       FLD (in_src1) = f_r1;
1468       FLD (in_src2) = f_r2;
1469     }
1470 #endif
1471 #undef FLD
1472     return idesc;
1473   }
1474
1475  extract_sfmt_mv:
1476   {
1477     const IDESC *idesc = &m32rbf_insn_data[itype];
1478     CGEN_INSN_INT insn = entire_insn;
1479 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1480     UINT f_r1;
1481     UINT f_r2;
1482
1483     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1484     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1485
1486   /* Record the fields for the semantic handler.  */
1487   FLD (f_r2) = f_r2;
1488   FLD (f_r1) = f_r1;
1489   FLD (i_sr) = & CPU (h_gr)[f_r2];
1490   FLD (i_dr) = & CPU (h_gr)[f_r1];
1491   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mv", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
1492
1493 #if WITH_PROFILE_MODEL_P
1494   /* Record the fields for profiling.  */
1495   if (PROFILE_MODEL_P (current_cpu))
1496     {
1497       FLD (in_sr) = f_r2;
1498       FLD (out_dr) = f_r1;
1499     }
1500 #endif
1501 #undef FLD
1502     return idesc;
1503   }
1504
1505  extract_sfmt_mvfachi:
1506   {
1507     const IDESC *idesc = &m32rbf_insn_data[itype];
1508     CGEN_INSN_INT insn = entire_insn;
1509 #define FLD(f) abuf->fields.sfmt_seth.f
1510     UINT f_r1;
1511
1512     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1513
1514   /* Record the fields for the semantic handler.  */
1515   FLD (f_r1) = f_r1;
1516   FLD (i_dr) = & CPU (h_gr)[f_r1];
1517   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mvfachi", "f_r1 0x%x", 'x', f_r1, "dr 0x%x", 'x', f_r1, (char *) 0));
1518
1519 #if WITH_PROFILE_MODEL_P
1520   /* Record the fields for profiling.  */
1521   if (PROFILE_MODEL_P (current_cpu))
1522     {
1523       FLD (out_dr) = f_r1;
1524     }
1525 #endif
1526 #undef FLD
1527     return idesc;
1528   }
1529
1530  extract_sfmt_mvfc:
1531   {
1532     const IDESC *idesc = &m32rbf_insn_data[itype];
1533     CGEN_INSN_INT insn = entire_insn;
1534 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1535     UINT f_r1;
1536     UINT f_r2;
1537
1538     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1539     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1540
1541   /* Record the fields for the semantic handler.  */
1542   FLD (f_r2) = f_r2;
1543   FLD (f_r1) = f_r1;
1544   FLD (i_dr) = & CPU (h_gr)[f_r1];
1545   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mvfc", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "dr 0x%x", 'x', f_r1, (char *) 0));
1546
1547 #if WITH_PROFILE_MODEL_P
1548   /* Record the fields for profiling.  */
1549   if (PROFILE_MODEL_P (current_cpu))
1550     {
1551       FLD (out_dr) = f_r1;
1552     }
1553 #endif
1554 #undef FLD
1555     return idesc;
1556   }
1557
1558  extract_sfmt_mvtachi:
1559   {
1560     const IDESC *idesc = &m32rbf_insn_data[itype];
1561     CGEN_INSN_INT insn = entire_insn;
1562 #define FLD(f) abuf->fields.sfmt_st_plus.f
1563     UINT f_r1;
1564
1565     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1566
1567   /* Record the fields for the semantic handler.  */
1568   FLD (f_r1) = f_r1;
1569   FLD (i_src1) = & CPU (h_gr)[f_r1];
1570   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mvtachi", "f_r1 0x%x", 'x', f_r1, "src1 0x%x", 'x', f_r1, (char *) 0));
1571
1572 #if WITH_PROFILE_MODEL_P
1573   /* Record the fields for profiling.  */
1574   if (PROFILE_MODEL_P (current_cpu))
1575     {
1576       FLD (in_src1) = f_r1;
1577     }
1578 #endif
1579 #undef FLD
1580     return idesc;
1581   }
1582
1583  extract_sfmt_mvtc:
1584   {
1585     const IDESC *idesc = &m32rbf_insn_data[itype];
1586     CGEN_INSN_INT insn = entire_insn;
1587 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1588     UINT f_r1;
1589     UINT f_r2;
1590
1591     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1592     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1593
1594   /* Record the fields for the semantic handler.  */
1595   FLD (f_r2) = f_r2;
1596   FLD (f_r1) = f_r1;
1597   FLD (i_sr) = & CPU (h_gr)[f_r2];
1598   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mvtc", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, (char *) 0));
1599
1600 #if WITH_PROFILE_MODEL_P
1601   /* Record the fields for profiling.  */
1602   if (PROFILE_MODEL_P (current_cpu))
1603     {
1604       FLD (in_sr) = f_r2;
1605     }
1606 #endif
1607 #undef FLD
1608     return idesc;
1609   }
1610
1611  extract_sfmt_nop:
1612   {
1613     const IDESC *idesc = &m32rbf_insn_data[itype];
1614 #define FLD(f) abuf->fields.fmt_empty.f
1615
1616
1617   /* Record the fields for the semantic handler.  */
1618   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_nop", (char *) 0));
1619
1620 #undef FLD
1621     return idesc;
1622   }
1623
1624  extract_sfmt_rac:
1625   {
1626     const IDESC *idesc = &m32rbf_insn_data[itype];
1627 #define FLD(f) abuf->fields.fmt_empty.f
1628
1629
1630   /* Record the fields for the semantic handler.  */
1631   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_rac", (char *) 0));
1632
1633 #undef FLD
1634     return idesc;
1635   }
1636
1637  extract_sfmt_rte:
1638   {
1639     const IDESC *idesc = &m32rbf_insn_data[itype];
1640 #define FLD(f) abuf->fields.fmt_empty.f
1641
1642
1643   /* Record the fields for the semantic handler.  */
1644   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_rte", (char *) 0));
1645
1646 #if WITH_PROFILE_MODEL_P
1647   /* Record the fields for profiling.  */
1648   if (PROFILE_MODEL_P (current_cpu))
1649     {
1650     }
1651 #endif
1652 #undef FLD
1653     return idesc;
1654   }
1655
1656  extract_sfmt_seth:
1657   {
1658     const IDESC *idesc = &m32rbf_insn_data[itype];
1659     CGEN_INSN_INT insn = entire_insn;
1660 #define FLD(f) abuf->fields.sfmt_seth.f
1661     UINT f_r1;
1662     UINT f_hi16;
1663
1664     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1665     f_hi16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
1666
1667   /* Record the fields for the semantic handler.  */
1668   FLD (f_hi16) = f_hi16;
1669   FLD (f_r1) = f_r1;
1670   FLD (i_dr) = & CPU (h_gr)[f_r1];
1671   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_seth", "f_hi16 0x%x", 'x', f_hi16, "f_r1 0x%x", 'x', f_r1, "dr 0x%x", 'x', f_r1, (char *) 0));
1672
1673 #if WITH_PROFILE_MODEL_P
1674   /* Record the fields for profiling.  */
1675   if (PROFILE_MODEL_P (current_cpu))
1676     {
1677       FLD (out_dr) = f_r1;
1678     }
1679 #endif
1680 #undef FLD
1681     return idesc;
1682   }
1683
1684  extract_sfmt_sll3:
1685   {
1686     const IDESC *idesc = &m32rbf_insn_data[itype];
1687     CGEN_INSN_INT insn = entire_insn;
1688 #define FLD(f) abuf->fields.sfmt_add3.f
1689     UINT f_r1;
1690     UINT f_r2;
1691     INT f_simm16;
1692
1693     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1694     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
1695     f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
1696
1697   /* Record the fields for the semantic handler.  */
1698   FLD (f_simm16) = f_simm16;
1699   FLD (f_r2) = f_r2;
1700   FLD (f_r1) = f_r1;
1701   FLD (i_sr) = & CPU (h_gr)[f_r2];
1702   FLD (i_dr) = & CPU (h_gr)[f_r1];
1703   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sll3", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
1704
1705 #if WITH_PROFILE_MODEL_P
1706   /* Record the fields for profiling.  */
1707   if (PROFILE_MODEL_P (current_cpu))
1708     {
1709       FLD (in_sr) = f_r2;
1710       FLD (out_dr) = f_r1;
1711     }
1712 #endif
1713 #undef FLD
1714     return idesc;
1715   }
1716
1717  extract_sfmt_slli:
1718   {
1719     const IDESC *idesc = &m32rbf_insn_data[itype];
1720     CGEN_INSN_INT insn = entire_insn;
1721 #define FLD(f) abuf->fields.sfmt_slli.f
1722     UINT f_r1;
1723     UINT f_uimm5;
1724
1725     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1726     f_uimm5 = EXTRACT_MSB0_UINT (insn, 16, 11, 5);
1727
1728   /* Record the fields for the semantic handler.  */
1729   FLD (f_r1) = f_r1;
1730   FLD (f_uimm5) = f_uimm5;
1731   FLD (i_dr) = & CPU (h_gr)[f_r1];
1732   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_slli", "f_r1 0x%x", 'x', f_r1, "f_uimm5 0x%x", 'x', f_uimm5, "dr 0x%x", 'x', f_r1, (char *) 0));
1733
1734 #if WITH_PROFILE_MODEL_P
1735   /* Record the fields for profiling.  */
1736   if (PROFILE_MODEL_P (current_cpu))
1737     {
1738       FLD (in_dr) = f_r1;
1739       FLD (out_dr) = f_r1;
1740     }
1741 #endif
1742 #undef FLD
1743     return idesc;
1744   }
1745
1746  extract_sfmt_st:
1747   {
1748     const IDESC *idesc = &m32rbf_insn_data[itype];
1749     CGEN_INSN_INT insn = entire_insn;
1750 #define FLD(f) abuf->fields.sfmt_st_plus.f
1751     UINT f_r1;
1752     UINT f_r2;
1753
1754     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1755     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1756
1757   /* Record the fields for the semantic handler.  */
1758   FLD (f_r1) = f_r1;
1759   FLD (f_r2) = f_r2;
1760   FLD (i_src1) = & CPU (h_gr)[f_r1];
1761   FLD (i_src2) = & CPU (h_gr)[f_r2];
1762   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_st", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
1763
1764 #if WITH_PROFILE_MODEL_P
1765   /* Record the fields for profiling.  */
1766   if (PROFILE_MODEL_P (current_cpu))
1767     {
1768       FLD (in_src1) = f_r1;
1769       FLD (in_src2) = f_r2;
1770     }
1771 #endif
1772 #undef FLD
1773     return idesc;
1774   }
1775
1776  extract_sfmt_st_d:
1777   {
1778     const IDESC *idesc = &m32rbf_insn_data[itype];
1779     CGEN_INSN_INT insn = entire_insn;
1780 #define FLD(f) abuf->fields.sfmt_st_d.f
1781     UINT f_r1;
1782     UINT f_r2;
1783     INT f_simm16;
1784
1785     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1786     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
1787     f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
1788
1789   /* Record the fields for the semantic handler.  */
1790   FLD (f_simm16) = f_simm16;
1791   FLD (f_r1) = f_r1;
1792   FLD (f_r2) = f_r2;
1793   FLD (i_src1) = & CPU (h_gr)[f_r1];
1794   FLD (i_src2) = & CPU (h_gr)[f_r2];
1795   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_st_d", "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
1796
1797 #if WITH_PROFILE_MODEL_P
1798   /* Record the fields for profiling.  */
1799   if (PROFILE_MODEL_P (current_cpu))
1800     {
1801       FLD (in_src1) = f_r1;
1802       FLD (in_src2) = f_r2;
1803     }
1804 #endif
1805 #undef FLD
1806     return idesc;
1807   }
1808
1809  extract_sfmt_stb:
1810   {
1811     const IDESC *idesc = &m32rbf_insn_data[itype];
1812     CGEN_INSN_INT insn = entire_insn;
1813 #define FLD(f) abuf->fields.sfmt_st_plus.f
1814     UINT f_r1;
1815     UINT f_r2;
1816
1817     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1818     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1819
1820   /* Record the fields for the semantic handler.  */
1821   FLD (f_r1) = f_r1;
1822   FLD (f_r2) = f_r2;
1823   FLD (i_src1) = & CPU (h_gr)[f_r1];
1824   FLD (i_src2) = & CPU (h_gr)[f_r2];
1825   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stb", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
1826
1827 #if WITH_PROFILE_MODEL_P
1828   /* Record the fields for profiling.  */
1829   if (PROFILE_MODEL_P (current_cpu))
1830     {
1831       FLD (in_src1) = f_r1;
1832       FLD (in_src2) = f_r2;
1833     }
1834 #endif
1835 #undef FLD
1836     return idesc;
1837   }
1838
1839  extract_sfmt_stb_d:
1840   {
1841     const IDESC *idesc = &m32rbf_insn_data[itype];
1842     CGEN_INSN_INT insn = entire_insn;
1843 #define FLD(f) abuf->fields.sfmt_st_d.f
1844     UINT f_r1;
1845     UINT f_r2;
1846     INT f_simm16;
1847
1848     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1849     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
1850     f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
1851
1852   /* Record the fields for the semantic handler.  */
1853   FLD (f_simm16) = f_simm16;
1854   FLD (f_r1) = f_r1;
1855   FLD (f_r2) = f_r2;
1856   FLD (i_src1) = & CPU (h_gr)[f_r1];
1857   FLD (i_src2) = & CPU (h_gr)[f_r2];
1858   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stb_d", "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
1859
1860 #if WITH_PROFILE_MODEL_P
1861   /* Record the fields for profiling.  */
1862   if (PROFILE_MODEL_P (current_cpu))
1863     {
1864       FLD (in_src1) = f_r1;
1865       FLD (in_src2) = f_r2;
1866     }
1867 #endif
1868 #undef FLD
1869     return idesc;
1870   }
1871
1872  extract_sfmt_sth:
1873   {
1874     const IDESC *idesc = &m32rbf_insn_data[itype];
1875     CGEN_INSN_INT insn = entire_insn;
1876 #define FLD(f) abuf->fields.sfmt_st_plus.f
1877     UINT f_r1;
1878     UINT f_r2;
1879
1880     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1881     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1882
1883   /* Record the fields for the semantic handler.  */
1884   FLD (f_r1) = f_r1;
1885   FLD (f_r2) = f_r2;
1886   FLD (i_src1) = & CPU (h_gr)[f_r1];
1887   FLD (i_src2) = & CPU (h_gr)[f_r2];
1888   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sth", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
1889
1890 #if WITH_PROFILE_MODEL_P
1891   /* Record the fields for profiling.  */
1892   if (PROFILE_MODEL_P (current_cpu))
1893     {
1894       FLD (in_src1) = f_r1;
1895       FLD (in_src2) = f_r2;
1896     }
1897 #endif
1898 #undef FLD
1899     return idesc;
1900   }
1901
1902  extract_sfmt_sth_d:
1903   {
1904     const IDESC *idesc = &m32rbf_insn_data[itype];
1905     CGEN_INSN_INT insn = entire_insn;
1906 #define FLD(f) abuf->fields.sfmt_st_d.f
1907     UINT f_r1;
1908     UINT f_r2;
1909     INT f_simm16;
1910
1911     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1912     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
1913     f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
1914
1915   /* Record the fields for the semantic handler.  */
1916   FLD (f_simm16) = f_simm16;
1917   FLD (f_r1) = f_r1;
1918   FLD (f_r2) = f_r2;
1919   FLD (i_src1) = & CPU (h_gr)[f_r1];
1920   FLD (i_src2) = & CPU (h_gr)[f_r2];
1921   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sth_d", "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
1922
1923 #if WITH_PROFILE_MODEL_P
1924   /* Record the fields for profiling.  */
1925   if (PROFILE_MODEL_P (current_cpu))
1926     {
1927       FLD (in_src1) = f_r1;
1928       FLD (in_src2) = f_r2;
1929     }
1930 #endif
1931 #undef FLD
1932     return idesc;
1933   }
1934
1935  extract_sfmt_st_plus:
1936   {
1937     const IDESC *idesc = &m32rbf_insn_data[itype];
1938     CGEN_INSN_INT insn = entire_insn;
1939 #define FLD(f) abuf->fields.sfmt_st_plus.f
1940     UINT f_r1;
1941     UINT f_r2;
1942
1943     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1944     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1945
1946   /* Record the fields for the semantic handler.  */
1947   FLD (f_r1) = f_r1;
1948   FLD (f_r2) = f_r2;
1949   FLD (i_src1) = & CPU (h_gr)[f_r1];
1950   FLD (i_src2) = & CPU (h_gr)[f_r2];
1951   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_st_plus", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
1952
1953 #if WITH_PROFILE_MODEL_P
1954   /* Record the fields for profiling.  */
1955   if (PROFILE_MODEL_P (current_cpu))
1956     {
1957       FLD (in_src1) = f_r1;
1958       FLD (in_src2) = f_r2;
1959       FLD (out_src2) = f_r2;
1960     }
1961 #endif
1962 #undef FLD
1963     return idesc;
1964   }
1965
1966  extract_sfmt_trap:
1967   {
1968     const IDESC *idesc = &m32rbf_insn_data[itype];
1969     CGEN_INSN_INT insn = entire_insn;
1970 #define FLD(f) abuf->fields.sfmt_trap.f
1971     UINT f_uimm4;
1972
1973     f_uimm4 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1974
1975   /* Record the fields for the semantic handler.  */
1976   FLD (f_uimm4) = f_uimm4;
1977   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_trap", "f_uimm4 0x%x", 'x', f_uimm4, (char *) 0));
1978
1979 #if WITH_PROFILE_MODEL_P
1980   /* Record the fields for profiling.  */
1981   if (PROFILE_MODEL_P (current_cpu))
1982     {
1983     }
1984 #endif
1985 #undef FLD
1986     return idesc;
1987   }
1988
1989  extract_sfmt_unlock:
1990   {
1991     const IDESC *idesc = &m32rbf_insn_data[itype];
1992     CGEN_INSN_INT insn = entire_insn;
1993 #define FLD(f) abuf->fields.sfmt_st_plus.f
1994     UINT f_r1;
1995     UINT f_r2;
1996
1997     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1998     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1999
2000   /* Record the fields for the semantic handler.  */
2001   FLD (f_r1) = f_r1;
2002   FLD (f_r2) = f_r2;
2003   FLD (i_src1) = & CPU (h_gr)[f_r1];
2004   FLD (i_src2) = & CPU (h_gr)[f_r2];
2005   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_unlock", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
2006
2007 #if WITH_PROFILE_MODEL_P
2008   /* Record the fields for profiling.  */
2009   if (PROFILE_MODEL_P (current_cpu))
2010     {
2011       FLD (in_src1) = f_r1;
2012       FLD (in_src2) = f_r2;
2013     }
2014 #endif
2015 #undef FLD
2016     return idesc;
2017   }
2018
2019  extract_sfmt_clrpsw:
2020   {
2021     const IDESC *idesc = &m32rbf_insn_data[itype];
2022     CGEN_INSN_INT insn = entire_insn;
2023 #define FLD(f) abuf->fields.sfmt_clrpsw.f
2024     UINT f_uimm8;
2025
2026     f_uimm8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2027
2028   /* Record the fields for the semantic handler.  */
2029   FLD (f_uimm8) = f_uimm8;
2030   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_clrpsw", "f_uimm8 0x%x", 'x', f_uimm8, (char *) 0));
2031
2032 #undef FLD
2033     return idesc;
2034   }
2035
2036  extract_sfmt_setpsw:
2037   {
2038     const IDESC *idesc = &m32rbf_insn_data[itype];
2039     CGEN_INSN_INT insn = entire_insn;
2040 #define FLD(f) abuf->fields.sfmt_clrpsw.f
2041     UINT f_uimm8;
2042
2043     f_uimm8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2044
2045   /* Record the fields for the semantic handler.  */
2046   FLD (f_uimm8) = f_uimm8;
2047   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_setpsw", "f_uimm8 0x%x", 'x', f_uimm8, (char *) 0));
2048
2049 #undef FLD
2050     return idesc;
2051   }
2052
2053  extract_sfmt_bset:
2054   {
2055     const IDESC *idesc = &m32rbf_insn_data[itype];
2056     CGEN_INSN_INT insn = entire_insn;
2057 #define FLD(f) abuf->fields.sfmt_bset.f
2058     UINT f_uimm3;
2059     UINT f_r2;
2060     INT f_simm16;
2061
2062     f_uimm3 = EXTRACT_MSB0_UINT (insn, 32, 5, 3);
2063     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
2064     f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
2065
2066   /* Record the fields for the semantic handler.  */
2067   FLD (f_simm16) = f_simm16;
2068   FLD (f_r2) = f_r2;
2069   FLD (f_uimm3) = f_uimm3;
2070   FLD (i_sr) = & CPU (h_gr)[f_r2];
2071   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bset", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_uimm3 0x%x", 'x', f_uimm3, "sr 0x%x", 'x', f_r2, (char *) 0));
2072
2073 #if WITH_PROFILE_MODEL_P
2074   /* Record the fields for profiling.  */
2075   if (PROFILE_MODEL_P (current_cpu))
2076     {
2077       FLD (in_sr) = f_r2;
2078     }
2079 #endif
2080 #undef FLD
2081     return idesc;
2082   }
2083
2084  extract_sfmt_btst:
2085   {
2086     const IDESC *idesc = &m32rbf_insn_data[itype];
2087     CGEN_INSN_INT insn = entire_insn;
2088 #define FLD(f) abuf->fields.sfmt_bset.f
2089     UINT f_uimm3;
2090     UINT f_r2;
2091
2092     f_uimm3 = EXTRACT_MSB0_UINT (insn, 16, 5, 3);
2093     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2094
2095   /* Record the fields for the semantic handler.  */
2096   FLD (f_r2) = f_r2;
2097   FLD (f_uimm3) = f_uimm3;
2098   FLD (i_sr) = & CPU (h_gr)[f_r2];
2099   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_btst", "f_r2 0x%x", 'x', f_r2, "f_uimm3 0x%x", 'x', f_uimm3, "sr 0x%x", 'x', f_r2, (char *) 0));
2100
2101 #if WITH_PROFILE_MODEL_P
2102   /* Record the fields for profiling.  */
2103   if (PROFILE_MODEL_P (current_cpu))
2104     {
2105       FLD (in_sr) = f_r2;
2106     }
2107 #endif
2108 #undef FLD
2109     return idesc;
2110   }
2111
2112 }