model.c revision 1.1.1.3 1 1.1 christos /* Simulator model support for m32rbf.
2 1.1 christos
3 1.1 christos THIS FILE IS MACHINE GENERATED WITH CGEN.
4 1.1 christos
5 1.1.1.3 christos Copyright 1996-2016 Free Software Foundation, Inc.
6 1.1 christos
7 1.1 christos This file is part of the GNU simulators.
8 1.1 christos
9 1.1 christos This file is free software; you can redistribute it and/or modify
10 1.1 christos it under the terms of the GNU General Public License as published by
11 1.1 christos the Free Software Foundation; either version 3, or (at your option)
12 1.1 christos any later version.
13 1.1 christos
14 1.1 christos It is distributed in the hope that it will be useful, but WITHOUT
15 1.1 christos ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 1.1 christos or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
17 1.1 christos License for more details.
18 1.1 christos
19 1.1 christos You should have received a copy of the GNU General Public License along
20 1.1 christos with this program; if not, see <http://www.gnu.org/licenses/>.
21 1.1 christos
22 1.1 christos */
23 1.1 christos
24 1.1 christos #define WANT_CPU m32rbf
25 1.1 christos #define WANT_CPU_M32RBF
26 1.1 christos
27 1.1 christos #include "sim-main.h"
28 1.1 christos
29 1.1 christos /* The profiling data is recorded here, but is accessed via the profiling
30 1.1 christos mechanism. After all, this is information for profiling. */
31 1.1 christos
32 1.1 christos #if WITH_PROFILE_MODEL_P
33 1.1 christos
34 1.1 christos /* Model handlers for each insn. */
35 1.1 christos
36 1.1 christos static int
37 1.1 christos model_m32r_d_add (SIM_CPU *current_cpu, void *sem_arg)
38 1.1 christos {
39 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
40 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
41 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
42 1.1 christos int cycles = 0;
43 1.1 christos {
44 1.1 christos int referenced = 0;
45 1.1 christos int UNUSED insn_referenced = abuf->written;
46 1.1 christos INT in_sr = -1;
47 1.1 christos INT in_dr = -1;
48 1.1 christos INT out_dr = -1;
49 1.1 christos in_sr = FLD (in_sr);
50 1.1 christos in_dr = FLD (in_dr);
51 1.1 christos out_dr = FLD (out_dr);
52 1.1 christos referenced |= 1 << 0;
53 1.1 christos referenced |= 1 << 1;
54 1.1 christos referenced |= 1 << 2;
55 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
56 1.1 christos }
57 1.1 christos return cycles;
58 1.1 christos #undef FLD
59 1.1 christos }
60 1.1 christos
61 1.1 christos static int
62 1.1 christos model_m32r_d_add3 (SIM_CPU *current_cpu, void *sem_arg)
63 1.1 christos {
64 1.1 christos #define FLD(f) abuf->fields.sfmt_add3.f
65 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
66 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
67 1.1 christos int cycles = 0;
68 1.1 christos {
69 1.1 christos int referenced = 0;
70 1.1 christos int UNUSED insn_referenced = abuf->written;
71 1.1 christos INT in_sr = -1;
72 1.1 christos INT in_dr = -1;
73 1.1 christos INT out_dr = -1;
74 1.1 christos in_sr = FLD (in_sr);
75 1.1 christos out_dr = FLD (out_dr);
76 1.1 christos referenced |= 1 << 0;
77 1.1 christos referenced |= 1 << 2;
78 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
79 1.1 christos }
80 1.1 christos return cycles;
81 1.1 christos #undef FLD
82 1.1 christos }
83 1.1 christos
84 1.1 christos static int
85 1.1 christos model_m32r_d_and (SIM_CPU *current_cpu, void *sem_arg)
86 1.1 christos {
87 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
88 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
89 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
90 1.1 christos int cycles = 0;
91 1.1 christos {
92 1.1 christos int referenced = 0;
93 1.1 christos int UNUSED insn_referenced = abuf->written;
94 1.1 christos INT in_sr = -1;
95 1.1 christos INT in_dr = -1;
96 1.1 christos INT out_dr = -1;
97 1.1 christos in_sr = FLD (in_sr);
98 1.1 christos in_dr = FLD (in_dr);
99 1.1 christos out_dr = FLD (out_dr);
100 1.1 christos referenced |= 1 << 0;
101 1.1 christos referenced |= 1 << 1;
102 1.1 christos referenced |= 1 << 2;
103 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
104 1.1 christos }
105 1.1 christos return cycles;
106 1.1 christos #undef FLD
107 1.1 christos }
108 1.1 christos
109 1.1 christos static int
110 1.1 christos model_m32r_d_and3 (SIM_CPU *current_cpu, void *sem_arg)
111 1.1 christos {
112 1.1 christos #define FLD(f) abuf->fields.sfmt_and3.f
113 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
114 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
115 1.1 christos int cycles = 0;
116 1.1 christos {
117 1.1 christos int referenced = 0;
118 1.1 christos int UNUSED insn_referenced = abuf->written;
119 1.1 christos INT in_sr = -1;
120 1.1 christos INT in_dr = -1;
121 1.1 christos INT out_dr = -1;
122 1.1 christos in_sr = FLD (in_sr);
123 1.1 christos out_dr = FLD (out_dr);
124 1.1 christos referenced |= 1 << 0;
125 1.1 christos referenced |= 1 << 2;
126 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
127 1.1 christos }
128 1.1 christos return cycles;
129 1.1 christos #undef FLD
130 1.1 christos }
131 1.1 christos
132 1.1 christos static int
133 1.1 christos model_m32r_d_or (SIM_CPU *current_cpu, void *sem_arg)
134 1.1 christos {
135 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
136 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
137 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
138 1.1 christos int cycles = 0;
139 1.1 christos {
140 1.1 christos int referenced = 0;
141 1.1 christos int UNUSED insn_referenced = abuf->written;
142 1.1 christos INT in_sr = -1;
143 1.1 christos INT in_dr = -1;
144 1.1 christos INT out_dr = -1;
145 1.1 christos in_sr = FLD (in_sr);
146 1.1 christos in_dr = FLD (in_dr);
147 1.1 christos out_dr = FLD (out_dr);
148 1.1 christos referenced |= 1 << 0;
149 1.1 christos referenced |= 1 << 1;
150 1.1 christos referenced |= 1 << 2;
151 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
152 1.1 christos }
153 1.1 christos return cycles;
154 1.1 christos #undef FLD
155 1.1 christos }
156 1.1 christos
157 1.1 christos static int
158 1.1 christos model_m32r_d_or3 (SIM_CPU *current_cpu, void *sem_arg)
159 1.1 christos {
160 1.1 christos #define FLD(f) abuf->fields.sfmt_and3.f
161 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
162 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
163 1.1 christos int cycles = 0;
164 1.1 christos {
165 1.1 christos int referenced = 0;
166 1.1 christos int UNUSED insn_referenced = abuf->written;
167 1.1 christos INT in_sr = -1;
168 1.1 christos INT in_dr = -1;
169 1.1 christos INT out_dr = -1;
170 1.1 christos in_sr = FLD (in_sr);
171 1.1 christos out_dr = FLD (out_dr);
172 1.1 christos referenced |= 1 << 0;
173 1.1 christos referenced |= 1 << 2;
174 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
175 1.1 christos }
176 1.1 christos return cycles;
177 1.1 christos #undef FLD
178 1.1 christos }
179 1.1 christos
180 1.1 christos static int
181 1.1 christos model_m32r_d_xor (SIM_CPU *current_cpu, void *sem_arg)
182 1.1 christos {
183 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
184 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
185 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
186 1.1 christos int cycles = 0;
187 1.1 christos {
188 1.1 christos int referenced = 0;
189 1.1 christos int UNUSED insn_referenced = abuf->written;
190 1.1 christos INT in_sr = -1;
191 1.1 christos INT in_dr = -1;
192 1.1 christos INT out_dr = -1;
193 1.1 christos in_sr = FLD (in_sr);
194 1.1 christos in_dr = FLD (in_dr);
195 1.1 christos out_dr = FLD (out_dr);
196 1.1 christos referenced |= 1 << 0;
197 1.1 christos referenced |= 1 << 1;
198 1.1 christos referenced |= 1 << 2;
199 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
200 1.1 christos }
201 1.1 christos return cycles;
202 1.1 christos #undef FLD
203 1.1 christos }
204 1.1 christos
205 1.1 christos static int
206 1.1 christos model_m32r_d_xor3 (SIM_CPU *current_cpu, void *sem_arg)
207 1.1 christos {
208 1.1 christos #define FLD(f) abuf->fields.sfmt_and3.f
209 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
210 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
211 1.1 christos int cycles = 0;
212 1.1 christos {
213 1.1 christos int referenced = 0;
214 1.1 christos int UNUSED insn_referenced = abuf->written;
215 1.1 christos INT in_sr = -1;
216 1.1 christos INT in_dr = -1;
217 1.1 christos INT out_dr = -1;
218 1.1 christos in_sr = FLD (in_sr);
219 1.1 christos out_dr = FLD (out_dr);
220 1.1 christos referenced |= 1 << 0;
221 1.1 christos referenced |= 1 << 2;
222 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
223 1.1 christos }
224 1.1 christos return cycles;
225 1.1 christos #undef FLD
226 1.1 christos }
227 1.1 christos
228 1.1 christos static int
229 1.1 christos model_m32r_d_addi (SIM_CPU *current_cpu, void *sem_arg)
230 1.1 christos {
231 1.1 christos #define FLD(f) abuf->fields.sfmt_addi.f
232 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
233 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
234 1.1 christos int cycles = 0;
235 1.1 christos {
236 1.1 christos int referenced = 0;
237 1.1 christos int UNUSED insn_referenced = abuf->written;
238 1.1 christos INT in_sr = -1;
239 1.1 christos INT in_dr = -1;
240 1.1 christos INT out_dr = -1;
241 1.1 christos in_dr = FLD (in_dr);
242 1.1 christos out_dr = FLD (out_dr);
243 1.1 christos referenced |= 1 << 1;
244 1.1 christos referenced |= 1 << 2;
245 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
246 1.1 christos }
247 1.1 christos return cycles;
248 1.1 christos #undef FLD
249 1.1 christos }
250 1.1 christos
251 1.1 christos static int
252 1.1 christos model_m32r_d_addv (SIM_CPU *current_cpu, void *sem_arg)
253 1.1 christos {
254 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
255 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
256 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
257 1.1 christos int cycles = 0;
258 1.1 christos {
259 1.1 christos int referenced = 0;
260 1.1 christos int UNUSED insn_referenced = abuf->written;
261 1.1 christos INT in_sr = -1;
262 1.1 christos INT in_dr = -1;
263 1.1 christos INT out_dr = -1;
264 1.1 christos in_sr = FLD (in_sr);
265 1.1 christos in_dr = FLD (in_dr);
266 1.1 christos out_dr = FLD (out_dr);
267 1.1 christos referenced |= 1 << 0;
268 1.1 christos referenced |= 1 << 1;
269 1.1 christos referenced |= 1 << 2;
270 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
271 1.1 christos }
272 1.1 christos return cycles;
273 1.1 christos #undef FLD
274 1.1 christos }
275 1.1 christos
276 1.1 christos static int
277 1.1 christos model_m32r_d_addv3 (SIM_CPU *current_cpu, void *sem_arg)
278 1.1 christos {
279 1.1 christos #define FLD(f) abuf->fields.sfmt_add3.f
280 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
281 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
282 1.1 christos int cycles = 0;
283 1.1 christos {
284 1.1 christos int referenced = 0;
285 1.1 christos int UNUSED insn_referenced = abuf->written;
286 1.1 christos INT in_sr = -1;
287 1.1 christos INT in_dr = -1;
288 1.1 christos INT out_dr = -1;
289 1.1 christos in_sr = FLD (in_sr);
290 1.1 christos out_dr = FLD (out_dr);
291 1.1 christos referenced |= 1 << 0;
292 1.1 christos referenced |= 1 << 2;
293 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
294 1.1 christos }
295 1.1 christos return cycles;
296 1.1 christos #undef FLD
297 1.1 christos }
298 1.1 christos
299 1.1 christos static int
300 1.1 christos model_m32r_d_addx (SIM_CPU *current_cpu, void *sem_arg)
301 1.1 christos {
302 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
303 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
304 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
305 1.1 christos int cycles = 0;
306 1.1 christos {
307 1.1 christos int referenced = 0;
308 1.1 christos int UNUSED insn_referenced = abuf->written;
309 1.1 christos INT in_sr = -1;
310 1.1 christos INT in_dr = -1;
311 1.1 christos INT out_dr = -1;
312 1.1 christos in_sr = FLD (in_sr);
313 1.1 christos in_dr = FLD (in_dr);
314 1.1 christos out_dr = FLD (out_dr);
315 1.1 christos referenced |= 1 << 0;
316 1.1 christos referenced |= 1 << 1;
317 1.1 christos referenced |= 1 << 2;
318 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
319 1.1 christos }
320 1.1 christos return cycles;
321 1.1 christos #undef FLD
322 1.1 christos }
323 1.1 christos
324 1.1 christos static int
325 1.1 christos model_m32r_d_bc8 (SIM_CPU *current_cpu, void *sem_arg)
326 1.1 christos {
327 1.1 christos #define FLD(f) abuf->fields.sfmt_bl8.f
328 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
329 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
330 1.1 christos int cycles = 0;
331 1.1 christos {
332 1.1 christos int referenced = 0;
333 1.1 christos int UNUSED insn_referenced = abuf->written;
334 1.1 christos INT in_sr = -1;
335 1.1 christos if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
336 1.1 christos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
337 1.1 christos }
338 1.1 christos return cycles;
339 1.1 christos #undef FLD
340 1.1 christos }
341 1.1 christos
342 1.1 christos static int
343 1.1 christos model_m32r_d_bc24 (SIM_CPU *current_cpu, void *sem_arg)
344 1.1 christos {
345 1.1 christos #define FLD(f) abuf->fields.sfmt_bl24.f
346 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
347 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
348 1.1 christos int cycles = 0;
349 1.1 christos {
350 1.1 christos int referenced = 0;
351 1.1 christos int UNUSED insn_referenced = abuf->written;
352 1.1 christos INT in_sr = -1;
353 1.1 christos if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
354 1.1 christos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
355 1.1 christos }
356 1.1 christos return cycles;
357 1.1 christos #undef FLD
358 1.1 christos }
359 1.1 christos
360 1.1 christos static int
361 1.1 christos model_m32r_d_beq (SIM_CPU *current_cpu, void *sem_arg)
362 1.1 christos {
363 1.1 christos #define FLD(f) abuf->fields.sfmt_beq.f
364 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
365 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
366 1.1 christos int cycles = 0;
367 1.1 christos {
368 1.1 christos int referenced = 0;
369 1.1 christos int UNUSED insn_referenced = abuf->written;
370 1.1 christos INT in_sr = -1;
371 1.1 christos if (insn_referenced & (1 << 3)) referenced |= 1 << 1;
372 1.1 christos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
373 1.1 christos }
374 1.1 christos {
375 1.1 christos int referenced = 0;
376 1.1 christos int UNUSED insn_referenced = abuf->written;
377 1.1 christos INT in_src1 = -1;
378 1.1 christos INT in_src2 = -1;
379 1.1 christos in_src1 = FLD (in_src1);
380 1.1 christos in_src2 = FLD (in_src2);
381 1.1 christos referenced |= 1 << 0;
382 1.1 christos referenced |= 1 << 1;
383 1.1 christos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2);
384 1.1 christos }
385 1.1 christos return cycles;
386 1.1 christos #undef FLD
387 1.1 christos }
388 1.1 christos
389 1.1 christos static int
390 1.1 christos model_m32r_d_beqz (SIM_CPU *current_cpu, void *sem_arg)
391 1.1 christos {
392 1.1 christos #define FLD(f) abuf->fields.sfmt_beq.f
393 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
394 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
395 1.1 christos int cycles = 0;
396 1.1 christos {
397 1.1 christos int referenced = 0;
398 1.1 christos int UNUSED insn_referenced = abuf->written;
399 1.1 christos INT in_sr = -1;
400 1.1 christos if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
401 1.1 christos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
402 1.1 christos }
403 1.1 christos {
404 1.1 christos int referenced = 0;
405 1.1 christos int UNUSED insn_referenced = abuf->written;
406 1.1 christos INT in_src1 = -1;
407 1.1 christos INT in_src2 = -1;
408 1.1 christos in_src2 = FLD (in_src2);
409 1.1 christos referenced |= 1 << 1;
410 1.1 christos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2);
411 1.1 christos }
412 1.1 christos return cycles;
413 1.1 christos #undef FLD
414 1.1 christos }
415 1.1 christos
416 1.1 christos static int
417 1.1 christos model_m32r_d_bgez (SIM_CPU *current_cpu, void *sem_arg)
418 1.1 christos {
419 1.1 christos #define FLD(f) abuf->fields.sfmt_beq.f
420 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
421 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
422 1.1 christos int cycles = 0;
423 1.1 christos {
424 1.1 christos int referenced = 0;
425 1.1 christos int UNUSED insn_referenced = abuf->written;
426 1.1 christos INT in_sr = -1;
427 1.1 christos if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
428 1.1 christos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
429 1.1 christos }
430 1.1 christos {
431 1.1 christos int referenced = 0;
432 1.1 christos int UNUSED insn_referenced = abuf->written;
433 1.1 christos INT in_src1 = -1;
434 1.1 christos INT in_src2 = -1;
435 1.1 christos in_src2 = FLD (in_src2);
436 1.1 christos referenced |= 1 << 1;
437 1.1 christos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2);
438 1.1 christos }
439 1.1 christos return cycles;
440 1.1 christos #undef FLD
441 1.1 christos }
442 1.1 christos
443 1.1 christos static int
444 1.1 christos model_m32r_d_bgtz (SIM_CPU *current_cpu, void *sem_arg)
445 1.1 christos {
446 1.1 christos #define FLD(f) abuf->fields.sfmt_beq.f
447 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
448 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
449 1.1 christos int cycles = 0;
450 1.1 christos {
451 1.1 christos int referenced = 0;
452 1.1 christos int UNUSED insn_referenced = abuf->written;
453 1.1 christos INT in_sr = -1;
454 1.1 christos if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
455 1.1 christos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
456 1.1 christos }
457 1.1 christos {
458 1.1 christos int referenced = 0;
459 1.1 christos int UNUSED insn_referenced = abuf->written;
460 1.1 christos INT in_src1 = -1;
461 1.1 christos INT in_src2 = -1;
462 1.1 christos in_src2 = FLD (in_src2);
463 1.1 christos referenced |= 1 << 1;
464 1.1 christos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2);
465 1.1 christos }
466 1.1 christos return cycles;
467 1.1 christos #undef FLD
468 1.1 christos }
469 1.1 christos
470 1.1 christos static int
471 1.1 christos model_m32r_d_blez (SIM_CPU *current_cpu, void *sem_arg)
472 1.1 christos {
473 1.1 christos #define FLD(f) abuf->fields.sfmt_beq.f
474 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
475 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
476 1.1 christos int cycles = 0;
477 1.1 christos {
478 1.1 christos int referenced = 0;
479 1.1 christos int UNUSED insn_referenced = abuf->written;
480 1.1 christos INT in_sr = -1;
481 1.1 christos if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
482 1.1 christos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
483 1.1 christos }
484 1.1 christos {
485 1.1 christos int referenced = 0;
486 1.1 christos int UNUSED insn_referenced = abuf->written;
487 1.1 christos INT in_src1 = -1;
488 1.1 christos INT in_src2 = -1;
489 1.1 christos in_src2 = FLD (in_src2);
490 1.1 christos referenced |= 1 << 1;
491 1.1 christos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2);
492 1.1 christos }
493 1.1 christos return cycles;
494 1.1 christos #undef FLD
495 1.1 christos }
496 1.1 christos
497 1.1 christos static int
498 1.1 christos model_m32r_d_bltz (SIM_CPU *current_cpu, void *sem_arg)
499 1.1 christos {
500 1.1 christos #define FLD(f) abuf->fields.sfmt_beq.f
501 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
502 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
503 1.1 christos int cycles = 0;
504 1.1 christos {
505 1.1 christos int referenced = 0;
506 1.1 christos int UNUSED insn_referenced = abuf->written;
507 1.1 christos INT in_sr = -1;
508 1.1 christos if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
509 1.1 christos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
510 1.1 christos }
511 1.1 christos {
512 1.1 christos int referenced = 0;
513 1.1 christos int UNUSED insn_referenced = abuf->written;
514 1.1 christos INT in_src1 = -1;
515 1.1 christos INT in_src2 = -1;
516 1.1 christos in_src2 = FLD (in_src2);
517 1.1 christos referenced |= 1 << 1;
518 1.1 christos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2);
519 1.1 christos }
520 1.1 christos return cycles;
521 1.1 christos #undef FLD
522 1.1 christos }
523 1.1 christos
524 1.1 christos static int
525 1.1 christos model_m32r_d_bnez (SIM_CPU *current_cpu, void *sem_arg)
526 1.1 christos {
527 1.1 christos #define FLD(f) abuf->fields.sfmt_beq.f
528 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
529 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
530 1.1 christos int cycles = 0;
531 1.1 christos {
532 1.1 christos int referenced = 0;
533 1.1 christos int UNUSED insn_referenced = abuf->written;
534 1.1 christos INT in_sr = -1;
535 1.1 christos if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
536 1.1 christos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
537 1.1 christos }
538 1.1 christos {
539 1.1 christos int referenced = 0;
540 1.1 christos int UNUSED insn_referenced = abuf->written;
541 1.1 christos INT in_src1 = -1;
542 1.1 christos INT in_src2 = -1;
543 1.1 christos in_src2 = FLD (in_src2);
544 1.1 christos referenced |= 1 << 1;
545 1.1 christos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2);
546 1.1 christos }
547 1.1 christos return cycles;
548 1.1 christos #undef FLD
549 1.1 christos }
550 1.1 christos
551 1.1 christos static int
552 1.1 christos model_m32r_d_bl8 (SIM_CPU *current_cpu, void *sem_arg)
553 1.1 christos {
554 1.1 christos #define FLD(f) abuf->fields.sfmt_bl8.f
555 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
556 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
557 1.1 christos int cycles = 0;
558 1.1 christos {
559 1.1 christos int referenced = 0;
560 1.1 christos int UNUSED insn_referenced = abuf->written;
561 1.1 christos INT in_sr = -1;
562 1.1 christos referenced |= 1 << 1;
563 1.1 christos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
564 1.1 christos }
565 1.1 christos return cycles;
566 1.1 christos #undef FLD
567 1.1 christos }
568 1.1 christos
569 1.1 christos static int
570 1.1 christos model_m32r_d_bl24 (SIM_CPU *current_cpu, void *sem_arg)
571 1.1 christos {
572 1.1 christos #define FLD(f) abuf->fields.sfmt_bl24.f
573 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
574 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
575 1.1 christos int cycles = 0;
576 1.1 christos {
577 1.1 christos int referenced = 0;
578 1.1 christos int UNUSED insn_referenced = abuf->written;
579 1.1 christos INT in_sr = -1;
580 1.1 christos referenced |= 1 << 1;
581 1.1 christos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
582 1.1 christos }
583 1.1 christos return cycles;
584 1.1 christos #undef FLD
585 1.1 christos }
586 1.1 christos
587 1.1 christos static int
588 1.1 christos model_m32r_d_bnc8 (SIM_CPU *current_cpu, void *sem_arg)
589 1.1 christos {
590 1.1 christos #define FLD(f) abuf->fields.sfmt_bl8.f
591 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
592 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
593 1.1 christos int cycles = 0;
594 1.1 christos {
595 1.1 christos int referenced = 0;
596 1.1 christos int UNUSED insn_referenced = abuf->written;
597 1.1 christos INT in_sr = -1;
598 1.1 christos if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
599 1.1 christos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
600 1.1 christos }
601 1.1 christos return cycles;
602 1.1 christos #undef FLD
603 1.1 christos }
604 1.1 christos
605 1.1 christos static int
606 1.1 christos model_m32r_d_bnc24 (SIM_CPU *current_cpu, void *sem_arg)
607 1.1 christos {
608 1.1 christos #define FLD(f) abuf->fields.sfmt_bl24.f
609 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
610 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
611 1.1 christos int cycles = 0;
612 1.1 christos {
613 1.1 christos int referenced = 0;
614 1.1 christos int UNUSED insn_referenced = abuf->written;
615 1.1 christos INT in_sr = -1;
616 1.1 christos if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
617 1.1 christos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
618 1.1 christos }
619 1.1 christos return cycles;
620 1.1 christos #undef FLD
621 1.1 christos }
622 1.1 christos
623 1.1 christos static int
624 1.1 christos model_m32r_d_bne (SIM_CPU *current_cpu, void *sem_arg)
625 1.1 christos {
626 1.1 christos #define FLD(f) abuf->fields.sfmt_beq.f
627 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
628 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
629 1.1 christos int cycles = 0;
630 1.1 christos {
631 1.1 christos int referenced = 0;
632 1.1 christos int UNUSED insn_referenced = abuf->written;
633 1.1 christos INT in_sr = -1;
634 1.1 christos if (insn_referenced & (1 << 3)) referenced |= 1 << 1;
635 1.1 christos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
636 1.1 christos }
637 1.1 christos {
638 1.1 christos int referenced = 0;
639 1.1 christos int UNUSED insn_referenced = abuf->written;
640 1.1 christos INT in_src1 = -1;
641 1.1 christos INT in_src2 = -1;
642 1.1 christos in_src1 = FLD (in_src1);
643 1.1 christos in_src2 = FLD (in_src2);
644 1.1 christos referenced |= 1 << 0;
645 1.1 christos referenced |= 1 << 1;
646 1.1 christos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 1, referenced, in_src1, in_src2);
647 1.1 christos }
648 1.1 christos return cycles;
649 1.1 christos #undef FLD
650 1.1 christos }
651 1.1 christos
652 1.1 christos static int
653 1.1 christos model_m32r_d_bra8 (SIM_CPU *current_cpu, void *sem_arg)
654 1.1 christos {
655 1.1 christos #define FLD(f) abuf->fields.sfmt_bl8.f
656 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
657 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
658 1.1 christos int cycles = 0;
659 1.1 christos {
660 1.1 christos int referenced = 0;
661 1.1 christos int UNUSED insn_referenced = abuf->written;
662 1.1 christos INT in_sr = -1;
663 1.1 christos referenced |= 1 << 1;
664 1.1 christos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
665 1.1 christos }
666 1.1 christos return cycles;
667 1.1 christos #undef FLD
668 1.1 christos }
669 1.1 christos
670 1.1 christos static int
671 1.1 christos model_m32r_d_bra24 (SIM_CPU *current_cpu, void *sem_arg)
672 1.1 christos {
673 1.1 christos #define FLD(f) abuf->fields.sfmt_bl24.f
674 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
675 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
676 1.1 christos int cycles = 0;
677 1.1 christos {
678 1.1 christos int referenced = 0;
679 1.1 christos int UNUSED insn_referenced = abuf->written;
680 1.1 christos INT in_sr = -1;
681 1.1 christos referenced |= 1 << 1;
682 1.1 christos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
683 1.1 christos }
684 1.1 christos return cycles;
685 1.1 christos #undef FLD
686 1.1 christos }
687 1.1 christos
688 1.1 christos static int
689 1.1 christos model_m32r_d_cmp (SIM_CPU *current_cpu, void *sem_arg)
690 1.1 christos {
691 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
692 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
693 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
694 1.1 christos int cycles = 0;
695 1.1 christos {
696 1.1 christos int referenced = 0;
697 1.1 christos int UNUSED insn_referenced = abuf->written;
698 1.1 christos INT in_src1 = -1;
699 1.1 christos INT in_src2 = -1;
700 1.1 christos in_src1 = FLD (in_src1);
701 1.1 christos in_src2 = FLD (in_src2);
702 1.1 christos referenced |= 1 << 0;
703 1.1 christos referenced |= 1 << 1;
704 1.1 christos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2);
705 1.1 christos }
706 1.1 christos return cycles;
707 1.1 christos #undef FLD
708 1.1 christos }
709 1.1 christos
710 1.1 christos static int
711 1.1 christos model_m32r_d_cmpi (SIM_CPU *current_cpu, void *sem_arg)
712 1.1 christos {
713 1.1 christos #define FLD(f) abuf->fields.sfmt_st_d.f
714 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
715 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
716 1.1 christos int cycles = 0;
717 1.1 christos {
718 1.1 christos int referenced = 0;
719 1.1 christos int UNUSED insn_referenced = abuf->written;
720 1.1 christos INT in_src1 = -1;
721 1.1 christos INT in_src2 = -1;
722 1.1 christos in_src2 = FLD (in_src2);
723 1.1 christos referenced |= 1 << 1;
724 1.1 christos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2);
725 1.1 christos }
726 1.1 christos return cycles;
727 1.1 christos #undef FLD
728 1.1 christos }
729 1.1 christos
730 1.1 christos static int
731 1.1 christos model_m32r_d_cmpu (SIM_CPU *current_cpu, void *sem_arg)
732 1.1 christos {
733 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
734 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
735 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
736 1.1 christos int cycles = 0;
737 1.1 christos {
738 1.1 christos int referenced = 0;
739 1.1 christos int UNUSED insn_referenced = abuf->written;
740 1.1 christos INT in_src1 = -1;
741 1.1 christos INT in_src2 = -1;
742 1.1 christos in_src1 = FLD (in_src1);
743 1.1 christos in_src2 = FLD (in_src2);
744 1.1 christos referenced |= 1 << 0;
745 1.1 christos referenced |= 1 << 1;
746 1.1 christos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2);
747 1.1 christos }
748 1.1 christos return cycles;
749 1.1 christos #undef FLD
750 1.1 christos }
751 1.1 christos
752 1.1 christos static int
753 1.1 christos model_m32r_d_cmpui (SIM_CPU *current_cpu, void *sem_arg)
754 1.1 christos {
755 1.1 christos #define FLD(f) abuf->fields.sfmt_st_d.f
756 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
757 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
758 1.1 christos int cycles = 0;
759 1.1 christos {
760 1.1 christos int referenced = 0;
761 1.1 christos int UNUSED insn_referenced = abuf->written;
762 1.1 christos INT in_src1 = -1;
763 1.1 christos INT in_src2 = -1;
764 1.1 christos in_src2 = FLD (in_src2);
765 1.1 christos referenced |= 1 << 1;
766 1.1 christos cycles += m32rbf_model_m32r_d_u_cmp (current_cpu, idesc, 0, referenced, in_src1, in_src2);
767 1.1 christos }
768 1.1 christos return cycles;
769 1.1 christos #undef FLD
770 1.1 christos }
771 1.1 christos
772 1.1 christos static int
773 1.1 christos model_m32r_d_div (SIM_CPU *current_cpu, void *sem_arg)
774 1.1 christos {
775 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
776 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
777 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
778 1.1 christos int cycles = 0;
779 1.1 christos {
780 1.1 christos int referenced = 0;
781 1.1 christos int UNUSED insn_referenced = abuf->written;
782 1.1 christos INT in_sr = -1;
783 1.1 christos INT in_dr = -1;
784 1.1 christos INT out_dr = -1;
785 1.1 christos in_sr = FLD (in_sr);
786 1.1 christos in_dr = FLD (in_dr);
787 1.1 christos out_dr = FLD (out_dr);
788 1.1 christos referenced |= 1 << 0;
789 1.1 christos if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
790 1.1 christos if (insn_referenced & (1 << 2)) referenced |= 1 << 2;
791 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
792 1.1 christos }
793 1.1 christos return cycles;
794 1.1 christos #undef FLD
795 1.1 christos }
796 1.1 christos
797 1.1 christos static int
798 1.1 christos model_m32r_d_divu (SIM_CPU *current_cpu, void *sem_arg)
799 1.1 christos {
800 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
801 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
802 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
803 1.1 christos int cycles = 0;
804 1.1 christos {
805 1.1 christos int referenced = 0;
806 1.1 christos int UNUSED insn_referenced = abuf->written;
807 1.1 christos INT in_sr = -1;
808 1.1 christos INT in_dr = -1;
809 1.1 christos INT out_dr = -1;
810 1.1 christos in_sr = FLD (in_sr);
811 1.1 christos in_dr = FLD (in_dr);
812 1.1 christos out_dr = FLD (out_dr);
813 1.1 christos referenced |= 1 << 0;
814 1.1 christos if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
815 1.1 christos if (insn_referenced & (1 << 2)) referenced |= 1 << 2;
816 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
817 1.1 christos }
818 1.1 christos return cycles;
819 1.1 christos #undef FLD
820 1.1 christos }
821 1.1 christos
822 1.1 christos static int
823 1.1 christos model_m32r_d_rem (SIM_CPU *current_cpu, void *sem_arg)
824 1.1 christos {
825 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
826 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
827 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
828 1.1 christos int cycles = 0;
829 1.1 christos {
830 1.1 christos int referenced = 0;
831 1.1 christos int UNUSED insn_referenced = abuf->written;
832 1.1 christos INT in_sr = -1;
833 1.1 christos INT in_dr = -1;
834 1.1 christos INT out_dr = -1;
835 1.1 christos in_sr = FLD (in_sr);
836 1.1 christos in_dr = FLD (in_dr);
837 1.1 christos out_dr = FLD (out_dr);
838 1.1 christos referenced |= 1 << 0;
839 1.1 christos if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
840 1.1 christos if (insn_referenced & (1 << 2)) referenced |= 1 << 2;
841 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
842 1.1 christos }
843 1.1 christos return cycles;
844 1.1 christos #undef FLD
845 1.1 christos }
846 1.1 christos
847 1.1 christos static int
848 1.1 christos model_m32r_d_remu (SIM_CPU *current_cpu, void *sem_arg)
849 1.1 christos {
850 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
851 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
852 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
853 1.1 christos int cycles = 0;
854 1.1 christos {
855 1.1 christos int referenced = 0;
856 1.1 christos int UNUSED insn_referenced = abuf->written;
857 1.1 christos INT in_sr = -1;
858 1.1 christos INT in_dr = -1;
859 1.1 christos INT out_dr = -1;
860 1.1 christos in_sr = FLD (in_sr);
861 1.1 christos in_dr = FLD (in_dr);
862 1.1 christos out_dr = FLD (out_dr);
863 1.1 christos referenced |= 1 << 0;
864 1.1 christos if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
865 1.1 christos if (insn_referenced & (1 << 2)) referenced |= 1 << 2;
866 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
867 1.1 christos }
868 1.1 christos return cycles;
869 1.1 christos #undef FLD
870 1.1 christos }
871 1.1 christos
872 1.1 christos static int
873 1.1 christos model_m32r_d_jl (SIM_CPU *current_cpu, void *sem_arg)
874 1.1 christos {
875 1.1 christos #define FLD(f) abuf->fields.sfmt_jl.f
876 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
877 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
878 1.1 christos int cycles = 0;
879 1.1 christos {
880 1.1 christos int referenced = 0;
881 1.1 christos int UNUSED insn_referenced = abuf->written;
882 1.1 christos INT in_sr = -1;
883 1.1 christos in_sr = FLD (in_sr);
884 1.1 christos referenced |= 1 << 0;
885 1.1 christos referenced |= 1 << 1;
886 1.1 christos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
887 1.1 christos }
888 1.1 christos return cycles;
889 1.1 christos #undef FLD
890 1.1 christos }
891 1.1 christos
892 1.1 christos static int
893 1.1 christos model_m32r_d_jmp (SIM_CPU *current_cpu, void *sem_arg)
894 1.1 christos {
895 1.1 christos #define FLD(f) abuf->fields.sfmt_jl.f
896 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
897 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
898 1.1 christos int cycles = 0;
899 1.1 christos {
900 1.1 christos int referenced = 0;
901 1.1 christos int UNUSED insn_referenced = abuf->written;
902 1.1 christos INT in_sr = -1;
903 1.1 christos in_sr = FLD (in_sr);
904 1.1 christos referenced |= 1 << 0;
905 1.1 christos referenced |= 1 << 1;
906 1.1 christos cycles += m32rbf_model_m32r_d_u_cti (current_cpu, idesc, 0, referenced, in_sr);
907 1.1 christos }
908 1.1 christos return cycles;
909 1.1 christos #undef FLD
910 1.1 christos }
911 1.1 christos
912 1.1 christos static int
913 1.1 christos model_m32r_d_ld (SIM_CPU *current_cpu, void *sem_arg)
914 1.1 christos {
915 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
916 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
917 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
918 1.1 christos int cycles = 0;
919 1.1 christos {
920 1.1 christos int referenced = 0;
921 1.1 christos int UNUSED insn_referenced = abuf->written;
922 1.1 christos INT in_sr = 0;
923 1.1 christos INT out_dr = 0;
924 1.1 christos in_sr = FLD (in_sr);
925 1.1 christos out_dr = FLD (out_dr);
926 1.1 christos referenced |= 1 << 0;
927 1.1 christos referenced |= 1 << 1;
928 1.1 christos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
929 1.1 christos }
930 1.1 christos return cycles;
931 1.1 christos #undef FLD
932 1.1 christos }
933 1.1 christos
934 1.1 christos static int
935 1.1 christos model_m32r_d_ld_d (SIM_CPU *current_cpu, void *sem_arg)
936 1.1 christos {
937 1.1 christos #define FLD(f) abuf->fields.sfmt_add3.f
938 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
939 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
940 1.1 christos int cycles = 0;
941 1.1 christos {
942 1.1 christos int referenced = 0;
943 1.1 christos int UNUSED insn_referenced = abuf->written;
944 1.1 christos INT in_sr = 0;
945 1.1 christos INT out_dr = 0;
946 1.1 christos in_sr = FLD (in_sr);
947 1.1 christos out_dr = FLD (out_dr);
948 1.1 christos referenced |= 1 << 0;
949 1.1 christos referenced |= 1 << 1;
950 1.1 christos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
951 1.1 christos }
952 1.1 christos return cycles;
953 1.1 christos #undef FLD
954 1.1 christos }
955 1.1 christos
956 1.1 christos static int
957 1.1 christos model_m32r_d_ldb (SIM_CPU *current_cpu, void *sem_arg)
958 1.1 christos {
959 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
960 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
961 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
962 1.1 christos int cycles = 0;
963 1.1 christos {
964 1.1 christos int referenced = 0;
965 1.1 christos int UNUSED insn_referenced = abuf->written;
966 1.1 christos INT in_sr = 0;
967 1.1 christos INT out_dr = 0;
968 1.1 christos in_sr = FLD (in_sr);
969 1.1 christos out_dr = FLD (out_dr);
970 1.1 christos referenced |= 1 << 0;
971 1.1 christos referenced |= 1 << 1;
972 1.1 christos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
973 1.1 christos }
974 1.1 christos return cycles;
975 1.1 christos #undef FLD
976 1.1 christos }
977 1.1 christos
978 1.1 christos static int
979 1.1 christos model_m32r_d_ldb_d (SIM_CPU *current_cpu, void *sem_arg)
980 1.1 christos {
981 1.1 christos #define FLD(f) abuf->fields.sfmt_add3.f
982 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
983 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
984 1.1 christos int cycles = 0;
985 1.1 christos {
986 1.1 christos int referenced = 0;
987 1.1 christos int UNUSED insn_referenced = abuf->written;
988 1.1 christos INT in_sr = 0;
989 1.1 christos INT out_dr = 0;
990 1.1 christos in_sr = FLD (in_sr);
991 1.1 christos out_dr = FLD (out_dr);
992 1.1 christos referenced |= 1 << 0;
993 1.1 christos referenced |= 1 << 1;
994 1.1 christos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
995 1.1 christos }
996 1.1 christos return cycles;
997 1.1 christos #undef FLD
998 1.1 christos }
999 1.1 christos
1000 1.1 christos static int
1001 1.1 christos model_m32r_d_ldh (SIM_CPU *current_cpu, void *sem_arg)
1002 1.1 christos {
1003 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
1004 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1005 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1006 1.1 christos int cycles = 0;
1007 1.1 christos {
1008 1.1 christos int referenced = 0;
1009 1.1 christos int UNUSED insn_referenced = abuf->written;
1010 1.1 christos INT in_sr = 0;
1011 1.1 christos INT out_dr = 0;
1012 1.1 christos in_sr = FLD (in_sr);
1013 1.1 christos out_dr = FLD (out_dr);
1014 1.1 christos referenced |= 1 << 0;
1015 1.1 christos referenced |= 1 << 1;
1016 1.1 christos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
1017 1.1 christos }
1018 1.1 christos return cycles;
1019 1.1 christos #undef FLD
1020 1.1 christos }
1021 1.1 christos
1022 1.1 christos static int
1023 1.1 christos model_m32r_d_ldh_d (SIM_CPU *current_cpu, void *sem_arg)
1024 1.1 christos {
1025 1.1 christos #define FLD(f) abuf->fields.sfmt_add3.f
1026 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1027 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1028 1.1 christos int cycles = 0;
1029 1.1 christos {
1030 1.1 christos int referenced = 0;
1031 1.1 christos int UNUSED insn_referenced = abuf->written;
1032 1.1 christos INT in_sr = 0;
1033 1.1 christos INT out_dr = 0;
1034 1.1 christos in_sr = FLD (in_sr);
1035 1.1 christos out_dr = FLD (out_dr);
1036 1.1 christos referenced |= 1 << 0;
1037 1.1 christos referenced |= 1 << 1;
1038 1.1 christos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
1039 1.1 christos }
1040 1.1 christos return cycles;
1041 1.1 christos #undef FLD
1042 1.1 christos }
1043 1.1 christos
1044 1.1 christos static int
1045 1.1 christos model_m32r_d_ldub (SIM_CPU *current_cpu, void *sem_arg)
1046 1.1 christos {
1047 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
1048 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1049 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1050 1.1 christos int cycles = 0;
1051 1.1 christos {
1052 1.1 christos int referenced = 0;
1053 1.1 christos int UNUSED insn_referenced = abuf->written;
1054 1.1 christos INT in_sr = 0;
1055 1.1 christos INT out_dr = 0;
1056 1.1 christos in_sr = FLD (in_sr);
1057 1.1 christos out_dr = FLD (out_dr);
1058 1.1 christos referenced |= 1 << 0;
1059 1.1 christos referenced |= 1 << 1;
1060 1.1 christos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
1061 1.1 christos }
1062 1.1 christos return cycles;
1063 1.1 christos #undef FLD
1064 1.1 christos }
1065 1.1 christos
1066 1.1 christos static int
1067 1.1 christos model_m32r_d_ldub_d (SIM_CPU *current_cpu, void *sem_arg)
1068 1.1 christos {
1069 1.1 christos #define FLD(f) abuf->fields.sfmt_add3.f
1070 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1071 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1072 1.1 christos int cycles = 0;
1073 1.1 christos {
1074 1.1 christos int referenced = 0;
1075 1.1 christos int UNUSED insn_referenced = abuf->written;
1076 1.1 christos INT in_sr = 0;
1077 1.1 christos INT out_dr = 0;
1078 1.1 christos in_sr = FLD (in_sr);
1079 1.1 christos out_dr = FLD (out_dr);
1080 1.1 christos referenced |= 1 << 0;
1081 1.1 christos referenced |= 1 << 1;
1082 1.1 christos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
1083 1.1 christos }
1084 1.1 christos return cycles;
1085 1.1 christos #undef FLD
1086 1.1 christos }
1087 1.1 christos
1088 1.1 christos static int
1089 1.1 christos model_m32r_d_lduh (SIM_CPU *current_cpu, void *sem_arg)
1090 1.1 christos {
1091 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
1092 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1093 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1094 1.1 christos int cycles = 0;
1095 1.1 christos {
1096 1.1 christos int referenced = 0;
1097 1.1 christos int UNUSED insn_referenced = abuf->written;
1098 1.1 christos INT in_sr = 0;
1099 1.1 christos INT out_dr = 0;
1100 1.1 christos in_sr = FLD (in_sr);
1101 1.1 christos out_dr = FLD (out_dr);
1102 1.1 christos referenced |= 1 << 0;
1103 1.1 christos referenced |= 1 << 1;
1104 1.1 christos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
1105 1.1 christos }
1106 1.1 christos return cycles;
1107 1.1 christos #undef FLD
1108 1.1 christos }
1109 1.1 christos
1110 1.1 christos static int
1111 1.1 christos model_m32r_d_lduh_d (SIM_CPU *current_cpu, void *sem_arg)
1112 1.1 christos {
1113 1.1 christos #define FLD(f) abuf->fields.sfmt_add3.f
1114 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1115 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1116 1.1 christos int cycles = 0;
1117 1.1 christos {
1118 1.1 christos int referenced = 0;
1119 1.1 christos int UNUSED insn_referenced = abuf->written;
1120 1.1 christos INT in_sr = 0;
1121 1.1 christos INT out_dr = 0;
1122 1.1 christos in_sr = FLD (in_sr);
1123 1.1 christos out_dr = FLD (out_dr);
1124 1.1 christos referenced |= 1 << 0;
1125 1.1 christos referenced |= 1 << 1;
1126 1.1 christos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
1127 1.1 christos }
1128 1.1 christos return cycles;
1129 1.1 christos #undef FLD
1130 1.1 christos }
1131 1.1 christos
1132 1.1 christos static int
1133 1.1 christos model_m32r_d_ld_plus (SIM_CPU *current_cpu, void *sem_arg)
1134 1.1 christos {
1135 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
1136 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1137 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1138 1.1 christos int cycles = 0;
1139 1.1 christos {
1140 1.1 christos int referenced = 0;
1141 1.1 christos int UNUSED insn_referenced = abuf->written;
1142 1.1 christos INT in_sr = 0;
1143 1.1 christos INT out_dr = 0;
1144 1.1 christos in_sr = FLD (in_sr);
1145 1.1 christos out_dr = FLD (out_dr);
1146 1.1 christos referenced |= 1 << 0;
1147 1.1 christos referenced |= 1 << 1;
1148 1.1 christos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
1149 1.1 christos }
1150 1.1 christos {
1151 1.1 christos int referenced = 0;
1152 1.1 christos int UNUSED insn_referenced = abuf->written;
1153 1.1 christos INT in_sr = -1;
1154 1.1 christos INT in_dr = -1;
1155 1.1 christos INT out_dr = -1;
1156 1.1 christos in_dr = FLD (in_sr);
1157 1.1 christos out_dr = FLD (out_sr);
1158 1.1 christos referenced |= 1 << 0;
1159 1.1 christos referenced |= 1 << 2;
1160 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr);
1161 1.1 christos }
1162 1.1 christos return cycles;
1163 1.1 christos #undef FLD
1164 1.1 christos }
1165 1.1 christos
1166 1.1 christos static int
1167 1.1 christos model_m32r_d_ld24 (SIM_CPU *current_cpu, void *sem_arg)
1168 1.1 christos {
1169 1.1 christos #define FLD(f) abuf->fields.sfmt_ld24.f
1170 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1171 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1172 1.1 christos int cycles = 0;
1173 1.1 christos {
1174 1.1 christos int referenced = 0;
1175 1.1 christos int UNUSED insn_referenced = abuf->written;
1176 1.1 christos INT in_sr = -1;
1177 1.1 christos INT in_dr = -1;
1178 1.1 christos INT out_dr = -1;
1179 1.1 christos out_dr = FLD (out_dr);
1180 1.1 christos referenced |= 1 << 2;
1181 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1182 1.1 christos }
1183 1.1 christos return cycles;
1184 1.1 christos #undef FLD
1185 1.1 christos }
1186 1.1 christos
1187 1.1 christos static int
1188 1.1 christos model_m32r_d_ldi8 (SIM_CPU *current_cpu, void *sem_arg)
1189 1.1 christos {
1190 1.1 christos #define FLD(f) abuf->fields.sfmt_addi.f
1191 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1192 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1193 1.1 christos int cycles = 0;
1194 1.1 christos {
1195 1.1 christos int referenced = 0;
1196 1.1 christos int UNUSED insn_referenced = abuf->written;
1197 1.1 christos INT in_sr = -1;
1198 1.1 christos INT in_dr = -1;
1199 1.1 christos INT out_dr = -1;
1200 1.1 christos out_dr = FLD (out_dr);
1201 1.1 christos referenced |= 1 << 2;
1202 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1203 1.1 christos }
1204 1.1 christos return cycles;
1205 1.1 christos #undef FLD
1206 1.1 christos }
1207 1.1 christos
1208 1.1 christos static int
1209 1.1 christos model_m32r_d_ldi16 (SIM_CPU *current_cpu, void *sem_arg)
1210 1.1 christos {
1211 1.1 christos #define FLD(f) abuf->fields.sfmt_add3.f
1212 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1213 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1214 1.1 christos int cycles = 0;
1215 1.1 christos {
1216 1.1 christos int referenced = 0;
1217 1.1 christos int UNUSED insn_referenced = abuf->written;
1218 1.1 christos INT in_sr = -1;
1219 1.1 christos INT in_dr = -1;
1220 1.1 christos INT out_dr = -1;
1221 1.1 christos out_dr = FLD (out_dr);
1222 1.1 christos referenced |= 1 << 2;
1223 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1224 1.1 christos }
1225 1.1 christos return cycles;
1226 1.1 christos #undef FLD
1227 1.1 christos }
1228 1.1 christos
1229 1.1 christos static int
1230 1.1 christos model_m32r_d_lock (SIM_CPU *current_cpu, void *sem_arg)
1231 1.1 christos {
1232 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
1233 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1234 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1235 1.1 christos int cycles = 0;
1236 1.1 christos {
1237 1.1 christos int referenced = 0;
1238 1.1 christos int UNUSED insn_referenced = abuf->written;
1239 1.1 christos INT in_sr = 0;
1240 1.1 christos INT out_dr = 0;
1241 1.1 christos in_sr = FLD (in_sr);
1242 1.1 christos out_dr = FLD (out_dr);
1243 1.1 christos referenced |= 1 << 0;
1244 1.1 christos referenced |= 1 << 1;
1245 1.1 christos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
1246 1.1 christos }
1247 1.1 christos return cycles;
1248 1.1 christos #undef FLD
1249 1.1 christos }
1250 1.1 christos
1251 1.1 christos static int
1252 1.1 christos model_m32r_d_machi (SIM_CPU *current_cpu, void *sem_arg)
1253 1.1 christos {
1254 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
1255 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1256 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1257 1.1 christos int cycles = 0;
1258 1.1 christos {
1259 1.1 christos int referenced = 0;
1260 1.1 christos int UNUSED insn_referenced = abuf->written;
1261 1.1 christos INT in_src1 = -1;
1262 1.1 christos INT in_src2 = -1;
1263 1.1 christos in_src1 = FLD (in_src1);
1264 1.1 christos in_src2 = FLD (in_src2);
1265 1.1 christos referenced |= 1 << 0;
1266 1.1 christos referenced |= 1 << 1;
1267 1.1 christos cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
1268 1.1 christos }
1269 1.1 christos return cycles;
1270 1.1 christos #undef FLD
1271 1.1 christos }
1272 1.1 christos
1273 1.1 christos static int
1274 1.1 christos model_m32r_d_maclo (SIM_CPU *current_cpu, void *sem_arg)
1275 1.1 christos {
1276 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
1277 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1278 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1279 1.1 christos int cycles = 0;
1280 1.1 christos {
1281 1.1 christos int referenced = 0;
1282 1.1 christos int UNUSED insn_referenced = abuf->written;
1283 1.1 christos INT in_src1 = -1;
1284 1.1 christos INT in_src2 = -1;
1285 1.1 christos in_src1 = FLD (in_src1);
1286 1.1 christos in_src2 = FLD (in_src2);
1287 1.1 christos referenced |= 1 << 0;
1288 1.1 christos referenced |= 1 << 1;
1289 1.1 christos cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
1290 1.1 christos }
1291 1.1 christos return cycles;
1292 1.1 christos #undef FLD
1293 1.1 christos }
1294 1.1 christos
1295 1.1 christos static int
1296 1.1 christos model_m32r_d_macwhi (SIM_CPU *current_cpu, void *sem_arg)
1297 1.1 christos {
1298 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
1299 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1300 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1301 1.1 christos int cycles = 0;
1302 1.1 christos {
1303 1.1 christos int referenced = 0;
1304 1.1 christos int UNUSED insn_referenced = abuf->written;
1305 1.1 christos INT in_src1 = -1;
1306 1.1 christos INT in_src2 = -1;
1307 1.1 christos in_src1 = FLD (in_src1);
1308 1.1 christos in_src2 = FLD (in_src2);
1309 1.1 christos referenced |= 1 << 0;
1310 1.1 christos referenced |= 1 << 1;
1311 1.1 christos cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
1312 1.1 christos }
1313 1.1 christos return cycles;
1314 1.1 christos #undef FLD
1315 1.1 christos }
1316 1.1 christos
1317 1.1 christos static int
1318 1.1 christos model_m32r_d_macwlo (SIM_CPU *current_cpu, void *sem_arg)
1319 1.1 christos {
1320 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
1321 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1322 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1323 1.1 christos int cycles = 0;
1324 1.1 christos {
1325 1.1 christos int referenced = 0;
1326 1.1 christos int UNUSED insn_referenced = abuf->written;
1327 1.1 christos INT in_src1 = -1;
1328 1.1 christos INT in_src2 = -1;
1329 1.1 christos in_src1 = FLD (in_src1);
1330 1.1 christos in_src2 = FLD (in_src2);
1331 1.1 christos referenced |= 1 << 0;
1332 1.1 christos referenced |= 1 << 1;
1333 1.1 christos cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
1334 1.1 christos }
1335 1.1 christos return cycles;
1336 1.1 christos #undef FLD
1337 1.1 christos }
1338 1.1 christos
1339 1.1 christos static int
1340 1.1 christos model_m32r_d_mul (SIM_CPU *current_cpu, void *sem_arg)
1341 1.1 christos {
1342 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
1343 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1344 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1345 1.1 christos int cycles = 0;
1346 1.1 christos {
1347 1.1 christos int referenced = 0;
1348 1.1 christos int UNUSED insn_referenced = abuf->written;
1349 1.1 christos INT in_sr = -1;
1350 1.1 christos INT in_dr = -1;
1351 1.1 christos INT out_dr = -1;
1352 1.1 christos in_sr = FLD (in_sr);
1353 1.1 christos in_dr = FLD (in_dr);
1354 1.1 christos out_dr = FLD (out_dr);
1355 1.1 christos referenced |= 1 << 0;
1356 1.1 christos referenced |= 1 << 1;
1357 1.1 christos referenced |= 1 << 2;
1358 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1359 1.1 christos }
1360 1.1 christos return cycles;
1361 1.1 christos #undef FLD
1362 1.1 christos }
1363 1.1 christos
1364 1.1 christos static int
1365 1.1 christos model_m32r_d_mulhi (SIM_CPU *current_cpu, void *sem_arg)
1366 1.1 christos {
1367 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
1368 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1369 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1370 1.1 christos int cycles = 0;
1371 1.1 christos {
1372 1.1 christos int referenced = 0;
1373 1.1 christos int UNUSED insn_referenced = abuf->written;
1374 1.1 christos INT in_src1 = -1;
1375 1.1 christos INT in_src2 = -1;
1376 1.1 christos in_src1 = FLD (in_src1);
1377 1.1 christos in_src2 = FLD (in_src2);
1378 1.1 christos referenced |= 1 << 0;
1379 1.1 christos referenced |= 1 << 1;
1380 1.1 christos cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
1381 1.1 christos }
1382 1.1 christos return cycles;
1383 1.1 christos #undef FLD
1384 1.1 christos }
1385 1.1 christos
1386 1.1 christos static int
1387 1.1 christos model_m32r_d_mullo (SIM_CPU *current_cpu, void *sem_arg)
1388 1.1 christos {
1389 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
1390 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1391 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1392 1.1 christos int cycles = 0;
1393 1.1 christos {
1394 1.1 christos int referenced = 0;
1395 1.1 christos int UNUSED insn_referenced = abuf->written;
1396 1.1 christos INT in_src1 = -1;
1397 1.1 christos INT in_src2 = -1;
1398 1.1 christos in_src1 = FLD (in_src1);
1399 1.1 christos in_src2 = FLD (in_src2);
1400 1.1 christos referenced |= 1 << 0;
1401 1.1 christos referenced |= 1 << 1;
1402 1.1 christos cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
1403 1.1 christos }
1404 1.1 christos return cycles;
1405 1.1 christos #undef FLD
1406 1.1 christos }
1407 1.1 christos
1408 1.1 christos static int
1409 1.1 christos model_m32r_d_mulwhi (SIM_CPU *current_cpu, void *sem_arg)
1410 1.1 christos {
1411 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
1412 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1413 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1414 1.1 christos int cycles = 0;
1415 1.1 christos {
1416 1.1 christos int referenced = 0;
1417 1.1 christos int UNUSED insn_referenced = abuf->written;
1418 1.1 christos INT in_src1 = -1;
1419 1.1 christos INT in_src2 = -1;
1420 1.1 christos in_src1 = FLD (in_src1);
1421 1.1 christos in_src2 = FLD (in_src2);
1422 1.1 christos referenced |= 1 << 0;
1423 1.1 christos referenced |= 1 << 1;
1424 1.1 christos cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
1425 1.1 christos }
1426 1.1 christos return cycles;
1427 1.1 christos #undef FLD
1428 1.1 christos }
1429 1.1 christos
1430 1.1 christos static int
1431 1.1 christos model_m32r_d_mulwlo (SIM_CPU *current_cpu, void *sem_arg)
1432 1.1 christos {
1433 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
1434 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1435 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1436 1.1 christos int cycles = 0;
1437 1.1 christos {
1438 1.1 christos int referenced = 0;
1439 1.1 christos int UNUSED insn_referenced = abuf->written;
1440 1.1 christos INT in_src1 = -1;
1441 1.1 christos INT in_src2 = -1;
1442 1.1 christos in_src1 = FLD (in_src1);
1443 1.1 christos in_src2 = FLD (in_src2);
1444 1.1 christos referenced |= 1 << 0;
1445 1.1 christos referenced |= 1 << 1;
1446 1.1 christos cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
1447 1.1 christos }
1448 1.1 christos return cycles;
1449 1.1 christos #undef FLD
1450 1.1 christos }
1451 1.1 christos
1452 1.1 christos static int
1453 1.1 christos model_m32r_d_mv (SIM_CPU *current_cpu, void *sem_arg)
1454 1.1 christos {
1455 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
1456 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1457 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1458 1.1 christos int cycles = 0;
1459 1.1 christos {
1460 1.1 christos int referenced = 0;
1461 1.1 christos int UNUSED insn_referenced = abuf->written;
1462 1.1 christos INT in_sr = -1;
1463 1.1 christos INT in_dr = -1;
1464 1.1 christos INT out_dr = -1;
1465 1.1 christos in_sr = FLD (in_sr);
1466 1.1 christos out_dr = FLD (out_dr);
1467 1.1 christos referenced |= 1 << 0;
1468 1.1 christos referenced |= 1 << 2;
1469 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1470 1.1 christos }
1471 1.1 christos return cycles;
1472 1.1 christos #undef FLD
1473 1.1 christos }
1474 1.1 christos
1475 1.1 christos static int
1476 1.1 christos model_m32r_d_mvfachi (SIM_CPU *current_cpu, void *sem_arg)
1477 1.1 christos {
1478 1.1 christos #define FLD(f) abuf->fields.sfmt_seth.f
1479 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1480 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1481 1.1 christos int cycles = 0;
1482 1.1 christos {
1483 1.1 christos int referenced = 0;
1484 1.1 christos int UNUSED insn_referenced = abuf->written;
1485 1.1 christos INT in_sr = -1;
1486 1.1 christos INT in_dr = -1;
1487 1.1 christos INT out_dr = -1;
1488 1.1 christos out_dr = FLD (out_dr);
1489 1.1 christos referenced |= 1 << 2;
1490 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1491 1.1 christos }
1492 1.1 christos return cycles;
1493 1.1 christos #undef FLD
1494 1.1 christos }
1495 1.1 christos
1496 1.1 christos static int
1497 1.1 christos model_m32r_d_mvfaclo (SIM_CPU *current_cpu, void *sem_arg)
1498 1.1 christos {
1499 1.1 christos #define FLD(f) abuf->fields.sfmt_seth.f
1500 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1501 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1502 1.1 christos int cycles = 0;
1503 1.1 christos {
1504 1.1 christos int referenced = 0;
1505 1.1 christos int UNUSED insn_referenced = abuf->written;
1506 1.1 christos INT in_sr = -1;
1507 1.1 christos INT in_dr = -1;
1508 1.1 christos INT out_dr = -1;
1509 1.1 christos out_dr = FLD (out_dr);
1510 1.1 christos referenced |= 1 << 2;
1511 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1512 1.1 christos }
1513 1.1 christos return cycles;
1514 1.1 christos #undef FLD
1515 1.1 christos }
1516 1.1 christos
1517 1.1 christos static int
1518 1.1 christos model_m32r_d_mvfacmi (SIM_CPU *current_cpu, void *sem_arg)
1519 1.1 christos {
1520 1.1 christos #define FLD(f) abuf->fields.sfmt_seth.f
1521 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1522 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1523 1.1 christos int cycles = 0;
1524 1.1 christos {
1525 1.1 christos int referenced = 0;
1526 1.1 christos int UNUSED insn_referenced = abuf->written;
1527 1.1 christos INT in_sr = -1;
1528 1.1 christos INT in_dr = -1;
1529 1.1 christos INT out_dr = -1;
1530 1.1 christos out_dr = FLD (out_dr);
1531 1.1 christos referenced |= 1 << 2;
1532 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1533 1.1 christos }
1534 1.1 christos return cycles;
1535 1.1 christos #undef FLD
1536 1.1 christos }
1537 1.1 christos
1538 1.1 christos static int
1539 1.1 christos model_m32r_d_mvfc (SIM_CPU *current_cpu, void *sem_arg)
1540 1.1 christos {
1541 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
1542 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1543 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1544 1.1 christos int cycles = 0;
1545 1.1 christos {
1546 1.1 christos int referenced = 0;
1547 1.1 christos int UNUSED insn_referenced = abuf->written;
1548 1.1 christos INT in_sr = -1;
1549 1.1 christos INT in_dr = -1;
1550 1.1 christos INT out_dr = -1;
1551 1.1 christos out_dr = FLD (out_dr);
1552 1.1 christos referenced |= 1 << 2;
1553 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1554 1.1 christos }
1555 1.1 christos return cycles;
1556 1.1 christos #undef FLD
1557 1.1 christos }
1558 1.1 christos
1559 1.1 christos static int
1560 1.1 christos model_m32r_d_mvtachi (SIM_CPU *current_cpu, void *sem_arg)
1561 1.1 christos {
1562 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
1563 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1564 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1565 1.1 christos int cycles = 0;
1566 1.1 christos {
1567 1.1 christos int referenced = 0;
1568 1.1 christos int UNUSED insn_referenced = abuf->written;
1569 1.1 christos INT in_sr = -1;
1570 1.1 christos INT in_dr = -1;
1571 1.1 christos INT out_dr = -1;
1572 1.1 christos in_sr = FLD (in_src1);
1573 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1574 1.1 christos }
1575 1.1 christos return cycles;
1576 1.1 christos #undef FLD
1577 1.1 christos }
1578 1.1 christos
1579 1.1 christos static int
1580 1.1 christos model_m32r_d_mvtaclo (SIM_CPU *current_cpu, void *sem_arg)
1581 1.1 christos {
1582 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
1583 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1584 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1585 1.1 christos int cycles = 0;
1586 1.1 christos {
1587 1.1 christos int referenced = 0;
1588 1.1 christos int UNUSED insn_referenced = abuf->written;
1589 1.1 christos INT in_sr = -1;
1590 1.1 christos INT in_dr = -1;
1591 1.1 christos INT out_dr = -1;
1592 1.1 christos in_sr = FLD (in_src1);
1593 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1594 1.1 christos }
1595 1.1 christos return cycles;
1596 1.1 christos #undef FLD
1597 1.1 christos }
1598 1.1 christos
1599 1.1 christos static int
1600 1.1 christos model_m32r_d_mvtc (SIM_CPU *current_cpu, void *sem_arg)
1601 1.1 christos {
1602 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
1603 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1604 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1605 1.1 christos int cycles = 0;
1606 1.1 christos {
1607 1.1 christos int referenced = 0;
1608 1.1 christos int UNUSED insn_referenced = abuf->written;
1609 1.1 christos INT in_sr = -1;
1610 1.1 christos INT in_dr = -1;
1611 1.1 christos INT out_dr = -1;
1612 1.1 christos in_sr = FLD (in_sr);
1613 1.1 christos referenced |= 1 << 0;
1614 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1615 1.1 christos }
1616 1.1 christos return cycles;
1617 1.1 christos #undef FLD
1618 1.1 christos }
1619 1.1 christos
1620 1.1 christos static int
1621 1.1 christos model_m32r_d_neg (SIM_CPU *current_cpu, void *sem_arg)
1622 1.1 christos {
1623 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
1624 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1625 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1626 1.1 christos int cycles = 0;
1627 1.1 christos {
1628 1.1 christos int referenced = 0;
1629 1.1 christos int UNUSED insn_referenced = abuf->written;
1630 1.1 christos INT in_sr = -1;
1631 1.1 christos INT in_dr = -1;
1632 1.1 christos INT out_dr = -1;
1633 1.1 christos in_sr = FLD (in_sr);
1634 1.1 christos out_dr = FLD (out_dr);
1635 1.1 christos referenced |= 1 << 0;
1636 1.1 christos referenced |= 1 << 2;
1637 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1638 1.1 christos }
1639 1.1 christos return cycles;
1640 1.1 christos #undef FLD
1641 1.1 christos }
1642 1.1 christos
1643 1.1 christos static int
1644 1.1 christos model_m32r_d_nop (SIM_CPU *current_cpu, void *sem_arg)
1645 1.1 christos {
1646 1.1 christos #define FLD(f) abuf->fields.sfmt_empty.f
1647 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1648 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1649 1.1 christos int cycles = 0;
1650 1.1 christos {
1651 1.1 christos int referenced = 0;
1652 1.1 christos int UNUSED insn_referenced = abuf->written;
1653 1.1 christos INT in_sr = -1;
1654 1.1 christos INT in_dr = -1;
1655 1.1 christos INT out_dr = -1;
1656 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1657 1.1 christos }
1658 1.1 christos return cycles;
1659 1.1 christos #undef FLD
1660 1.1 christos }
1661 1.1 christos
1662 1.1 christos static int
1663 1.1 christos model_m32r_d_not (SIM_CPU *current_cpu, void *sem_arg)
1664 1.1 christos {
1665 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
1666 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1667 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1668 1.1 christos int cycles = 0;
1669 1.1 christos {
1670 1.1 christos int referenced = 0;
1671 1.1 christos int UNUSED insn_referenced = abuf->written;
1672 1.1 christos INT in_sr = -1;
1673 1.1 christos INT in_dr = -1;
1674 1.1 christos INT out_dr = -1;
1675 1.1 christos in_sr = FLD (in_sr);
1676 1.1 christos out_dr = FLD (out_dr);
1677 1.1 christos referenced |= 1 << 0;
1678 1.1 christos referenced |= 1 << 2;
1679 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1680 1.1 christos }
1681 1.1 christos return cycles;
1682 1.1 christos #undef FLD
1683 1.1 christos }
1684 1.1 christos
1685 1.1 christos static int
1686 1.1 christos model_m32r_d_rac (SIM_CPU *current_cpu, void *sem_arg)
1687 1.1 christos {
1688 1.1 christos #define FLD(f) abuf->fields.sfmt_empty.f
1689 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1690 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1691 1.1 christos int cycles = 0;
1692 1.1 christos {
1693 1.1 christos int referenced = 0;
1694 1.1 christos int UNUSED insn_referenced = abuf->written;
1695 1.1 christos INT in_src1 = -1;
1696 1.1 christos INT in_src2 = -1;
1697 1.1 christos cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
1698 1.1 christos }
1699 1.1 christos return cycles;
1700 1.1 christos #undef FLD
1701 1.1 christos }
1702 1.1 christos
1703 1.1 christos static int
1704 1.1 christos model_m32r_d_rach (SIM_CPU *current_cpu, void *sem_arg)
1705 1.1 christos {
1706 1.1 christos #define FLD(f) abuf->fields.sfmt_empty.f
1707 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1708 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1709 1.1 christos int cycles = 0;
1710 1.1 christos {
1711 1.1 christos int referenced = 0;
1712 1.1 christos int UNUSED insn_referenced = abuf->written;
1713 1.1 christos INT in_src1 = -1;
1714 1.1 christos INT in_src2 = -1;
1715 1.1 christos cycles += m32rbf_model_m32r_d_u_mac (current_cpu, idesc, 0, referenced, in_src1, in_src2);
1716 1.1 christos }
1717 1.1 christos return cycles;
1718 1.1 christos #undef FLD
1719 1.1 christos }
1720 1.1 christos
1721 1.1 christos static int
1722 1.1 christos model_m32r_d_rte (SIM_CPU *current_cpu, void *sem_arg)
1723 1.1 christos {
1724 1.1 christos #define FLD(f) abuf->fields.sfmt_empty.f
1725 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1726 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1727 1.1 christos int cycles = 0;
1728 1.1 christos {
1729 1.1 christos int referenced = 0;
1730 1.1 christos int UNUSED insn_referenced = abuf->written;
1731 1.1 christos INT in_sr = -1;
1732 1.1 christos INT in_dr = -1;
1733 1.1 christos INT out_dr = -1;
1734 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1735 1.1 christos }
1736 1.1 christos return cycles;
1737 1.1 christos #undef FLD
1738 1.1 christos }
1739 1.1 christos
1740 1.1 christos static int
1741 1.1 christos model_m32r_d_seth (SIM_CPU *current_cpu, void *sem_arg)
1742 1.1 christos {
1743 1.1 christos #define FLD(f) abuf->fields.sfmt_seth.f
1744 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1745 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1746 1.1 christos int cycles = 0;
1747 1.1 christos {
1748 1.1 christos int referenced = 0;
1749 1.1 christos int UNUSED insn_referenced = abuf->written;
1750 1.1 christos INT in_sr = -1;
1751 1.1 christos INT in_dr = -1;
1752 1.1 christos INT out_dr = -1;
1753 1.1 christos out_dr = FLD (out_dr);
1754 1.1 christos referenced |= 1 << 2;
1755 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1756 1.1 christos }
1757 1.1 christos return cycles;
1758 1.1 christos #undef FLD
1759 1.1 christos }
1760 1.1 christos
1761 1.1 christos static int
1762 1.1 christos model_m32r_d_sll (SIM_CPU *current_cpu, void *sem_arg)
1763 1.1 christos {
1764 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
1765 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1766 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1767 1.1 christos int cycles = 0;
1768 1.1 christos {
1769 1.1 christos int referenced = 0;
1770 1.1 christos int UNUSED insn_referenced = abuf->written;
1771 1.1 christos INT in_sr = -1;
1772 1.1 christos INT in_dr = -1;
1773 1.1 christos INT out_dr = -1;
1774 1.1 christos in_sr = FLD (in_sr);
1775 1.1 christos in_dr = FLD (in_dr);
1776 1.1 christos out_dr = FLD (out_dr);
1777 1.1 christos referenced |= 1 << 0;
1778 1.1 christos referenced |= 1 << 1;
1779 1.1 christos referenced |= 1 << 2;
1780 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1781 1.1 christos }
1782 1.1 christos return cycles;
1783 1.1 christos #undef FLD
1784 1.1 christos }
1785 1.1 christos
1786 1.1 christos static int
1787 1.1 christos model_m32r_d_sll3 (SIM_CPU *current_cpu, void *sem_arg)
1788 1.1 christos {
1789 1.1 christos #define FLD(f) abuf->fields.sfmt_add3.f
1790 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1791 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1792 1.1 christos int cycles = 0;
1793 1.1 christos {
1794 1.1 christos int referenced = 0;
1795 1.1 christos int UNUSED insn_referenced = abuf->written;
1796 1.1 christos INT in_sr = -1;
1797 1.1 christos INT in_dr = -1;
1798 1.1 christos INT out_dr = -1;
1799 1.1 christos in_sr = FLD (in_sr);
1800 1.1 christos out_dr = FLD (out_dr);
1801 1.1 christos referenced |= 1 << 0;
1802 1.1 christos referenced |= 1 << 2;
1803 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1804 1.1 christos }
1805 1.1 christos return cycles;
1806 1.1 christos #undef FLD
1807 1.1 christos }
1808 1.1 christos
1809 1.1 christos static int
1810 1.1 christos model_m32r_d_slli (SIM_CPU *current_cpu, void *sem_arg)
1811 1.1 christos {
1812 1.1 christos #define FLD(f) abuf->fields.sfmt_slli.f
1813 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1814 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1815 1.1 christos int cycles = 0;
1816 1.1 christos {
1817 1.1 christos int referenced = 0;
1818 1.1 christos int UNUSED insn_referenced = abuf->written;
1819 1.1 christos INT in_sr = -1;
1820 1.1 christos INT in_dr = -1;
1821 1.1 christos INT out_dr = -1;
1822 1.1 christos in_dr = FLD (in_dr);
1823 1.1 christos out_dr = FLD (out_dr);
1824 1.1 christos referenced |= 1 << 1;
1825 1.1 christos referenced |= 1 << 2;
1826 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1827 1.1 christos }
1828 1.1 christos return cycles;
1829 1.1 christos #undef FLD
1830 1.1 christos }
1831 1.1 christos
1832 1.1 christos static int
1833 1.1 christos model_m32r_d_sra (SIM_CPU *current_cpu, void *sem_arg)
1834 1.1 christos {
1835 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
1836 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1837 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1838 1.1 christos int cycles = 0;
1839 1.1 christos {
1840 1.1 christos int referenced = 0;
1841 1.1 christos int UNUSED insn_referenced = abuf->written;
1842 1.1 christos INT in_sr = -1;
1843 1.1 christos INT in_dr = -1;
1844 1.1 christos INT out_dr = -1;
1845 1.1 christos in_sr = FLD (in_sr);
1846 1.1 christos in_dr = FLD (in_dr);
1847 1.1 christos out_dr = FLD (out_dr);
1848 1.1 christos referenced |= 1 << 0;
1849 1.1 christos referenced |= 1 << 1;
1850 1.1 christos referenced |= 1 << 2;
1851 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1852 1.1 christos }
1853 1.1 christos return cycles;
1854 1.1 christos #undef FLD
1855 1.1 christos }
1856 1.1 christos
1857 1.1 christos static int
1858 1.1 christos model_m32r_d_sra3 (SIM_CPU *current_cpu, void *sem_arg)
1859 1.1 christos {
1860 1.1 christos #define FLD(f) abuf->fields.sfmt_add3.f
1861 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1862 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1863 1.1 christos int cycles = 0;
1864 1.1 christos {
1865 1.1 christos int referenced = 0;
1866 1.1 christos int UNUSED insn_referenced = abuf->written;
1867 1.1 christos INT in_sr = -1;
1868 1.1 christos INT in_dr = -1;
1869 1.1 christos INT out_dr = -1;
1870 1.1 christos in_sr = FLD (in_sr);
1871 1.1 christos out_dr = FLD (out_dr);
1872 1.1 christos referenced |= 1 << 0;
1873 1.1 christos referenced |= 1 << 2;
1874 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1875 1.1 christos }
1876 1.1 christos return cycles;
1877 1.1 christos #undef FLD
1878 1.1 christos }
1879 1.1 christos
1880 1.1 christos static int
1881 1.1 christos model_m32r_d_srai (SIM_CPU *current_cpu, void *sem_arg)
1882 1.1 christos {
1883 1.1 christos #define FLD(f) abuf->fields.sfmt_slli.f
1884 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1885 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1886 1.1 christos int cycles = 0;
1887 1.1 christos {
1888 1.1 christos int referenced = 0;
1889 1.1 christos int UNUSED insn_referenced = abuf->written;
1890 1.1 christos INT in_sr = -1;
1891 1.1 christos INT in_dr = -1;
1892 1.1 christos INT out_dr = -1;
1893 1.1 christos in_dr = FLD (in_dr);
1894 1.1 christos out_dr = FLD (out_dr);
1895 1.1 christos referenced |= 1 << 1;
1896 1.1 christos referenced |= 1 << 2;
1897 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1898 1.1 christos }
1899 1.1 christos return cycles;
1900 1.1 christos #undef FLD
1901 1.1 christos }
1902 1.1 christos
1903 1.1 christos static int
1904 1.1 christos model_m32r_d_srl (SIM_CPU *current_cpu, void *sem_arg)
1905 1.1 christos {
1906 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
1907 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1908 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1909 1.1 christos int cycles = 0;
1910 1.1 christos {
1911 1.1 christos int referenced = 0;
1912 1.1 christos int UNUSED insn_referenced = abuf->written;
1913 1.1 christos INT in_sr = -1;
1914 1.1 christos INT in_dr = -1;
1915 1.1 christos INT out_dr = -1;
1916 1.1 christos in_sr = FLD (in_sr);
1917 1.1 christos in_dr = FLD (in_dr);
1918 1.1 christos out_dr = FLD (out_dr);
1919 1.1 christos referenced |= 1 << 0;
1920 1.1 christos referenced |= 1 << 1;
1921 1.1 christos referenced |= 1 << 2;
1922 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1923 1.1 christos }
1924 1.1 christos return cycles;
1925 1.1 christos #undef FLD
1926 1.1 christos }
1927 1.1 christos
1928 1.1 christos static int
1929 1.1 christos model_m32r_d_srl3 (SIM_CPU *current_cpu, void *sem_arg)
1930 1.1 christos {
1931 1.1 christos #define FLD(f) abuf->fields.sfmt_add3.f
1932 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1933 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1934 1.1 christos int cycles = 0;
1935 1.1 christos {
1936 1.1 christos int referenced = 0;
1937 1.1 christos int UNUSED insn_referenced = abuf->written;
1938 1.1 christos INT in_sr = -1;
1939 1.1 christos INT in_dr = -1;
1940 1.1 christos INT out_dr = -1;
1941 1.1 christos in_sr = FLD (in_sr);
1942 1.1 christos out_dr = FLD (out_dr);
1943 1.1 christos referenced |= 1 << 0;
1944 1.1 christos referenced |= 1 << 2;
1945 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1946 1.1 christos }
1947 1.1 christos return cycles;
1948 1.1 christos #undef FLD
1949 1.1 christos }
1950 1.1 christos
1951 1.1 christos static int
1952 1.1 christos model_m32r_d_srli (SIM_CPU *current_cpu, void *sem_arg)
1953 1.1 christos {
1954 1.1 christos #define FLD(f) abuf->fields.sfmt_slli.f
1955 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1956 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1957 1.1 christos int cycles = 0;
1958 1.1 christos {
1959 1.1 christos int referenced = 0;
1960 1.1 christos int UNUSED insn_referenced = abuf->written;
1961 1.1 christos INT in_sr = -1;
1962 1.1 christos INT in_dr = -1;
1963 1.1 christos INT out_dr = -1;
1964 1.1 christos in_dr = FLD (in_dr);
1965 1.1 christos out_dr = FLD (out_dr);
1966 1.1 christos referenced |= 1 << 1;
1967 1.1 christos referenced |= 1 << 2;
1968 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
1969 1.1 christos }
1970 1.1 christos return cycles;
1971 1.1 christos #undef FLD
1972 1.1 christos }
1973 1.1 christos
1974 1.1 christos static int
1975 1.1 christos model_m32r_d_st (SIM_CPU *current_cpu, void *sem_arg)
1976 1.1 christos {
1977 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
1978 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1979 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
1980 1.1 christos int cycles = 0;
1981 1.1 christos {
1982 1.1 christos int referenced = 0;
1983 1.1 christos int UNUSED insn_referenced = abuf->written;
1984 1.1 christos INT in_src1 = 0;
1985 1.1 christos INT in_src2 = 0;
1986 1.1 christos in_src1 = FLD (in_src1);
1987 1.1 christos in_src2 = FLD (in_src2);
1988 1.1 christos referenced |= 1 << 0;
1989 1.1 christos referenced |= 1 << 1;
1990 1.1 christos cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
1991 1.1 christos }
1992 1.1 christos return cycles;
1993 1.1 christos #undef FLD
1994 1.1 christos }
1995 1.1 christos
1996 1.1 christos static int
1997 1.1 christos model_m32r_d_st_d (SIM_CPU *current_cpu, void *sem_arg)
1998 1.1 christos {
1999 1.1 christos #define FLD(f) abuf->fields.sfmt_st_d.f
2000 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2001 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2002 1.1 christos int cycles = 0;
2003 1.1 christos {
2004 1.1 christos int referenced = 0;
2005 1.1 christos int UNUSED insn_referenced = abuf->written;
2006 1.1 christos INT in_src1 = 0;
2007 1.1 christos INT in_src2 = 0;
2008 1.1 christos in_src1 = FLD (in_src1);
2009 1.1 christos in_src2 = FLD (in_src2);
2010 1.1 christos referenced |= 1 << 0;
2011 1.1 christos referenced |= 1 << 1;
2012 1.1 christos cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
2013 1.1 christos }
2014 1.1 christos return cycles;
2015 1.1 christos #undef FLD
2016 1.1 christos }
2017 1.1 christos
2018 1.1 christos static int
2019 1.1 christos model_m32r_d_stb (SIM_CPU *current_cpu, void *sem_arg)
2020 1.1 christos {
2021 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
2022 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2023 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2024 1.1 christos int cycles = 0;
2025 1.1 christos {
2026 1.1 christos int referenced = 0;
2027 1.1 christos int UNUSED insn_referenced = abuf->written;
2028 1.1 christos INT in_src1 = 0;
2029 1.1 christos INT in_src2 = 0;
2030 1.1 christos in_src1 = FLD (in_src1);
2031 1.1 christos in_src2 = FLD (in_src2);
2032 1.1 christos referenced |= 1 << 0;
2033 1.1 christos referenced |= 1 << 1;
2034 1.1 christos cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
2035 1.1 christos }
2036 1.1 christos return cycles;
2037 1.1 christos #undef FLD
2038 1.1 christos }
2039 1.1 christos
2040 1.1 christos static int
2041 1.1 christos model_m32r_d_stb_d (SIM_CPU *current_cpu, void *sem_arg)
2042 1.1 christos {
2043 1.1 christos #define FLD(f) abuf->fields.sfmt_st_d.f
2044 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2045 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2046 1.1 christos int cycles = 0;
2047 1.1 christos {
2048 1.1 christos int referenced = 0;
2049 1.1 christos int UNUSED insn_referenced = abuf->written;
2050 1.1 christos INT in_src1 = 0;
2051 1.1 christos INT in_src2 = 0;
2052 1.1 christos in_src1 = FLD (in_src1);
2053 1.1 christos in_src2 = FLD (in_src2);
2054 1.1 christos referenced |= 1 << 0;
2055 1.1 christos referenced |= 1 << 1;
2056 1.1 christos cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
2057 1.1 christos }
2058 1.1 christos return cycles;
2059 1.1 christos #undef FLD
2060 1.1 christos }
2061 1.1 christos
2062 1.1 christos static int
2063 1.1 christos model_m32r_d_sth (SIM_CPU *current_cpu, void *sem_arg)
2064 1.1 christos {
2065 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
2066 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2067 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2068 1.1 christos int cycles = 0;
2069 1.1 christos {
2070 1.1 christos int referenced = 0;
2071 1.1 christos int UNUSED insn_referenced = abuf->written;
2072 1.1 christos INT in_src1 = 0;
2073 1.1 christos INT in_src2 = 0;
2074 1.1 christos in_src1 = FLD (in_src1);
2075 1.1 christos in_src2 = FLD (in_src2);
2076 1.1 christos referenced |= 1 << 0;
2077 1.1 christos referenced |= 1 << 1;
2078 1.1 christos cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
2079 1.1 christos }
2080 1.1 christos return cycles;
2081 1.1 christos #undef FLD
2082 1.1 christos }
2083 1.1 christos
2084 1.1 christos static int
2085 1.1 christos model_m32r_d_sth_d (SIM_CPU *current_cpu, void *sem_arg)
2086 1.1 christos {
2087 1.1 christos #define FLD(f) abuf->fields.sfmt_st_d.f
2088 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2089 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2090 1.1 christos int cycles = 0;
2091 1.1 christos {
2092 1.1 christos int referenced = 0;
2093 1.1 christos int UNUSED insn_referenced = abuf->written;
2094 1.1 christos INT in_src1 = 0;
2095 1.1 christos INT in_src2 = 0;
2096 1.1 christos in_src1 = FLD (in_src1);
2097 1.1 christos in_src2 = FLD (in_src2);
2098 1.1 christos referenced |= 1 << 0;
2099 1.1 christos referenced |= 1 << 1;
2100 1.1 christos cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
2101 1.1 christos }
2102 1.1 christos return cycles;
2103 1.1 christos #undef FLD
2104 1.1 christos }
2105 1.1 christos
2106 1.1 christos static int
2107 1.1 christos model_m32r_d_st_plus (SIM_CPU *current_cpu, void *sem_arg)
2108 1.1 christos {
2109 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
2110 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2111 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2112 1.1 christos int cycles = 0;
2113 1.1 christos {
2114 1.1 christos int referenced = 0;
2115 1.1 christos int UNUSED insn_referenced = abuf->written;
2116 1.1 christos INT in_src1 = 0;
2117 1.1 christos INT in_src2 = 0;
2118 1.1 christos in_src1 = FLD (in_src1);
2119 1.1 christos in_src2 = FLD (in_src2);
2120 1.1 christos referenced |= 1 << 0;
2121 1.1 christos referenced |= 1 << 1;
2122 1.1 christos cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
2123 1.1 christos }
2124 1.1 christos {
2125 1.1 christos int referenced = 0;
2126 1.1 christos int UNUSED insn_referenced = abuf->written;
2127 1.1 christos INT in_sr = -1;
2128 1.1 christos INT in_dr = -1;
2129 1.1 christos INT out_dr = -1;
2130 1.1 christos in_dr = FLD (in_src2);
2131 1.1 christos out_dr = FLD (out_src2);
2132 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr);
2133 1.1 christos }
2134 1.1 christos return cycles;
2135 1.1 christos #undef FLD
2136 1.1 christos }
2137 1.1 christos
2138 1.1 christos static int
2139 1.1 christos model_m32r_d_st_minus (SIM_CPU *current_cpu, void *sem_arg)
2140 1.1 christos {
2141 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
2142 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2143 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2144 1.1 christos int cycles = 0;
2145 1.1 christos {
2146 1.1 christos int referenced = 0;
2147 1.1 christos int UNUSED insn_referenced = abuf->written;
2148 1.1 christos INT in_src1 = 0;
2149 1.1 christos INT in_src2 = 0;
2150 1.1 christos in_src1 = FLD (in_src1);
2151 1.1 christos in_src2 = FLD (in_src2);
2152 1.1 christos referenced |= 1 << 0;
2153 1.1 christos referenced |= 1 << 1;
2154 1.1 christos cycles += m32rbf_model_m32r_d_u_store (current_cpu, idesc, 0, referenced, in_src1, in_src2);
2155 1.1 christos }
2156 1.1 christos {
2157 1.1 christos int referenced = 0;
2158 1.1 christos int UNUSED insn_referenced = abuf->written;
2159 1.1 christos INT in_sr = -1;
2160 1.1 christos INT in_dr = -1;
2161 1.1 christos INT out_dr = -1;
2162 1.1 christos in_dr = FLD (in_src2);
2163 1.1 christos out_dr = FLD (out_src2);
2164 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 1, referenced, in_sr, in_dr, out_dr);
2165 1.1 christos }
2166 1.1 christos return cycles;
2167 1.1 christos #undef FLD
2168 1.1 christos }
2169 1.1 christos
2170 1.1 christos static int
2171 1.1 christos model_m32r_d_sub (SIM_CPU *current_cpu, void *sem_arg)
2172 1.1 christos {
2173 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
2174 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2175 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2176 1.1 christos int cycles = 0;
2177 1.1 christos {
2178 1.1 christos int referenced = 0;
2179 1.1 christos int UNUSED insn_referenced = abuf->written;
2180 1.1 christos INT in_sr = -1;
2181 1.1 christos INT in_dr = -1;
2182 1.1 christos INT out_dr = -1;
2183 1.1 christos in_sr = FLD (in_sr);
2184 1.1 christos in_dr = FLD (in_dr);
2185 1.1 christos out_dr = FLD (out_dr);
2186 1.1 christos referenced |= 1 << 0;
2187 1.1 christos referenced |= 1 << 1;
2188 1.1 christos referenced |= 1 << 2;
2189 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
2190 1.1 christos }
2191 1.1 christos return cycles;
2192 1.1 christos #undef FLD
2193 1.1 christos }
2194 1.1 christos
2195 1.1 christos static int
2196 1.1 christos model_m32r_d_subv (SIM_CPU *current_cpu, void *sem_arg)
2197 1.1 christos {
2198 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
2199 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2200 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2201 1.1 christos int cycles = 0;
2202 1.1 christos {
2203 1.1 christos int referenced = 0;
2204 1.1 christos int UNUSED insn_referenced = abuf->written;
2205 1.1 christos INT in_sr = -1;
2206 1.1 christos INT in_dr = -1;
2207 1.1 christos INT out_dr = -1;
2208 1.1 christos in_sr = FLD (in_sr);
2209 1.1 christos in_dr = FLD (in_dr);
2210 1.1 christos out_dr = FLD (out_dr);
2211 1.1 christos referenced |= 1 << 0;
2212 1.1 christos referenced |= 1 << 1;
2213 1.1 christos referenced |= 1 << 2;
2214 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
2215 1.1 christos }
2216 1.1 christos return cycles;
2217 1.1 christos #undef FLD
2218 1.1 christos }
2219 1.1 christos
2220 1.1 christos static int
2221 1.1 christos model_m32r_d_subx (SIM_CPU *current_cpu, void *sem_arg)
2222 1.1 christos {
2223 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
2224 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2225 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2226 1.1 christos int cycles = 0;
2227 1.1 christos {
2228 1.1 christos int referenced = 0;
2229 1.1 christos int UNUSED insn_referenced = abuf->written;
2230 1.1 christos INT in_sr = -1;
2231 1.1 christos INT in_dr = -1;
2232 1.1 christos INT out_dr = -1;
2233 1.1 christos in_sr = FLD (in_sr);
2234 1.1 christos in_dr = FLD (in_dr);
2235 1.1 christos out_dr = FLD (out_dr);
2236 1.1 christos referenced |= 1 << 0;
2237 1.1 christos referenced |= 1 << 1;
2238 1.1 christos referenced |= 1 << 2;
2239 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
2240 1.1 christos }
2241 1.1 christos return cycles;
2242 1.1 christos #undef FLD
2243 1.1 christos }
2244 1.1 christos
2245 1.1 christos static int
2246 1.1 christos model_m32r_d_trap (SIM_CPU *current_cpu, void *sem_arg)
2247 1.1 christos {
2248 1.1 christos #define FLD(f) abuf->fields.sfmt_trap.f
2249 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2250 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2251 1.1 christos int cycles = 0;
2252 1.1 christos {
2253 1.1 christos int referenced = 0;
2254 1.1 christos int UNUSED insn_referenced = abuf->written;
2255 1.1 christos INT in_sr = -1;
2256 1.1 christos INT in_dr = -1;
2257 1.1 christos INT out_dr = -1;
2258 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
2259 1.1 christos }
2260 1.1 christos return cycles;
2261 1.1 christos #undef FLD
2262 1.1 christos }
2263 1.1 christos
2264 1.1 christos static int
2265 1.1 christos model_m32r_d_unlock (SIM_CPU *current_cpu, void *sem_arg)
2266 1.1 christos {
2267 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
2268 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2269 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2270 1.1 christos int cycles = 0;
2271 1.1 christos {
2272 1.1 christos int referenced = 0;
2273 1.1 christos int UNUSED insn_referenced = abuf->written;
2274 1.1 christos INT in_sr = 0;
2275 1.1 christos INT out_dr = 0;
2276 1.1 christos cycles += m32rbf_model_m32r_d_u_load (current_cpu, idesc, 0, referenced, in_sr, out_dr);
2277 1.1 christos }
2278 1.1 christos return cycles;
2279 1.1 christos #undef FLD
2280 1.1 christos }
2281 1.1 christos
2282 1.1 christos static int
2283 1.1 christos model_m32r_d_clrpsw (SIM_CPU *current_cpu, void *sem_arg)
2284 1.1 christos {
2285 1.1 christos #define FLD(f) abuf->fields.sfmt_clrpsw.f
2286 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2287 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2288 1.1 christos int cycles = 0;
2289 1.1 christos {
2290 1.1 christos int referenced = 0;
2291 1.1 christos int UNUSED insn_referenced = abuf->written;
2292 1.1 christos INT in_sr = -1;
2293 1.1 christos INT in_dr = -1;
2294 1.1 christos INT out_dr = -1;
2295 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
2296 1.1 christos }
2297 1.1 christos return cycles;
2298 1.1 christos #undef FLD
2299 1.1 christos }
2300 1.1 christos
2301 1.1 christos static int
2302 1.1 christos model_m32r_d_setpsw (SIM_CPU *current_cpu, void *sem_arg)
2303 1.1 christos {
2304 1.1 christos #define FLD(f) abuf->fields.sfmt_clrpsw.f
2305 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2306 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2307 1.1 christos int cycles = 0;
2308 1.1 christos {
2309 1.1 christos int referenced = 0;
2310 1.1 christos int UNUSED insn_referenced = abuf->written;
2311 1.1 christos INT in_sr = -1;
2312 1.1 christos INT in_dr = -1;
2313 1.1 christos INT out_dr = -1;
2314 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
2315 1.1 christos }
2316 1.1 christos return cycles;
2317 1.1 christos #undef FLD
2318 1.1 christos }
2319 1.1 christos
2320 1.1 christos static int
2321 1.1 christos model_m32r_d_bset (SIM_CPU *current_cpu, void *sem_arg)
2322 1.1 christos {
2323 1.1 christos #define FLD(f) abuf->fields.sfmt_bset.f
2324 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2325 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2326 1.1 christos int cycles = 0;
2327 1.1 christos {
2328 1.1 christos int referenced = 0;
2329 1.1 christos int UNUSED insn_referenced = abuf->written;
2330 1.1 christos INT in_sr = -1;
2331 1.1 christos INT in_dr = -1;
2332 1.1 christos INT out_dr = -1;
2333 1.1 christos in_sr = FLD (in_sr);
2334 1.1 christos referenced |= 1 << 0;
2335 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
2336 1.1 christos }
2337 1.1 christos return cycles;
2338 1.1 christos #undef FLD
2339 1.1 christos }
2340 1.1 christos
2341 1.1 christos static int
2342 1.1 christos model_m32r_d_bclr (SIM_CPU *current_cpu, void *sem_arg)
2343 1.1 christos {
2344 1.1 christos #define FLD(f) abuf->fields.sfmt_bset.f
2345 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2346 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2347 1.1 christos int cycles = 0;
2348 1.1 christos {
2349 1.1 christos int referenced = 0;
2350 1.1 christos int UNUSED insn_referenced = abuf->written;
2351 1.1 christos INT in_sr = -1;
2352 1.1 christos INT in_dr = -1;
2353 1.1 christos INT out_dr = -1;
2354 1.1 christos in_sr = FLD (in_sr);
2355 1.1 christos referenced |= 1 << 0;
2356 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
2357 1.1 christos }
2358 1.1 christos return cycles;
2359 1.1 christos #undef FLD
2360 1.1 christos }
2361 1.1 christos
2362 1.1 christos static int
2363 1.1 christos model_m32r_d_btst (SIM_CPU *current_cpu, void *sem_arg)
2364 1.1 christos {
2365 1.1 christos #define FLD(f) abuf->fields.sfmt_bset.f
2366 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2367 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2368 1.1 christos int cycles = 0;
2369 1.1 christos {
2370 1.1 christos int referenced = 0;
2371 1.1 christos int UNUSED insn_referenced = abuf->written;
2372 1.1 christos INT in_sr = -1;
2373 1.1 christos INT in_dr = -1;
2374 1.1 christos INT out_dr = -1;
2375 1.1 christos in_sr = FLD (in_sr);
2376 1.1 christos referenced |= 1 << 0;
2377 1.1 christos cycles += m32rbf_model_m32r_d_u_exec (current_cpu, idesc, 0, referenced, in_sr, in_dr, out_dr);
2378 1.1 christos }
2379 1.1 christos return cycles;
2380 1.1 christos #undef FLD
2381 1.1 christos }
2382 1.1 christos
2383 1.1 christos static int
2384 1.1 christos model_test_add (SIM_CPU *current_cpu, void *sem_arg)
2385 1.1 christos {
2386 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
2387 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2388 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2389 1.1 christos int cycles = 0;
2390 1.1 christos {
2391 1.1 christos int referenced = 0;
2392 1.1 christos int UNUSED insn_referenced = abuf->written;
2393 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2394 1.1 christos }
2395 1.1 christos return cycles;
2396 1.1 christos #undef FLD
2397 1.1 christos }
2398 1.1 christos
2399 1.1 christos static int
2400 1.1 christos model_test_add3 (SIM_CPU *current_cpu, void *sem_arg)
2401 1.1 christos {
2402 1.1 christos #define FLD(f) abuf->fields.sfmt_add3.f
2403 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2404 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2405 1.1 christos int cycles = 0;
2406 1.1 christos {
2407 1.1 christos int referenced = 0;
2408 1.1 christos int UNUSED insn_referenced = abuf->written;
2409 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2410 1.1 christos }
2411 1.1 christos return cycles;
2412 1.1 christos #undef FLD
2413 1.1 christos }
2414 1.1 christos
2415 1.1 christos static int
2416 1.1 christos model_test_and (SIM_CPU *current_cpu, void *sem_arg)
2417 1.1 christos {
2418 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
2419 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2420 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2421 1.1 christos int cycles = 0;
2422 1.1 christos {
2423 1.1 christos int referenced = 0;
2424 1.1 christos int UNUSED insn_referenced = abuf->written;
2425 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2426 1.1 christos }
2427 1.1 christos return cycles;
2428 1.1 christos #undef FLD
2429 1.1 christos }
2430 1.1 christos
2431 1.1 christos static int
2432 1.1 christos model_test_and3 (SIM_CPU *current_cpu, void *sem_arg)
2433 1.1 christos {
2434 1.1 christos #define FLD(f) abuf->fields.sfmt_and3.f
2435 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2436 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2437 1.1 christos int cycles = 0;
2438 1.1 christos {
2439 1.1 christos int referenced = 0;
2440 1.1 christos int UNUSED insn_referenced = abuf->written;
2441 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2442 1.1 christos }
2443 1.1 christos return cycles;
2444 1.1 christos #undef FLD
2445 1.1 christos }
2446 1.1 christos
2447 1.1 christos static int
2448 1.1 christos model_test_or (SIM_CPU *current_cpu, void *sem_arg)
2449 1.1 christos {
2450 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
2451 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2452 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2453 1.1 christos int cycles = 0;
2454 1.1 christos {
2455 1.1 christos int referenced = 0;
2456 1.1 christos int UNUSED insn_referenced = abuf->written;
2457 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2458 1.1 christos }
2459 1.1 christos return cycles;
2460 1.1 christos #undef FLD
2461 1.1 christos }
2462 1.1 christos
2463 1.1 christos static int
2464 1.1 christos model_test_or3 (SIM_CPU *current_cpu, void *sem_arg)
2465 1.1 christos {
2466 1.1 christos #define FLD(f) abuf->fields.sfmt_and3.f
2467 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2468 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2469 1.1 christos int cycles = 0;
2470 1.1 christos {
2471 1.1 christos int referenced = 0;
2472 1.1 christos int UNUSED insn_referenced = abuf->written;
2473 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2474 1.1 christos }
2475 1.1 christos return cycles;
2476 1.1 christos #undef FLD
2477 1.1 christos }
2478 1.1 christos
2479 1.1 christos static int
2480 1.1 christos model_test_xor (SIM_CPU *current_cpu, void *sem_arg)
2481 1.1 christos {
2482 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
2483 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2484 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2485 1.1 christos int cycles = 0;
2486 1.1 christos {
2487 1.1 christos int referenced = 0;
2488 1.1 christos int UNUSED insn_referenced = abuf->written;
2489 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2490 1.1 christos }
2491 1.1 christos return cycles;
2492 1.1 christos #undef FLD
2493 1.1 christos }
2494 1.1 christos
2495 1.1 christos static int
2496 1.1 christos model_test_xor3 (SIM_CPU *current_cpu, void *sem_arg)
2497 1.1 christos {
2498 1.1 christos #define FLD(f) abuf->fields.sfmt_and3.f
2499 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2500 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2501 1.1 christos int cycles = 0;
2502 1.1 christos {
2503 1.1 christos int referenced = 0;
2504 1.1 christos int UNUSED insn_referenced = abuf->written;
2505 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2506 1.1 christos }
2507 1.1 christos return cycles;
2508 1.1 christos #undef FLD
2509 1.1 christos }
2510 1.1 christos
2511 1.1 christos static int
2512 1.1 christos model_test_addi (SIM_CPU *current_cpu, void *sem_arg)
2513 1.1 christos {
2514 1.1 christos #define FLD(f) abuf->fields.sfmt_addi.f
2515 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2516 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2517 1.1 christos int cycles = 0;
2518 1.1 christos {
2519 1.1 christos int referenced = 0;
2520 1.1 christos int UNUSED insn_referenced = abuf->written;
2521 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2522 1.1 christos }
2523 1.1 christos return cycles;
2524 1.1 christos #undef FLD
2525 1.1 christos }
2526 1.1 christos
2527 1.1 christos static int
2528 1.1 christos model_test_addv (SIM_CPU *current_cpu, void *sem_arg)
2529 1.1 christos {
2530 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
2531 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2532 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2533 1.1 christos int cycles = 0;
2534 1.1 christos {
2535 1.1 christos int referenced = 0;
2536 1.1 christos int UNUSED insn_referenced = abuf->written;
2537 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2538 1.1 christos }
2539 1.1 christos return cycles;
2540 1.1 christos #undef FLD
2541 1.1 christos }
2542 1.1 christos
2543 1.1 christos static int
2544 1.1 christos model_test_addv3 (SIM_CPU *current_cpu, void *sem_arg)
2545 1.1 christos {
2546 1.1 christos #define FLD(f) abuf->fields.sfmt_add3.f
2547 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2548 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2549 1.1 christos int cycles = 0;
2550 1.1 christos {
2551 1.1 christos int referenced = 0;
2552 1.1 christos int UNUSED insn_referenced = abuf->written;
2553 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2554 1.1 christos }
2555 1.1 christos return cycles;
2556 1.1 christos #undef FLD
2557 1.1 christos }
2558 1.1 christos
2559 1.1 christos static int
2560 1.1 christos model_test_addx (SIM_CPU *current_cpu, void *sem_arg)
2561 1.1 christos {
2562 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
2563 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2564 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2565 1.1 christos int cycles = 0;
2566 1.1 christos {
2567 1.1 christos int referenced = 0;
2568 1.1 christos int UNUSED insn_referenced = abuf->written;
2569 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2570 1.1 christos }
2571 1.1 christos return cycles;
2572 1.1 christos #undef FLD
2573 1.1 christos }
2574 1.1 christos
2575 1.1 christos static int
2576 1.1 christos model_test_bc8 (SIM_CPU *current_cpu, void *sem_arg)
2577 1.1 christos {
2578 1.1 christos #define FLD(f) abuf->fields.sfmt_bl8.f
2579 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2580 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2581 1.1 christos int cycles = 0;
2582 1.1 christos {
2583 1.1 christos int referenced = 0;
2584 1.1 christos int UNUSED insn_referenced = abuf->written;
2585 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2586 1.1 christos }
2587 1.1 christos return cycles;
2588 1.1 christos #undef FLD
2589 1.1 christos }
2590 1.1 christos
2591 1.1 christos static int
2592 1.1 christos model_test_bc24 (SIM_CPU *current_cpu, void *sem_arg)
2593 1.1 christos {
2594 1.1 christos #define FLD(f) abuf->fields.sfmt_bl24.f
2595 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2596 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2597 1.1 christos int cycles = 0;
2598 1.1 christos {
2599 1.1 christos int referenced = 0;
2600 1.1 christos int UNUSED insn_referenced = abuf->written;
2601 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2602 1.1 christos }
2603 1.1 christos return cycles;
2604 1.1 christos #undef FLD
2605 1.1 christos }
2606 1.1 christos
2607 1.1 christos static int
2608 1.1 christos model_test_beq (SIM_CPU *current_cpu, void *sem_arg)
2609 1.1 christos {
2610 1.1 christos #define FLD(f) abuf->fields.sfmt_beq.f
2611 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2612 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2613 1.1 christos int cycles = 0;
2614 1.1 christos {
2615 1.1 christos int referenced = 0;
2616 1.1 christos int UNUSED insn_referenced = abuf->written;
2617 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2618 1.1 christos }
2619 1.1 christos return cycles;
2620 1.1 christos #undef FLD
2621 1.1 christos }
2622 1.1 christos
2623 1.1 christos static int
2624 1.1 christos model_test_beqz (SIM_CPU *current_cpu, void *sem_arg)
2625 1.1 christos {
2626 1.1 christos #define FLD(f) abuf->fields.sfmt_beq.f
2627 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2628 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2629 1.1 christos int cycles = 0;
2630 1.1 christos {
2631 1.1 christos int referenced = 0;
2632 1.1 christos int UNUSED insn_referenced = abuf->written;
2633 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2634 1.1 christos }
2635 1.1 christos return cycles;
2636 1.1 christos #undef FLD
2637 1.1 christos }
2638 1.1 christos
2639 1.1 christos static int
2640 1.1 christos model_test_bgez (SIM_CPU *current_cpu, void *sem_arg)
2641 1.1 christos {
2642 1.1 christos #define FLD(f) abuf->fields.sfmt_beq.f
2643 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2644 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2645 1.1 christos int cycles = 0;
2646 1.1 christos {
2647 1.1 christos int referenced = 0;
2648 1.1 christos int UNUSED insn_referenced = abuf->written;
2649 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2650 1.1 christos }
2651 1.1 christos return cycles;
2652 1.1 christos #undef FLD
2653 1.1 christos }
2654 1.1 christos
2655 1.1 christos static int
2656 1.1 christos model_test_bgtz (SIM_CPU *current_cpu, void *sem_arg)
2657 1.1 christos {
2658 1.1 christos #define FLD(f) abuf->fields.sfmt_beq.f
2659 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2660 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2661 1.1 christos int cycles = 0;
2662 1.1 christos {
2663 1.1 christos int referenced = 0;
2664 1.1 christos int UNUSED insn_referenced = abuf->written;
2665 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2666 1.1 christos }
2667 1.1 christos return cycles;
2668 1.1 christos #undef FLD
2669 1.1 christos }
2670 1.1 christos
2671 1.1 christos static int
2672 1.1 christos model_test_blez (SIM_CPU *current_cpu, void *sem_arg)
2673 1.1 christos {
2674 1.1 christos #define FLD(f) abuf->fields.sfmt_beq.f
2675 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2676 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2677 1.1 christos int cycles = 0;
2678 1.1 christos {
2679 1.1 christos int referenced = 0;
2680 1.1 christos int UNUSED insn_referenced = abuf->written;
2681 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2682 1.1 christos }
2683 1.1 christos return cycles;
2684 1.1 christos #undef FLD
2685 1.1 christos }
2686 1.1 christos
2687 1.1 christos static int
2688 1.1 christos model_test_bltz (SIM_CPU *current_cpu, void *sem_arg)
2689 1.1 christos {
2690 1.1 christos #define FLD(f) abuf->fields.sfmt_beq.f
2691 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2692 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2693 1.1 christos int cycles = 0;
2694 1.1 christos {
2695 1.1 christos int referenced = 0;
2696 1.1 christos int UNUSED insn_referenced = abuf->written;
2697 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2698 1.1 christos }
2699 1.1 christos return cycles;
2700 1.1 christos #undef FLD
2701 1.1 christos }
2702 1.1 christos
2703 1.1 christos static int
2704 1.1 christos model_test_bnez (SIM_CPU *current_cpu, void *sem_arg)
2705 1.1 christos {
2706 1.1 christos #define FLD(f) abuf->fields.sfmt_beq.f
2707 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2708 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2709 1.1 christos int cycles = 0;
2710 1.1 christos {
2711 1.1 christos int referenced = 0;
2712 1.1 christos int UNUSED insn_referenced = abuf->written;
2713 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2714 1.1 christos }
2715 1.1 christos return cycles;
2716 1.1 christos #undef FLD
2717 1.1 christos }
2718 1.1 christos
2719 1.1 christos static int
2720 1.1 christos model_test_bl8 (SIM_CPU *current_cpu, void *sem_arg)
2721 1.1 christos {
2722 1.1 christos #define FLD(f) abuf->fields.sfmt_bl8.f
2723 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2724 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2725 1.1 christos int cycles = 0;
2726 1.1 christos {
2727 1.1 christos int referenced = 0;
2728 1.1 christos int UNUSED insn_referenced = abuf->written;
2729 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2730 1.1 christos }
2731 1.1 christos return cycles;
2732 1.1 christos #undef FLD
2733 1.1 christos }
2734 1.1 christos
2735 1.1 christos static int
2736 1.1 christos model_test_bl24 (SIM_CPU *current_cpu, void *sem_arg)
2737 1.1 christos {
2738 1.1 christos #define FLD(f) abuf->fields.sfmt_bl24.f
2739 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2740 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2741 1.1 christos int cycles = 0;
2742 1.1 christos {
2743 1.1 christos int referenced = 0;
2744 1.1 christos int UNUSED insn_referenced = abuf->written;
2745 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2746 1.1 christos }
2747 1.1 christos return cycles;
2748 1.1 christos #undef FLD
2749 1.1 christos }
2750 1.1 christos
2751 1.1 christos static int
2752 1.1 christos model_test_bnc8 (SIM_CPU *current_cpu, void *sem_arg)
2753 1.1 christos {
2754 1.1 christos #define FLD(f) abuf->fields.sfmt_bl8.f
2755 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2756 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2757 1.1 christos int cycles = 0;
2758 1.1 christos {
2759 1.1 christos int referenced = 0;
2760 1.1 christos int UNUSED insn_referenced = abuf->written;
2761 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2762 1.1 christos }
2763 1.1 christos return cycles;
2764 1.1 christos #undef FLD
2765 1.1 christos }
2766 1.1 christos
2767 1.1 christos static int
2768 1.1 christos model_test_bnc24 (SIM_CPU *current_cpu, void *sem_arg)
2769 1.1 christos {
2770 1.1 christos #define FLD(f) abuf->fields.sfmt_bl24.f
2771 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2772 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2773 1.1 christos int cycles = 0;
2774 1.1 christos {
2775 1.1 christos int referenced = 0;
2776 1.1 christos int UNUSED insn_referenced = abuf->written;
2777 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2778 1.1 christos }
2779 1.1 christos return cycles;
2780 1.1 christos #undef FLD
2781 1.1 christos }
2782 1.1 christos
2783 1.1 christos static int
2784 1.1 christos model_test_bne (SIM_CPU *current_cpu, void *sem_arg)
2785 1.1 christos {
2786 1.1 christos #define FLD(f) abuf->fields.sfmt_beq.f
2787 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2788 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2789 1.1 christos int cycles = 0;
2790 1.1 christos {
2791 1.1 christos int referenced = 0;
2792 1.1 christos int UNUSED insn_referenced = abuf->written;
2793 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2794 1.1 christos }
2795 1.1 christos return cycles;
2796 1.1 christos #undef FLD
2797 1.1 christos }
2798 1.1 christos
2799 1.1 christos static int
2800 1.1 christos model_test_bra8 (SIM_CPU *current_cpu, void *sem_arg)
2801 1.1 christos {
2802 1.1 christos #define FLD(f) abuf->fields.sfmt_bl8.f
2803 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2804 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2805 1.1 christos int cycles = 0;
2806 1.1 christos {
2807 1.1 christos int referenced = 0;
2808 1.1 christos int UNUSED insn_referenced = abuf->written;
2809 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2810 1.1 christos }
2811 1.1 christos return cycles;
2812 1.1 christos #undef FLD
2813 1.1 christos }
2814 1.1 christos
2815 1.1 christos static int
2816 1.1 christos model_test_bra24 (SIM_CPU *current_cpu, void *sem_arg)
2817 1.1 christos {
2818 1.1 christos #define FLD(f) abuf->fields.sfmt_bl24.f
2819 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2820 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2821 1.1 christos int cycles = 0;
2822 1.1 christos {
2823 1.1 christos int referenced = 0;
2824 1.1 christos int UNUSED insn_referenced = abuf->written;
2825 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2826 1.1 christos }
2827 1.1 christos return cycles;
2828 1.1 christos #undef FLD
2829 1.1 christos }
2830 1.1 christos
2831 1.1 christos static int
2832 1.1 christos model_test_cmp (SIM_CPU *current_cpu, void *sem_arg)
2833 1.1 christos {
2834 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
2835 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2836 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2837 1.1 christos int cycles = 0;
2838 1.1 christos {
2839 1.1 christos int referenced = 0;
2840 1.1 christos int UNUSED insn_referenced = abuf->written;
2841 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2842 1.1 christos }
2843 1.1 christos return cycles;
2844 1.1 christos #undef FLD
2845 1.1 christos }
2846 1.1 christos
2847 1.1 christos static int
2848 1.1 christos model_test_cmpi (SIM_CPU *current_cpu, void *sem_arg)
2849 1.1 christos {
2850 1.1 christos #define FLD(f) abuf->fields.sfmt_st_d.f
2851 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2852 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2853 1.1 christos int cycles = 0;
2854 1.1 christos {
2855 1.1 christos int referenced = 0;
2856 1.1 christos int UNUSED insn_referenced = abuf->written;
2857 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2858 1.1 christos }
2859 1.1 christos return cycles;
2860 1.1 christos #undef FLD
2861 1.1 christos }
2862 1.1 christos
2863 1.1 christos static int
2864 1.1 christos model_test_cmpu (SIM_CPU *current_cpu, void *sem_arg)
2865 1.1 christos {
2866 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
2867 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2868 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2869 1.1 christos int cycles = 0;
2870 1.1 christos {
2871 1.1 christos int referenced = 0;
2872 1.1 christos int UNUSED insn_referenced = abuf->written;
2873 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2874 1.1 christos }
2875 1.1 christos return cycles;
2876 1.1 christos #undef FLD
2877 1.1 christos }
2878 1.1 christos
2879 1.1 christos static int
2880 1.1 christos model_test_cmpui (SIM_CPU *current_cpu, void *sem_arg)
2881 1.1 christos {
2882 1.1 christos #define FLD(f) abuf->fields.sfmt_st_d.f
2883 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2884 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2885 1.1 christos int cycles = 0;
2886 1.1 christos {
2887 1.1 christos int referenced = 0;
2888 1.1 christos int UNUSED insn_referenced = abuf->written;
2889 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2890 1.1 christos }
2891 1.1 christos return cycles;
2892 1.1 christos #undef FLD
2893 1.1 christos }
2894 1.1 christos
2895 1.1 christos static int
2896 1.1 christos model_test_div (SIM_CPU *current_cpu, void *sem_arg)
2897 1.1 christos {
2898 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
2899 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2900 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2901 1.1 christos int cycles = 0;
2902 1.1 christos {
2903 1.1 christos int referenced = 0;
2904 1.1 christos int UNUSED insn_referenced = abuf->written;
2905 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2906 1.1 christos }
2907 1.1 christos return cycles;
2908 1.1 christos #undef FLD
2909 1.1 christos }
2910 1.1 christos
2911 1.1 christos static int
2912 1.1 christos model_test_divu (SIM_CPU *current_cpu, void *sem_arg)
2913 1.1 christos {
2914 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
2915 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2916 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2917 1.1 christos int cycles = 0;
2918 1.1 christos {
2919 1.1 christos int referenced = 0;
2920 1.1 christos int UNUSED insn_referenced = abuf->written;
2921 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2922 1.1 christos }
2923 1.1 christos return cycles;
2924 1.1 christos #undef FLD
2925 1.1 christos }
2926 1.1 christos
2927 1.1 christos static int
2928 1.1 christos model_test_rem (SIM_CPU *current_cpu, void *sem_arg)
2929 1.1 christos {
2930 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
2931 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2932 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2933 1.1 christos int cycles = 0;
2934 1.1 christos {
2935 1.1 christos int referenced = 0;
2936 1.1 christos int UNUSED insn_referenced = abuf->written;
2937 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2938 1.1 christos }
2939 1.1 christos return cycles;
2940 1.1 christos #undef FLD
2941 1.1 christos }
2942 1.1 christos
2943 1.1 christos static int
2944 1.1 christos model_test_remu (SIM_CPU *current_cpu, void *sem_arg)
2945 1.1 christos {
2946 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
2947 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2948 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2949 1.1 christos int cycles = 0;
2950 1.1 christos {
2951 1.1 christos int referenced = 0;
2952 1.1 christos int UNUSED insn_referenced = abuf->written;
2953 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2954 1.1 christos }
2955 1.1 christos return cycles;
2956 1.1 christos #undef FLD
2957 1.1 christos }
2958 1.1 christos
2959 1.1 christos static int
2960 1.1 christos model_test_jl (SIM_CPU *current_cpu, void *sem_arg)
2961 1.1 christos {
2962 1.1 christos #define FLD(f) abuf->fields.sfmt_jl.f
2963 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2964 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2965 1.1 christos int cycles = 0;
2966 1.1 christos {
2967 1.1 christos int referenced = 0;
2968 1.1 christos int UNUSED insn_referenced = abuf->written;
2969 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2970 1.1 christos }
2971 1.1 christos return cycles;
2972 1.1 christos #undef FLD
2973 1.1 christos }
2974 1.1 christos
2975 1.1 christos static int
2976 1.1 christos model_test_jmp (SIM_CPU *current_cpu, void *sem_arg)
2977 1.1 christos {
2978 1.1 christos #define FLD(f) abuf->fields.sfmt_jl.f
2979 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2980 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2981 1.1 christos int cycles = 0;
2982 1.1 christos {
2983 1.1 christos int referenced = 0;
2984 1.1 christos int UNUSED insn_referenced = abuf->written;
2985 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
2986 1.1 christos }
2987 1.1 christos return cycles;
2988 1.1 christos #undef FLD
2989 1.1 christos }
2990 1.1 christos
2991 1.1 christos static int
2992 1.1 christos model_test_ld (SIM_CPU *current_cpu, void *sem_arg)
2993 1.1 christos {
2994 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
2995 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2996 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
2997 1.1 christos int cycles = 0;
2998 1.1 christos {
2999 1.1 christos int referenced = 0;
3000 1.1 christos int UNUSED insn_referenced = abuf->written;
3001 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3002 1.1 christos }
3003 1.1 christos return cycles;
3004 1.1 christos #undef FLD
3005 1.1 christos }
3006 1.1 christos
3007 1.1 christos static int
3008 1.1 christos model_test_ld_d (SIM_CPU *current_cpu, void *sem_arg)
3009 1.1 christos {
3010 1.1 christos #define FLD(f) abuf->fields.sfmt_add3.f
3011 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3012 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3013 1.1 christos int cycles = 0;
3014 1.1 christos {
3015 1.1 christos int referenced = 0;
3016 1.1 christos int UNUSED insn_referenced = abuf->written;
3017 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3018 1.1 christos }
3019 1.1 christos return cycles;
3020 1.1 christos #undef FLD
3021 1.1 christos }
3022 1.1 christos
3023 1.1 christos static int
3024 1.1 christos model_test_ldb (SIM_CPU *current_cpu, void *sem_arg)
3025 1.1 christos {
3026 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
3027 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3028 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3029 1.1 christos int cycles = 0;
3030 1.1 christos {
3031 1.1 christos int referenced = 0;
3032 1.1 christos int UNUSED insn_referenced = abuf->written;
3033 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3034 1.1 christos }
3035 1.1 christos return cycles;
3036 1.1 christos #undef FLD
3037 1.1 christos }
3038 1.1 christos
3039 1.1 christos static int
3040 1.1 christos model_test_ldb_d (SIM_CPU *current_cpu, void *sem_arg)
3041 1.1 christos {
3042 1.1 christos #define FLD(f) abuf->fields.sfmt_add3.f
3043 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3044 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3045 1.1 christos int cycles = 0;
3046 1.1 christos {
3047 1.1 christos int referenced = 0;
3048 1.1 christos int UNUSED insn_referenced = abuf->written;
3049 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3050 1.1 christos }
3051 1.1 christos return cycles;
3052 1.1 christos #undef FLD
3053 1.1 christos }
3054 1.1 christos
3055 1.1 christos static int
3056 1.1 christos model_test_ldh (SIM_CPU *current_cpu, void *sem_arg)
3057 1.1 christos {
3058 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
3059 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3060 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3061 1.1 christos int cycles = 0;
3062 1.1 christos {
3063 1.1 christos int referenced = 0;
3064 1.1 christos int UNUSED insn_referenced = abuf->written;
3065 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3066 1.1 christos }
3067 1.1 christos return cycles;
3068 1.1 christos #undef FLD
3069 1.1 christos }
3070 1.1 christos
3071 1.1 christos static int
3072 1.1 christos model_test_ldh_d (SIM_CPU *current_cpu, void *sem_arg)
3073 1.1 christos {
3074 1.1 christos #define FLD(f) abuf->fields.sfmt_add3.f
3075 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3076 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3077 1.1 christos int cycles = 0;
3078 1.1 christos {
3079 1.1 christos int referenced = 0;
3080 1.1 christos int UNUSED insn_referenced = abuf->written;
3081 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3082 1.1 christos }
3083 1.1 christos return cycles;
3084 1.1 christos #undef FLD
3085 1.1 christos }
3086 1.1 christos
3087 1.1 christos static int
3088 1.1 christos model_test_ldub (SIM_CPU *current_cpu, void *sem_arg)
3089 1.1 christos {
3090 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
3091 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3092 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3093 1.1 christos int cycles = 0;
3094 1.1 christos {
3095 1.1 christos int referenced = 0;
3096 1.1 christos int UNUSED insn_referenced = abuf->written;
3097 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3098 1.1 christos }
3099 1.1 christos return cycles;
3100 1.1 christos #undef FLD
3101 1.1 christos }
3102 1.1 christos
3103 1.1 christos static int
3104 1.1 christos model_test_ldub_d (SIM_CPU *current_cpu, void *sem_arg)
3105 1.1 christos {
3106 1.1 christos #define FLD(f) abuf->fields.sfmt_add3.f
3107 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3108 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3109 1.1 christos int cycles = 0;
3110 1.1 christos {
3111 1.1 christos int referenced = 0;
3112 1.1 christos int UNUSED insn_referenced = abuf->written;
3113 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3114 1.1 christos }
3115 1.1 christos return cycles;
3116 1.1 christos #undef FLD
3117 1.1 christos }
3118 1.1 christos
3119 1.1 christos static int
3120 1.1 christos model_test_lduh (SIM_CPU *current_cpu, void *sem_arg)
3121 1.1 christos {
3122 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
3123 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3124 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3125 1.1 christos int cycles = 0;
3126 1.1 christos {
3127 1.1 christos int referenced = 0;
3128 1.1 christos int UNUSED insn_referenced = abuf->written;
3129 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3130 1.1 christos }
3131 1.1 christos return cycles;
3132 1.1 christos #undef FLD
3133 1.1 christos }
3134 1.1 christos
3135 1.1 christos static int
3136 1.1 christos model_test_lduh_d (SIM_CPU *current_cpu, void *sem_arg)
3137 1.1 christos {
3138 1.1 christos #define FLD(f) abuf->fields.sfmt_add3.f
3139 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3140 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3141 1.1 christos int cycles = 0;
3142 1.1 christos {
3143 1.1 christos int referenced = 0;
3144 1.1 christos int UNUSED insn_referenced = abuf->written;
3145 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3146 1.1 christos }
3147 1.1 christos return cycles;
3148 1.1 christos #undef FLD
3149 1.1 christos }
3150 1.1 christos
3151 1.1 christos static int
3152 1.1 christos model_test_ld_plus (SIM_CPU *current_cpu, void *sem_arg)
3153 1.1 christos {
3154 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
3155 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3156 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3157 1.1 christos int cycles = 0;
3158 1.1 christos {
3159 1.1 christos int referenced = 0;
3160 1.1 christos int UNUSED insn_referenced = abuf->written;
3161 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3162 1.1 christos }
3163 1.1 christos return cycles;
3164 1.1 christos #undef FLD
3165 1.1 christos }
3166 1.1 christos
3167 1.1 christos static int
3168 1.1 christos model_test_ld24 (SIM_CPU *current_cpu, void *sem_arg)
3169 1.1 christos {
3170 1.1 christos #define FLD(f) abuf->fields.sfmt_ld24.f
3171 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3172 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3173 1.1 christos int cycles = 0;
3174 1.1 christos {
3175 1.1 christos int referenced = 0;
3176 1.1 christos int UNUSED insn_referenced = abuf->written;
3177 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3178 1.1 christos }
3179 1.1 christos return cycles;
3180 1.1 christos #undef FLD
3181 1.1 christos }
3182 1.1 christos
3183 1.1 christos static int
3184 1.1 christos model_test_ldi8 (SIM_CPU *current_cpu, void *sem_arg)
3185 1.1 christos {
3186 1.1 christos #define FLD(f) abuf->fields.sfmt_addi.f
3187 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3188 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3189 1.1 christos int cycles = 0;
3190 1.1 christos {
3191 1.1 christos int referenced = 0;
3192 1.1 christos int UNUSED insn_referenced = abuf->written;
3193 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3194 1.1 christos }
3195 1.1 christos return cycles;
3196 1.1 christos #undef FLD
3197 1.1 christos }
3198 1.1 christos
3199 1.1 christos static int
3200 1.1 christos model_test_ldi16 (SIM_CPU *current_cpu, void *sem_arg)
3201 1.1 christos {
3202 1.1 christos #define FLD(f) abuf->fields.sfmt_add3.f
3203 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3204 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3205 1.1 christos int cycles = 0;
3206 1.1 christos {
3207 1.1 christos int referenced = 0;
3208 1.1 christos int UNUSED insn_referenced = abuf->written;
3209 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3210 1.1 christos }
3211 1.1 christos return cycles;
3212 1.1 christos #undef FLD
3213 1.1 christos }
3214 1.1 christos
3215 1.1 christos static int
3216 1.1 christos model_test_lock (SIM_CPU *current_cpu, void *sem_arg)
3217 1.1 christos {
3218 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
3219 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3220 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3221 1.1 christos int cycles = 0;
3222 1.1 christos {
3223 1.1 christos int referenced = 0;
3224 1.1 christos int UNUSED insn_referenced = abuf->written;
3225 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3226 1.1 christos }
3227 1.1 christos return cycles;
3228 1.1 christos #undef FLD
3229 1.1 christos }
3230 1.1 christos
3231 1.1 christos static int
3232 1.1 christos model_test_machi (SIM_CPU *current_cpu, void *sem_arg)
3233 1.1 christos {
3234 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
3235 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3236 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3237 1.1 christos int cycles = 0;
3238 1.1 christos {
3239 1.1 christos int referenced = 0;
3240 1.1 christos int UNUSED insn_referenced = abuf->written;
3241 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3242 1.1 christos }
3243 1.1 christos return cycles;
3244 1.1 christos #undef FLD
3245 1.1 christos }
3246 1.1 christos
3247 1.1 christos static int
3248 1.1 christos model_test_maclo (SIM_CPU *current_cpu, void *sem_arg)
3249 1.1 christos {
3250 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
3251 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3252 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3253 1.1 christos int cycles = 0;
3254 1.1 christos {
3255 1.1 christos int referenced = 0;
3256 1.1 christos int UNUSED insn_referenced = abuf->written;
3257 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3258 1.1 christos }
3259 1.1 christos return cycles;
3260 1.1 christos #undef FLD
3261 1.1 christos }
3262 1.1 christos
3263 1.1 christos static int
3264 1.1 christos model_test_macwhi (SIM_CPU *current_cpu, void *sem_arg)
3265 1.1 christos {
3266 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
3267 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3268 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3269 1.1 christos int cycles = 0;
3270 1.1 christos {
3271 1.1 christos int referenced = 0;
3272 1.1 christos int UNUSED insn_referenced = abuf->written;
3273 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3274 1.1 christos }
3275 1.1 christos return cycles;
3276 1.1 christos #undef FLD
3277 1.1 christos }
3278 1.1 christos
3279 1.1 christos static int
3280 1.1 christos model_test_macwlo (SIM_CPU *current_cpu, void *sem_arg)
3281 1.1 christos {
3282 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
3283 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3284 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3285 1.1 christos int cycles = 0;
3286 1.1 christos {
3287 1.1 christos int referenced = 0;
3288 1.1 christos int UNUSED insn_referenced = abuf->written;
3289 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3290 1.1 christos }
3291 1.1 christos return cycles;
3292 1.1 christos #undef FLD
3293 1.1 christos }
3294 1.1 christos
3295 1.1 christos static int
3296 1.1 christos model_test_mul (SIM_CPU *current_cpu, void *sem_arg)
3297 1.1 christos {
3298 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
3299 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3300 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3301 1.1 christos int cycles = 0;
3302 1.1 christos {
3303 1.1 christos int referenced = 0;
3304 1.1 christos int UNUSED insn_referenced = abuf->written;
3305 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3306 1.1 christos }
3307 1.1 christos return cycles;
3308 1.1 christos #undef FLD
3309 1.1 christos }
3310 1.1 christos
3311 1.1 christos static int
3312 1.1 christos model_test_mulhi (SIM_CPU *current_cpu, void *sem_arg)
3313 1.1 christos {
3314 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
3315 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3316 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3317 1.1 christos int cycles = 0;
3318 1.1 christos {
3319 1.1 christos int referenced = 0;
3320 1.1 christos int UNUSED insn_referenced = abuf->written;
3321 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3322 1.1 christos }
3323 1.1 christos return cycles;
3324 1.1 christos #undef FLD
3325 1.1 christos }
3326 1.1 christos
3327 1.1 christos static int
3328 1.1 christos model_test_mullo (SIM_CPU *current_cpu, void *sem_arg)
3329 1.1 christos {
3330 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
3331 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3332 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3333 1.1 christos int cycles = 0;
3334 1.1 christos {
3335 1.1 christos int referenced = 0;
3336 1.1 christos int UNUSED insn_referenced = abuf->written;
3337 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3338 1.1 christos }
3339 1.1 christos return cycles;
3340 1.1 christos #undef FLD
3341 1.1 christos }
3342 1.1 christos
3343 1.1 christos static int
3344 1.1 christos model_test_mulwhi (SIM_CPU *current_cpu, void *sem_arg)
3345 1.1 christos {
3346 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
3347 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3348 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3349 1.1 christos int cycles = 0;
3350 1.1 christos {
3351 1.1 christos int referenced = 0;
3352 1.1 christos int UNUSED insn_referenced = abuf->written;
3353 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3354 1.1 christos }
3355 1.1 christos return cycles;
3356 1.1 christos #undef FLD
3357 1.1 christos }
3358 1.1 christos
3359 1.1 christos static int
3360 1.1 christos model_test_mulwlo (SIM_CPU *current_cpu, void *sem_arg)
3361 1.1 christos {
3362 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
3363 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3364 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3365 1.1 christos int cycles = 0;
3366 1.1 christos {
3367 1.1 christos int referenced = 0;
3368 1.1 christos int UNUSED insn_referenced = abuf->written;
3369 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3370 1.1 christos }
3371 1.1 christos return cycles;
3372 1.1 christos #undef FLD
3373 1.1 christos }
3374 1.1 christos
3375 1.1 christos static int
3376 1.1 christos model_test_mv (SIM_CPU *current_cpu, void *sem_arg)
3377 1.1 christos {
3378 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
3379 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3380 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3381 1.1 christos int cycles = 0;
3382 1.1 christos {
3383 1.1 christos int referenced = 0;
3384 1.1 christos int UNUSED insn_referenced = abuf->written;
3385 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3386 1.1 christos }
3387 1.1 christos return cycles;
3388 1.1 christos #undef FLD
3389 1.1 christos }
3390 1.1 christos
3391 1.1 christos static int
3392 1.1 christos model_test_mvfachi (SIM_CPU *current_cpu, void *sem_arg)
3393 1.1 christos {
3394 1.1 christos #define FLD(f) abuf->fields.sfmt_seth.f
3395 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3396 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3397 1.1 christos int cycles = 0;
3398 1.1 christos {
3399 1.1 christos int referenced = 0;
3400 1.1 christos int UNUSED insn_referenced = abuf->written;
3401 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3402 1.1 christos }
3403 1.1 christos return cycles;
3404 1.1 christos #undef FLD
3405 1.1 christos }
3406 1.1 christos
3407 1.1 christos static int
3408 1.1 christos model_test_mvfaclo (SIM_CPU *current_cpu, void *sem_arg)
3409 1.1 christos {
3410 1.1 christos #define FLD(f) abuf->fields.sfmt_seth.f
3411 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3412 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3413 1.1 christos int cycles = 0;
3414 1.1 christos {
3415 1.1 christos int referenced = 0;
3416 1.1 christos int UNUSED insn_referenced = abuf->written;
3417 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3418 1.1 christos }
3419 1.1 christos return cycles;
3420 1.1 christos #undef FLD
3421 1.1 christos }
3422 1.1 christos
3423 1.1 christos static int
3424 1.1 christos model_test_mvfacmi (SIM_CPU *current_cpu, void *sem_arg)
3425 1.1 christos {
3426 1.1 christos #define FLD(f) abuf->fields.sfmt_seth.f
3427 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3428 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3429 1.1 christos int cycles = 0;
3430 1.1 christos {
3431 1.1 christos int referenced = 0;
3432 1.1 christos int UNUSED insn_referenced = abuf->written;
3433 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3434 1.1 christos }
3435 1.1 christos return cycles;
3436 1.1 christos #undef FLD
3437 1.1 christos }
3438 1.1 christos
3439 1.1 christos static int
3440 1.1 christos model_test_mvfc (SIM_CPU *current_cpu, void *sem_arg)
3441 1.1 christos {
3442 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
3443 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3444 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3445 1.1 christos int cycles = 0;
3446 1.1 christos {
3447 1.1 christos int referenced = 0;
3448 1.1 christos int UNUSED insn_referenced = abuf->written;
3449 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3450 1.1 christos }
3451 1.1 christos return cycles;
3452 1.1 christos #undef FLD
3453 1.1 christos }
3454 1.1 christos
3455 1.1 christos static int
3456 1.1 christos model_test_mvtachi (SIM_CPU *current_cpu, void *sem_arg)
3457 1.1 christos {
3458 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
3459 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3460 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3461 1.1 christos int cycles = 0;
3462 1.1 christos {
3463 1.1 christos int referenced = 0;
3464 1.1 christos int UNUSED insn_referenced = abuf->written;
3465 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3466 1.1 christos }
3467 1.1 christos return cycles;
3468 1.1 christos #undef FLD
3469 1.1 christos }
3470 1.1 christos
3471 1.1 christos static int
3472 1.1 christos model_test_mvtaclo (SIM_CPU *current_cpu, void *sem_arg)
3473 1.1 christos {
3474 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
3475 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3476 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3477 1.1 christos int cycles = 0;
3478 1.1 christos {
3479 1.1 christos int referenced = 0;
3480 1.1 christos int UNUSED insn_referenced = abuf->written;
3481 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3482 1.1 christos }
3483 1.1 christos return cycles;
3484 1.1 christos #undef FLD
3485 1.1 christos }
3486 1.1 christos
3487 1.1 christos static int
3488 1.1 christos model_test_mvtc (SIM_CPU *current_cpu, void *sem_arg)
3489 1.1 christos {
3490 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
3491 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3492 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3493 1.1 christos int cycles = 0;
3494 1.1 christos {
3495 1.1 christos int referenced = 0;
3496 1.1 christos int UNUSED insn_referenced = abuf->written;
3497 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3498 1.1 christos }
3499 1.1 christos return cycles;
3500 1.1 christos #undef FLD
3501 1.1 christos }
3502 1.1 christos
3503 1.1 christos static int
3504 1.1 christos model_test_neg (SIM_CPU *current_cpu, void *sem_arg)
3505 1.1 christos {
3506 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
3507 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3508 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3509 1.1 christos int cycles = 0;
3510 1.1 christos {
3511 1.1 christos int referenced = 0;
3512 1.1 christos int UNUSED insn_referenced = abuf->written;
3513 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3514 1.1 christos }
3515 1.1 christos return cycles;
3516 1.1 christos #undef FLD
3517 1.1 christos }
3518 1.1 christos
3519 1.1 christos static int
3520 1.1 christos model_test_nop (SIM_CPU *current_cpu, void *sem_arg)
3521 1.1 christos {
3522 1.1 christos #define FLD(f) abuf->fields.sfmt_empty.f
3523 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3524 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3525 1.1 christos int cycles = 0;
3526 1.1 christos {
3527 1.1 christos int referenced = 0;
3528 1.1 christos int UNUSED insn_referenced = abuf->written;
3529 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3530 1.1 christos }
3531 1.1 christos return cycles;
3532 1.1 christos #undef FLD
3533 1.1 christos }
3534 1.1 christos
3535 1.1 christos static int
3536 1.1 christos model_test_not (SIM_CPU *current_cpu, void *sem_arg)
3537 1.1 christos {
3538 1.1 christos #define FLD(f) abuf->fields.sfmt_ld_plus.f
3539 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3540 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3541 1.1 christos int cycles = 0;
3542 1.1 christos {
3543 1.1 christos int referenced = 0;
3544 1.1 christos int UNUSED insn_referenced = abuf->written;
3545 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3546 1.1 christos }
3547 1.1 christos return cycles;
3548 1.1 christos #undef FLD
3549 1.1 christos }
3550 1.1 christos
3551 1.1 christos static int
3552 1.1 christos model_test_rac (SIM_CPU *current_cpu, void *sem_arg)
3553 1.1 christos {
3554 1.1 christos #define FLD(f) abuf->fields.sfmt_empty.f
3555 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3556 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3557 1.1 christos int cycles = 0;
3558 1.1 christos {
3559 1.1 christos int referenced = 0;
3560 1.1 christos int UNUSED insn_referenced = abuf->written;
3561 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3562 1.1 christos }
3563 1.1 christos return cycles;
3564 1.1 christos #undef FLD
3565 1.1 christos }
3566 1.1 christos
3567 1.1 christos static int
3568 1.1 christos model_test_rach (SIM_CPU *current_cpu, void *sem_arg)
3569 1.1 christos {
3570 1.1 christos #define FLD(f) abuf->fields.sfmt_empty.f
3571 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3572 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3573 1.1 christos int cycles = 0;
3574 1.1 christos {
3575 1.1 christos int referenced = 0;
3576 1.1 christos int UNUSED insn_referenced = abuf->written;
3577 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3578 1.1 christos }
3579 1.1 christos return cycles;
3580 1.1 christos #undef FLD
3581 1.1 christos }
3582 1.1 christos
3583 1.1 christos static int
3584 1.1 christos model_test_rte (SIM_CPU *current_cpu, void *sem_arg)
3585 1.1 christos {
3586 1.1 christos #define FLD(f) abuf->fields.sfmt_empty.f
3587 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3588 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3589 1.1 christos int cycles = 0;
3590 1.1 christos {
3591 1.1 christos int referenced = 0;
3592 1.1 christos int UNUSED insn_referenced = abuf->written;
3593 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3594 1.1 christos }
3595 1.1 christos return cycles;
3596 1.1 christos #undef FLD
3597 1.1 christos }
3598 1.1 christos
3599 1.1 christos static int
3600 1.1 christos model_test_seth (SIM_CPU *current_cpu, void *sem_arg)
3601 1.1 christos {
3602 1.1 christos #define FLD(f) abuf->fields.sfmt_seth.f
3603 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3604 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3605 1.1 christos int cycles = 0;
3606 1.1 christos {
3607 1.1 christos int referenced = 0;
3608 1.1 christos int UNUSED insn_referenced = abuf->written;
3609 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3610 1.1 christos }
3611 1.1 christos return cycles;
3612 1.1 christos #undef FLD
3613 1.1 christos }
3614 1.1 christos
3615 1.1 christos static int
3616 1.1 christos model_test_sll (SIM_CPU *current_cpu, void *sem_arg)
3617 1.1 christos {
3618 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
3619 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3620 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3621 1.1 christos int cycles = 0;
3622 1.1 christos {
3623 1.1 christos int referenced = 0;
3624 1.1 christos int UNUSED insn_referenced = abuf->written;
3625 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3626 1.1 christos }
3627 1.1 christos return cycles;
3628 1.1 christos #undef FLD
3629 1.1 christos }
3630 1.1 christos
3631 1.1 christos static int
3632 1.1 christos model_test_sll3 (SIM_CPU *current_cpu, void *sem_arg)
3633 1.1 christos {
3634 1.1 christos #define FLD(f) abuf->fields.sfmt_add3.f
3635 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3636 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3637 1.1 christos int cycles = 0;
3638 1.1 christos {
3639 1.1 christos int referenced = 0;
3640 1.1 christos int UNUSED insn_referenced = abuf->written;
3641 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3642 1.1 christos }
3643 1.1 christos return cycles;
3644 1.1 christos #undef FLD
3645 1.1 christos }
3646 1.1 christos
3647 1.1 christos static int
3648 1.1 christos model_test_slli (SIM_CPU *current_cpu, void *sem_arg)
3649 1.1 christos {
3650 1.1 christos #define FLD(f) abuf->fields.sfmt_slli.f
3651 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3652 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3653 1.1 christos int cycles = 0;
3654 1.1 christos {
3655 1.1 christos int referenced = 0;
3656 1.1 christos int UNUSED insn_referenced = abuf->written;
3657 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3658 1.1 christos }
3659 1.1 christos return cycles;
3660 1.1 christos #undef FLD
3661 1.1 christos }
3662 1.1 christos
3663 1.1 christos static int
3664 1.1 christos model_test_sra (SIM_CPU *current_cpu, void *sem_arg)
3665 1.1 christos {
3666 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
3667 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3668 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3669 1.1 christos int cycles = 0;
3670 1.1 christos {
3671 1.1 christos int referenced = 0;
3672 1.1 christos int UNUSED insn_referenced = abuf->written;
3673 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3674 1.1 christos }
3675 1.1 christos return cycles;
3676 1.1 christos #undef FLD
3677 1.1 christos }
3678 1.1 christos
3679 1.1 christos static int
3680 1.1 christos model_test_sra3 (SIM_CPU *current_cpu, void *sem_arg)
3681 1.1 christos {
3682 1.1 christos #define FLD(f) abuf->fields.sfmt_add3.f
3683 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3684 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3685 1.1 christos int cycles = 0;
3686 1.1 christos {
3687 1.1 christos int referenced = 0;
3688 1.1 christos int UNUSED insn_referenced = abuf->written;
3689 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3690 1.1 christos }
3691 1.1 christos return cycles;
3692 1.1 christos #undef FLD
3693 1.1 christos }
3694 1.1 christos
3695 1.1 christos static int
3696 1.1 christos model_test_srai (SIM_CPU *current_cpu, void *sem_arg)
3697 1.1 christos {
3698 1.1 christos #define FLD(f) abuf->fields.sfmt_slli.f
3699 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3700 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3701 1.1 christos int cycles = 0;
3702 1.1 christos {
3703 1.1 christos int referenced = 0;
3704 1.1 christos int UNUSED insn_referenced = abuf->written;
3705 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3706 1.1 christos }
3707 1.1 christos return cycles;
3708 1.1 christos #undef FLD
3709 1.1 christos }
3710 1.1 christos
3711 1.1 christos static int
3712 1.1 christos model_test_srl (SIM_CPU *current_cpu, void *sem_arg)
3713 1.1 christos {
3714 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
3715 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3716 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3717 1.1 christos int cycles = 0;
3718 1.1 christos {
3719 1.1 christos int referenced = 0;
3720 1.1 christos int UNUSED insn_referenced = abuf->written;
3721 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3722 1.1 christos }
3723 1.1 christos return cycles;
3724 1.1 christos #undef FLD
3725 1.1 christos }
3726 1.1 christos
3727 1.1 christos static int
3728 1.1 christos model_test_srl3 (SIM_CPU *current_cpu, void *sem_arg)
3729 1.1 christos {
3730 1.1 christos #define FLD(f) abuf->fields.sfmt_add3.f
3731 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3732 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3733 1.1 christos int cycles = 0;
3734 1.1 christos {
3735 1.1 christos int referenced = 0;
3736 1.1 christos int UNUSED insn_referenced = abuf->written;
3737 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3738 1.1 christos }
3739 1.1 christos return cycles;
3740 1.1 christos #undef FLD
3741 1.1 christos }
3742 1.1 christos
3743 1.1 christos static int
3744 1.1 christos model_test_srli (SIM_CPU *current_cpu, void *sem_arg)
3745 1.1 christos {
3746 1.1 christos #define FLD(f) abuf->fields.sfmt_slli.f
3747 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3748 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3749 1.1 christos int cycles = 0;
3750 1.1 christos {
3751 1.1 christos int referenced = 0;
3752 1.1 christos int UNUSED insn_referenced = abuf->written;
3753 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3754 1.1 christos }
3755 1.1 christos return cycles;
3756 1.1 christos #undef FLD
3757 1.1 christos }
3758 1.1 christos
3759 1.1 christos static int
3760 1.1 christos model_test_st (SIM_CPU *current_cpu, void *sem_arg)
3761 1.1 christos {
3762 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
3763 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3764 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3765 1.1 christos int cycles = 0;
3766 1.1 christos {
3767 1.1 christos int referenced = 0;
3768 1.1 christos int UNUSED insn_referenced = abuf->written;
3769 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3770 1.1 christos }
3771 1.1 christos return cycles;
3772 1.1 christos #undef FLD
3773 1.1 christos }
3774 1.1 christos
3775 1.1 christos static int
3776 1.1 christos model_test_st_d (SIM_CPU *current_cpu, void *sem_arg)
3777 1.1 christos {
3778 1.1 christos #define FLD(f) abuf->fields.sfmt_st_d.f
3779 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3780 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3781 1.1 christos int cycles = 0;
3782 1.1 christos {
3783 1.1 christos int referenced = 0;
3784 1.1 christos int UNUSED insn_referenced = abuf->written;
3785 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3786 1.1 christos }
3787 1.1 christos return cycles;
3788 1.1 christos #undef FLD
3789 1.1 christos }
3790 1.1 christos
3791 1.1 christos static int
3792 1.1 christos model_test_stb (SIM_CPU *current_cpu, void *sem_arg)
3793 1.1 christos {
3794 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
3795 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3796 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3797 1.1 christos int cycles = 0;
3798 1.1 christos {
3799 1.1 christos int referenced = 0;
3800 1.1 christos int UNUSED insn_referenced = abuf->written;
3801 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3802 1.1 christos }
3803 1.1 christos return cycles;
3804 1.1 christos #undef FLD
3805 1.1 christos }
3806 1.1 christos
3807 1.1 christos static int
3808 1.1 christos model_test_stb_d (SIM_CPU *current_cpu, void *sem_arg)
3809 1.1 christos {
3810 1.1 christos #define FLD(f) abuf->fields.sfmt_st_d.f
3811 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3812 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3813 1.1 christos int cycles = 0;
3814 1.1 christos {
3815 1.1 christos int referenced = 0;
3816 1.1 christos int UNUSED insn_referenced = abuf->written;
3817 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3818 1.1 christos }
3819 1.1 christos return cycles;
3820 1.1 christos #undef FLD
3821 1.1 christos }
3822 1.1 christos
3823 1.1 christos static int
3824 1.1 christos model_test_sth (SIM_CPU *current_cpu, void *sem_arg)
3825 1.1 christos {
3826 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
3827 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3828 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3829 1.1 christos int cycles = 0;
3830 1.1 christos {
3831 1.1 christos int referenced = 0;
3832 1.1 christos int UNUSED insn_referenced = abuf->written;
3833 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3834 1.1 christos }
3835 1.1 christos return cycles;
3836 1.1 christos #undef FLD
3837 1.1 christos }
3838 1.1 christos
3839 1.1 christos static int
3840 1.1 christos model_test_sth_d (SIM_CPU *current_cpu, void *sem_arg)
3841 1.1 christos {
3842 1.1 christos #define FLD(f) abuf->fields.sfmt_st_d.f
3843 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3844 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3845 1.1 christos int cycles = 0;
3846 1.1 christos {
3847 1.1 christos int referenced = 0;
3848 1.1 christos int UNUSED insn_referenced = abuf->written;
3849 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3850 1.1 christos }
3851 1.1 christos return cycles;
3852 1.1 christos #undef FLD
3853 1.1 christos }
3854 1.1 christos
3855 1.1 christos static int
3856 1.1 christos model_test_st_plus (SIM_CPU *current_cpu, void *sem_arg)
3857 1.1 christos {
3858 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
3859 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3860 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3861 1.1 christos int cycles = 0;
3862 1.1 christos {
3863 1.1 christos int referenced = 0;
3864 1.1 christos int UNUSED insn_referenced = abuf->written;
3865 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3866 1.1 christos }
3867 1.1 christos return cycles;
3868 1.1 christos #undef FLD
3869 1.1 christos }
3870 1.1 christos
3871 1.1 christos static int
3872 1.1 christos model_test_st_minus (SIM_CPU *current_cpu, void *sem_arg)
3873 1.1 christos {
3874 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
3875 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3876 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3877 1.1 christos int cycles = 0;
3878 1.1 christos {
3879 1.1 christos int referenced = 0;
3880 1.1 christos int UNUSED insn_referenced = abuf->written;
3881 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3882 1.1 christos }
3883 1.1 christos return cycles;
3884 1.1 christos #undef FLD
3885 1.1 christos }
3886 1.1 christos
3887 1.1 christos static int
3888 1.1 christos model_test_sub (SIM_CPU *current_cpu, void *sem_arg)
3889 1.1 christos {
3890 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
3891 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3892 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3893 1.1 christos int cycles = 0;
3894 1.1 christos {
3895 1.1 christos int referenced = 0;
3896 1.1 christos int UNUSED insn_referenced = abuf->written;
3897 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3898 1.1 christos }
3899 1.1 christos return cycles;
3900 1.1 christos #undef FLD
3901 1.1 christos }
3902 1.1 christos
3903 1.1 christos static int
3904 1.1 christos model_test_subv (SIM_CPU *current_cpu, void *sem_arg)
3905 1.1 christos {
3906 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
3907 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3908 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3909 1.1 christos int cycles = 0;
3910 1.1 christos {
3911 1.1 christos int referenced = 0;
3912 1.1 christos int UNUSED insn_referenced = abuf->written;
3913 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3914 1.1 christos }
3915 1.1 christos return cycles;
3916 1.1 christos #undef FLD
3917 1.1 christos }
3918 1.1 christos
3919 1.1 christos static int
3920 1.1 christos model_test_subx (SIM_CPU *current_cpu, void *sem_arg)
3921 1.1 christos {
3922 1.1 christos #define FLD(f) abuf->fields.sfmt_add.f
3923 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3924 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3925 1.1 christos int cycles = 0;
3926 1.1 christos {
3927 1.1 christos int referenced = 0;
3928 1.1 christos int UNUSED insn_referenced = abuf->written;
3929 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3930 1.1 christos }
3931 1.1 christos return cycles;
3932 1.1 christos #undef FLD
3933 1.1 christos }
3934 1.1 christos
3935 1.1 christos static int
3936 1.1 christos model_test_trap (SIM_CPU *current_cpu, void *sem_arg)
3937 1.1 christos {
3938 1.1 christos #define FLD(f) abuf->fields.sfmt_trap.f
3939 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3940 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3941 1.1 christos int cycles = 0;
3942 1.1 christos {
3943 1.1 christos int referenced = 0;
3944 1.1 christos int UNUSED insn_referenced = abuf->written;
3945 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3946 1.1 christos }
3947 1.1 christos return cycles;
3948 1.1 christos #undef FLD
3949 1.1 christos }
3950 1.1 christos
3951 1.1 christos static int
3952 1.1 christos model_test_unlock (SIM_CPU *current_cpu, void *sem_arg)
3953 1.1 christos {
3954 1.1 christos #define FLD(f) abuf->fields.sfmt_st_plus.f
3955 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3956 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3957 1.1 christos int cycles = 0;
3958 1.1 christos {
3959 1.1 christos int referenced = 0;
3960 1.1 christos int UNUSED insn_referenced = abuf->written;
3961 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3962 1.1 christos }
3963 1.1 christos return cycles;
3964 1.1 christos #undef FLD
3965 1.1 christos }
3966 1.1 christos
3967 1.1 christos static int
3968 1.1 christos model_test_clrpsw (SIM_CPU *current_cpu, void *sem_arg)
3969 1.1 christos {
3970 1.1 christos #define FLD(f) abuf->fields.sfmt_clrpsw.f
3971 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3972 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3973 1.1 christos int cycles = 0;
3974 1.1 christos {
3975 1.1 christos int referenced = 0;
3976 1.1 christos int UNUSED insn_referenced = abuf->written;
3977 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3978 1.1 christos }
3979 1.1 christos return cycles;
3980 1.1 christos #undef FLD
3981 1.1 christos }
3982 1.1 christos
3983 1.1 christos static int
3984 1.1 christos model_test_setpsw (SIM_CPU *current_cpu, void *sem_arg)
3985 1.1 christos {
3986 1.1 christos #define FLD(f) abuf->fields.sfmt_clrpsw.f
3987 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3988 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
3989 1.1 christos int cycles = 0;
3990 1.1 christos {
3991 1.1 christos int referenced = 0;
3992 1.1 christos int UNUSED insn_referenced = abuf->written;
3993 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
3994 1.1 christos }
3995 1.1 christos return cycles;
3996 1.1 christos #undef FLD
3997 1.1 christos }
3998 1.1 christos
3999 1.1 christos static int
4000 1.1 christos model_test_bset (SIM_CPU *current_cpu, void *sem_arg)
4001 1.1 christos {
4002 1.1 christos #define FLD(f) abuf->fields.sfmt_bset.f
4003 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4004 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
4005 1.1 christos int cycles = 0;
4006 1.1 christos {
4007 1.1 christos int referenced = 0;
4008 1.1 christos int UNUSED insn_referenced = abuf->written;
4009 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
4010 1.1 christos }
4011 1.1 christos return cycles;
4012 1.1 christos #undef FLD
4013 1.1 christos }
4014 1.1 christos
4015 1.1 christos static int
4016 1.1 christos model_test_bclr (SIM_CPU *current_cpu, void *sem_arg)
4017 1.1 christos {
4018 1.1 christos #define FLD(f) abuf->fields.sfmt_bset.f
4019 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4020 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
4021 1.1 christos int cycles = 0;
4022 1.1 christos {
4023 1.1 christos int referenced = 0;
4024 1.1 christos int UNUSED insn_referenced = abuf->written;
4025 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
4026 1.1 christos }
4027 1.1 christos return cycles;
4028 1.1 christos #undef FLD
4029 1.1 christos }
4030 1.1 christos
4031 1.1 christos static int
4032 1.1 christos model_test_btst (SIM_CPU *current_cpu, void *sem_arg)
4033 1.1 christos {
4034 1.1 christos #define FLD(f) abuf->fields.sfmt_bset.f
4035 1.1 christos const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4036 1.1 christos const IDESC * UNUSED idesc = abuf->idesc;
4037 1.1 christos int cycles = 0;
4038 1.1 christos {
4039 1.1 christos int referenced = 0;
4040 1.1 christos int UNUSED insn_referenced = abuf->written;
4041 1.1 christos cycles += m32rbf_model_test_u_exec (current_cpu, idesc, 0, referenced);
4042 1.1 christos }
4043 1.1 christos return cycles;
4044 1.1 christos #undef FLD
4045 1.1 christos }
4046 1.1 christos
4047 1.1 christos /* We assume UNIT_NONE == 0 because the tables don't always terminate
4048 1.1 christos entries with it. */
4049 1.1 christos
4050 1.1 christos /* Model timing data for `m32r/d'. */
4051 1.1 christos
4052 1.1 christos static const INSN_TIMING m32r_d_timing[] = {
4053 1.1 christos { M32RBF_INSN_X_INVALID, 0, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4054 1.1 christos { M32RBF_INSN_X_AFTER, 0, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4055 1.1 christos { M32RBF_INSN_X_BEFORE, 0, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4056 1.1 christos { M32RBF_INSN_X_CTI_CHAIN, 0, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4057 1.1 christos { M32RBF_INSN_X_CHAIN, 0, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4058 1.1 christos { M32RBF_INSN_X_BEGIN, 0, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4059 1.1 christos { M32RBF_INSN_ADD, model_m32r_d_add, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4060 1.1 christos { M32RBF_INSN_ADD3, model_m32r_d_add3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4061 1.1 christos { M32RBF_INSN_AND, model_m32r_d_and, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4062 1.1 christos { M32RBF_INSN_AND3, model_m32r_d_and3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4063 1.1 christos { M32RBF_INSN_OR, model_m32r_d_or, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4064 1.1 christos { M32RBF_INSN_OR3, model_m32r_d_or3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4065 1.1 christos { M32RBF_INSN_XOR, model_m32r_d_xor, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4066 1.1 christos { M32RBF_INSN_XOR3, model_m32r_d_xor3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4067 1.1 christos { M32RBF_INSN_ADDI, model_m32r_d_addi, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4068 1.1 christos { M32RBF_INSN_ADDV, model_m32r_d_addv, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4069 1.1 christos { M32RBF_INSN_ADDV3, model_m32r_d_addv3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4070 1.1 christos { M32RBF_INSN_ADDX, model_m32r_d_addx, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4071 1.1 christos { M32RBF_INSN_BC8, model_m32r_d_bc8, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } },
4072 1.1 christos { M32RBF_INSN_BC24, model_m32r_d_bc24, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } },
4073 1.1 christos { M32RBF_INSN_BEQ, model_m32r_d_beq, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } },
4074 1.1 christos { M32RBF_INSN_BEQZ, model_m32r_d_beqz, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } },
4075 1.1 christos { M32RBF_INSN_BGEZ, model_m32r_d_bgez, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } },
4076 1.1 christos { M32RBF_INSN_BGTZ, model_m32r_d_bgtz, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } },
4077 1.1 christos { M32RBF_INSN_BLEZ, model_m32r_d_blez, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } },
4078 1.1 christos { M32RBF_INSN_BLTZ, model_m32r_d_bltz, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } },
4079 1.1 christos { M32RBF_INSN_BNEZ, model_m32r_d_bnez, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } },
4080 1.1 christos { M32RBF_INSN_BL8, model_m32r_d_bl8, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } },
4081 1.1 christos { M32RBF_INSN_BL24, model_m32r_d_bl24, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } },
4082 1.1 christos { M32RBF_INSN_BNC8, model_m32r_d_bnc8, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } },
4083 1.1 christos { M32RBF_INSN_BNC24, model_m32r_d_bnc24, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } },
4084 1.1 christos { M32RBF_INSN_BNE, model_m32r_d_bne, { { (int) UNIT_M32R_D_U_CTI, 1, 1 }, { (int) UNIT_M32R_D_U_CMP, 1, 0 } } },
4085 1.1 christos { M32RBF_INSN_BRA8, model_m32r_d_bra8, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } },
4086 1.1 christos { M32RBF_INSN_BRA24, model_m32r_d_bra24, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } },
4087 1.1 christos { M32RBF_INSN_CMP, model_m32r_d_cmp, { { (int) UNIT_M32R_D_U_CMP, 1, 1 } } },
4088 1.1 christos { M32RBF_INSN_CMPI, model_m32r_d_cmpi, { { (int) UNIT_M32R_D_U_CMP, 1, 1 } } },
4089 1.1 christos { M32RBF_INSN_CMPU, model_m32r_d_cmpu, { { (int) UNIT_M32R_D_U_CMP, 1, 1 } } },
4090 1.1 christos { M32RBF_INSN_CMPUI, model_m32r_d_cmpui, { { (int) UNIT_M32R_D_U_CMP, 1, 1 } } },
4091 1.1 christos { M32RBF_INSN_DIV, model_m32r_d_div, { { (int) UNIT_M32R_D_U_EXEC, 1, 37 } } },
4092 1.1 christos { M32RBF_INSN_DIVU, model_m32r_d_divu, { { (int) UNIT_M32R_D_U_EXEC, 1, 37 } } },
4093 1.1 christos { M32RBF_INSN_REM, model_m32r_d_rem, { { (int) UNIT_M32R_D_U_EXEC, 1, 37 } } },
4094 1.1 christos { M32RBF_INSN_REMU, model_m32r_d_remu, { { (int) UNIT_M32R_D_U_EXEC, 1, 37 } } },
4095 1.1 christos { M32RBF_INSN_JL, model_m32r_d_jl, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } },
4096 1.1 christos { M32RBF_INSN_JMP, model_m32r_d_jmp, { { (int) UNIT_M32R_D_U_CTI, 1, 1 } } },
4097 1.1 christos { M32RBF_INSN_LD, model_m32r_d_ld, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 } } },
4098 1.1 christos { M32RBF_INSN_LD_D, model_m32r_d_ld_d, { { (int) UNIT_M32R_D_U_LOAD, 1, 2 } } },
4099 1.1 christos { M32RBF_INSN_LDB, model_m32r_d_ldb, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 } } },
4100 1.1 christos { M32RBF_INSN_LDB_D, model_m32r_d_ldb_d, { { (int) UNIT_M32R_D_U_LOAD, 1, 2 } } },
4101 1.1 christos { M32RBF_INSN_LDH, model_m32r_d_ldh, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 } } },
4102 1.1 christos { M32RBF_INSN_LDH_D, model_m32r_d_ldh_d, { { (int) UNIT_M32R_D_U_LOAD, 1, 2 } } },
4103 1.1 christos { M32RBF_INSN_LDUB, model_m32r_d_ldub, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 } } },
4104 1.1 christos { M32RBF_INSN_LDUB_D, model_m32r_d_ldub_d, { { (int) UNIT_M32R_D_U_LOAD, 1, 2 } } },
4105 1.1 christos { M32RBF_INSN_LDUH, model_m32r_d_lduh, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 } } },
4106 1.1 christos { M32RBF_INSN_LDUH_D, model_m32r_d_lduh_d, { { (int) UNIT_M32R_D_U_LOAD, 1, 2 } } },
4107 1.1 christos { M32RBF_INSN_LD_PLUS, model_m32r_d_ld_plus, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 }, { (int) UNIT_M32R_D_U_EXEC, 1, 0 } } },
4108 1.1 christos { M32RBF_INSN_LD24, model_m32r_d_ld24, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4109 1.1 christos { M32RBF_INSN_LDI8, model_m32r_d_ldi8, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4110 1.1 christos { M32RBF_INSN_LDI16, model_m32r_d_ldi16, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4111 1.1 christos { M32RBF_INSN_LOCK, model_m32r_d_lock, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 } } },
4112 1.1 christos { M32RBF_INSN_MACHI, model_m32r_d_machi, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } },
4113 1.1 christos { M32RBF_INSN_MACLO, model_m32r_d_maclo, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } },
4114 1.1 christos { M32RBF_INSN_MACWHI, model_m32r_d_macwhi, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } },
4115 1.1 christos { M32RBF_INSN_MACWLO, model_m32r_d_macwlo, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } },
4116 1.1 christos { M32RBF_INSN_MUL, model_m32r_d_mul, { { (int) UNIT_M32R_D_U_EXEC, 1, 4 } } },
4117 1.1 christos { M32RBF_INSN_MULHI, model_m32r_d_mulhi, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } },
4118 1.1 christos { M32RBF_INSN_MULLO, model_m32r_d_mullo, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } },
4119 1.1 christos { M32RBF_INSN_MULWHI, model_m32r_d_mulwhi, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } },
4120 1.1 christos { M32RBF_INSN_MULWLO, model_m32r_d_mulwlo, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } },
4121 1.1 christos { M32RBF_INSN_MV, model_m32r_d_mv, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4122 1.1 christos { M32RBF_INSN_MVFACHI, model_m32r_d_mvfachi, { { (int) UNIT_M32R_D_U_EXEC, 1, 2 } } },
4123 1.1 christos { M32RBF_INSN_MVFACLO, model_m32r_d_mvfaclo, { { (int) UNIT_M32R_D_U_EXEC, 1, 2 } } },
4124 1.1 christos { M32RBF_INSN_MVFACMI, model_m32r_d_mvfacmi, { { (int) UNIT_M32R_D_U_EXEC, 1, 2 } } },
4125 1.1 christos { M32RBF_INSN_MVFC, model_m32r_d_mvfc, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4126 1.1 christos { M32RBF_INSN_MVTACHI, model_m32r_d_mvtachi, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4127 1.1 christos { M32RBF_INSN_MVTACLO, model_m32r_d_mvtaclo, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4128 1.1 christos { M32RBF_INSN_MVTC, model_m32r_d_mvtc, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4129 1.1 christos { M32RBF_INSN_NEG, model_m32r_d_neg, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4130 1.1 christos { M32RBF_INSN_NOP, model_m32r_d_nop, { { (int) UNIT_M32R_D_U_EXEC, 1, 0 } } },
4131 1.1 christos { M32RBF_INSN_NOT, model_m32r_d_not, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4132 1.1 christos { M32RBF_INSN_RAC, model_m32r_d_rac, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } },
4133 1.1 christos { M32RBF_INSN_RACH, model_m32r_d_rach, { { (int) UNIT_M32R_D_U_MAC, 1, 1 } } },
4134 1.1 christos { M32RBF_INSN_RTE, model_m32r_d_rte, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4135 1.1 christos { M32RBF_INSN_SETH, model_m32r_d_seth, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4136 1.1 christos { M32RBF_INSN_SLL, model_m32r_d_sll, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4137 1.1 christos { M32RBF_INSN_SLL3, model_m32r_d_sll3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4138 1.1 christos { M32RBF_INSN_SLLI, model_m32r_d_slli, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4139 1.1 christos { M32RBF_INSN_SRA, model_m32r_d_sra, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4140 1.1 christos { M32RBF_INSN_SRA3, model_m32r_d_sra3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4141 1.1 christos { M32RBF_INSN_SRAI, model_m32r_d_srai, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4142 1.1 christos { M32RBF_INSN_SRL, model_m32r_d_srl, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4143 1.1 christos { M32RBF_INSN_SRL3, model_m32r_d_srl3, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4144 1.1 christos { M32RBF_INSN_SRLI, model_m32r_d_srli, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4145 1.1 christos { M32RBF_INSN_ST, model_m32r_d_st, { { (int) UNIT_M32R_D_U_STORE, 1, 1 } } },
4146 1.1 christos { M32RBF_INSN_ST_D, model_m32r_d_st_d, { { (int) UNIT_M32R_D_U_STORE, 1, 2 } } },
4147 1.1 christos { M32RBF_INSN_STB, model_m32r_d_stb, { { (int) UNIT_M32R_D_U_STORE, 1, 1 } } },
4148 1.1 christos { M32RBF_INSN_STB_D, model_m32r_d_stb_d, { { (int) UNIT_M32R_D_U_STORE, 1, 2 } } },
4149 1.1 christos { M32RBF_INSN_STH, model_m32r_d_sth, { { (int) UNIT_M32R_D_U_STORE, 1, 1 } } },
4150 1.1 christos { M32RBF_INSN_STH_D, model_m32r_d_sth_d, { { (int) UNIT_M32R_D_U_STORE, 1, 2 } } },
4151 1.1 christos { M32RBF_INSN_ST_PLUS, model_m32r_d_st_plus, { { (int) UNIT_M32R_D_U_STORE, 1, 1 }, { (int) UNIT_M32R_D_U_EXEC, 1, 0 } } },
4152 1.1 christos { M32RBF_INSN_ST_MINUS, model_m32r_d_st_minus, { { (int) UNIT_M32R_D_U_STORE, 1, 1 }, { (int) UNIT_M32R_D_U_EXEC, 1, 0 } } },
4153 1.1 christos { M32RBF_INSN_SUB, model_m32r_d_sub, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4154 1.1 christos { M32RBF_INSN_SUBV, model_m32r_d_subv, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4155 1.1 christos { M32RBF_INSN_SUBX, model_m32r_d_subx, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4156 1.1 christos { M32RBF_INSN_TRAP, model_m32r_d_trap, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4157 1.1 christos { M32RBF_INSN_UNLOCK, model_m32r_d_unlock, { { (int) UNIT_M32R_D_U_LOAD, 1, 1 } } },
4158 1.1 christos { M32RBF_INSN_CLRPSW, model_m32r_d_clrpsw, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4159 1.1 christos { M32RBF_INSN_SETPSW, model_m32r_d_setpsw, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4160 1.1 christos { M32RBF_INSN_BSET, model_m32r_d_bset, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4161 1.1 christos { M32RBF_INSN_BCLR, model_m32r_d_bclr, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4162 1.1 christos { M32RBF_INSN_BTST, model_m32r_d_btst, { { (int) UNIT_M32R_D_U_EXEC, 1, 1 } } },
4163 1.1 christos };
4164 1.1 christos
4165 1.1 christos /* Model timing data for `test'. */
4166 1.1 christos
4167 1.1 christos static const INSN_TIMING test_timing[] = {
4168 1.1 christos { M32RBF_INSN_X_INVALID, 0, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4169 1.1 christos { M32RBF_INSN_X_AFTER, 0, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4170 1.1 christos { M32RBF_INSN_X_BEFORE, 0, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4171 1.1 christos { M32RBF_INSN_X_CTI_CHAIN, 0, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4172 1.1 christos { M32RBF_INSN_X_CHAIN, 0, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4173 1.1 christos { M32RBF_INSN_X_BEGIN, 0, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4174 1.1 christos { M32RBF_INSN_ADD, model_test_add, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4175 1.1 christos { M32RBF_INSN_ADD3, model_test_add3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4176 1.1 christos { M32RBF_INSN_AND, model_test_and, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4177 1.1 christos { M32RBF_INSN_AND3, model_test_and3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4178 1.1 christos { M32RBF_INSN_OR, model_test_or, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4179 1.1 christos { M32RBF_INSN_OR3, model_test_or3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4180 1.1 christos { M32RBF_INSN_XOR, model_test_xor, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4181 1.1 christos { M32RBF_INSN_XOR3, model_test_xor3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4182 1.1 christos { M32RBF_INSN_ADDI, model_test_addi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4183 1.1 christos { M32RBF_INSN_ADDV, model_test_addv, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4184 1.1 christos { M32RBF_INSN_ADDV3, model_test_addv3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4185 1.1 christos { M32RBF_INSN_ADDX, model_test_addx, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4186 1.1 christos { M32RBF_INSN_BC8, model_test_bc8, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4187 1.1 christos { M32RBF_INSN_BC24, model_test_bc24, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4188 1.1 christos { M32RBF_INSN_BEQ, model_test_beq, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4189 1.1 christos { M32RBF_INSN_BEQZ, model_test_beqz, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4190 1.1 christos { M32RBF_INSN_BGEZ, model_test_bgez, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4191 1.1 christos { M32RBF_INSN_BGTZ, model_test_bgtz, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4192 1.1 christos { M32RBF_INSN_BLEZ, model_test_blez, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4193 1.1 christos { M32RBF_INSN_BLTZ, model_test_bltz, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4194 1.1 christos { M32RBF_INSN_BNEZ, model_test_bnez, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4195 1.1 christos { M32RBF_INSN_BL8, model_test_bl8, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4196 1.1 christos { M32RBF_INSN_BL24, model_test_bl24, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4197 1.1 christos { M32RBF_INSN_BNC8, model_test_bnc8, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4198 1.1 christos { M32RBF_INSN_BNC24, model_test_bnc24, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4199 1.1 christos { M32RBF_INSN_BNE, model_test_bne, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4200 1.1 christos { M32RBF_INSN_BRA8, model_test_bra8, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4201 1.1 christos { M32RBF_INSN_BRA24, model_test_bra24, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4202 1.1 christos { M32RBF_INSN_CMP, model_test_cmp, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4203 1.1 christos { M32RBF_INSN_CMPI, model_test_cmpi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4204 1.1 christos { M32RBF_INSN_CMPU, model_test_cmpu, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4205 1.1 christos { M32RBF_INSN_CMPUI, model_test_cmpui, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4206 1.1 christos { M32RBF_INSN_DIV, model_test_div, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4207 1.1 christos { M32RBF_INSN_DIVU, model_test_divu, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4208 1.1 christos { M32RBF_INSN_REM, model_test_rem, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4209 1.1 christos { M32RBF_INSN_REMU, model_test_remu, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4210 1.1 christos { M32RBF_INSN_JL, model_test_jl, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4211 1.1 christos { M32RBF_INSN_JMP, model_test_jmp, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4212 1.1 christos { M32RBF_INSN_LD, model_test_ld, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4213 1.1 christos { M32RBF_INSN_LD_D, model_test_ld_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4214 1.1 christos { M32RBF_INSN_LDB, model_test_ldb, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4215 1.1 christos { M32RBF_INSN_LDB_D, model_test_ldb_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4216 1.1 christos { M32RBF_INSN_LDH, model_test_ldh, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4217 1.1 christos { M32RBF_INSN_LDH_D, model_test_ldh_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4218 1.1 christos { M32RBF_INSN_LDUB, model_test_ldub, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4219 1.1 christos { M32RBF_INSN_LDUB_D, model_test_ldub_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4220 1.1 christos { M32RBF_INSN_LDUH, model_test_lduh, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4221 1.1 christos { M32RBF_INSN_LDUH_D, model_test_lduh_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4222 1.1 christos { M32RBF_INSN_LD_PLUS, model_test_ld_plus, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4223 1.1 christos { M32RBF_INSN_LD24, model_test_ld24, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4224 1.1 christos { M32RBF_INSN_LDI8, model_test_ldi8, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4225 1.1 christos { M32RBF_INSN_LDI16, model_test_ldi16, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4226 1.1 christos { M32RBF_INSN_LOCK, model_test_lock, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4227 1.1 christos { M32RBF_INSN_MACHI, model_test_machi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4228 1.1 christos { M32RBF_INSN_MACLO, model_test_maclo, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4229 1.1 christos { M32RBF_INSN_MACWHI, model_test_macwhi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4230 1.1 christos { M32RBF_INSN_MACWLO, model_test_macwlo, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4231 1.1 christos { M32RBF_INSN_MUL, model_test_mul, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4232 1.1 christos { M32RBF_INSN_MULHI, model_test_mulhi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4233 1.1 christos { M32RBF_INSN_MULLO, model_test_mullo, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4234 1.1 christos { M32RBF_INSN_MULWHI, model_test_mulwhi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4235 1.1 christos { M32RBF_INSN_MULWLO, model_test_mulwlo, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4236 1.1 christos { M32RBF_INSN_MV, model_test_mv, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4237 1.1 christos { M32RBF_INSN_MVFACHI, model_test_mvfachi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4238 1.1 christos { M32RBF_INSN_MVFACLO, model_test_mvfaclo, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4239 1.1 christos { M32RBF_INSN_MVFACMI, model_test_mvfacmi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4240 1.1 christos { M32RBF_INSN_MVFC, model_test_mvfc, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4241 1.1 christos { M32RBF_INSN_MVTACHI, model_test_mvtachi, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4242 1.1 christos { M32RBF_INSN_MVTACLO, model_test_mvtaclo, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4243 1.1 christos { M32RBF_INSN_MVTC, model_test_mvtc, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4244 1.1 christos { M32RBF_INSN_NEG, model_test_neg, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4245 1.1 christos { M32RBF_INSN_NOP, model_test_nop, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4246 1.1 christos { M32RBF_INSN_NOT, model_test_not, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4247 1.1 christos { M32RBF_INSN_RAC, model_test_rac, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4248 1.1 christos { M32RBF_INSN_RACH, model_test_rach, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4249 1.1 christos { M32RBF_INSN_RTE, model_test_rte, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4250 1.1 christos { M32RBF_INSN_SETH, model_test_seth, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4251 1.1 christos { M32RBF_INSN_SLL, model_test_sll, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4252 1.1 christos { M32RBF_INSN_SLL3, model_test_sll3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4253 1.1 christos { M32RBF_INSN_SLLI, model_test_slli, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4254 1.1 christos { M32RBF_INSN_SRA, model_test_sra, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4255 1.1 christos { M32RBF_INSN_SRA3, model_test_sra3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4256 1.1 christos { M32RBF_INSN_SRAI, model_test_srai, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4257 1.1 christos { M32RBF_INSN_SRL, model_test_srl, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4258 1.1 christos { M32RBF_INSN_SRL3, model_test_srl3, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4259 1.1 christos { M32RBF_INSN_SRLI, model_test_srli, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4260 1.1 christos { M32RBF_INSN_ST, model_test_st, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4261 1.1 christos { M32RBF_INSN_ST_D, model_test_st_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4262 1.1 christos { M32RBF_INSN_STB, model_test_stb, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4263 1.1 christos { M32RBF_INSN_STB_D, model_test_stb_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4264 1.1 christos { M32RBF_INSN_STH, model_test_sth, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4265 1.1 christos { M32RBF_INSN_STH_D, model_test_sth_d, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4266 1.1 christos { M32RBF_INSN_ST_PLUS, model_test_st_plus, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4267 1.1 christos { M32RBF_INSN_ST_MINUS, model_test_st_minus, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4268 1.1 christos { M32RBF_INSN_SUB, model_test_sub, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4269 1.1 christos { M32RBF_INSN_SUBV, model_test_subv, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4270 1.1 christos { M32RBF_INSN_SUBX, model_test_subx, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4271 1.1 christos { M32RBF_INSN_TRAP, model_test_trap, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4272 1.1 christos { M32RBF_INSN_UNLOCK, model_test_unlock, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4273 1.1 christos { M32RBF_INSN_CLRPSW, model_test_clrpsw, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4274 1.1 christos { M32RBF_INSN_SETPSW, model_test_setpsw, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4275 1.1 christos { M32RBF_INSN_BSET, model_test_bset, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4276 1.1 christos { M32RBF_INSN_BCLR, model_test_bclr, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4277 1.1 christos { M32RBF_INSN_BTST, model_test_btst, { { (int) UNIT_TEST_U_EXEC, 1, 1 } } },
4278 1.1 christos };
4279 1.1 christos
4280 1.1 christos #endif /* WITH_PROFILE_MODEL_P */
4281 1.1 christos
4282 1.1 christos static void
4283 1.1 christos m32r_d_model_init (SIM_CPU *cpu)
4284 1.1 christos {
4285 1.1 christos CPU_MODEL_DATA (cpu) = (void *) zalloc (sizeof (MODEL_M32R_D_DATA));
4286 1.1 christos }
4287 1.1 christos
4288 1.1 christos static void
4289 1.1 christos test_model_init (SIM_CPU *cpu)
4290 1.1 christos {
4291 1.1 christos CPU_MODEL_DATA (cpu) = (void *) zalloc (sizeof (MODEL_TEST_DATA));
4292 1.1 christos }
4293 1.1 christos
4294 1.1 christos #if WITH_PROFILE_MODEL_P
4295 1.1 christos #define TIMING_DATA(td) td
4296 1.1 christos #else
4297 1.1 christos #define TIMING_DATA(td) 0
4298 1.1 christos #endif
4299 1.1 christos
4300 1.1.1.3 christos static const SIM_MODEL m32r_models[] =
4301 1.1 christos {
4302 1.1 christos { "m32r/d", & m32r_mach, MODEL_M32R_D, TIMING_DATA (& m32r_d_timing[0]), m32r_d_model_init },
4303 1.1 christos { "test", & m32r_mach, MODEL_TEST, TIMING_DATA (& test_timing[0]), test_model_init },
4304 1.1 christos { 0 }
4305 1.1 christos };
4306 1.1 christos
4307 1.1 christos /* The properties of this cpu's implementation. */
4308 1.1 christos
4309 1.1.1.3 christos static const SIM_MACH_IMP_PROPERTIES m32rbf_imp_properties =
4310 1.1 christos {
4311 1.1 christos sizeof (SIM_CPU),
4312 1.1 christos #if WITH_SCACHE
4313 1.1 christos sizeof (SCACHE)
4314 1.1 christos #else
4315 1.1 christos 0
4316 1.1 christos #endif
4317 1.1 christos };
4318 1.1 christos
4319 1.1 christos
4320 1.1 christos static void
4321 1.1 christos m32rbf_prepare_run (SIM_CPU *cpu)
4322 1.1 christos {
4323 1.1 christos if (CPU_IDESC (cpu) == NULL)
4324 1.1 christos m32rbf_init_idesc_table (cpu);
4325 1.1 christos }
4326 1.1 christos
4327 1.1 christos static const CGEN_INSN *
4328 1.1 christos m32rbf_get_idata (SIM_CPU *cpu, int inum)
4329 1.1 christos {
4330 1.1 christos return CPU_IDESC (cpu) [inum].idata;
4331 1.1 christos }
4332 1.1 christos
4333 1.1 christos static void
4334 1.1 christos m32r_init_cpu (SIM_CPU *cpu)
4335 1.1 christos {
4336 1.1 christos CPU_REG_FETCH (cpu) = m32rbf_fetch_register;
4337 1.1 christos CPU_REG_STORE (cpu) = m32rbf_store_register;
4338 1.1 christos CPU_PC_FETCH (cpu) = m32rbf_h_pc_get;
4339 1.1 christos CPU_PC_STORE (cpu) = m32rbf_h_pc_set;
4340 1.1 christos CPU_GET_IDATA (cpu) = m32rbf_get_idata;
4341 1.1 christos CPU_MAX_INSNS (cpu) = M32RBF_INSN__MAX;
4342 1.1 christos CPU_INSN_NAME (cpu) = cgen_insn_name;
4343 1.1 christos CPU_FULL_ENGINE_FN (cpu) = m32rbf_engine_run_full;
4344 1.1 christos #if WITH_FAST
4345 1.1 christos CPU_FAST_ENGINE_FN (cpu) = m32rbf_engine_run_fast;
4346 1.1 christos #else
4347 1.1 christos CPU_FAST_ENGINE_FN (cpu) = m32rbf_engine_run_full;
4348 1.1 christos #endif
4349 1.1 christos }
4350 1.1 christos
4351 1.1.1.3 christos const SIM_MACH m32r_mach =
4352 1.1 christos {
4353 1.1 christos "m32r", "m32r", MACH_M32R,
4354 1.1 christos 32, 32, & m32r_models[0], & m32rbf_imp_properties,
4355 1.1 christos m32r_init_cpu,
4356 1.1 christos m32rbf_prepare_run
4357 1.1 christos };
4358 1.1 christos
4359