1 /* Simulator instruction decoder for m32rbf.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
7 This file is part of the GNU Simulators.
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)
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.
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.
25 #define WANT_CPU m32rbf
26 #define WANT_CPU_M32RBF
29 #include "sim-assert.h"
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 m32rbf_insn_data[M32RBF_INSN_MAX];
38 /* Commas between elements are contained in the macros.
39 Some of these are conditionally compiled out. */
41 static const struct insn_sem m32rbf_insn_sem[] =
43 { VIRTUAL_INSN_X_INVALID, M32RBF_INSN_X_INVALID, M32RBF_SFMT_EMPTY },
44 { VIRTUAL_INSN_X_AFTER, M32RBF_INSN_X_AFTER, M32RBF_SFMT_EMPTY },
45 { VIRTUAL_INSN_X_BEFORE, M32RBF_INSN_X_BEFORE, M32RBF_SFMT_EMPTY },
46 { VIRTUAL_INSN_X_CTI_CHAIN, M32RBF_INSN_X_CTI_CHAIN, M32RBF_SFMT_EMPTY },
47 { VIRTUAL_INSN_X_CHAIN, M32RBF_INSN_X_CHAIN, M32RBF_SFMT_EMPTY },
48 { VIRTUAL_INSN_X_BEGIN, M32RBF_INSN_X_BEGIN, M32RBF_SFMT_EMPTY },
49 { M32R_INSN_ADD, M32RBF_INSN_ADD, M32RBF_SFMT_ADD },
50 { M32R_INSN_ADD3, M32RBF_INSN_ADD3, M32RBF_SFMT_ADD3 },
51 { M32R_INSN_AND, M32RBF_INSN_AND, M32RBF_SFMT_ADD },
52 { M32R_INSN_AND3, M32RBF_INSN_AND3, M32RBF_SFMT_AND3 },
53 { M32R_INSN_OR, M32RBF_INSN_OR, M32RBF_SFMT_ADD },
54 { M32R_INSN_OR3, M32RBF_INSN_OR3, M32RBF_SFMT_OR3 },
55 { M32R_INSN_XOR, M32RBF_INSN_XOR, M32RBF_SFMT_ADD },
56 { M32R_INSN_XOR3, M32RBF_INSN_XOR3, M32RBF_SFMT_AND3 },
57 { M32R_INSN_ADDI, M32RBF_INSN_ADDI, M32RBF_SFMT_ADDI },
58 { M32R_INSN_ADDV, M32RBF_INSN_ADDV, M32RBF_SFMT_ADDV },
59 { M32R_INSN_ADDV3, M32RBF_INSN_ADDV3, M32RBF_SFMT_ADDV3 },
60 { M32R_INSN_ADDX, M32RBF_INSN_ADDX, M32RBF_SFMT_ADDX },
61 { M32R_INSN_BC8, M32RBF_INSN_BC8, M32RBF_SFMT_BC8 },
62 { M32R_INSN_BC24, M32RBF_INSN_BC24, M32RBF_SFMT_BC24 },
63 { M32R_INSN_BEQ, M32RBF_INSN_BEQ, M32RBF_SFMT_BEQ },
64 { M32R_INSN_BEQZ, M32RBF_INSN_BEQZ, M32RBF_SFMT_BEQZ },
65 { M32R_INSN_BGEZ, M32RBF_INSN_BGEZ, M32RBF_SFMT_BEQZ },
66 { M32R_INSN_BGTZ, M32RBF_INSN_BGTZ, M32RBF_SFMT_BEQZ },
67 { M32R_INSN_BLEZ, M32RBF_INSN_BLEZ, M32RBF_SFMT_BEQZ },
68 { M32R_INSN_BLTZ, M32RBF_INSN_BLTZ, M32RBF_SFMT_BEQZ },
69 { M32R_INSN_BNEZ, M32RBF_INSN_BNEZ, M32RBF_SFMT_BEQZ },
70 { M32R_INSN_BL8, M32RBF_INSN_BL8, M32RBF_SFMT_BL8 },
71 { M32R_INSN_BL24, M32RBF_INSN_BL24, M32RBF_SFMT_BL24 },
72 { M32R_INSN_BNC8, M32RBF_INSN_BNC8, M32RBF_SFMT_BC8 },
73 { M32R_INSN_BNC24, M32RBF_INSN_BNC24, M32RBF_SFMT_BC24 },
74 { M32R_INSN_BNE, M32RBF_INSN_BNE, M32RBF_SFMT_BEQ },
75 { M32R_INSN_BRA8, M32RBF_INSN_BRA8, M32RBF_SFMT_BRA8 },
76 { M32R_INSN_BRA24, M32RBF_INSN_BRA24, M32RBF_SFMT_BRA24 },
77 { M32R_INSN_CMP, M32RBF_INSN_CMP, M32RBF_SFMT_CMP },
78 { M32R_INSN_CMPI, M32RBF_INSN_CMPI, M32RBF_SFMT_CMPI },
79 { M32R_INSN_CMPU, M32RBF_INSN_CMPU, M32RBF_SFMT_CMP },
80 { M32R_INSN_CMPUI, M32RBF_INSN_CMPUI, M32RBF_SFMT_CMPI },
81 { M32R_INSN_DIV, M32RBF_INSN_DIV, M32RBF_SFMT_DIV },
82 { M32R_INSN_DIVU, M32RBF_INSN_DIVU, M32RBF_SFMT_DIV },
83 { M32R_INSN_REM, M32RBF_INSN_REM, M32RBF_SFMT_DIV },
84 { M32R_INSN_REMU, M32RBF_INSN_REMU, M32RBF_SFMT_DIV },
85 { M32R_INSN_JL, M32RBF_INSN_JL, M32RBF_SFMT_JL },
86 { M32R_INSN_JMP, M32RBF_INSN_JMP, M32RBF_SFMT_JMP },
87 { M32R_INSN_LD, M32RBF_INSN_LD, M32RBF_SFMT_LD },
88 { M32R_INSN_LD_D, M32RBF_INSN_LD_D, M32RBF_SFMT_LD_D },
89 { M32R_INSN_LDB, M32RBF_INSN_LDB, M32RBF_SFMT_LD },
90 { M32R_INSN_LDB_D, M32RBF_INSN_LDB_D, M32RBF_SFMT_LD_D },
91 { M32R_INSN_LDH, M32RBF_INSN_LDH, M32RBF_SFMT_LD },
92 { M32R_INSN_LDH_D, M32RBF_INSN_LDH_D, M32RBF_SFMT_LD_D },
93 { M32R_INSN_LDUB, M32RBF_INSN_LDUB, M32RBF_SFMT_LD },
94 { M32R_INSN_LDUB_D, M32RBF_INSN_LDUB_D, M32RBF_SFMT_LD_D },
95 { M32R_INSN_LDUH, M32RBF_INSN_LDUH, M32RBF_SFMT_LD },
96 { M32R_INSN_LDUH_D, M32RBF_INSN_LDUH_D, M32RBF_SFMT_LD_D },
97 { M32R_INSN_LD_PLUS, M32RBF_INSN_LD_PLUS, M32RBF_SFMT_LD_PLUS },
98 { M32R_INSN_LD24, M32RBF_INSN_LD24, M32RBF_SFMT_LD24 },
99 { M32R_INSN_LDI8, M32RBF_INSN_LDI8, M32RBF_SFMT_LDI8 },
100 { M32R_INSN_LDI16, M32RBF_INSN_LDI16, M32RBF_SFMT_LDI16 },
101 { M32R_INSN_LOCK, M32RBF_INSN_LOCK, M32RBF_SFMT_LOCK },
102 { M32R_INSN_MACHI, M32RBF_INSN_MACHI, M32RBF_SFMT_MACHI },
103 { M32R_INSN_MACLO, M32RBF_INSN_MACLO, M32RBF_SFMT_MACHI },
104 { M32R_INSN_MACWHI, M32RBF_INSN_MACWHI, M32RBF_SFMT_MACHI },
105 { M32R_INSN_MACWLO, M32RBF_INSN_MACWLO, M32RBF_SFMT_MACHI },
106 { M32R_INSN_MUL, M32RBF_INSN_MUL, M32RBF_SFMT_ADD },
107 { M32R_INSN_MULHI, M32RBF_INSN_MULHI, M32RBF_SFMT_MULHI },
108 { M32R_INSN_MULLO, M32RBF_INSN_MULLO, M32RBF_SFMT_MULHI },
109 { M32R_INSN_MULWHI, M32RBF_INSN_MULWHI, M32RBF_SFMT_MULHI },
110 { M32R_INSN_MULWLO, M32RBF_INSN_MULWLO, M32RBF_SFMT_MULHI },
111 { M32R_INSN_MV, M32RBF_INSN_MV, M32RBF_SFMT_MV },
112 { M32R_INSN_MVFACHI, M32RBF_INSN_MVFACHI, M32RBF_SFMT_MVFACHI },
113 { M32R_INSN_MVFACLO, M32RBF_INSN_MVFACLO, M32RBF_SFMT_MVFACHI },
114 { M32R_INSN_MVFACMI, M32RBF_INSN_MVFACMI, M32RBF_SFMT_MVFACHI },
115 { M32R_INSN_MVFC, M32RBF_INSN_MVFC, M32RBF_SFMT_MVFC },
116 { M32R_INSN_MVTACHI, M32RBF_INSN_MVTACHI, M32RBF_SFMT_MVTACHI },
117 { M32R_INSN_MVTACLO, M32RBF_INSN_MVTACLO, M32RBF_SFMT_MVTACHI },
118 { M32R_INSN_MVTC, M32RBF_INSN_MVTC, M32RBF_SFMT_MVTC },
119 { M32R_INSN_NEG, M32RBF_INSN_NEG, M32RBF_SFMT_MV },
120 { M32R_INSN_NOP, M32RBF_INSN_NOP, M32RBF_SFMT_NOP },
121 { M32R_INSN_NOT, M32RBF_INSN_NOT, M32RBF_SFMT_MV },
122 { M32R_INSN_RAC, M32RBF_INSN_RAC, M32RBF_SFMT_RAC },
123 { M32R_INSN_RACH, M32RBF_INSN_RACH, M32RBF_SFMT_RAC },
124 { M32R_INSN_RTE, M32RBF_INSN_RTE, M32RBF_SFMT_RTE },
125 { M32R_INSN_SETH, M32RBF_INSN_SETH, M32RBF_SFMT_SETH },
126 { M32R_INSN_SLL, M32RBF_INSN_SLL, M32RBF_SFMT_ADD },
127 { M32R_INSN_SLL3, M32RBF_INSN_SLL3, M32RBF_SFMT_SLL3 },
128 { M32R_INSN_SLLI, M32RBF_INSN_SLLI, M32RBF_SFMT_SLLI },
129 { M32R_INSN_SRA, M32RBF_INSN_SRA, M32RBF_SFMT_ADD },
130 { M32R_INSN_SRA3, M32RBF_INSN_SRA3, M32RBF_SFMT_SLL3 },
131 { M32R_INSN_SRAI, M32RBF_INSN_SRAI, M32RBF_SFMT_SLLI },
132 { M32R_INSN_SRL, M32RBF_INSN_SRL, M32RBF_SFMT_ADD },
133 { M32R_INSN_SRL3, M32RBF_INSN_SRL3, M32RBF_SFMT_SLL3 },
134 { M32R_INSN_SRLI, M32RBF_INSN_SRLI, M32RBF_SFMT_SLLI },
135 { M32R_INSN_ST, M32RBF_INSN_ST, M32RBF_SFMT_ST },
136 { M32R_INSN_ST_D, M32RBF_INSN_ST_D, M32RBF_SFMT_ST_D },
137 { M32R_INSN_STB, M32RBF_INSN_STB, M32RBF_SFMT_STB },
138 { M32R_INSN_STB_D, M32RBF_INSN_STB_D, M32RBF_SFMT_STB_D },
139 { M32R_INSN_STH, M32RBF_INSN_STH, M32RBF_SFMT_STH },
140 { M32R_INSN_STH_D, M32RBF_INSN_STH_D, M32RBF_SFMT_STH_D },
141 { M32R_INSN_ST_PLUS, M32RBF_INSN_ST_PLUS, M32RBF_SFMT_ST_PLUS },
142 { M32R_INSN_ST_MINUS, M32RBF_INSN_ST_MINUS, M32RBF_SFMT_ST_PLUS },
143 { M32R_INSN_SUB, M32RBF_INSN_SUB, M32RBF_SFMT_ADD },
144 { M32R_INSN_SUBV, M32RBF_INSN_SUBV, M32RBF_SFMT_ADDV },
145 { M32R_INSN_SUBX, M32RBF_INSN_SUBX, M32RBF_SFMT_ADDX },
146 { M32R_INSN_TRAP, M32RBF_INSN_TRAP, M32RBF_SFMT_TRAP },
147 { M32R_INSN_UNLOCK, M32RBF_INSN_UNLOCK, M32RBF_SFMT_UNLOCK },
150 static const struct insn_sem m32rbf_insn_sem_invalid = {
151 VIRTUAL_INSN_X_INVALID, M32RBF_INSN_X_INVALID, M32RBF_SFMT_EMPTY
154 /* Initialize an IDESC from the compile-time computable parts. */
157 init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t)
159 const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries;
163 if ((int) t->type <= 0)
164 id->idata = & cgen_virtual_insn_table[- (int) t->type];
166 id->idata = & insn_table[t->type];
167 id->attrs = CGEN_INSN_ATTRS (id->idata);
168 /* Oh my god, a magic number. */
169 id->length = CGEN_INSN_BITSIZE (id->idata) / 8;
171 #if WITH_PROFILE_MODEL_P
172 id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index];
174 SIM_DESC sd = CPU_STATE (cpu);
175 SIM_ASSERT (t->index == id->timing->num);
179 /* Semantic pointers are initialized elsewhere. */
182 /* Initialize the instruction descriptor table. */
185 m32rbf_init_idesc_table (SIM_CPU *cpu)
188 const struct insn_sem *t,*tend;
189 int tabsize = M32RBF_INSN_MAX;
190 IDESC *table = m32rbf_insn_data;
192 memset (table, 0, tabsize * sizeof (IDESC));
194 /* First set all entries to the `invalid insn'. */
195 t = & m32rbf_insn_sem_invalid;
196 for (id = table, tabend = table + tabsize; id < tabend; ++id)
197 init_idesc (cpu, id, t);
199 /* Now fill in the values for the chosen cpu. */
200 for (t = m32rbf_insn_sem, tend = t + sizeof (m32rbf_insn_sem) / sizeof (*t);
203 init_idesc (cpu, & table[t->index], t);
206 /* Link the IDESC table into the cpu. */
207 CPU_IDESC (cpu) = table;
210 /* Given an instruction, return a pointer to its IDESC entry. */
213 m32rbf_decode (SIM_CPU *current_cpu, IADDR pc,
214 CGEN_INSN_INT base_insn, CGEN_INSN_INT entire_insn,
217 /* Result of decoder. */
218 M32RBF_INSN_TYPE itype;
221 CGEN_INSN_INT insn = base_insn;
224 unsigned int val = (((insn >> 8) & (15 << 4)) | ((insn >> 4) & (15 << 0)));
227 case 0 : itype = M32RBF_INSN_SUBV; goto extract_sfmt_addv; case 1 : itype = M32RBF_INSN_SUBX; goto extract_sfmt_addx; case 2 : itype = M32RBF_INSN_SUB; goto extract_sfmt_add; case 3 : itype = M32RBF_INSN_NEG; goto extract_sfmt_mv; case 4 : itype = M32RBF_INSN_CMP; goto extract_sfmt_cmp; case 5 : itype = M32RBF_INSN_CMPU; goto extract_sfmt_cmp; case 8 : itype = M32RBF_INSN_ADDV; goto extract_sfmt_addv; case 9 : itype = M32RBF_INSN_ADDX; goto extract_sfmt_addx; case 10 : itype = M32RBF_INSN_ADD; goto extract_sfmt_add; case 11 : itype = M32RBF_INSN_NOT; goto extract_sfmt_mv; case 12 : itype = M32RBF_INSN_AND; goto extract_sfmt_add; case 13 : itype = M32RBF_INSN_XOR; goto extract_sfmt_add; case 14 : itype = M32RBF_INSN_OR; goto extract_sfmt_add; case 16 : itype = M32RBF_INSN_SRL; goto extract_sfmt_add; case 18 : itype = M32RBF_INSN_SRA; goto extract_sfmt_add; case 20 : itype = M32RBF_INSN_SLL; goto extract_sfmt_add; case 22 : itype = M32RBF_INSN_MUL; goto extract_sfmt_add; case 24 : itype = M32RBF_INSN_MV; goto extract_sfmt_mv; case 25 : itype = M32RBF_INSN_MVFC; goto extract_sfmt_mvfc; case 26 : itype = M32RBF_INSN_MVTC; goto extract_sfmt_mvtc; case 28 :
229 unsigned int val = (((insn >> 8) & (1 << 0)));
232 case 0 : itype = M32RBF_INSN_JL; goto extract_sfmt_jl; case 1 : itype = M32RBF_INSN_JMP; goto extract_sfmt_jmp; default : itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
235 case 29 : itype = M32RBF_INSN_RTE; goto extract_sfmt_rte; case 31 : itype = M32RBF_INSN_TRAP; goto extract_sfmt_trap; case 32 : itype = M32RBF_INSN_STB; goto extract_sfmt_stb; case 34 : itype = M32RBF_INSN_STH; goto extract_sfmt_sth; case 36 : itype = M32RBF_INSN_ST; goto extract_sfmt_st; case 37 : itype = M32RBF_INSN_UNLOCK; goto extract_sfmt_unlock; case 38 : itype = M32RBF_INSN_ST_PLUS; goto extract_sfmt_st_plus; case 39 : itype = M32RBF_INSN_ST_MINUS; goto extract_sfmt_st_plus; case 40 : itype = M32RBF_INSN_LDB; goto extract_sfmt_ld; case 41 : itype = M32RBF_INSN_LDUB; goto extract_sfmt_ld; case 42 : itype = M32RBF_INSN_LDH; goto extract_sfmt_ld; case 43 : itype = M32RBF_INSN_LDUH; goto extract_sfmt_ld; case 44 : itype = M32RBF_INSN_LD; goto extract_sfmt_ld; case 45 : itype = M32RBF_INSN_LOCK; goto extract_sfmt_lock; case 46 : itype = M32RBF_INSN_LD_PLUS; goto extract_sfmt_ld_plus; case 48 : itype = M32RBF_INSN_MULHI; goto extract_sfmt_mulhi; case 49 : itype = M32RBF_INSN_MULLO; goto extract_sfmt_mulhi; case 50 : itype = M32RBF_INSN_MULWHI; goto extract_sfmt_mulhi; case 51 : itype = M32RBF_INSN_MULWLO; goto extract_sfmt_mulhi; case 52 : itype = M32RBF_INSN_MACHI; goto extract_sfmt_machi; case 53 : itype = M32RBF_INSN_MACLO; goto extract_sfmt_machi; case 54 : itype = M32RBF_INSN_MACWHI; goto extract_sfmt_machi; case 55 : itype = M32RBF_INSN_MACWLO; goto extract_sfmt_machi; case 64 : /* fall through */
236 case 65 : /* fall through */
237 case 66 : /* fall through */
238 case 67 : /* fall through */
239 case 68 : /* fall through */
240 case 69 : /* fall through */
241 case 70 : /* fall through */
242 case 71 : /* fall through */
243 case 72 : /* fall through */
244 case 73 : /* fall through */
245 case 74 : /* fall through */
246 case 75 : /* fall through */
247 case 76 : /* fall through */
248 case 77 : /* fall through */
249 case 78 : /* fall through */
250 case 79 : itype = M32RBF_INSN_ADDI; goto extract_sfmt_addi; case 80 : /* fall through */
251 case 81 : itype = M32RBF_INSN_SRLI; goto extract_sfmt_slli; case 82 : /* fall through */
252 case 83 : itype = M32RBF_INSN_SRAI; goto extract_sfmt_slli; case 84 : /* fall through */
253 case 85 : itype = M32RBF_INSN_SLLI; goto extract_sfmt_slli; case 87 :
255 unsigned int val = (((insn >> 0) & (1 << 0)));
258 case 0 : itype = M32RBF_INSN_MVTACHI; goto extract_sfmt_mvtachi; case 1 : itype = M32RBF_INSN_MVTACLO; goto extract_sfmt_mvtachi; default : itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
261 case 88 : itype = M32RBF_INSN_RACH; goto extract_sfmt_rac; case 89 : itype = M32RBF_INSN_RAC; goto extract_sfmt_rac; case 95 :
263 unsigned int val = (((insn >> 0) & (3 << 0)));
266 case 0 : itype = M32RBF_INSN_MVFACHI; goto extract_sfmt_mvfachi; case 1 : itype = M32RBF_INSN_MVFACLO; goto extract_sfmt_mvfachi; case 2 : itype = M32RBF_INSN_MVFACMI; goto extract_sfmt_mvfachi; default : itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
269 case 96 : /* fall through */
270 case 97 : /* fall through */
271 case 98 : /* fall through */
272 case 99 : /* fall through */
273 case 100 : /* fall through */
274 case 101 : /* fall through */
275 case 102 : /* fall through */
276 case 103 : /* fall through */
277 case 104 : /* fall through */
278 case 105 : /* fall through */
279 case 106 : /* fall through */
280 case 107 : /* fall through */
281 case 108 : /* fall through */
282 case 109 : /* fall through */
283 case 110 : /* fall through */
284 case 111 : itype = M32RBF_INSN_LDI8; goto extract_sfmt_ldi8; case 112 :
286 unsigned int val = (((insn >> 8) & (15 << 0)));
289 case 0 : itype = M32RBF_INSN_NOP; goto extract_sfmt_nop; case 12 : itype = M32RBF_INSN_BC8; goto extract_sfmt_bc8; case 13 : itype = M32RBF_INSN_BNC8; goto extract_sfmt_bc8; case 14 : itype = M32RBF_INSN_BL8; goto extract_sfmt_bl8; case 15 : itype = M32RBF_INSN_BRA8; goto extract_sfmt_bra8; default : itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
292 case 113 : /* fall through */
293 case 114 : /* fall through */
294 case 115 : /* fall through */
295 case 116 : /* fall through */
296 case 117 : /* fall through */
297 case 118 : /* fall through */
298 case 119 : /* fall through */
299 case 120 : /* fall through */
300 case 121 : /* fall through */
301 case 122 : /* fall through */
302 case 123 : /* fall through */
303 case 124 : /* fall through */
304 case 125 : /* fall through */
305 case 126 : /* fall through */
308 unsigned int val = (((insn >> 8) & (3 << 0)));
311 case 0 : itype = M32RBF_INSN_BC8; goto extract_sfmt_bc8; case 1 : itype = M32RBF_INSN_BNC8; goto extract_sfmt_bc8; case 2 : itype = M32RBF_INSN_BL8; goto extract_sfmt_bl8; case 3 : itype = M32RBF_INSN_BRA8; goto extract_sfmt_bra8; default : itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
314 case 132 : itype = M32RBF_INSN_CMPI; goto extract_sfmt_cmpi; case 133 : itype = M32RBF_INSN_CMPUI; goto extract_sfmt_cmpi; case 136 : itype = M32RBF_INSN_ADDV3; goto extract_sfmt_addv3; case 138 : itype = M32RBF_INSN_ADD3; goto extract_sfmt_add3; case 140 : itype = M32RBF_INSN_AND3; goto extract_sfmt_and3; case 141 : itype = M32RBF_INSN_XOR3; goto extract_sfmt_and3; case 142 : itype = M32RBF_INSN_OR3; goto extract_sfmt_or3; case 144 : itype = M32RBF_INSN_DIV; goto extract_sfmt_div; case 145 : itype = M32RBF_INSN_DIVU; goto extract_sfmt_div; case 146 : itype = M32RBF_INSN_REM; goto extract_sfmt_div; case 147 : itype = M32RBF_INSN_REMU; goto extract_sfmt_div; case 152 : itype = M32RBF_INSN_SRL3; goto extract_sfmt_sll3; case 154 : itype = M32RBF_INSN_SRA3; goto extract_sfmt_sll3; case 156 : itype = M32RBF_INSN_SLL3; goto extract_sfmt_sll3; case 159 : itype = M32RBF_INSN_LDI16; goto extract_sfmt_ldi16; case 160 : itype = M32RBF_INSN_STB_D; goto extract_sfmt_stb_d; case 162 : itype = M32RBF_INSN_STH_D; goto extract_sfmt_sth_d; case 164 : itype = M32RBF_INSN_ST_D; goto extract_sfmt_st_d; case 168 : itype = M32RBF_INSN_LDB_D; goto extract_sfmt_ld_d; case 169 : itype = M32RBF_INSN_LDUB_D; goto extract_sfmt_ld_d; case 170 : itype = M32RBF_INSN_LDH_D; goto extract_sfmt_ld_d; case 171 : itype = M32RBF_INSN_LDUH_D; goto extract_sfmt_ld_d; case 172 : itype = M32RBF_INSN_LD_D; goto extract_sfmt_ld_d; case 176 : itype = M32RBF_INSN_BEQ; goto extract_sfmt_beq; case 177 : itype = M32RBF_INSN_BNE; goto extract_sfmt_beq; case 184 : itype = M32RBF_INSN_BEQZ; goto extract_sfmt_beqz; case 185 : itype = M32RBF_INSN_BNEZ; goto extract_sfmt_beqz; case 186 : itype = M32RBF_INSN_BLTZ; goto extract_sfmt_beqz; case 187 : itype = M32RBF_INSN_BGEZ; goto extract_sfmt_beqz; case 188 : itype = M32RBF_INSN_BLEZ; goto extract_sfmt_beqz; case 189 : itype = M32RBF_INSN_BGTZ; goto extract_sfmt_beqz; case 220 : itype = M32RBF_INSN_SETH; goto extract_sfmt_seth; case 224 : /* fall through */
315 case 225 : /* fall through */
316 case 226 : /* fall through */
317 case 227 : /* fall through */
318 case 228 : /* fall through */
319 case 229 : /* fall through */
320 case 230 : /* fall through */
321 case 231 : /* fall through */
322 case 232 : /* fall through */
323 case 233 : /* fall through */
324 case 234 : /* fall through */
325 case 235 : /* fall through */
326 case 236 : /* fall through */
327 case 237 : /* fall through */
328 case 238 : /* fall through */
329 case 239 : itype = M32RBF_INSN_LD24; goto extract_sfmt_ld24; case 240 : /* fall through */
330 case 241 : /* fall through */
331 case 242 : /* fall through */
332 case 243 : /* fall through */
333 case 244 : /* fall through */
334 case 245 : /* fall through */
335 case 246 : /* fall through */
336 case 247 : /* fall through */
337 case 248 : /* fall through */
338 case 249 : /* fall through */
339 case 250 : /* fall through */
340 case 251 : /* fall through */
341 case 252 : /* fall through */
342 case 253 : /* fall through */
343 case 254 : /* fall through */
346 unsigned int val = (((insn >> 8) & (3 << 0)));
349 case 0 : itype = M32RBF_INSN_BC24; goto extract_sfmt_bc24; case 1 : itype = M32RBF_INSN_BNC24; goto extract_sfmt_bc24; case 2 : itype = M32RBF_INSN_BL24; goto extract_sfmt_bl24; case 3 : itype = M32RBF_INSN_BRA24; goto extract_sfmt_bra24; default : itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
352 default : itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
357 /* The instruction has been decoded, now extract the fields. */
361 const IDESC *idesc = &m32rbf_insn_data[itype];
362 #define FLD(f) abuf->fields.fmt_empty.f
365 /* Record the fields for the semantic handler. */
366 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0));
374 const IDESC *idesc = &m32rbf_insn_data[itype];
375 CGEN_INSN_INT insn = entire_insn;
376 #define FLD(f) abuf->fields.sfmt_add.f
380 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
381 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
383 /* Record the fields for the semantic handler. */
386 FLD (i_dr) = & CPU (h_gr)[f_r1];
387 FLD (i_sr) = & CPU (h_gr)[f_r2];
388 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));
390 #if WITH_PROFILE_MODEL_P
391 /* Record the fields for profiling. */
392 if (PROFILE_MODEL_P (current_cpu))
405 const IDESC *idesc = &m32rbf_insn_data[itype];
406 CGEN_INSN_INT insn = entire_insn;
407 #define FLD(f) abuf->fields.sfmt_add3.f
412 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
413 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
414 f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
416 /* Record the fields for the semantic handler. */
417 FLD (f_simm16) = f_simm16;
420 FLD (i_sr) = & CPU (h_gr)[f_r2];
421 FLD (i_dr) = & CPU (h_gr)[f_r1];
422 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));
424 #if WITH_PROFILE_MODEL_P
425 /* Record the fields for profiling. */
426 if (PROFILE_MODEL_P (current_cpu))
438 const IDESC *idesc = &m32rbf_insn_data[itype];
439 CGEN_INSN_INT insn = entire_insn;
440 #define FLD(f) abuf->fields.sfmt_and3.f
445 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
446 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
447 f_uimm16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
449 /* Record the fields for the semantic handler. */
451 FLD (f_uimm16) = f_uimm16;
453 FLD (i_sr) = & CPU (h_gr)[f_r2];
454 FLD (i_dr) = & CPU (h_gr)[f_r1];
455 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));
457 #if WITH_PROFILE_MODEL_P
458 /* Record the fields for profiling. */
459 if (PROFILE_MODEL_P (current_cpu))
471 const IDESC *idesc = &m32rbf_insn_data[itype];
472 CGEN_INSN_INT insn = entire_insn;
473 #define FLD(f) abuf->fields.sfmt_and3.f
478 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
479 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
480 f_uimm16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
482 /* Record the fields for the semantic handler. */
484 FLD (f_uimm16) = f_uimm16;
486 FLD (i_sr) = & CPU (h_gr)[f_r2];
487 FLD (i_dr) = & CPU (h_gr)[f_r1];
488 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));
490 #if WITH_PROFILE_MODEL_P
491 /* Record the fields for profiling. */
492 if (PROFILE_MODEL_P (current_cpu))
504 const IDESC *idesc = &m32rbf_insn_data[itype];
505 CGEN_INSN_INT insn = entire_insn;
506 #define FLD(f) abuf->fields.sfmt_addi.f
510 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
511 f_simm8 = EXTRACT_MSB0_INT (insn, 16, 8, 8);
513 /* Record the fields for the semantic handler. */
515 FLD (f_simm8) = f_simm8;
516 FLD (i_dr) = & CPU (h_gr)[f_r1];
517 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));
519 #if WITH_PROFILE_MODEL_P
520 /* Record the fields for profiling. */
521 if (PROFILE_MODEL_P (current_cpu))
533 const IDESC *idesc = &m32rbf_insn_data[itype];
534 CGEN_INSN_INT insn = entire_insn;
535 #define FLD(f) abuf->fields.sfmt_add.f
539 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
540 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
542 /* Record the fields for the semantic handler. */
545 FLD (i_dr) = & CPU (h_gr)[f_r1];
546 FLD (i_sr) = & CPU (h_gr)[f_r2];
547 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));
549 #if WITH_PROFILE_MODEL_P
550 /* Record the fields for profiling. */
551 if (PROFILE_MODEL_P (current_cpu))
564 const IDESC *idesc = &m32rbf_insn_data[itype];
565 CGEN_INSN_INT insn = entire_insn;
566 #define FLD(f) abuf->fields.sfmt_add3.f
571 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
572 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
573 f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
575 /* Record the fields for the semantic handler. */
576 FLD (f_simm16) = f_simm16;
579 FLD (i_sr) = & CPU (h_gr)[f_r2];
580 FLD (i_dr) = & CPU (h_gr)[f_r1];
581 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));
583 #if WITH_PROFILE_MODEL_P
584 /* Record the fields for profiling. */
585 if (PROFILE_MODEL_P (current_cpu))
597 const IDESC *idesc = &m32rbf_insn_data[itype];
598 CGEN_INSN_INT insn = entire_insn;
599 #define FLD(f) abuf->fields.sfmt_add.f
603 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
604 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
606 /* Record the fields for the semantic handler. */
609 FLD (i_dr) = & CPU (h_gr)[f_r1];
610 FLD (i_sr) = & CPU (h_gr)[f_r2];
611 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));
613 #if WITH_PROFILE_MODEL_P
614 /* Record the fields for profiling. */
615 if (PROFILE_MODEL_P (current_cpu))
628 const IDESC *idesc = &m32rbf_insn_data[itype];
629 CGEN_INSN_INT insn = entire_insn;
630 #define FLD(f) abuf->fields.sfmt_bl8.f
633 f_disp8 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (2))) + (((pc) & (-4))));
635 /* Record the fields for the semantic handler. */
636 FLD (i_disp8) = f_disp8;
637 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bc8", "disp8 0x%x", 'x', f_disp8, (char *) 0));
639 #if WITH_PROFILE_MODEL_P
640 /* Record the fields for profiling. */
641 if (PROFILE_MODEL_P (current_cpu))
651 const IDESC *idesc = &m32rbf_insn_data[itype];
652 CGEN_INSN_INT insn = entire_insn;
653 #define FLD(f) abuf->fields.sfmt_bl24.f
656 f_disp24 = ((((EXTRACT_MSB0_INT (insn, 32, 8, 24)) << (2))) + (pc));
658 /* Record the fields for the semantic handler. */
659 FLD (i_disp24) = f_disp24;
660 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bc24", "disp24 0x%x", 'x', f_disp24, (char *) 0));
662 #if WITH_PROFILE_MODEL_P
663 /* Record the fields for profiling. */
664 if (PROFILE_MODEL_P (current_cpu))
674 const IDESC *idesc = &m32rbf_insn_data[itype];
675 CGEN_INSN_INT insn = entire_insn;
676 #define FLD(f) abuf->fields.sfmt_beq.f
681 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
682 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
683 f_disp16 = ((((EXTRACT_MSB0_INT (insn, 32, 16, 16)) << (2))) + (pc));
685 /* Record the fields for the semantic handler. */
688 FLD (i_disp16) = f_disp16;
689 FLD (i_src1) = & CPU (h_gr)[f_r1];
690 FLD (i_src2) = & CPU (h_gr)[f_r2];
691 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));
693 #if WITH_PROFILE_MODEL_P
694 /* Record the fields for profiling. */
695 if (PROFILE_MODEL_P (current_cpu))
697 FLD (in_src1) = f_r1;
698 FLD (in_src2) = f_r2;
707 const IDESC *idesc = &m32rbf_insn_data[itype];
708 CGEN_INSN_INT insn = entire_insn;
709 #define FLD(f) abuf->fields.sfmt_beq.f
713 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
714 f_disp16 = ((((EXTRACT_MSB0_INT (insn, 32, 16, 16)) << (2))) + (pc));
716 /* Record the fields for the semantic handler. */
718 FLD (i_disp16) = f_disp16;
719 FLD (i_src2) = & CPU (h_gr)[f_r2];
720 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));
722 #if WITH_PROFILE_MODEL_P
723 /* Record the fields for profiling. */
724 if (PROFILE_MODEL_P (current_cpu))
726 FLD (in_src2) = f_r2;
735 const IDESC *idesc = &m32rbf_insn_data[itype];
736 CGEN_INSN_INT insn = entire_insn;
737 #define FLD(f) abuf->fields.sfmt_bl8.f
740 f_disp8 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (2))) + (((pc) & (-4))));
742 /* Record the fields for the semantic handler. */
743 FLD (i_disp8) = f_disp8;
744 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bl8", "disp8 0x%x", 'x', f_disp8, (char *) 0));
746 #if WITH_PROFILE_MODEL_P
747 /* Record the fields for profiling. */
748 if (PROFILE_MODEL_P (current_cpu))
750 FLD (out_h_gr_14) = 14;
759 const IDESC *idesc = &m32rbf_insn_data[itype];
760 CGEN_INSN_INT insn = entire_insn;
761 #define FLD(f) abuf->fields.sfmt_bl24.f
764 f_disp24 = ((((EXTRACT_MSB0_INT (insn, 32, 8, 24)) << (2))) + (pc));
766 /* Record the fields for the semantic handler. */
767 FLD (i_disp24) = f_disp24;
768 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bl24", "disp24 0x%x", 'x', f_disp24, (char *) 0));
770 #if WITH_PROFILE_MODEL_P
771 /* Record the fields for profiling. */
772 if (PROFILE_MODEL_P (current_cpu))
774 FLD (out_h_gr_14) = 14;
783 const IDESC *idesc = &m32rbf_insn_data[itype];
784 CGEN_INSN_INT insn = entire_insn;
785 #define FLD(f) abuf->fields.sfmt_bl8.f
788 f_disp8 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (2))) + (((pc) & (-4))));
790 /* Record the fields for the semantic handler. */
791 FLD (i_disp8) = f_disp8;
792 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bra8", "disp8 0x%x", 'x', f_disp8, (char *) 0));
794 #if WITH_PROFILE_MODEL_P
795 /* Record the fields for profiling. */
796 if (PROFILE_MODEL_P (current_cpu))
806 const IDESC *idesc = &m32rbf_insn_data[itype];
807 CGEN_INSN_INT insn = entire_insn;
808 #define FLD(f) abuf->fields.sfmt_bl24.f
811 f_disp24 = ((((EXTRACT_MSB0_INT (insn, 32, 8, 24)) << (2))) + (pc));
813 /* Record the fields for the semantic handler. */
814 FLD (i_disp24) = f_disp24;
815 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bra24", "disp24 0x%x", 'x', f_disp24, (char *) 0));
817 #if WITH_PROFILE_MODEL_P
818 /* Record the fields for profiling. */
819 if (PROFILE_MODEL_P (current_cpu))
829 const IDESC *idesc = &m32rbf_insn_data[itype];
830 CGEN_INSN_INT insn = entire_insn;
831 #define FLD(f) abuf->fields.sfmt_st_plus.f
835 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
836 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
838 /* Record the fields for the semantic handler. */
841 FLD (i_src1) = & CPU (h_gr)[f_r1];
842 FLD (i_src2) = & CPU (h_gr)[f_r2];
843 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));
845 #if WITH_PROFILE_MODEL_P
846 /* Record the fields for profiling. */
847 if (PROFILE_MODEL_P (current_cpu))
849 FLD (in_src1) = f_r1;
850 FLD (in_src2) = f_r2;
859 const IDESC *idesc = &m32rbf_insn_data[itype];
860 CGEN_INSN_INT insn = entire_insn;
861 #define FLD(f) abuf->fields.sfmt_st_d.f
865 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
866 f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
868 /* Record the fields for the semantic handler. */
869 FLD (f_simm16) = f_simm16;
871 FLD (i_src2) = & CPU (h_gr)[f_r2];
872 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));
874 #if WITH_PROFILE_MODEL_P
875 /* Record the fields for profiling. */
876 if (PROFILE_MODEL_P (current_cpu))
878 FLD (in_src2) = f_r2;
887 const IDESC *idesc = &m32rbf_insn_data[itype];
888 CGEN_INSN_INT insn = entire_insn;
889 #define FLD(f) abuf->fields.sfmt_add.f
893 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
894 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
896 /* Record the fields for the semantic handler. */
899 FLD (i_dr) = & CPU (h_gr)[f_r1];
900 FLD (i_sr) = & CPU (h_gr)[f_r2];
901 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));
903 #if WITH_PROFILE_MODEL_P
904 /* Record the fields for profiling. */
905 if (PROFILE_MODEL_P (current_cpu))
918 const IDESC *idesc = &m32rbf_insn_data[itype];
919 CGEN_INSN_INT insn = entire_insn;
920 #define FLD(f) abuf->fields.sfmt_jl.f
923 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
925 /* Record the fields for the semantic handler. */
927 FLD (i_sr) = & CPU (h_gr)[f_r2];
928 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));
930 #if WITH_PROFILE_MODEL_P
931 /* Record the fields for profiling. */
932 if (PROFILE_MODEL_P (current_cpu))
935 FLD (out_h_gr_14) = 14;
944 const IDESC *idesc = &m32rbf_insn_data[itype];
945 CGEN_INSN_INT insn = entire_insn;
946 #define FLD(f) abuf->fields.sfmt_jl.f
949 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
951 /* Record the fields for the semantic handler. */
953 FLD (i_sr) = & CPU (h_gr)[f_r2];
954 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));
956 #if WITH_PROFILE_MODEL_P
957 /* Record the fields for profiling. */
958 if (PROFILE_MODEL_P (current_cpu))
969 const IDESC *idesc = &m32rbf_insn_data[itype];
970 CGEN_INSN_INT insn = entire_insn;
971 #define FLD(f) abuf->fields.sfmt_ld_plus.f
975 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
976 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
978 /* Record the fields for the semantic handler. */
981 FLD (i_sr) = & CPU (h_gr)[f_r2];
982 FLD (i_dr) = & CPU (h_gr)[f_r1];
983 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));
985 #if WITH_PROFILE_MODEL_P
986 /* Record the fields for profiling. */
987 if (PROFILE_MODEL_P (current_cpu))
999 const IDESC *idesc = &m32rbf_insn_data[itype];
1000 CGEN_INSN_INT insn = entire_insn;
1001 #define FLD(f) abuf->fields.sfmt_add3.f
1006 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1007 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
1008 f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
1010 /* Record the fields for the semantic handler. */
1011 FLD (f_simm16) = f_simm16;
1014 FLD (i_sr) = & CPU (h_gr)[f_r2];
1015 FLD (i_dr) = & CPU (h_gr)[f_r1];
1016 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));
1018 #if WITH_PROFILE_MODEL_P
1019 /* Record the fields for profiling. */
1020 if (PROFILE_MODEL_P (current_cpu))
1023 FLD (out_dr) = f_r1;
1030 extract_sfmt_ld_plus:
1032 const IDESC *idesc = &m32rbf_insn_data[itype];
1033 CGEN_INSN_INT insn = entire_insn;
1034 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1038 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1039 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1041 /* Record the fields for the semantic handler. */
1044 FLD (i_sr) = & CPU (h_gr)[f_r2];
1045 FLD (i_dr) = & CPU (h_gr)[f_r1];
1046 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));
1048 #if WITH_PROFILE_MODEL_P
1049 /* Record the fields for profiling. */
1050 if (PROFILE_MODEL_P (current_cpu))
1053 FLD (out_dr) = f_r1;
1054 FLD (out_sr) = f_r2;
1063 const IDESC *idesc = &m32rbf_insn_data[itype];
1064 CGEN_INSN_INT insn = entire_insn;
1065 #define FLD(f) abuf->fields.sfmt_ld24.f
1069 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1070 f_uimm24 = EXTRACT_MSB0_UINT (insn, 32, 8, 24);
1072 /* Record the fields for the semantic handler. */
1074 FLD (i_uimm24) = f_uimm24;
1075 FLD (i_dr) = & CPU (h_gr)[f_r1];
1076 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));
1078 #if WITH_PROFILE_MODEL_P
1079 /* Record the fields for profiling. */
1080 if (PROFILE_MODEL_P (current_cpu))
1082 FLD (out_dr) = f_r1;
1091 const IDESC *idesc = &m32rbf_insn_data[itype];
1092 CGEN_INSN_INT insn = entire_insn;
1093 #define FLD(f) abuf->fields.sfmt_addi.f
1097 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1098 f_simm8 = EXTRACT_MSB0_INT (insn, 16, 8, 8);
1100 /* Record the fields for the semantic handler. */
1101 FLD (f_simm8) = f_simm8;
1103 FLD (i_dr) = & CPU (h_gr)[f_r1];
1104 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));
1106 #if WITH_PROFILE_MODEL_P
1107 /* Record the fields for profiling. */
1108 if (PROFILE_MODEL_P (current_cpu))
1110 FLD (out_dr) = f_r1;
1119 const IDESC *idesc = &m32rbf_insn_data[itype];
1120 CGEN_INSN_INT insn = entire_insn;
1121 #define FLD(f) abuf->fields.sfmt_add3.f
1125 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1126 f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
1128 /* Record the fields for the semantic handler. */
1129 FLD (f_simm16) = f_simm16;
1131 FLD (i_dr) = & CPU (h_gr)[f_r1];
1132 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));
1134 #if WITH_PROFILE_MODEL_P
1135 /* Record the fields for profiling. */
1136 if (PROFILE_MODEL_P (current_cpu))
1138 FLD (out_dr) = f_r1;
1147 const IDESC *idesc = &m32rbf_insn_data[itype];
1148 CGEN_INSN_INT insn = entire_insn;
1149 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1153 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1154 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1156 /* Record the fields for the semantic handler. */
1159 FLD (i_sr) = & CPU (h_gr)[f_r2];
1160 FLD (i_dr) = & CPU (h_gr)[f_r1];
1161 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));
1163 #if WITH_PROFILE_MODEL_P
1164 /* Record the fields for profiling. */
1165 if (PROFILE_MODEL_P (current_cpu))
1168 FLD (out_dr) = f_r1;
1177 const IDESC *idesc = &m32rbf_insn_data[itype];
1178 CGEN_INSN_INT insn = entire_insn;
1179 #define FLD(f) abuf->fields.sfmt_st_plus.f
1183 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1184 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1186 /* Record the fields for the semantic handler. */
1189 FLD (i_src1) = & CPU (h_gr)[f_r1];
1190 FLD (i_src2) = & CPU (h_gr)[f_r2];
1191 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));
1193 #if WITH_PROFILE_MODEL_P
1194 /* Record the fields for profiling. */
1195 if (PROFILE_MODEL_P (current_cpu))
1197 FLD (in_src1) = f_r1;
1198 FLD (in_src2) = f_r2;
1207 const IDESC *idesc = &m32rbf_insn_data[itype];
1208 CGEN_INSN_INT insn = entire_insn;
1209 #define FLD(f) abuf->fields.sfmt_st_plus.f
1213 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1214 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1216 /* Record the fields for the semantic handler. */
1219 FLD (i_src1) = & CPU (h_gr)[f_r1];
1220 FLD (i_src2) = & CPU (h_gr)[f_r2];
1221 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));
1223 #if WITH_PROFILE_MODEL_P
1224 /* Record the fields for profiling. */
1225 if (PROFILE_MODEL_P (current_cpu))
1227 FLD (in_src1) = f_r1;
1228 FLD (in_src2) = f_r2;
1237 const IDESC *idesc = &m32rbf_insn_data[itype];
1238 CGEN_INSN_INT insn = entire_insn;
1239 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1243 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1244 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1246 /* Record the fields for the semantic handler. */
1249 FLD (i_sr) = & CPU (h_gr)[f_r2];
1250 FLD (i_dr) = & CPU (h_gr)[f_r1];
1251 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));
1253 #if WITH_PROFILE_MODEL_P
1254 /* Record the fields for profiling. */
1255 if (PROFILE_MODEL_P (current_cpu))
1258 FLD (out_dr) = f_r1;
1265 extract_sfmt_mvfachi:
1267 const IDESC *idesc = &m32rbf_insn_data[itype];
1268 CGEN_INSN_INT insn = entire_insn;
1269 #define FLD(f) abuf->fields.sfmt_seth.f
1272 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1274 /* Record the fields for the semantic handler. */
1276 FLD (i_dr) = & CPU (h_gr)[f_r1];
1277 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));
1279 #if WITH_PROFILE_MODEL_P
1280 /* Record the fields for profiling. */
1281 if (PROFILE_MODEL_P (current_cpu))
1283 FLD (out_dr) = f_r1;
1292 const IDESC *idesc = &m32rbf_insn_data[itype];
1293 CGEN_INSN_INT insn = entire_insn;
1294 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1298 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1299 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1301 /* Record the fields for the semantic handler. */
1304 FLD (i_dr) = & CPU (h_gr)[f_r1];
1305 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));
1307 #if WITH_PROFILE_MODEL_P
1308 /* Record the fields for profiling. */
1309 if (PROFILE_MODEL_P (current_cpu))
1311 FLD (out_dr) = f_r1;
1318 extract_sfmt_mvtachi:
1320 const IDESC *idesc = &m32rbf_insn_data[itype];
1321 CGEN_INSN_INT insn = entire_insn;
1322 #define FLD(f) abuf->fields.sfmt_st_plus.f
1325 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1327 /* Record the fields for the semantic handler. */
1329 FLD (i_src1) = & CPU (h_gr)[f_r1];
1330 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));
1332 #if WITH_PROFILE_MODEL_P
1333 /* Record the fields for profiling. */
1334 if (PROFILE_MODEL_P (current_cpu))
1336 FLD (in_src1) = f_r1;
1345 const IDESC *idesc = &m32rbf_insn_data[itype];
1346 CGEN_INSN_INT insn = entire_insn;
1347 #define FLD(f) abuf->fields.sfmt_ld_plus.f
1351 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1352 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1354 /* Record the fields for the semantic handler. */
1357 FLD (i_sr) = & CPU (h_gr)[f_r2];
1358 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));
1360 #if WITH_PROFILE_MODEL_P
1361 /* Record the fields for profiling. */
1362 if (PROFILE_MODEL_P (current_cpu))
1373 const IDESC *idesc = &m32rbf_insn_data[itype];
1374 #define FLD(f) abuf->fields.fmt_empty.f
1377 /* Record the fields for the semantic handler. */
1378 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_nop", (char *) 0));
1386 const IDESC *idesc = &m32rbf_insn_data[itype];
1387 #define FLD(f) abuf->fields.fmt_empty.f
1390 /* Record the fields for the semantic handler. */
1391 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_rac", (char *) 0));
1399 const IDESC *idesc = &m32rbf_insn_data[itype];
1400 #define FLD(f) abuf->fields.fmt_empty.f
1403 /* Record the fields for the semantic handler. */
1404 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_rte", (char *) 0));
1406 #if WITH_PROFILE_MODEL_P
1407 /* Record the fields for profiling. */
1408 if (PROFILE_MODEL_P (current_cpu))
1418 const IDESC *idesc = &m32rbf_insn_data[itype];
1419 CGEN_INSN_INT insn = entire_insn;
1420 #define FLD(f) abuf->fields.sfmt_seth.f
1424 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1425 f_hi16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
1427 /* Record the fields for the semantic handler. */
1428 FLD (f_hi16) = f_hi16;
1430 FLD (i_dr) = & CPU (h_gr)[f_r1];
1431 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));
1433 #if WITH_PROFILE_MODEL_P
1434 /* Record the fields for profiling. */
1435 if (PROFILE_MODEL_P (current_cpu))
1437 FLD (out_dr) = f_r1;
1446 const IDESC *idesc = &m32rbf_insn_data[itype];
1447 CGEN_INSN_INT insn = entire_insn;
1448 #define FLD(f) abuf->fields.sfmt_add3.f
1453 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1454 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
1455 f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
1457 /* Record the fields for the semantic handler. */
1458 FLD (f_simm16) = f_simm16;
1461 FLD (i_sr) = & CPU (h_gr)[f_r2];
1462 FLD (i_dr) = & CPU (h_gr)[f_r1];
1463 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));
1465 #if WITH_PROFILE_MODEL_P
1466 /* Record the fields for profiling. */
1467 if (PROFILE_MODEL_P (current_cpu))
1470 FLD (out_dr) = f_r1;
1479 const IDESC *idesc = &m32rbf_insn_data[itype];
1480 CGEN_INSN_INT insn = entire_insn;
1481 #define FLD(f) abuf->fields.sfmt_slli.f
1485 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1486 f_uimm5 = EXTRACT_MSB0_UINT (insn, 16, 11, 5);
1488 /* Record the fields for the semantic handler. */
1490 FLD (f_uimm5) = f_uimm5;
1491 FLD (i_dr) = & CPU (h_gr)[f_r1];
1492 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));
1494 #if WITH_PROFILE_MODEL_P
1495 /* Record the fields for profiling. */
1496 if (PROFILE_MODEL_P (current_cpu))
1499 FLD (out_dr) = f_r1;
1508 const IDESC *idesc = &m32rbf_insn_data[itype];
1509 CGEN_INSN_INT insn = entire_insn;
1510 #define FLD(f) abuf->fields.sfmt_st_plus.f
1514 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1515 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1517 /* Record the fields for the semantic handler. */
1520 FLD (i_src1) = & CPU (h_gr)[f_r1];
1521 FLD (i_src2) = & CPU (h_gr)[f_r2];
1522 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));
1524 #if WITH_PROFILE_MODEL_P
1525 /* Record the fields for profiling. */
1526 if (PROFILE_MODEL_P (current_cpu))
1528 FLD (in_src1) = f_r1;
1529 FLD (in_src2) = f_r2;
1538 const IDESC *idesc = &m32rbf_insn_data[itype];
1539 CGEN_INSN_INT insn = entire_insn;
1540 #define FLD(f) abuf->fields.sfmt_st_d.f
1545 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1546 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
1547 f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
1549 /* Record the fields for the semantic handler. */
1550 FLD (f_simm16) = f_simm16;
1553 FLD (i_src1) = & CPU (h_gr)[f_r1];
1554 FLD (i_src2) = & CPU (h_gr)[f_r2];
1555 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));
1557 #if WITH_PROFILE_MODEL_P
1558 /* Record the fields for profiling. */
1559 if (PROFILE_MODEL_P (current_cpu))
1561 FLD (in_src1) = f_r1;
1562 FLD (in_src2) = f_r2;
1571 const IDESC *idesc = &m32rbf_insn_data[itype];
1572 CGEN_INSN_INT insn = entire_insn;
1573 #define FLD(f) abuf->fields.sfmt_st_plus.f
1577 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1578 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1580 /* Record the fields for the semantic handler. */
1583 FLD (i_src1) = & CPU (h_gr)[f_r1];
1584 FLD (i_src2) = & CPU (h_gr)[f_r2];
1585 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));
1587 #if WITH_PROFILE_MODEL_P
1588 /* Record the fields for profiling. */
1589 if (PROFILE_MODEL_P (current_cpu))
1591 FLD (in_src1) = f_r1;
1592 FLD (in_src2) = f_r2;
1601 const IDESC *idesc = &m32rbf_insn_data[itype];
1602 CGEN_INSN_INT insn = entire_insn;
1603 #define FLD(f) abuf->fields.sfmt_st_d.f
1608 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1609 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
1610 f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
1612 /* Record the fields for the semantic handler. */
1613 FLD (f_simm16) = f_simm16;
1616 FLD (i_src1) = & CPU (h_gr)[f_r1];
1617 FLD (i_src2) = & CPU (h_gr)[f_r2];
1618 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));
1620 #if WITH_PROFILE_MODEL_P
1621 /* Record the fields for profiling. */
1622 if (PROFILE_MODEL_P (current_cpu))
1624 FLD (in_src1) = f_r1;
1625 FLD (in_src2) = f_r2;
1634 const IDESC *idesc = &m32rbf_insn_data[itype];
1635 CGEN_INSN_INT insn = entire_insn;
1636 #define FLD(f) abuf->fields.sfmt_st_plus.f
1640 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1641 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1643 /* Record the fields for the semantic handler. */
1646 FLD (i_src1) = & CPU (h_gr)[f_r1];
1647 FLD (i_src2) = & CPU (h_gr)[f_r2];
1648 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));
1650 #if WITH_PROFILE_MODEL_P
1651 /* Record the fields for profiling. */
1652 if (PROFILE_MODEL_P (current_cpu))
1654 FLD (in_src1) = f_r1;
1655 FLD (in_src2) = f_r2;
1664 const IDESC *idesc = &m32rbf_insn_data[itype];
1665 CGEN_INSN_INT insn = entire_insn;
1666 #define FLD(f) abuf->fields.sfmt_st_d.f
1671 f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1672 f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
1673 f_simm16 = EXTRACT_MSB0_INT (insn, 32, 16, 16);
1675 /* Record the fields for the semantic handler. */
1676 FLD (f_simm16) = f_simm16;
1679 FLD (i_src1) = & CPU (h_gr)[f_r1];
1680 FLD (i_src2) = & CPU (h_gr)[f_r2];
1681 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));
1683 #if WITH_PROFILE_MODEL_P
1684 /* Record the fields for profiling. */
1685 if (PROFILE_MODEL_P (current_cpu))
1687 FLD (in_src1) = f_r1;
1688 FLD (in_src2) = f_r2;
1695 extract_sfmt_st_plus:
1697 const IDESC *idesc = &m32rbf_insn_data[itype];
1698 CGEN_INSN_INT insn = entire_insn;
1699 #define FLD(f) abuf->fields.sfmt_st_plus.f
1703 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1704 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1706 /* Record the fields for the semantic handler. */
1709 FLD (i_src1) = & CPU (h_gr)[f_r1];
1710 FLD (i_src2) = & CPU (h_gr)[f_r2];
1711 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));
1713 #if WITH_PROFILE_MODEL_P
1714 /* Record the fields for profiling. */
1715 if (PROFILE_MODEL_P (current_cpu))
1717 FLD (in_src1) = f_r1;
1718 FLD (in_src2) = f_r2;
1719 FLD (out_src2) = f_r2;
1728 const IDESC *idesc = &m32rbf_insn_data[itype];
1729 CGEN_INSN_INT insn = entire_insn;
1730 #define FLD(f) abuf->fields.sfmt_trap.f
1733 f_uimm4 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1735 /* Record the fields for the semantic handler. */
1736 FLD (f_uimm4) = f_uimm4;
1737 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_trap", "f_uimm4 0x%x", 'x', f_uimm4, (char *) 0));
1739 #if WITH_PROFILE_MODEL_P
1740 /* Record the fields for profiling. */
1741 if (PROFILE_MODEL_P (current_cpu))
1749 extract_sfmt_unlock:
1751 const IDESC *idesc = &m32rbf_insn_data[itype];
1752 CGEN_INSN_INT insn = entire_insn;
1753 #define FLD(f) abuf->fields.sfmt_st_plus.f
1757 f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1758 f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1760 /* Record the fields for the semantic handler. */
1763 FLD (i_src1) = & CPU (h_gr)[f_r1];
1764 FLD (i_src2) = & CPU (h_gr)[f_r2];
1765 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));
1767 #if WITH_PROFILE_MODEL_P
1768 /* Record the fields for profiling. */
1769 if (PROFILE_MODEL_P (current_cpu))
1771 FLD (in_src1) = f_r1;
1772 FLD (in_src2) = f_r2;