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