]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame_incremental - sim/cris/modelv32.c
Update copyright year range in all GDB files.
[thirdparty/binutils-gdb.git] / sim / cris / modelv32.c
... / ...
CommitLineData
1/* Simulator model support for crisv32f.
2
3THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5Copyright 1996-2019 Free Software Foundation, Inc.
6
7This file is part of the GNU simulators.
8
9 This file is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 3, or (at your option)
12 any later version.
13
14 It is distributed in the hope that it will be useful, but WITHOUT
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
17 License for more details.
18
19 You should have received a copy of the GNU General Public License along
20 with this program; if not, see <http://www.gnu.org/licenses/>.
21
22*/
23
24#define WANT_CPU crisv32f
25#define WANT_CPU_CRISV32F
26
27#include "sim-main.h"
28
29/* The profiling data is recorded here, but is accessed via the profiling
30 mechanism. After all, this is information for profiling. */
31
32#if WITH_PROFILE_MODEL_P
33
34/* Model handlers for each insn. */
35
36static int
37model_crisv32_move_b_r (SIM_CPU *current_cpu, void *sem_arg)
38{
39#define FLD(f) abuf->fields.sfmt_addc_m.f
40 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
41 const IDESC * UNUSED idesc = abuf->idesc;
42 int cycles = 0;
43 {
44 int referenced = 0;
45 int UNUSED insn_referenced = abuf->written;
46 INT in_Rd = -1;
47 INT in_Rs = -1;
48 INT out_Rd = -1;
49 in_Rs = FLD (in_Rs);
50 referenced |= 1 << 1;
51 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
52 }
53 return cycles;
54#undef FLD
55}
56
57static int
58model_crisv32_move_w_r (SIM_CPU *current_cpu, void *sem_arg)
59{
60#define FLD(f) abuf->fields.sfmt_addc_m.f
61 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
62 const IDESC * UNUSED idesc = abuf->idesc;
63 int cycles = 0;
64 {
65 int referenced = 0;
66 int UNUSED insn_referenced = abuf->written;
67 INT in_Rd = -1;
68 INT in_Rs = -1;
69 INT out_Rd = -1;
70 in_Rs = FLD (in_Rs);
71 referenced |= 1 << 1;
72 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
73 }
74 return cycles;
75#undef FLD
76}
77
78static int
79model_crisv32_move_d_r (SIM_CPU *current_cpu, void *sem_arg)
80{
81#define FLD(f) abuf->fields.sfmt_addc_m.f
82 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
83 const IDESC * UNUSED idesc = abuf->idesc;
84 int cycles = 0;
85 {
86 int referenced = 0;
87 int UNUSED insn_referenced = abuf->written;
88 INT in_Rd = -1;
89 INT in_Rs = -1;
90 INT out_Rd = -1;
91 in_Rs = FLD (in_Rs);
92 referenced |= 1 << 1;
93 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
94 }
95 return cycles;
96#undef FLD
97}
98
99static int
100model_crisv32_moveq (SIM_CPU *current_cpu, void *sem_arg)
101{
102#define FLD(f) abuf->fields.sfmt_moveq.f
103 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
104 const IDESC * UNUSED idesc = abuf->idesc;
105 int cycles = 0;
106 {
107 int referenced = 0;
108 int UNUSED insn_referenced = abuf->written;
109 INT in_Rd = -1;
110 INT in_Rs = -1;
111 INT out_Rd = -1;
112 out_Rd = FLD (out_Rd);
113 referenced |= 1 << 2;
114 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
115 }
116 return cycles;
117#undef FLD
118}
119
120static int
121model_crisv32_movs_b_r (SIM_CPU *current_cpu, void *sem_arg)
122{
123#define FLD(f) abuf->fields.sfmt_muls_b.f
124 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
125 const IDESC * UNUSED idesc = abuf->idesc;
126 int cycles = 0;
127 {
128 int referenced = 0;
129 int UNUSED insn_referenced = abuf->written;
130 INT in_Rd = -1;
131 INT in_Rs = -1;
132 INT out_Rd = -1;
133 in_Rs = FLD (in_Rs);
134 out_Rd = FLD (out_Rd);
135 referenced |= 1 << 1;
136 referenced |= 1 << 2;
137 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
138 }
139 return cycles;
140#undef FLD
141}
142
143static int
144model_crisv32_movs_w_r (SIM_CPU *current_cpu, void *sem_arg)
145{
146#define FLD(f) abuf->fields.sfmt_muls_b.f
147 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
148 const IDESC * UNUSED idesc = abuf->idesc;
149 int cycles = 0;
150 {
151 int referenced = 0;
152 int UNUSED insn_referenced = abuf->written;
153 INT in_Rd = -1;
154 INT in_Rs = -1;
155 INT out_Rd = -1;
156 in_Rs = FLD (in_Rs);
157 out_Rd = FLD (out_Rd);
158 referenced |= 1 << 1;
159 referenced |= 1 << 2;
160 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
161 }
162 return cycles;
163#undef FLD
164}
165
166static int
167model_crisv32_movu_b_r (SIM_CPU *current_cpu, void *sem_arg)
168{
169#define FLD(f) abuf->fields.sfmt_muls_b.f
170 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
171 const IDESC * UNUSED idesc = abuf->idesc;
172 int cycles = 0;
173 {
174 int referenced = 0;
175 int UNUSED insn_referenced = abuf->written;
176 INT in_Rd = -1;
177 INT in_Rs = -1;
178 INT out_Rd = -1;
179 in_Rs = FLD (in_Rs);
180 out_Rd = FLD (out_Rd);
181 referenced |= 1 << 1;
182 referenced |= 1 << 2;
183 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
184 }
185 return cycles;
186#undef FLD
187}
188
189static int
190model_crisv32_movu_w_r (SIM_CPU *current_cpu, void *sem_arg)
191{
192#define FLD(f) abuf->fields.sfmt_muls_b.f
193 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
194 const IDESC * UNUSED idesc = abuf->idesc;
195 int cycles = 0;
196 {
197 int referenced = 0;
198 int UNUSED insn_referenced = abuf->written;
199 INT in_Rd = -1;
200 INT in_Rs = -1;
201 INT out_Rd = -1;
202 in_Rs = FLD (in_Rs);
203 out_Rd = FLD (out_Rd);
204 referenced |= 1 << 1;
205 referenced |= 1 << 2;
206 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
207 }
208 return cycles;
209#undef FLD
210}
211
212static int
213model_crisv32_movecbr (SIM_CPU *current_cpu, void *sem_arg)
214{
215#define FLD(f) abuf->fields.sfmt_addcbr.f
216 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
217 const IDESC * UNUSED idesc = abuf->idesc;
218 int cycles = 0;
219 {
220 int referenced = 0;
221 int UNUSED insn_referenced = abuf->written;
222 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
223 }
224 {
225 int referenced = 0;
226 int UNUSED insn_referenced = abuf->written;
227 INT in_Rd = -1;
228 INT in_Rs = -1;
229 INT out_Rd = -1;
230 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
231 }
232 return cycles;
233#undef FLD
234}
235
236static int
237model_crisv32_movecwr (SIM_CPU *current_cpu, void *sem_arg)
238{
239#define FLD(f) abuf->fields.sfmt_addcwr.f
240 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
241 const IDESC * UNUSED idesc = abuf->idesc;
242 int cycles = 0;
243 {
244 int referenced = 0;
245 int UNUSED insn_referenced = abuf->written;
246 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
247 }
248 {
249 int referenced = 0;
250 int UNUSED insn_referenced = abuf->written;
251 INT in_Rd = -1;
252 INT in_Rs = -1;
253 INT out_Rd = -1;
254 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
255 }
256 return cycles;
257#undef FLD
258}
259
260static int
261model_crisv32_movecdr (SIM_CPU *current_cpu, void *sem_arg)
262{
263#define FLD(f) abuf->fields.sfmt_bound_cd.f
264 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
265 const IDESC * UNUSED idesc = abuf->idesc;
266 int cycles = 0;
267 {
268 int referenced = 0;
269 int UNUSED insn_referenced = abuf->written;
270 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
271 }
272 {
273 int referenced = 0;
274 int UNUSED insn_referenced = abuf->written;
275 INT in_Rd = -1;
276 INT in_Rs = -1;
277 INT out_Rd = -1;
278 out_Rd = FLD (out_Rd);
279 referenced |= 1 << 2;
280 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
281 }
282 return cycles;
283#undef FLD
284}
285
286static int
287model_crisv32_movscbr (SIM_CPU *current_cpu, void *sem_arg)
288{
289#define FLD(f) abuf->fields.sfmt_bound_cb.f
290 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
291 const IDESC * UNUSED idesc = abuf->idesc;
292 int cycles = 0;
293 {
294 int referenced = 0;
295 int UNUSED insn_referenced = abuf->written;
296 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
297 }
298 {
299 int referenced = 0;
300 int UNUSED insn_referenced = abuf->written;
301 INT in_Rd = -1;
302 INT in_Rs = -1;
303 INT out_Rd = -1;
304 out_Rd = FLD (out_Rd);
305 referenced |= 1 << 2;
306 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
307 }
308 return cycles;
309#undef FLD
310}
311
312static int
313model_crisv32_movscwr (SIM_CPU *current_cpu, void *sem_arg)
314{
315#define FLD(f) abuf->fields.sfmt_bound_cw.f
316 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
317 const IDESC * UNUSED idesc = abuf->idesc;
318 int cycles = 0;
319 {
320 int referenced = 0;
321 int UNUSED insn_referenced = abuf->written;
322 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
323 }
324 {
325 int referenced = 0;
326 int UNUSED insn_referenced = abuf->written;
327 INT in_Rd = -1;
328 INT in_Rs = -1;
329 INT out_Rd = -1;
330 out_Rd = FLD (out_Rd);
331 referenced |= 1 << 2;
332 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
333 }
334 return cycles;
335#undef FLD
336}
337
338static int
339model_crisv32_movucbr (SIM_CPU *current_cpu, void *sem_arg)
340{
341#define FLD(f) abuf->fields.sfmt_bound_cb.f
342 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
343 const IDESC * UNUSED idesc = abuf->idesc;
344 int cycles = 0;
345 {
346 int referenced = 0;
347 int UNUSED insn_referenced = abuf->written;
348 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
349 }
350 {
351 int referenced = 0;
352 int UNUSED insn_referenced = abuf->written;
353 INT in_Rd = -1;
354 INT in_Rs = -1;
355 INT out_Rd = -1;
356 out_Rd = FLD (out_Rd);
357 referenced |= 1 << 2;
358 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
359 }
360 return cycles;
361#undef FLD
362}
363
364static int
365model_crisv32_movucwr (SIM_CPU *current_cpu, void *sem_arg)
366{
367#define FLD(f) abuf->fields.sfmt_bound_cw.f
368 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
369 const IDESC * UNUSED idesc = abuf->idesc;
370 int cycles = 0;
371 {
372 int referenced = 0;
373 int UNUSED insn_referenced = abuf->written;
374 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
375 }
376 {
377 int referenced = 0;
378 int UNUSED insn_referenced = abuf->written;
379 INT in_Rd = -1;
380 INT in_Rs = -1;
381 INT out_Rd = -1;
382 out_Rd = FLD (out_Rd);
383 referenced |= 1 << 2;
384 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
385 }
386 return cycles;
387#undef FLD
388}
389
390static int
391model_crisv32_addq (SIM_CPU *current_cpu, void *sem_arg)
392{
393#define FLD(f) abuf->fields.sfmt_addq.f
394 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
395 const IDESC * UNUSED idesc = abuf->idesc;
396 int cycles = 0;
397 {
398 int referenced = 0;
399 int UNUSED insn_referenced = abuf->written;
400 INT in_Rd = -1;
401 INT in_Rs = -1;
402 INT out_Rd = -1;
403 in_Rd = FLD (in_Rd);
404 referenced |= 1 << 0;
405 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
406 }
407 return cycles;
408#undef FLD
409}
410
411static int
412model_crisv32_subq (SIM_CPU *current_cpu, void *sem_arg)
413{
414#define FLD(f) abuf->fields.sfmt_addq.f
415 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
416 const IDESC * UNUSED idesc = abuf->idesc;
417 int cycles = 0;
418 {
419 int referenced = 0;
420 int UNUSED insn_referenced = abuf->written;
421 INT in_Rd = -1;
422 INT in_Rs = -1;
423 INT out_Rd = -1;
424 in_Rd = FLD (in_Rd);
425 referenced |= 1 << 0;
426 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
427 }
428 return cycles;
429#undef FLD
430}
431
432static int
433model_crisv32_cmp_r_b_r (SIM_CPU *current_cpu, void *sem_arg)
434{
435#define FLD(f) abuf->fields.sfmt_muls_b.f
436 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
437 const IDESC * UNUSED idesc = abuf->idesc;
438 int cycles = 0;
439 {
440 int referenced = 0;
441 int UNUSED insn_referenced = abuf->written;
442 INT in_Rd = -1;
443 INT in_Rs = -1;
444 INT out_Rd = -1;
445 in_Rd = FLD (in_Rd);
446 in_Rs = FLD (in_Rs);
447 referenced |= 1 << 0;
448 referenced |= 1 << 1;
449 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
450 }
451 return cycles;
452#undef FLD
453}
454
455static int
456model_crisv32_cmp_r_w_r (SIM_CPU *current_cpu, void *sem_arg)
457{
458#define FLD(f) abuf->fields.sfmt_muls_b.f
459 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
460 const IDESC * UNUSED idesc = abuf->idesc;
461 int cycles = 0;
462 {
463 int referenced = 0;
464 int UNUSED insn_referenced = abuf->written;
465 INT in_Rd = -1;
466 INT in_Rs = -1;
467 INT out_Rd = -1;
468 in_Rd = FLD (in_Rd);
469 in_Rs = FLD (in_Rs);
470 referenced |= 1 << 0;
471 referenced |= 1 << 1;
472 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
473 }
474 return cycles;
475#undef FLD
476}
477
478static int
479model_crisv32_cmp_r_d_r (SIM_CPU *current_cpu, void *sem_arg)
480{
481#define FLD(f) abuf->fields.sfmt_muls_b.f
482 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
483 const IDESC * UNUSED idesc = abuf->idesc;
484 int cycles = 0;
485 {
486 int referenced = 0;
487 int UNUSED insn_referenced = abuf->written;
488 INT in_Rd = -1;
489 INT in_Rs = -1;
490 INT out_Rd = -1;
491 in_Rd = FLD (in_Rd);
492 in_Rs = FLD (in_Rs);
493 referenced |= 1 << 0;
494 referenced |= 1 << 1;
495 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
496 }
497 return cycles;
498#undef FLD
499}
500
501static int
502model_crisv32_cmp_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
503{
504#define FLD(f) abuf->fields.sfmt_addc_m.f
505 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
506 const IDESC * UNUSED idesc = abuf->idesc;
507 int cycles = 0;
508 {
509 int referenced = 0;
510 int UNUSED insn_referenced = abuf->written;
511 INT in_Rs = -1;
512 in_Rs = FLD (in_Rs);
513 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
514 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
515 }
516 {
517 int referenced = 0;
518 int UNUSED insn_referenced = abuf->written;
519 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
520 }
521 {
522 int referenced = 0;
523 int UNUSED insn_referenced = abuf->written;
524 INT in_Rd = -1;
525 INT in_Rs = -1;
526 INT out_Rd = -1;
527 in_Rd = FLD (in_Rd);
528 in_Rs = FLD (in_Rs);
529 referenced |= 1 << 0;
530 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
531 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
532 }
533 return cycles;
534#undef FLD
535}
536
537static int
538model_crisv32_cmp_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
539{
540#define FLD(f) abuf->fields.sfmt_addc_m.f
541 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
542 const IDESC * UNUSED idesc = abuf->idesc;
543 int cycles = 0;
544 {
545 int referenced = 0;
546 int UNUSED insn_referenced = abuf->written;
547 INT in_Rs = -1;
548 in_Rs = FLD (in_Rs);
549 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
550 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
551 }
552 {
553 int referenced = 0;
554 int UNUSED insn_referenced = abuf->written;
555 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
556 }
557 {
558 int referenced = 0;
559 int UNUSED insn_referenced = abuf->written;
560 INT in_Rd = -1;
561 INT in_Rs = -1;
562 INT out_Rd = -1;
563 in_Rd = FLD (in_Rd);
564 in_Rs = FLD (in_Rs);
565 referenced |= 1 << 0;
566 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
567 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
568 }
569 return cycles;
570#undef FLD
571}
572
573static int
574model_crisv32_cmp_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
575{
576#define FLD(f) abuf->fields.sfmt_addc_m.f
577 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
578 const IDESC * UNUSED idesc = abuf->idesc;
579 int cycles = 0;
580 {
581 int referenced = 0;
582 int UNUSED insn_referenced = abuf->written;
583 INT in_Rs = -1;
584 in_Rs = FLD (in_Rs);
585 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
586 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
587 }
588 {
589 int referenced = 0;
590 int UNUSED insn_referenced = abuf->written;
591 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
592 }
593 {
594 int referenced = 0;
595 int UNUSED insn_referenced = abuf->written;
596 INT in_Rd = -1;
597 INT in_Rs = -1;
598 INT out_Rd = -1;
599 in_Rd = FLD (in_Rd);
600 in_Rs = FLD (in_Rs);
601 referenced |= 1 << 0;
602 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
603 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
604 }
605 return cycles;
606#undef FLD
607}
608
609static int
610model_crisv32_cmpcbr (SIM_CPU *current_cpu, void *sem_arg)
611{
612#define FLD(f) abuf->fields.sfmt_bound_cb.f
613 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
614 const IDESC * UNUSED idesc = abuf->idesc;
615 int cycles = 0;
616 {
617 int referenced = 0;
618 int UNUSED insn_referenced = abuf->written;
619 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
620 }
621 {
622 int referenced = 0;
623 int UNUSED insn_referenced = abuf->written;
624 INT in_Rd = -1;
625 INT in_Rs = -1;
626 INT out_Rd = -1;
627 in_Rd = FLD (in_Rd);
628 referenced |= 1 << 0;
629 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
630 }
631 return cycles;
632#undef FLD
633}
634
635static int
636model_crisv32_cmpcwr (SIM_CPU *current_cpu, void *sem_arg)
637{
638#define FLD(f) abuf->fields.sfmt_bound_cw.f
639 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
640 const IDESC * UNUSED idesc = abuf->idesc;
641 int cycles = 0;
642 {
643 int referenced = 0;
644 int UNUSED insn_referenced = abuf->written;
645 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
646 }
647 {
648 int referenced = 0;
649 int UNUSED insn_referenced = abuf->written;
650 INT in_Rd = -1;
651 INT in_Rs = -1;
652 INT out_Rd = -1;
653 in_Rd = FLD (in_Rd);
654 referenced |= 1 << 0;
655 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
656 }
657 return cycles;
658#undef FLD
659}
660
661static int
662model_crisv32_cmpcdr (SIM_CPU *current_cpu, void *sem_arg)
663{
664#define FLD(f) abuf->fields.sfmt_bound_cd.f
665 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
666 const IDESC * UNUSED idesc = abuf->idesc;
667 int cycles = 0;
668 {
669 int referenced = 0;
670 int UNUSED insn_referenced = abuf->written;
671 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
672 }
673 {
674 int referenced = 0;
675 int UNUSED insn_referenced = abuf->written;
676 INT in_Rd = -1;
677 INT in_Rs = -1;
678 INT out_Rd = -1;
679 in_Rd = FLD (in_Rd);
680 referenced |= 1 << 0;
681 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
682 }
683 return cycles;
684#undef FLD
685}
686
687static int
688model_crisv32_cmpq (SIM_CPU *current_cpu, void *sem_arg)
689{
690#define FLD(f) abuf->fields.sfmt_andq.f
691 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
692 const IDESC * UNUSED idesc = abuf->idesc;
693 int cycles = 0;
694 {
695 int referenced = 0;
696 int UNUSED insn_referenced = abuf->written;
697 INT in_Rd = -1;
698 INT in_Rs = -1;
699 INT out_Rd = -1;
700 in_Rd = FLD (in_Rd);
701 referenced |= 1 << 0;
702 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
703 }
704 return cycles;
705#undef FLD
706}
707
708static int
709model_crisv32_cmps_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
710{
711#define FLD(f) abuf->fields.sfmt_addc_m.f
712 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
713 const IDESC * UNUSED idesc = abuf->idesc;
714 int cycles = 0;
715 {
716 int referenced = 0;
717 int UNUSED insn_referenced = abuf->written;
718 INT in_Rs = -1;
719 in_Rs = FLD (in_Rs);
720 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
721 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
722 }
723 {
724 int referenced = 0;
725 int UNUSED insn_referenced = abuf->written;
726 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
727 }
728 {
729 int referenced = 0;
730 int UNUSED insn_referenced = abuf->written;
731 INT in_Rd = -1;
732 INT in_Rs = -1;
733 INT out_Rd = -1;
734 in_Rd = FLD (in_Rd);
735 in_Rs = FLD (in_Rs);
736 referenced |= 1 << 0;
737 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
738 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
739 }
740 return cycles;
741#undef FLD
742}
743
744static int
745model_crisv32_cmps_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
746{
747#define FLD(f) abuf->fields.sfmt_addc_m.f
748 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
749 const IDESC * UNUSED idesc = abuf->idesc;
750 int cycles = 0;
751 {
752 int referenced = 0;
753 int UNUSED insn_referenced = abuf->written;
754 INT in_Rs = -1;
755 in_Rs = FLD (in_Rs);
756 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
757 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
758 }
759 {
760 int referenced = 0;
761 int UNUSED insn_referenced = abuf->written;
762 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
763 }
764 {
765 int referenced = 0;
766 int UNUSED insn_referenced = abuf->written;
767 INT in_Rd = -1;
768 INT in_Rs = -1;
769 INT out_Rd = -1;
770 in_Rd = FLD (in_Rd);
771 in_Rs = FLD (in_Rs);
772 referenced |= 1 << 0;
773 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
774 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
775 }
776 return cycles;
777#undef FLD
778}
779
780static int
781model_crisv32_cmpscbr (SIM_CPU *current_cpu, void *sem_arg)
782{
783#define FLD(f) abuf->fields.sfmt_bound_cb.f
784 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
785 const IDESC * UNUSED idesc = abuf->idesc;
786 int cycles = 0;
787 {
788 int referenced = 0;
789 int UNUSED insn_referenced = abuf->written;
790 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
791 }
792 {
793 int referenced = 0;
794 int UNUSED insn_referenced = abuf->written;
795 INT in_Rd = -1;
796 INT in_Rs = -1;
797 INT out_Rd = -1;
798 in_Rd = FLD (in_Rd);
799 referenced |= 1 << 0;
800 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
801 }
802 return cycles;
803#undef FLD
804}
805
806static int
807model_crisv32_cmpscwr (SIM_CPU *current_cpu, void *sem_arg)
808{
809#define FLD(f) abuf->fields.sfmt_bound_cw.f
810 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
811 const IDESC * UNUSED idesc = abuf->idesc;
812 int cycles = 0;
813 {
814 int referenced = 0;
815 int UNUSED insn_referenced = abuf->written;
816 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
817 }
818 {
819 int referenced = 0;
820 int UNUSED insn_referenced = abuf->written;
821 INT in_Rd = -1;
822 INT in_Rs = -1;
823 INT out_Rd = -1;
824 in_Rd = FLD (in_Rd);
825 referenced |= 1 << 0;
826 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
827 }
828 return cycles;
829#undef FLD
830}
831
832static int
833model_crisv32_cmpu_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
834{
835#define FLD(f) abuf->fields.sfmt_addc_m.f
836 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
837 const IDESC * UNUSED idesc = abuf->idesc;
838 int cycles = 0;
839 {
840 int referenced = 0;
841 int UNUSED insn_referenced = abuf->written;
842 INT in_Rs = -1;
843 in_Rs = FLD (in_Rs);
844 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
845 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
846 }
847 {
848 int referenced = 0;
849 int UNUSED insn_referenced = abuf->written;
850 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
851 }
852 {
853 int referenced = 0;
854 int UNUSED insn_referenced = abuf->written;
855 INT in_Rd = -1;
856 INT in_Rs = -1;
857 INT out_Rd = -1;
858 in_Rd = FLD (in_Rd);
859 in_Rs = FLD (in_Rs);
860 referenced |= 1 << 0;
861 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
862 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
863 }
864 return cycles;
865#undef FLD
866}
867
868static int
869model_crisv32_cmpu_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
870{
871#define FLD(f) abuf->fields.sfmt_addc_m.f
872 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
873 const IDESC * UNUSED idesc = abuf->idesc;
874 int cycles = 0;
875 {
876 int referenced = 0;
877 int UNUSED insn_referenced = abuf->written;
878 INT in_Rs = -1;
879 in_Rs = FLD (in_Rs);
880 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
881 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
882 }
883 {
884 int referenced = 0;
885 int UNUSED insn_referenced = abuf->written;
886 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
887 }
888 {
889 int referenced = 0;
890 int UNUSED insn_referenced = abuf->written;
891 INT in_Rd = -1;
892 INT in_Rs = -1;
893 INT out_Rd = -1;
894 in_Rd = FLD (in_Rd);
895 in_Rs = FLD (in_Rs);
896 referenced |= 1 << 0;
897 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
898 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
899 }
900 return cycles;
901#undef FLD
902}
903
904static int
905model_crisv32_cmpucbr (SIM_CPU *current_cpu, void *sem_arg)
906{
907#define FLD(f) abuf->fields.sfmt_bound_cb.f
908 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
909 const IDESC * UNUSED idesc = abuf->idesc;
910 int cycles = 0;
911 {
912 int referenced = 0;
913 int UNUSED insn_referenced = abuf->written;
914 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
915 }
916 {
917 int referenced = 0;
918 int UNUSED insn_referenced = abuf->written;
919 INT in_Rd = -1;
920 INT in_Rs = -1;
921 INT out_Rd = -1;
922 in_Rd = FLD (in_Rd);
923 referenced |= 1 << 0;
924 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
925 }
926 return cycles;
927#undef FLD
928}
929
930static int
931model_crisv32_cmpucwr (SIM_CPU *current_cpu, void *sem_arg)
932{
933#define FLD(f) abuf->fields.sfmt_bound_cw.f
934 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
935 const IDESC * UNUSED idesc = abuf->idesc;
936 int cycles = 0;
937 {
938 int referenced = 0;
939 int UNUSED insn_referenced = abuf->written;
940 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
941 }
942 {
943 int referenced = 0;
944 int UNUSED insn_referenced = abuf->written;
945 INT in_Rd = -1;
946 INT in_Rs = -1;
947 INT out_Rd = -1;
948 in_Rd = FLD (in_Rd);
949 referenced |= 1 << 0;
950 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
951 }
952 return cycles;
953#undef FLD
954}
955
956static int
957model_crisv32_move_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
958{
959#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
960 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
961 const IDESC * UNUSED idesc = abuf->idesc;
962 int cycles = 0;
963 {
964 int referenced = 0;
965 int UNUSED insn_referenced = abuf->written;
966 INT in_Rs = -1;
967 in_Rs = FLD (in_Rs);
968 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
969 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
970 }
971 {
972 int referenced = 0;
973 int UNUSED insn_referenced = abuf->written;
974 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
975 }
976 {
977 int referenced = 0;
978 int UNUSED insn_referenced = abuf->written;
979 INT in_Rd = -1;
980 INT in_Rs = -1;
981 INT out_Rd = -1;
982 in_Rs = FLD (in_Rs);
983 if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
984 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
985 }
986 return cycles;
987#undef FLD
988}
989
990static int
991model_crisv32_move_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
992{
993#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
994 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
995 const IDESC * UNUSED idesc = abuf->idesc;
996 int cycles = 0;
997 {
998 int referenced = 0;
999 int UNUSED insn_referenced = abuf->written;
1000 INT in_Rs = -1;
1001 in_Rs = FLD (in_Rs);
1002 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
1003 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1004 }
1005 {
1006 int referenced = 0;
1007 int UNUSED insn_referenced = abuf->written;
1008 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
1009 }
1010 {
1011 int referenced = 0;
1012 int UNUSED insn_referenced = abuf->written;
1013 INT in_Rd = -1;
1014 INT in_Rs = -1;
1015 INT out_Rd = -1;
1016 in_Rs = FLD (in_Rs);
1017 if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
1018 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
1019 }
1020 return cycles;
1021#undef FLD
1022}
1023
1024static int
1025model_crisv32_move_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
1026{
1027#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
1028 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1029 const IDESC * UNUSED idesc = abuf->idesc;
1030 int cycles = 0;
1031 {
1032 int referenced = 0;
1033 int UNUSED insn_referenced = abuf->written;
1034 INT in_Rs = -1;
1035 in_Rs = FLD (in_Rs);
1036 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
1037 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1038 }
1039 {
1040 int referenced = 0;
1041 int UNUSED insn_referenced = abuf->written;
1042 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
1043 }
1044 {
1045 int referenced = 0;
1046 int UNUSED insn_referenced = abuf->written;
1047 INT in_Rd = -1;
1048 INT in_Rs = -1;
1049 INT out_Rd = -1;
1050 in_Rs = FLD (in_Rs);
1051 if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
1052 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
1053 }
1054 return cycles;
1055#undef FLD
1056}
1057
1058static int
1059model_crisv32_movs_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
1060{
1061#define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
1062 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1063 const IDESC * UNUSED idesc = abuf->idesc;
1064 int cycles = 0;
1065 {
1066 int referenced = 0;
1067 int UNUSED insn_referenced = abuf->written;
1068 INT in_Rs = -1;
1069 in_Rs = FLD (in_Rs);
1070 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
1071 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1072 }
1073 {
1074 int referenced = 0;
1075 int UNUSED insn_referenced = abuf->written;
1076 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
1077 }
1078 {
1079 int referenced = 0;
1080 int UNUSED insn_referenced = abuf->written;
1081 INT in_Rd = -1;
1082 INT in_Rs = -1;
1083 INT out_Rd = -1;
1084 in_Rs = FLD (in_Rs);
1085 out_Rd = FLD (out_Rd);
1086 if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
1087 if (insn_referenced & (1 << 7)) referenced |= 1 << 2;
1088 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
1089 }
1090 return cycles;
1091#undef FLD
1092}
1093
1094static int
1095model_crisv32_movs_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
1096{
1097#define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
1098 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1099 const IDESC * UNUSED idesc = abuf->idesc;
1100 int cycles = 0;
1101 {
1102 int referenced = 0;
1103 int UNUSED insn_referenced = abuf->written;
1104 INT in_Rs = -1;
1105 in_Rs = FLD (in_Rs);
1106 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
1107 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1108 }
1109 {
1110 int referenced = 0;
1111 int UNUSED insn_referenced = abuf->written;
1112 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
1113 }
1114 {
1115 int referenced = 0;
1116 int UNUSED insn_referenced = abuf->written;
1117 INT in_Rd = -1;
1118 INT in_Rs = -1;
1119 INT out_Rd = -1;
1120 in_Rs = FLD (in_Rs);
1121 out_Rd = FLD (out_Rd);
1122 if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
1123 if (insn_referenced & (1 << 7)) referenced |= 1 << 2;
1124 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
1125 }
1126 return cycles;
1127#undef FLD
1128}
1129
1130static int
1131model_crisv32_movu_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
1132{
1133#define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
1134 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1135 const IDESC * UNUSED idesc = abuf->idesc;
1136 int cycles = 0;
1137 {
1138 int referenced = 0;
1139 int UNUSED insn_referenced = abuf->written;
1140 INT in_Rs = -1;
1141 in_Rs = FLD (in_Rs);
1142 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
1143 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1144 }
1145 {
1146 int referenced = 0;
1147 int UNUSED insn_referenced = abuf->written;
1148 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
1149 }
1150 {
1151 int referenced = 0;
1152 int UNUSED insn_referenced = abuf->written;
1153 INT in_Rd = -1;
1154 INT in_Rs = -1;
1155 INT out_Rd = -1;
1156 in_Rs = FLD (in_Rs);
1157 out_Rd = FLD (out_Rd);
1158 if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
1159 if (insn_referenced & (1 << 7)) referenced |= 1 << 2;
1160 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
1161 }
1162 return cycles;
1163#undef FLD
1164}
1165
1166static int
1167model_crisv32_movu_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
1168{
1169#define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
1170 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1171 const IDESC * UNUSED idesc = abuf->idesc;
1172 int cycles = 0;
1173 {
1174 int referenced = 0;
1175 int UNUSED insn_referenced = abuf->written;
1176 INT in_Rs = -1;
1177 in_Rs = FLD (in_Rs);
1178 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
1179 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1180 }
1181 {
1182 int referenced = 0;
1183 int UNUSED insn_referenced = abuf->written;
1184 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
1185 }
1186 {
1187 int referenced = 0;
1188 int UNUSED insn_referenced = abuf->written;
1189 INT in_Rd = -1;
1190 INT in_Rs = -1;
1191 INT out_Rd = -1;
1192 in_Rs = FLD (in_Rs);
1193 out_Rd = FLD (out_Rd);
1194 if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
1195 if (insn_referenced & (1 << 7)) referenced |= 1 << 2;
1196 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
1197 }
1198 return cycles;
1199#undef FLD
1200}
1201
1202static int
1203model_crisv32_move_r_sprv32 (SIM_CPU *current_cpu, void *sem_arg)
1204{
1205#define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
1206 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1207 const IDESC * UNUSED idesc = abuf->idesc;
1208 int cycles = 0;
1209 {
1210 int referenced = 0;
1211 int UNUSED insn_referenced = abuf->written;
1212 INT in_Rs = -1;
1213 INT out_Pd = -1;
1214 in_Rs = FLD (in_Rs);
1215 out_Pd = FLD (out_Pd);
1216 referenced |= 1 << 0;
1217 if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
1218 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 0, referenced, in_Rs, out_Pd);
1219 }
1220 return cycles;
1221#undef FLD
1222}
1223
1224static int
1225model_crisv32_move_spr_rv32 (SIM_CPU *current_cpu, void *sem_arg)
1226{
1227#define FLD(f) abuf->fields.sfmt_mcp.f
1228 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1229 const IDESC * UNUSED idesc = abuf->idesc;
1230 int cycles = 0;
1231 {
1232 int referenced = 0;
1233 int UNUSED insn_referenced = abuf->written;
1234 INT in_Rd = -1;
1235 INT in_Rs = -1;
1236 INT out_Rd = -1;
1237 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
1238 }
1239 return cycles;
1240#undef FLD
1241}
1242
1243static int
1244model_crisv32_move_m_sprv32 (SIM_CPU *current_cpu, void *sem_arg)
1245{
1246#define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
1247 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1248 const IDESC * UNUSED idesc = abuf->idesc;
1249 int cycles = 0;
1250 {
1251 int referenced = 0;
1252 int UNUSED insn_referenced = abuf->written;
1253 INT in_Rs = -1;
1254 in_Rs = FLD (in_Rs);
1255 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
1256 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1257 }
1258 {
1259 int referenced = 0;
1260 int UNUSED insn_referenced = abuf->written;
1261 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
1262 }
1263 {
1264 int referenced = 0;
1265 int UNUSED insn_referenced = abuf->written;
1266 INT in_Rs = -1;
1267 INT out_Pd = -1;
1268 in_Rs = FLD (in_Rs);
1269 out_Pd = FLD (out_Pd);
1270 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
1271 referenced |= 1 << 1;
1272 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 2, referenced, in_Rs, out_Pd);
1273 }
1274 return cycles;
1275#undef FLD
1276}
1277
1278static int
1279model_crisv32_move_c_sprv32_p2 (SIM_CPU *current_cpu, void *sem_arg)
1280{
1281#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1282 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1283 const IDESC * UNUSED idesc = abuf->idesc;
1284 int cycles = 0;
1285 {
1286 int referenced = 0;
1287 int UNUSED insn_referenced = abuf->written;
1288 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1289 }
1290 {
1291 int referenced = 0;
1292 int UNUSED insn_referenced = abuf->written;
1293 INT in_Rs = -1;
1294 INT out_Pd = -1;
1295 out_Pd = FLD (out_Pd);
1296 referenced |= 1 << 1;
1297 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1298 }
1299 return cycles;
1300#undef FLD
1301}
1302
1303static int
1304model_crisv32_move_c_sprv32_p3 (SIM_CPU *current_cpu, void *sem_arg)
1305{
1306#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1307 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1308 const IDESC * UNUSED idesc = abuf->idesc;
1309 int cycles = 0;
1310 {
1311 int referenced = 0;
1312 int UNUSED insn_referenced = abuf->written;
1313 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1314 }
1315 {
1316 int referenced = 0;
1317 int UNUSED insn_referenced = abuf->written;
1318 INT in_Rs = -1;
1319 INT out_Pd = -1;
1320 out_Pd = FLD (out_Pd);
1321 referenced |= 1 << 1;
1322 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1323 }
1324 return cycles;
1325#undef FLD
1326}
1327
1328static int
1329model_crisv32_move_c_sprv32_p5 (SIM_CPU *current_cpu, void *sem_arg)
1330{
1331#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1332 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1333 const IDESC * UNUSED idesc = abuf->idesc;
1334 int cycles = 0;
1335 {
1336 int referenced = 0;
1337 int UNUSED insn_referenced = abuf->written;
1338 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1339 }
1340 {
1341 int referenced = 0;
1342 int UNUSED insn_referenced = abuf->written;
1343 INT in_Rs = -1;
1344 INT out_Pd = -1;
1345 out_Pd = FLD (out_Pd);
1346 referenced |= 1 << 1;
1347 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1348 }
1349 return cycles;
1350#undef FLD
1351}
1352
1353static int
1354model_crisv32_move_c_sprv32_p6 (SIM_CPU *current_cpu, void *sem_arg)
1355{
1356#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1357 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1358 const IDESC * UNUSED idesc = abuf->idesc;
1359 int cycles = 0;
1360 {
1361 int referenced = 0;
1362 int UNUSED insn_referenced = abuf->written;
1363 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1364 }
1365 {
1366 int referenced = 0;
1367 int UNUSED insn_referenced = abuf->written;
1368 INT in_Rs = -1;
1369 INT out_Pd = -1;
1370 out_Pd = FLD (out_Pd);
1371 referenced |= 1 << 1;
1372 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1373 }
1374 return cycles;
1375#undef FLD
1376}
1377
1378static int
1379model_crisv32_move_c_sprv32_p7 (SIM_CPU *current_cpu, void *sem_arg)
1380{
1381#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1382 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1383 const IDESC * UNUSED idesc = abuf->idesc;
1384 int cycles = 0;
1385 {
1386 int referenced = 0;
1387 int UNUSED insn_referenced = abuf->written;
1388 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1389 }
1390 {
1391 int referenced = 0;
1392 int UNUSED insn_referenced = abuf->written;
1393 INT in_Rs = -1;
1394 INT out_Pd = -1;
1395 out_Pd = FLD (out_Pd);
1396 referenced |= 1 << 1;
1397 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1398 }
1399 return cycles;
1400#undef FLD
1401}
1402
1403static int
1404model_crisv32_move_c_sprv32_p9 (SIM_CPU *current_cpu, void *sem_arg)
1405{
1406#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1407 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1408 const IDESC * UNUSED idesc = abuf->idesc;
1409 int cycles = 0;
1410 {
1411 int referenced = 0;
1412 int UNUSED insn_referenced = abuf->written;
1413 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1414 }
1415 {
1416 int referenced = 0;
1417 int UNUSED insn_referenced = abuf->written;
1418 INT in_Rs = -1;
1419 INT out_Pd = -1;
1420 out_Pd = FLD (out_Pd);
1421 referenced |= 1 << 1;
1422 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1423 }
1424 return cycles;
1425#undef FLD
1426}
1427
1428static int
1429model_crisv32_move_c_sprv32_p10 (SIM_CPU *current_cpu, void *sem_arg)
1430{
1431#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1432 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1433 const IDESC * UNUSED idesc = abuf->idesc;
1434 int cycles = 0;
1435 {
1436 int referenced = 0;
1437 int UNUSED insn_referenced = abuf->written;
1438 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1439 }
1440 {
1441 int referenced = 0;
1442 int UNUSED insn_referenced = abuf->written;
1443 INT in_Rs = -1;
1444 INT out_Pd = -1;
1445 out_Pd = FLD (out_Pd);
1446 referenced |= 1 << 1;
1447 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1448 }
1449 return cycles;
1450#undef FLD
1451}
1452
1453static int
1454model_crisv32_move_c_sprv32_p11 (SIM_CPU *current_cpu, void *sem_arg)
1455{
1456#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1457 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1458 const IDESC * UNUSED idesc = abuf->idesc;
1459 int cycles = 0;
1460 {
1461 int referenced = 0;
1462 int UNUSED insn_referenced = abuf->written;
1463 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1464 }
1465 {
1466 int referenced = 0;
1467 int UNUSED insn_referenced = abuf->written;
1468 INT in_Rs = -1;
1469 INT out_Pd = -1;
1470 out_Pd = FLD (out_Pd);
1471 referenced |= 1 << 1;
1472 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1473 }
1474 return cycles;
1475#undef FLD
1476}
1477
1478static int
1479model_crisv32_move_c_sprv32_p12 (SIM_CPU *current_cpu, void *sem_arg)
1480{
1481#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1482 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1483 const IDESC * UNUSED idesc = abuf->idesc;
1484 int cycles = 0;
1485 {
1486 int referenced = 0;
1487 int UNUSED insn_referenced = abuf->written;
1488 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1489 }
1490 {
1491 int referenced = 0;
1492 int UNUSED insn_referenced = abuf->written;
1493 INT in_Rs = -1;
1494 INT out_Pd = -1;
1495 out_Pd = FLD (out_Pd);
1496 referenced |= 1 << 1;
1497 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1498 }
1499 return cycles;
1500#undef FLD
1501}
1502
1503static int
1504model_crisv32_move_c_sprv32_p13 (SIM_CPU *current_cpu, void *sem_arg)
1505{
1506#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1507 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1508 const IDESC * UNUSED idesc = abuf->idesc;
1509 int cycles = 0;
1510 {
1511 int referenced = 0;
1512 int UNUSED insn_referenced = abuf->written;
1513 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1514 }
1515 {
1516 int referenced = 0;
1517 int UNUSED insn_referenced = abuf->written;
1518 INT in_Rs = -1;
1519 INT out_Pd = -1;
1520 out_Pd = FLD (out_Pd);
1521 referenced |= 1 << 1;
1522 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1523 }
1524 return cycles;
1525#undef FLD
1526}
1527
1528static int
1529model_crisv32_move_c_sprv32_p14 (SIM_CPU *current_cpu, void *sem_arg)
1530{
1531#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1532 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1533 const IDESC * UNUSED idesc = abuf->idesc;
1534 int cycles = 0;
1535 {
1536 int referenced = 0;
1537 int UNUSED insn_referenced = abuf->written;
1538 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1539 }
1540 {
1541 int referenced = 0;
1542 int UNUSED insn_referenced = abuf->written;
1543 INT in_Rs = -1;
1544 INT out_Pd = -1;
1545 out_Pd = FLD (out_Pd);
1546 referenced |= 1 << 1;
1547 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1548 }
1549 return cycles;
1550#undef FLD
1551}
1552
1553static int
1554model_crisv32_move_c_sprv32_p15 (SIM_CPU *current_cpu, void *sem_arg)
1555{
1556#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1557 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1558 const IDESC * UNUSED idesc = abuf->idesc;
1559 int cycles = 0;
1560 {
1561 int referenced = 0;
1562 int UNUSED insn_referenced = abuf->written;
1563 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1564 }
1565 {
1566 int referenced = 0;
1567 int UNUSED insn_referenced = abuf->written;
1568 INT in_Rs = -1;
1569 INT out_Pd = -1;
1570 out_Pd = FLD (out_Pd);
1571 referenced |= 1 << 1;
1572 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1573 }
1574 return cycles;
1575#undef FLD
1576}
1577
1578static int
1579model_crisv32_move_spr_mv32 (SIM_CPU *current_cpu, void *sem_arg)
1580{
1581#define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
1582 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1583 const IDESC * UNUSED idesc = abuf->idesc;
1584 int cycles = 0;
1585 {
1586 int referenced = 0;
1587 int UNUSED insn_referenced = abuf->written;
1588 INT in_Rs = -1;
1589 in_Rs = FLD (in_Rs);
1590 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
1591 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1592 }
1593 {
1594 int referenced = 0;
1595 int UNUSED insn_referenced = abuf->written;
1596 INT in_Rd = -1;
1597 INT in_Rs = -1;
1598 INT out_Rd = -1;
1599 in_Rs = FLD (in_Rs);
1600 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
1601 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
1602 }
1603 {
1604 int referenced = 0;
1605 int UNUSED insn_referenced = abuf->written;
1606 cycles += crisv32f_model_crisv32_u_mem_w (current_cpu, idesc, 2, referenced);
1607 }
1608 return cycles;
1609#undef FLD
1610}
1611
1612static int
1613model_crisv32_move_ss_r (SIM_CPU *current_cpu, void *sem_arg)
1614{
1615#define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
1616 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1617 const IDESC * UNUSED idesc = abuf->idesc;
1618 int cycles = 0;
1619 {
1620 int referenced = 0;
1621 int UNUSED insn_referenced = abuf->written;
1622 INT in_Rd = -1;
1623 INT in_Rs = -1;
1624 INT out_Rd = -1;
1625 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
1626 }
1627 return cycles;
1628#undef FLD
1629}
1630
1631static int
1632model_crisv32_move_r_ss (SIM_CPU *current_cpu, void *sem_arg)
1633{
1634#define FLD(f) abuf->fields.sfmt_mcp.f
1635 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1636 const IDESC * UNUSED idesc = abuf->idesc;
1637 int cycles = 0;
1638 {
1639 int referenced = 0;
1640 int UNUSED insn_referenced = abuf->written;
1641 INT in_Rd = -1;
1642 INT in_Rs = -1;
1643 INT out_Rd = -1;
1644 in_Rs = FLD (in_Rs);
1645 referenced |= 1 << 1;
1646 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
1647 }
1648 return cycles;
1649#undef FLD
1650}
1651
1652static int
1653model_crisv32_movem_r_m_v32 (SIM_CPU *current_cpu, void *sem_arg)
1654{
1655#define FLD(f) abuf->fields.sfmt_movem_r_m_v32.f
1656 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1657 const IDESC * UNUSED idesc = abuf->idesc;
1658 int cycles = 0;
1659 {
1660 int referenced = 0;
1661 int UNUSED insn_referenced = abuf->written;
1662 INT in_Rs = -1;
1663 in_Rs = FLD (in_Rs);
1664 referenced |= 1 << 0;
1665 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1666 }
1667 {
1668 int referenced = 0;
1669 int UNUSED insn_referenced = abuf->written;
1670 INT in_Rs = -1;
1671 INT in_Rd = -1;
1672 in_Rs = FLD (in_Rs);
1673 in_Rd = FLD (in_Rd);
1674 referenced |= 1 << 0;
1675 referenced |= 1 << 1;
1676 cycles += crisv32f_model_crisv32_u_movem_rtom (current_cpu, idesc, 1, referenced, in_Rs, in_Rd);
1677 }
1678 {
1679 int referenced = 0;
1680 int UNUSED insn_referenced = abuf->written;
1681 INT in_Rs = -1;
1682 INT out_Rd = -1;
1683 in_Rs = FLD (in_Rs);
1684 referenced |= 1 << 0;
1685 cycles += crisv32f_model_crisv32_u_exec_movem (current_cpu, idesc, 2, referenced, in_Rs, out_Rd);
1686 }
1687 {
1688 int referenced = 0;
1689 int UNUSED insn_referenced = abuf->written;
1690 cycles += crisv32f_model_crisv32_u_mem_w (current_cpu, idesc, 3, referenced);
1691 }
1692 return cycles;
1693#undef FLD
1694}
1695
1696static int
1697model_crisv32_movem_m_r_v32 (SIM_CPU *current_cpu, void *sem_arg)
1698{
1699#define FLD(f) abuf->fields.sfmt_movem_m_r_v32.f
1700 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1701 const IDESC * UNUSED idesc = abuf->idesc;
1702 int cycles = 0;
1703 {
1704 int referenced = 0;
1705 int UNUSED insn_referenced = abuf->written;
1706 INT in_Rs = -1;
1707 in_Rs = FLD (in_Rs);
1708 referenced |= 1 << 0;
1709 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1710 }
1711 {
1712 int referenced = 0;
1713 int UNUSED insn_referenced = abuf->written;
1714 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
1715 }
1716 {
1717 int referenced = 0;
1718 int UNUSED insn_referenced = abuf->written;
1719 INT in_Rs = -1;
1720 INT in_Rd = -1;
1721 in_Rs = FLD (in_Rs);
1722 in_Rd = FLD (in_Rd);
1723 referenced |= 1 << 0;
1724 referenced |= 1 << 1;
1725 cycles += crisv32f_model_crisv32_u_movem_mtor (current_cpu, idesc, 2, referenced, in_Rs, in_Rd);
1726 }
1727 {
1728 int referenced = 0;
1729 int UNUSED insn_referenced = abuf->written;
1730 INT in_Rs = -1;
1731 INT out_Rd = -1;
1732 in_Rs = FLD (in_Rs);
1733 referenced |= 1 << 0;
1734 cycles += crisv32f_model_crisv32_u_exec_movem (current_cpu, idesc, 3, referenced, in_Rs, out_Rd);
1735 }
1736 return cycles;
1737#undef FLD
1738}
1739
1740static int
1741model_crisv32_add_b_r (SIM_CPU *current_cpu, void *sem_arg)
1742{
1743#define FLD(f) abuf->fields.sfmt_addc_m.f
1744 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1745 const IDESC * UNUSED idesc = abuf->idesc;
1746 int cycles = 0;
1747 {
1748 int referenced = 0;
1749 int UNUSED insn_referenced = abuf->written;
1750 INT in_Rd = -1;
1751 INT in_Rs = -1;
1752 INT out_Rd = -1;
1753 in_Rd = FLD (in_Rd);
1754 in_Rs = FLD (in_Rs);
1755 referenced |= 1 << 0;
1756 referenced |= 1 << 1;
1757 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
1758 }
1759 return cycles;
1760#undef FLD
1761}
1762
1763static int
1764model_crisv32_add_w_r (SIM_CPU *current_cpu, void *sem_arg)
1765{
1766#define FLD(f) abuf->fields.sfmt_addc_m.f
1767 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1768 const IDESC * UNUSED idesc = abuf->idesc;
1769 int cycles = 0;
1770 {
1771 int referenced = 0;
1772 int UNUSED insn_referenced = abuf->written;
1773 INT in_Rd = -1;
1774 INT in_Rs = -1;
1775 INT out_Rd = -1;
1776 in_Rd = FLD (in_Rd);
1777 in_Rs = FLD (in_Rs);
1778 referenced |= 1 << 0;
1779 referenced |= 1 << 1;
1780 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
1781 }
1782 return cycles;
1783#undef FLD
1784}
1785
1786static int
1787model_crisv32_add_d_r (SIM_CPU *current_cpu, void *sem_arg)
1788{
1789#define FLD(f) abuf->fields.sfmt_addc_m.f
1790 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1791 const IDESC * UNUSED idesc = abuf->idesc;
1792 int cycles = 0;
1793 {
1794 int referenced = 0;
1795 int UNUSED insn_referenced = abuf->written;
1796 INT in_Rd = -1;
1797 INT in_Rs = -1;
1798 INT out_Rd = -1;
1799 in_Rd = FLD (in_Rd);
1800 in_Rs = FLD (in_Rs);
1801 referenced |= 1 << 0;
1802 referenced |= 1 << 1;
1803 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
1804 }
1805 return cycles;
1806#undef FLD
1807}
1808
1809static int
1810model_crisv32_add_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
1811{
1812#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
1813 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1814 const IDESC * UNUSED idesc = abuf->idesc;
1815 int cycles = 0;
1816 {
1817 int referenced = 0;
1818 int UNUSED insn_referenced = abuf->written;
1819 INT in_Rs = -1;
1820 in_Rs = FLD (in_Rs);
1821 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
1822 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1823 }
1824 {
1825 int referenced = 0;
1826 int UNUSED insn_referenced = abuf->written;
1827 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
1828 }
1829 {
1830 int referenced = 0;
1831 int UNUSED insn_referenced = abuf->written;
1832 INT in_Rd = -1;
1833 INT in_Rs = -1;
1834 INT out_Rd = -1;
1835 in_Rd = FLD (in_Rd);
1836 in_Rs = FLD (in_Rs);
1837 referenced |= 1 << 0;
1838 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
1839 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
1840 }
1841 return cycles;
1842#undef FLD
1843}
1844
1845static int
1846model_crisv32_add_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
1847{
1848#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
1849 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1850 const IDESC * UNUSED idesc = abuf->idesc;
1851 int cycles = 0;
1852 {
1853 int referenced = 0;
1854 int UNUSED insn_referenced = abuf->written;
1855 INT in_Rs = -1;
1856 in_Rs = FLD (in_Rs);
1857 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
1858 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1859 }
1860 {
1861 int referenced = 0;
1862 int UNUSED insn_referenced = abuf->written;
1863 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
1864 }
1865 {
1866 int referenced = 0;
1867 int UNUSED insn_referenced = abuf->written;
1868 INT in_Rd = -1;
1869 INT in_Rs = -1;
1870 INT out_Rd = -1;
1871 in_Rd = FLD (in_Rd);
1872 in_Rs = FLD (in_Rs);
1873 referenced |= 1 << 0;
1874 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
1875 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
1876 }
1877 return cycles;
1878#undef FLD
1879}
1880
1881static int
1882model_crisv32_add_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
1883{
1884#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
1885 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1886 const IDESC * UNUSED idesc = abuf->idesc;
1887 int cycles = 0;
1888 {
1889 int referenced = 0;
1890 int UNUSED insn_referenced = abuf->written;
1891 INT in_Rs = -1;
1892 in_Rs = FLD (in_Rs);
1893 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
1894 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1895 }
1896 {
1897 int referenced = 0;
1898 int UNUSED insn_referenced = abuf->written;
1899 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
1900 }
1901 {
1902 int referenced = 0;
1903 int UNUSED insn_referenced = abuf->written;
1904 INT in_Rd = -1;
1905 INT in_Rs = -1;
1906 INT out_Rd = -1;
1907 in_Rd = FLD (in_Rd);
1908 in_Rs = FLD (in_Rs);
1909 referenced |= 1 << 0;
1910 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
1911 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
1912 }
1913 return cycles;
1914#undef FLD
1915}
1916
1917static int
1918model_crisv32_addcbr (SIM_CPU *current_cpu, void *sem_arg)
1919{
1920#define FLD(f) abuf->fields.sfmt_addcbr.f
1921 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1922 const IDESC * UNUSED idesc = abuf->idesc;
1923 int cycles = 0;
1924 {
1925 int referenced = 0;
1926 int UNUSED insn_referenced = abuf->written;
1927 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
1928 }
1929 {
1930 int referenced = 0;
1931 int UNUSED insn_referenced = abuf->written;
1932 INT in_Rd = -1;
1933 INT in_Rs = -1;
1934 INT out_Rd = -1;
1935 in_Rd = FLD (in_Rd);
1936 referenced |= 1 << 0;
1937 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
1938 }
1939 return cycles;
1940#undef FLD
1941}
1942
1943static int
1944model_crisv32_addcwr (SIM_CPU *current_cpu, void *sem_arg)
1945{
1946#define FLD(f) abuf->fields.sfmt_addcwr.f
1947 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1948 const IDESC * UNUSED idesc = abuf->idesc;
1949 int cycles = 0;
1950 {
1951 int referenced = 0;
1952 int UNUSED insn_referenced = abuf->written;
1953 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
1954 }
1955 {
1956 int referenced = 0;
1957 int UNUSED insn_referenced = abuf->written;
1958 INT in_Rd = -1;
1959 INT in_Rs = -1;
1960 INT out_Rd = -1;
1961 in_Rd = FLD (in_Rd);
1962 referenced |= 1 << 0;
1963 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
1964 }
1965 return cycles;
1966#undef FLD
1967}
1968
1969static int
1970model_crisv32_addcdr (SIM_CPU *current_cpu, void *sem_arg)
1971{
1972#define FLD(f) abuf->fields.sfmt_addcdr.f
1973 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1974 const IDESC * UNUSED idesc = abuf->idesc;
1975 int cycles = 0;
1976 {
1977 int referenced = 0;
1978 int UNUSED insn_referenced = abuf->written;
1979 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1980 }
1981 {
1982 int referenced = 0;
1983 int UNUSED insn_referenced = abuf->written;
1984 INT in_Rd = -1;
1985 INT in_Rs = -1;
1986 INT out_Rd = -1;
1987 in_Rd = FLD (in_Rd);
1988 referenced |= 1 << 0;
1989 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
1990 }
1991 return cycles;
1992#undef FLD
1993}
1994
1995static int
1996model_crisv32_adds_b_r (SIM_CPU *current_cpu, void *sem_arg)
1997{
1998#define FLD(f) abuf->fields.sfmt_addc_m.f
1999 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2000 const IDESC * UNUSED idesc = abuf->idesc;
2001 int cycles = 0;
2002 {
2003 int referenced = 0;
2004 int UNUSED insn_referenced = abuf->written;
2005 INT in_Rd = -1;
2006 INT in_Rs = -1;
2007 INT out_Rd = -1;
2008 in_Rd = FLD (in_Rd);
2009 in_Rs = FLD (in_Rs);
2010 referenced |= 1 << 0;
2011 referenced |= 1 << 1;
2012 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2013 }
2014 return cycles;
2015#undef FLD
2016}
2017
2018static int
2019model_crisv32_adds_w_r (SIM_CPU *current_cpu, void *sem_arg)
2020{
2021#define FLD(f) abuf->fields.sfmt_addc_m.f
2022 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2023 const IDESC * UNUSED idesc = abuf->idesc;
2024 int cycles = 0;
2025 {
2026 int referenced = 0;
2027 int UNUSED insn_referenced = abuf->written;
2028 INT in_Rd = -1;
2029 INT in_Rs = -1;
2030 INT out_Rd = -1;
2031 in_Rd = FLD (in_Rd);
2032 in_Rs = FLD (in_Rs);
2033 referenced |= 1 << 0;
2034 referenced |= 1 << 1;
2035 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2036 }
2037 return cycles;
2038#undef FLD
2039}
2040
2041static int
2042model_crisv32_adds_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
2043{
2044#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2045 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2046 const IDESC * UNUSED idesc = abuf->idesc;
2047 int cycles = 0;
2048 {
2049 int referenced = 0;
2050 int UNUSED insn_referenced = abuf->written;
2051 INT in_Rs = -1;
2052 in_Rs = FLD (in_Rs);
2053 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2054 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2055 }
2056 {
2057 int referenced = 0;
2058 int UNUSED insn_referenced = abuf->written;
2059 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2060 }
2061 {
2062 int referenced = 0;
2063 int UNUSED insn_referenced = abuf->written;
2064 INT in_Rd = -1;
2065 INT in_Rs = -1;
2066 INT out_Rd = -1;
2067 in_Rd = FLD (in_Rd);
2068 in_Rs = FLD (in_Rs);
2069 referenced |= 1 << 0;
2070 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2071 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2072 }
2073 return cycles;
2074#undef FLD
2075}
2076
2077static int
2078model_crisv32_adds_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
2079{
2080#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2081 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2082 const IDESC * UNUSED idesc = abuf->idesc;
2083 int cycles = 0;
2084 {
2085 int referenced = 0;
2086 int UNUSED insn_referenced = abuf->written;
2087 INT in_Rs = -1;
2088 in_Rs = FLD (in_Rs);
2089 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2090 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2091 }
2092 {
2093 int referenced = 0;
2094 int UNUSED insn_referenced = abuf->written;
2095 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2096 }
2097 {
2098 int referenced = 0;
2099 int UNUSED insn_referenced = abuf->written;
2100 INT in_Rd = -1;
2101 INT in_Rs = -1;
2102 INT out_Rd = -1;
2103 in_Rd = FLD (in_Rd);
2104 in_Rs = FLD (in_Rs);
2105 referenced |= 1 << 0;
2106 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2107 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2108 }
2109 return cycles;
2110#undef FLD
2111}
2112
2113static int
2114model_crisv32_addscbr (SIM_CPU *current_cpu, void *sem_arg)
2115{
2116#define FLD(f) abuf->fields.sfmt_addcbr.f
2117 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2118 const IDESC * UNUSED idesc = abuf->idesc;
2119 int cycles = 0;
2120 {
2121 int referenced = 0;
2122 int UNUSED insn_referenced = abuf->written;
2123 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
2124 }
2125 {
2126 int referenced = 0;
2127 int UNUSED insn_referenced = abuf->written;
2128 INT in_Rd = -1;
2129 INT in_Rs = -1;
2130 INT out_Rd = -1;
2131 in_Rd = FLD (in_Rd);
2132 referenced |= 1 << 0;
2133 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
2134 }
2135 return cycles;
2136#undef FLD
2137}
2138
2139static int
2140model_crisv32_addscwr (SIM_CPU *current_cpu, void *sem_arg)
2141{
2142#define FLD(f) abuf->fields.sfmt_addcwr.f
2143 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2144 const IDESC * UNUSED idesc = abuf->idesc;
2145 int cycles = 0;
2146 {
2147 int referenced = 0;
2148 int UNUSED insn_referenced = abuf->written;
2149 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
2150 }
2151 {
2152 int referenced = 0;
2153 int UNUSED insn_referenced = abuf->written;
2154 INT in_Rd = -1;
2155 INT in_Rs = -1;
2156 INT out_Rd = -1;
2157 in_Rd = FLD (in_Rd);
2158 referenced |= 1 << 0;
2159 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
2160 }
2161 return cycles;
2162#undef FLD
2163}
2164
2165static int
2166model_crisv32_addu_b_r (SIM_CPU *current_cpu, void *sem_arg)
2167{
2168#define FLD(f) abuf->fields.sfmt_addc_m.f
2169 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2170 const IDESC * UNUSED idesc = abuf->idesc;
2171 int cycles = 0;
2172 {
2173 int referenced = 0;
2174 int UNUSED insn_referenced = abuf->written;
2175 INT in_Rd = -1;
2176 INT in_Rs = -1;
2177 INT out_Rd = -1;
2178 in_Rd = FLD (in_Rd);
2179 in_Rs = FLD (in_Rs);
2180 referenced |= 1 << 0;
2181 referenced |= 1 << 1;
2182 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2183 }
2184 return cycles;
2185#undef FLD
2186}
2187
2188static int
2189model_crisv32_addu_w_r (SIM_CPU *current_cpu, void *sem_arg)
2190{
2191#define FLD(f) abuf->fields.sfmt_addc_m.f
2192 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2193 const IDESC * UNUSED idesc = abuf->idesc;
2194 int cycles = 0;
2195 {
2196 int referenced = 0;
2197 int UNUSED insn_referenced = abuf->written;
2198 INT in_Rd = -1;
2199 INT in_Rs = -1;
2200 INT out_Rd = -1;
2201 in_Rd = FLD (in_Rd);
2202 in_Rs = FLD (in_Rs);
2203 referenced |= 1 << 0;
2204 referenced |= 1 << 1;
2205 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2206 }
2207 return cycles;
2208#undef FLD
2209}
2210
2211static int
2212model_crisv32_addu_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
2213{
2214#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2215 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2216 const IDESC * UNUSED idesc = abuf->idesc;
2217 int cycles = 0;
2218 {
2219 int referenced = 0;
2220 int UNUSED insn_referenced = abuf->written;
2221 INT in_Rs = -1;
2222 in_Rs = FLD (in_Rs);
2223 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2224 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2225 }
2226 {
2227 int referenced = 0;
2228 int UNUSED insn_referenced = abuf->written;
2229 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2230 }
2231 {
2232 int referenced = 0;
2233 int UNUSED insn_referenced = abuf->written;
2234 INT in_Rd = -1;
2235 INT in_Rs = -1;
2236 INT out_Rd = -1;
2237 in_Rd = FLD (in_Rd);
2238 in_Rs = FLD (in_Rs);
2239 referenced |= 1 << 0;
2240 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2241 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2242 }
2243 return cycles;
2244#undef FLD
2245}
2246
2247static int
2248model_crisv32_addu_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
2249{
2250#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2251 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2252 const IDESC * UNUSED idesc = abuf->idesc;
2253 int cycles = 0;
2254 {
2255 int referenced = 0;
2256 int UNUSED insn_referenced = abuf->written;
2257 INT in_Rs = -1;
2258 in_Rs = FLD (in_Rs);
2259 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2260 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2261 }
2262 {
2263 int referenced = 0;
2264 int UNUSED insn_referenced = abuf->written;
2265 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2266 }
2267 {
2268 int referenced = 0;
2269 int UNUSED insn_referenced = abuf->written;
2270 INT in_Rd = -1;
2271 INT in_Rs = -1;
2272 INT out_Rd = -1;
2273 in_Rd = FLD (in_Rd);
2274 in_Rs = FLD (in_Rs);
2275 referenced |= 1 << 0;
2276 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2277 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2278 }
2279 return cycles;
2280#undef FLD
2281}
2282
2283static int
2284model_crisv32_adducbr (SIM_CPU *current_cpu, void *sem_arg)
2285{
2286#define FLD(f) abuf->fields.sfmt_addcbr.f
2287 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2288 const IDESC * UNUSED idesc = abuf->idesc;
2289 int cycles = 0;
2290 {
2291 int referenced = 0;
2292 int UNUSED insn_referenced = abuf->written;
2293 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
2294 }
2295 {
2296 int referenced = 0;
2297 int UNUSED insn_referenced = abuf->written;
2298 INT in_Rd = -1;
2299 INT in_Rs = -1;
2300 INT out_Rd = -1;
2301 in_Rd = FLD (in_Rd);
2302 referenced |= 1 << 0;
2303 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
2304 }
2305 return cycles;
2306#undef FLD
2307}
2308
2309static int
2310model_crisv32_adducwr (SIM_CPU *current_cpu, void *sem_arg)
2311{
2312#define FLD(f) abuf->fields.sfmt_addcwr.f
2313 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2314 const IDESC * UNUSED idesc = abuf->idesc;
2315 int cycles = 0;
2316 {
2317 int referenced = 0;
2318 int UNUSED insn_referenced = abuf->written;
2319 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
2320 }
2321 {
2322 int referenced = 0;
2323 int UNUSED insn_referenced = abuf->written;
2324 INT in_Rd = -1;
2325 INT in_Rs = -1;
2326 INT out_Rd = -1;
2327 in_Rd = FLD (in_Rd);
2328 referenced |= 1 << 0;
2329 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
2330 }
2331 return cycles;
2332#undef FLD
2333}
2334
2335static int
2336model_crisv32_sub_b_r (SIM_CPU *current_cpu, void *sem_arg)
2337{
2338#define FLD(f) abuf->fields.sfmt_addc_m.f
2339 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2340 const IDESC * UNUSED idesc = abuf->idesc;
2341 int cycles = 0;
2342 {
2343 int referenced = 0;
2344 int UNUSED insn_referenced = abuf->written;
2345 INT in_Rd = -1;
2346 INT in_Rs = -1;
2347 INT out_Rd = -1;
2348 in_Rd = FLD (in_Rd);
2349 in_Rs = FLD (in_Rs);
2350 referenced |= 1 << 0;
2351 referenced |= 1 << 1;
2352 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2353 }
2354 return cycles;
2355#undef FLD
2356}
2357
2358static int
2359model_crisv32_sub_w_r (SIM_CPU *current_cpu, void *sem_arg)
2360{
2361#define FLD(f) abuf->fields.sfmt_addc_m.f
2362 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2363 const IDESC * UNUSED idesc = abuf->idesc;
2364 int cycles = 0;
2365 {
2366 int referenced = 0;
2367 int UNUSED insn_referenced = abuf->written;
2368 INT in_Rd = -1;
2369 INT in_Rs = -1;
2370 INT out_Rd = -1;
2371 in_Rd = FLD (in_Rd);
2372 in_Rs = FLD (in_Rs);
2373 referenced |= 1 << 0;
2374 referenced |= 1 << 1;
2375 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2376 }
2377 return cycles;
2378#undef FLD
2379}
2380
2381static int
2382model_crisv32_sub_d_r (SIM_CPU *current_cpu, void *sem_arg)
2383{
2384#define FLD(f) abuf->fields.sfmt_addc_m.f
2385 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2386 const IDESC * UNUSED idesc = abuf->idesc;
2387 int cycles = 0;
2388 {
2389 int referenced = 0;
2390 int UNUSED insn_referenced = abuf->written;
2391 INT in_Rd = -1;
2392 INT in_Rs = -1;
2393 INT out_Rd = -1;
2394 in_Rd = FLD (in_Rd);
2395 in_Rs = FLD (in_Rs);
2396 referenced |= 1 << 0;
2397 referenced |= 1 << 1;
2398 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2399 }
2400 return cycles;
2401#undef FLD
2402}
2403
2404static int
2405model_crisv32_sub_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
2406{
2407#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2408 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2409 const IDESC * UNUSED idesc = abuf->idesc;
2410 int cycles = 0;
2411 {
2412 int referenced = 0;
2413 int UNUSED insn_referenced = abuf->written;
2414 INT in_Rs = -1;
2415 in_Rs = FLD (in_Rs);
2416 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2417 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2418 }
2419 {
2420 int referenced = 0;
2421 int UNUSED insn_referenced = abuf->written;
2422 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2423 }
2424 {
2425 int referenced = 0;
2426 int UNUSED insn_referenced = abuf->written;
2427 INT in_Rd = -1;
2428 INT in_Rs = -1;
2429 INT out_Rd = -1;
2430 in_Rd = FLD (in_Rd);
2431 in_Rs = FLD (in_Rs);
2432 referenced |= 1 << 0;
2433 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2434 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2435 }
2436 return cycles;
2437#undef FLD
2438}
2439
2440static int
2441model_crisv32_sub_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
2442{
2443#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2444 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2445 const IDESC * UNUSED idesc = abuf->idesc;
2446 int cycles = 0;
2447 {
2448 int referenced = 0;
2449 int UNUSED insn_referenced = abuf->written;
2450 INT in_Rs = -1;
2451 in_Rs = FLD (in_Rs);
2452 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2453 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2454 }
2455 {
2456 int referenced = 0;
2457 int UNUSED insn_referenced = abuf->written;
2458 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2459 }
2460 {
2461 int referenced = 0;
2462 int UNUSED insn_referenced = abuf->written;
2463 INT in_Rd = -1;
2464 INT in_Rs = -1;
2465 INT out_Rd = -1;
2466 in_Rd = FLD (in_Rd);
2467 in_Rs = FLD (in_Rs);
2468 referenced |= 1 << 0;
2469 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2470 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2471 }
2472 return cycles;
2473#undef FLD
2474}
2475
2476static int
2477model_crisv32_sub_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
2478{
2479#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2480 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2481 const IDESC * UNUSED idesc = abuf->idesc;
2482 int cycles = 0;
2483 {
2484 int referenced = 0;
2485 int UNUSED insn_referenced = abuf->written;
2486 INT in_Rs = -1;
2487 in_Rs = FLD (in_Rs);
2488 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2489 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2490 }
2491 {
2492 int referenced = 0;
2493 int UNUSED insn_referenced = abuf->written;
2494 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2495 }
2496 {
2497 int referenced = 0;
2498 int UNUSED insn_referenced = abuf->written;
2499 INT in_Rd = -1;
2500 INT in_Rs = -1;
2501 INT out_Rd = -1;
2502 in_Rd = FLD (in_Rd);
2503 in_Rs = FLD (in_Rs);
2504 referenced |= 1 << 0;
2505 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2506 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2507 }
2508 return cycles;
2509#undef FLD
2510}
2511
2512static int
2513model_crisv32_subcbr (SIM_CPU *current_cpu, void *sem_arg)
2514{
2515#define FLD(f) abuf->fields.sfmt_addcbr.f
2516 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2517 const IDESC * UNUSED idesc = abuf->idesc;
2518 int cycles = 0;
2519 {
2520 int referenced = 0;
2521 int UNUSED insn_referenced = abuf->written;
2522 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
2523 }
2524 {
2525 int referenced = 0;
2526 int UNUSED insn_referenced = abuf->written;
2527 INT in_Rd = -1;
2528 INT in_Rs = -1;
2529 INT out_Rd = -1;
2530 in_Rd = FLD (in_Rd);
2531 referenced |= 1 << 0;
2532 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
2533 }
2534 return cycles;
2535#undef FLD
2536}
2537
2538static int
2539model_crisv32_subcwr (SIM_CPU *current_cpu, void *sem_arg)
2540{
2541#define FLD(f) abuf->fields.sfmt_addcwr.f
2542 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2543 const IDESC * UNUSED idesc = abuf->idesc;
2544 int cycles = 0;
2545 {
2546 int referenced = 0;
2547 int UNUSED insn_referenced = abuf->written;
2548 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
2549 }
2550 {
2551 int referenced = 0;
2552 int UNUSED insn_referenced = abuf->written;
2553 INT in_Rd = -1;
2554 INT in_Rs = -1;
2555 INT out_Rd = -1;
2556 in_Rd = FLD (in_Rd);
2557 referenced |= 1 << 0;
2558 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
2559 }
2560 return cycles;
2561#undef FLD
2562}
2563
2564static int
2565model_crisv32_subcdr (SIM_CPU *current_cpu, void *sem_arg)
2566{
2567#define FLD(f) abuf->fields.sfmt_addcdr.f
2568 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2569 const IDESC * UNUSED idesc = abuf->idesc;
2570 int cycles = 0;
2571 {
2572 int referenced = 0;
2573 int UNUSED insn_referenced = abuf->written;
2574 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
2575 }
2576 {
2577 int referenced = 0;
2578 int UNUSED insn_referenced = abuf->written;
2579 INT in_Rd = -1;
2580 INT in_Rs = -1;
2581 INT out_Rd = -1;
2582 in_Rd = FLD (in_Rd);
2583 referenced |= 1 << 0;
2584 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
2585 }
2586 return cycles;
2587#undef FLD
2588}
2589
2590static int
2591model_crisv32_subs_b_r (SIM_CPU *current_cpu, void *sem_arg)
2592{
2593#define FLD(f) abuf->fields.sfmt_addc_m.f
2594 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2595 const IDESC * UNUSED idesc = abuf->idesc;
2596 int cycles = 0;
2597 {
2598 int referenced = 0;
2599 int UNUSED insn_referenced = abuf->written;
2600 INT in_Rd = -1;
2601 INT in_Rs = -1;
2602 INT out_Rd = -1;
2603 in_Rd = FLD (in_Rd);
2604 in_Rs = FLD (in_Rs);
2605 referenced |= 1 << 0;
2606 referenced |= 1 << 1;
2607 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2608 }
2609 return cycles;
2610#undef FLD
2611}
2612
2613static int
2614model_crisv32_subs_w_r (SIM_CPU *current_cpu, void *sem_arg)
2615{
2616#define FLD(f) abuf->fields.sfmt_addc_m.f
2617 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2618 const IDESC * UNUSED idesc = abuf->idesc;
2619 int cycles = 0;
2620 {
2621 int referenced = 0;
2622 int UNUSED insn_referenced = abuf->written;
2623 INT in_Rd = -1;
2624 INT in_Rs = -1;
2625 INT out_Rd = -1;
2626 in_Rd = FLD (in_Rd);
2627 in_Rs = FLD (in_Rs);
2628 referenced |= 1 << 0;
2629 referenced |= 1 << 1;
2630 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2631 }
2632 return cycles;
2633#undef FLD
2634}
2635
2636static int
2637model_crisv32_subs_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
2638{
2639#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2640 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2641 const IDESC * UNUSED idesc = abuf->idesc;
2642 int cycles = 0;
2643 {
2644 int referenced = 0;
2645 int UNUSED insn_referenced = abuf->written;
2646 INT in_Rs = -1;
2647 in_Rs = FLD (in_Rs);
2648 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2649 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2650 }
2651 {
2652 int referenced = 0;
2653 int UNUSED insn_referenced = abuf->written;
2654 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2655 }
2656 {
2657 int referenced = 0;
2658 int UNUSED insn_referenced = abuf->written;
2659 INT in_Rd = -1;
2660 INT in_Rs = -1;
2661 INT out_Rd = -1;
2662 in_Rd = FLD (in_Rd);
2663 in_Rs = FLD (in_Rs);
2664 referenced |= 1 << 0;
2665 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2666 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2667 }
2668 return cycles;
2669#undef FLD
2670}
2671
2672static int
2673model_crisv32_subs_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
2674{
2675#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2676 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2677 const IDESC * UNUSED idesc = abuf->idesc;
2678 int cycles = 0;
2679 {
2680 int referenced = 0;
2681 int UNUSED insn_referenced = abuf->written;
2682 INT in_Rs = -1;
2683 in_Rs = FLD (in_Rs);
2684 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2685 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2686 }
2687 {
2688 int referenced = 0;
2689 int UNUSED insn_referenced = abuf->written;
2690 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2691 }
2692 {
2693 int referenced = 0;
2694 int UNUSED insn_referenced = abuf->written;
2695 INT in_Rd = -1;
2696 INT in_Rs = -1;
2697 INT out_Rd = -1;
2698 in_Rd = FLD (in_Rd);
2699 in_Rs = FLD (in_Rs);
2700 referenced |= 1 << 0;
2701 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2702 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2703 }
2704 return cycles;
2705#undef FLD
2706}
2707
2708static int
2709model_crisv32_subscbr (SIM_CPU *current_cpu, void *sem_arg)
2710{
2711#define FLD(f) abuf->fields.sfmt_addcbr.f
2712 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2713 const IDESC * UNUSED idesc = abuf->idesc;
2714 int cycles = 0;
2715 {
2716 int referenced = 0;
2717 int UNUSED insn_referenced = abuf->written;
2718 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
2719 }
2720 {
2721 int referenced = 0;
2722 int UNUSED insn_referenced = abuf->written;
2723 INT in_Rd = -1;
2724 INT in_Rs = -1;
2725 INT out_Rd = -1;
2726 in_Rd = FLD (in_Rd);
2727 referenced |= 1 << 0;
2728 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
2729 }
2730 return cycles;
2731#undef FLD
2732}
2733
2734static int
2735model_crisv32_subscwr (SIM_CPU *current_cpu, void *sem_arg)
2736{
2737#define FLD(f) abuf->fields.sfmt_addcwr.f
2738 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2739 const IDESC * UNUSED idesc = abuf->idesc;
2740 int cycles = 0;
2741 {
2742 int referenced = 0;
2743 int UNUSED insn_referenced = abuf->written;
2744 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
2745 }
2746 {
2747 int referenced = 0;
2748 int UNUSED insn_referenced = abuf->written;
2749 INT in_Rd = -1;
2750 INT in_Rs = -1;
2751 INT out_Rd = -1;
2752 in_Rd = FLD (in_Rd);
2753 referenced |= 1 << 0;
2754 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
2755 }
2756 return cycles;
2757#undef FLD
2758}
2759
2760static int
2761model_crisv32_subu_b_r (SIM_CPU *current_cpu, void *sem_arg)
2762{
2763#define FLD(f) abuf->fields.sfmt_addc_m.f
2764 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2765 const IDESC * UNUSED idesc = abuf->idesc;
2766 int cycles = 0;
2767 {
2768 int referenced = 0;
2769 int UNUSED insn_referenced = abuf->written;
2770 INT in_Rd = -1;
2771 INT in_Rs = -1;
2772 INT out_Rd = -1;
2773 in_Rd = FLD (in_Rd);
2774 in_Rs = FLD (in_Rs);
2775 referenced |= 1 << 0;
2776 referenced |= 1 << 1;
2777 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2778 }
2779 return cycles;
2780#undef FLD
2781}
2782
2783static int
2784model_crisv32_subu_w_r (SIM_CPU *current_cpu, void *sem_arg)
2785{
2786#define FLD(f) abuf->fields.sfmt_addc_m.f
2787 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2788 const IDESC * UNUSED idesc = abuf->idesc;
2789 int cycles = 0;
2790 {
2791 int referenced = 0;
2792 int UNUSED insn_referenced = abuf->written;
2793 INT in_Rd = -1;
2794 INT in_Rs = -1;
2795 INT out_Rd = -1;
2796 in_Rd = FLD (in_Rd);
2797 in_Rs = FLD (in_Rs);
2798 referenced |= 1 << 0;
2799 referenced |= 1 << 1;
2800 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2801 }
2802 return cycles;
2803#undef FLD
2804}
2805
2806static int
2807model_crisv32_subu_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
2808{
2809#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2810 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2811 const IDESC * UNUSED idesc = abuf->idesc;
2812 int cycles = 0;
2813 {
2814 int referenced = 0;
2815 int UNUSED insn_referenced = abuf->written;
2816 INT in_Rs = -1;
2817 in_Rs = FLD (in_Rs);
2818 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2819 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2820 }
2821 {
2822 int referenced = 0;
2823 int UNUSED insn_referenced = abuf->written;
2824 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2825 }
2826 {
2827 int referenced = 0;
2828 int UNUSED insn_referenced = abuf->written;
2829 INT in_Rd = -1;
2830 INT in_Rs = -1;
2831 INT out_Rd = -1;
2832 in_Rd = FLD (in_Rd);
2833 in_Rs = FLD (in_Rs);
2834 referenced |= 1 << 0;
2835 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2836 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2837 }
2838 return cycles;
2839#undef FLD
2840}
2841
2842static int
2843model_crisv32_subu_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
2844{
2845#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2846 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2847 const IDESC * UNUSED idesc = abuf->idesc;
2848 int cycles = 0;
2849 {
2850 int referenced = 0;
2851 int UNUSED insn_referenced = abuf->written;
2852 INT in_Rs = -1;
2853 in_Rs = FLD (in_Rs);
2854 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2855 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2856 }
2857 {
2858 int referenced = 0;
2859 int UNUSED insn_referenced = abuf->written;
2860 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2861 }
2862 {
2863 int referenced = 0;
2864 int UNUSED insn_referenced = abuf->written;
2865 INT in_Rd = -1;
2866 INT in_Rs = -1;
2867 INT out_Rd = -1;
2868 in_Rd = FLD (in_Rd);
2869 in_Rs = FLD (in_Rs);
2870 referenced |= 1 << 0;
2871 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2872 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2873 }
2874 return cycles;
2875#undef FLD
2876}
2877
2878static int
2879model_crisv32_subucbr (SIM_CPU *current_cpu, void *sem_arg)
2880{
2881#define FLD(f) abuf->fields.sfmt_addcbr.f
2882 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2883 const IDESC * UNUSED idesc = abuf->idesc;
2884 int cycles = 0;
2885 {
2886 int referenced = 0;
2887 int UNUSED insn_referenced = abuf->written;
2888 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
2889 }
2890 {
2891 int referenced = 0;
2892 int UNUSED insn_referenced = abuf->written;
2893 INT in_Rd = -1;
2894 INT in_Rs = -1;
2895 INT out_Rd = -1;
2896 in_Rd = FLD (in_Rd);
2897 referenced |= 1 << 0;
2898 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
2899 }
2900 return cycles;
2901#undef FLD
2902}
2903
2904static int
2905model_crisv32_subucwr (SIM_CPU *current_cpu, void *sem_arg)
2906{
2907#define FLD(f) abuf->fields.sfmt_addcwr.f
2908 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2909 const IDESC * UNUSED idesc = abuf->idesc;
2910 int cycles = 0;
2911 {
2912 int referenced = 0;
2913 int UNUSED insn_referenced = abuf->written;
2914 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
2915 }
2916 {
2917 int referenced = 0;
2918 int UNUSED insn_referenced = abuf->written;
2919 INT in_Rd = -1;
2920 INT in_Rs = -1;
2921 INT out_Rd = -1;
2922 in_Rd = FLD (in_Rd);
2923 referenced |= 1 << 0;
2924 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
2925 }
2926 return cycles;
2927#undef FLD
2928}
2929
2930static int
2931model_crisv32_addc_r (SIM_CPU *current_cpu, void *sem_arg)
2932{
2933#define FLD(f) abuf->fields.sfmt_addc_m.f
2934 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2935 const IDESC * UNUSED idesc = abuf->idesc;
2936 int cycles = 0;
2937 {
2938 int referenced = 0;
2939 int UNUSED insn_referenced = abuf->written;
2940 INT in_Rd = -1;
2941 INT in_Rs = -1;
2942 INT out_Rd = -1;
2943 in_Rd = FLD (in_Rd);
2944 in_Rs = FLD (in_Rs);
2945 referenced |= 1 << 0;
2946 referenced |= 1 << 1;
2947 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2948 }
2949 return cycles;
2950#undef FLD
2951}
2952
2953static int
2954model_crisv32_addc_m (SIM_CPU *current_cpu, void *sem_arg)
2955{
2956#define FLD(f) abuf->fields.sfmt_addc_m.f
2957 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2958 const IDESC * UNUSED idesc = abuf->idesc;
2959 int cycles = 0;
2960 {
2961 int referenced = 0;
2962 int UNUSED insn_referenced = abuf->written;
2963 INT in_Rs = -1;
2964 in_Rs = FLD (in_Rs);
2965 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2966 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2967 }
2968 {
2969 int referenced = 0;
2970 int UNUSED insn_referenced = abuf->written;
2971 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2972 }
2973 {
2974 int referenced = 0;
2975 int UNUSED insn_referenced = abuf->written;
2976 INT in_Rd = -1;
2977 INT in_Rs = -1;
2978 INT out_Rd = -1;
2979 in_Rd = FLD (in_Rd);
2980 in_Rs = FLD (in_Rs);
2981 referenced |= 1 << 0;
2982 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2983 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2984 }
2985 return cycles;
2986#undef FLD
2987}
2988
2989static int
2990model_crisv32_addc_c (SIM_CPU *current_cpu, void *sem_arg)
2991{
2992#define FLD(f) abuf->fields.sfmt_addcdr.f
2993 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2994 const IDESC * UNUSED idesc = abuf->idesc;
2995 int cycles = 0;
2996 {
2997 int referenced = 0;
2998 int UNUSED insn_referenced = abuf->written;
2999 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
3000 }
3001 {
3002 int referenced = 0;
3003 int UNUSED insn_referenced = abuf->written;
3004 INT in_Rd = -1;
3005 INT in_Rs = -1;
3006 INT out_Rd = -1;
3007 in_Rd = FLD (in_Rd);
3008 referenced |= 1 << 0;
3009 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3010 }
3011 return cycles;
3012#undef FLD
3013}
3014
3015static int
3016model_crisv32_lapc_d (SIM_CPU *current_cpu, void *sem_arg)
3017{
3018#define FLD(f) abuf->fields.sfmt_lapc_d.f
3019 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3020 const IDESC * UNUSED idesc = abuf->idesc;
3021 int cycles = 0;
3022 {
3023 int referenced = 0;
3024 int UNUSED insn_referenced = abuf->written;
3025 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
3026 }
3027 {
3028 int referenced = 0;
3029 int UNUSED insn_referenced = abuf->written;
3030 INT in_Rd = -1;
3031 INT in_Rs = -1;
3032 INT out_Rd = -1;
3033 out_Rd = FLD (out_Rd);
3034 referenced |= 1 << 2;
3035 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3036 }
3037 return cycles;
3038#undef FLD
3039}
3040
3041static int
3042model_crisv32_lapcq (SIM_CPU *current_cpu, void *sem_arg)
3043{
3044#define FLD(f) abuf->fields.sfmt_lapcq.f
3045 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3046 const IDESC * UNUSED idesc = abuf->idesc;
3047 int cycles = 0;
3048 {
3049 int referenced = 0;
3050 int UNUSED insn_referenced = abuf->written;
3051 INT in_Rd = -1;
3052 INT in_Rs = -1;
3053 INT out_Rd = -1;
3054 out_Rd = FLD (out_Rd);
3055 referenced |= 1 << 2;
3056 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3057 }
3058 return cycles;
3059#undef FLD
3060}
3061
3062static int
3063model_crisv32_addi_b_r (SIM_CPU *current_cpu, void *sem_arg)
3064{
3065#define FLD(f) abuf->fields.sfmt_addc_m.f
3066 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3067 const IDESC * UNUSED idesc = abuf->idesc;
3068 int cycles = 0;
3069 {
3070 int referenced = 0;
3071 int UNUSED insn_referenced = abuf->written;
3072 INT in_Rd = -1;
3073 INT in_Rs = -1;
3074 INT out_Rd = -1;
3075 in_Rd = FLD (in_Rd);
3076 in_Rs = FLD (in_Rs);
3077 referenced |= 1 << 0;
3078 referenced |= 1 << 1;
3079 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3080 }
3081 return cycles;
3082#undef FLD
3083}
3084
3085static int
3086model_crisv32_addi_w_r (SIM_CPU *current_cpu, void *sem_arg)
3087{
3088#define FLD(f) abuf->fields.sfmt_addc_m.f
3089 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3090 const IDESC * UNUSED idesc = abuf->idesc;
3091 int cycles = 0;
3092 {
3093 int referenced = 0;
3094 int UNUSED insn_referenced = abuf->written;
3095 INT in_Rd = -1;
3096 INT in_Rs = -1;
3097 INT out_Rd = -1;
3098 in_Rd = FLD (in_Rd);
3099 in_Rs = FLD (in_Rs);
3100 referenced |= 1 << 0;
3101 referenced |= 1 << 1;
3102 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3103 }
3104 return cycles;
3105#undef FLD
3106}
3107
3108static int
3109model_crisv32_addi_d_r (SIM_CPU *current_cpu, void *sem_arg)
3110{
3111#define FLD(f) abuf->fields.sfmt_addc_m.f
3112 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3113 const IDESC * UNUSED idesc = abuf->idesc;
3114 int cycles = 0;
3115 {
3116 int referenced = 0;
3117 int UNUSED insn_referenced = abuf->written;
3118 INT in_Rd = -1;
3119 INT in_Rs = -1;
3120 INT out_Rd = -1;
3121 in_Rd = FLD (in_Rd);
3122 in_Rs = FLD (in_Rs);
3123 referenced |= 1 << 0;
3124 referenced |= 1 << 1;
3125 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3126 }
3127 return cycles;
3128#undef FLD
3129}
3130
3131static int
3132model_crisv32_neg_b_r (SIM_CPU *current_cpu, void *sem_arg)
3133{
3134#define FLD(f) abuf->fields.sfmt_addc_m.f
3135 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3136 const IDESC * UNUSED idesc = abuf->idesc;
3137 int cycles = 0;
3138 {
3139 int referenced = 0;
3140 int UNUSED insn_referenced = abuf->written;
3141 INT in_Rd = -1;
3142 INT in_Rs = -1;
3143 INT out_Rd = -1;
3144 in_Rs = FLD (in_Rs);
3145 referenced |= 1 << 1;
3146 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3147 }
3148 return cycles;
3149#undef FLD
3150}
3151
3152static int
3153model_crisv32_neg_w_r (SIM_CPU *current_cpu, void *sem_arg)
3154{
3155#define FLD(f) abuf->fields.sfmt_addc_m.f
3156 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3157 const IDESC * UNUSED idesc = abuf->idesc;
3158 int cycles = 0;
3159 {
3160 int referenced = 0;
3161 int UNUSED insn_referenced = abuf->written;
3162 INT in_Rd = -1;
3163 INT in_Rs = -1;
3164 INT out_Rd = -1;
3165 in_Rs = FLD (in_Rs);
3166 referenced |= 1 << 1;
3167 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3168 }
3169 return cycles;
3170#undef FLD
3171}
3172
3173static int
3174model_crisv32_neg_d_r (SIM_CPU *current_cpu, void *sem_arg)
3175{
3176#define FLD(f) abuf->fields.sfmt_addc_m.f
3177 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3178 const IDESC * UNUSED idesc = abuf->idesc;
3179 int cycles = 0;
3180 {
3181 int referenced = 0;
3182 int UNUSED insn_referenced = abuf->written;
3183 INT in_Rd = -1;
3184 INT in_Rs = -1;
3185 INT out_Rd = -1;
3186 in_Rs = FLD (in_Rs);
3187 referenced |= 1 << 1;
3188 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3189 }
3190 return cycles;
3191#undef FLD
3192}
3193
3194static int
3195model_crisv32_test_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
3196{
3197#define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
3198 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3199 const IDESC * UNUSED idesc = abuf->idesc;
3200 int cycles = 0;
3201 {
3202 int referenced = 0;
3203 int UNUSED insn_referenced = abuf->written;
3204 INT in_Rs = -1;
3205 in_Rs = FLD (in_Rs);
3206 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
3207 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
3208 }
3209 {
3210 int referenced = 0;
3211 int UNUSED insn_referenced = abuf->written;
3212 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
3213 }
3214 {
3215 int referenced = 0;
3216 int UNUSED insn_referenced = abuf->written;
3217 INT in_Rd = -1;
3218 INT in_Rs = -1;
3219 INT out_Rd = -1;
3220 in_Rs = FLD (in_Rs);
3221 if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
3222 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
3223 }
3224 return cycles;
3225#undef FLD
3226}
3227
3228static int
3229model_crisv32_test_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
3230{
3231#define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
3232 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3233 const IDESC * UNUSED idesc = abuf->idesc;
3234 int cycles = 0;
3235 {
3236 int referenced = 0;
3237 int UNUSED insn_referenced = abuf->written;
3238 INT in_Rs = -1;
3239 in_Rs = FLD (in_Rs);
3240 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
3241 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
3242 }
3243 {
3244 int referenced = 0;
3245 int UNUSED insn_referenced = abuf->written;
3246 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
3247 }
3248 {
3249 int referenced = 0;
3250 int UNUSED insn_referenced = abuf->written;
3251 INT in_Rd = -1;
3252 INT in_Rs = -1;
3253 INT out_Rd = -1;
3254 in_Rs = FLD (in_Rs);
3255 if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
3256 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
3257 }
3258 return cycles;
3259#undef FLD
3260}
3261
3262static int
3263model_crisv32_test_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
3264{
3265#define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
3266 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3267 const IDESC * UNUSED idesc = abuf->idesc;
3268 int cycles = 0;
3269 {
3270 int referenced = 0;
3271 int UNUSED insn_referenced = abuf->written;
3272 INT in_Rs = -1;
3273 in_Rs = FLD (in_Rs);
3274 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
3275 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
3276 }
3277 {
3278 int referenced = 0;
3279 int UNUSED insn_referenced = abuf->written;
3280 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
3281 }
3282 {
3283 int referenced = 0;
3284 int UNUSED insn_referenced = abuf->written;
3285 INT in_Rd = -1;
3286 INT in_Rs = -1;
3287 INT out_Rd = -1;
3288 in_Rs = FLD (in_Rs);
3289 if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
3290 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
3291 }
3292 return cycles;
3293#undef FLD
3294}
3295
3296static int
3297model_crisv32_move_r_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
3298{
3299#define FLD(f) abuf->fields.sfmt_addc_m.f
3300 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3301 const IDESC * UNUSED idesc = abuf->idesc;
3302 int cycles = 0;
3303 {
3304 int referenced = 0;
3305 int UNUSED insn_referenced = abuf->written;
3306 INT in_Rs = -1;
3307 in_Rs = FLD (in_Rs);
3308 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
3309 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
3310 }
3311 {
3312 int referenced = 0;
3313 int UNUSED insn_referenced = abuf->written;
3314 INT in_Rd = -1;
3315 INT in_Rs = -1;
3316 INT out_Rd = -1;
3317 in_Rd = FLD (in_Rd);
3318 in_Rs = FLD (in_Rs);
3319 referenced |= 1 << 0;
3320 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
3321 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3322 }
3323 {
3324 int referenced = 0;
3325 int UNUSED insn_referenced = abuf->written;
3326 cycles += crisv32f_model_crisv32_u_mem_w (current_cpu, idesc, 2, referenced);
3327 }
3328 return cycles;
3329#undef FLD
3330}
3331
3332static int
3333model_crisv32_move_r_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
3334{
3335#define FLD(f) abuf->fields.sfmt_addc_m.f
3336 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3337 const IDESC * UNUSED idesc = abuf->idesc;
3338 int cycles = 0;
3339 {
3340 int referenced = 0;
3341 int UNUSED insn_referenced = abuf->written;
3342 INT in_Rs = -1;
3343 in_Rs = FLD (in_Rs);
3344 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
3345 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
3346 }
3347 {
3348 int referenced = 0;
3349 int UNUSED insn_referenced = abuf->written;
3350 INT in_Rd = -1;
3351 INT in_Rs = -1;
3352 INT out_Rd = -1;
3353 in_Rd = FLD (in_Rd);
3354 in_Rs = FLD (in_Rs);
3355 referenced |= 1 << 0;
3356 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
3357 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3358 }
3359 {
3360 int referenced = 0;
3361 int UNUSED insn_referenced = abuf->written;
3362 cycles += crisv32f_model_crisv32_u_mem_w (current_cpu, idesc, 2, referenced);
3363 }
3364 return cycles;
3365#undef FLD
3366}
3367
3368static int
3369model_crisv32_move_r_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
3370{
3371#define FLD(f) abuf->fields.sfmt_addc_m.f
3372 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3373 const IDESC * UNUSED idesc = abuf->idesc;
3374 int cycles = 0;
3375 {
3376 int referenced = 0;
3377 int UNUSED insn_referenced = abuf->written;
3378 INT in_Rs = -1;
3379 in_Rs = FLD (in_Rs);
3380 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
3381 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
3382 }
3383 {
3384 int referenced = 0;
3385 int UNUSED insn_referenced = abuf->written;
3386 INT in_Rd = -1;
3387 INT in_Rs = -1;
3388 INT out_Rd = -1;
3389 in_Rd = FLD (in_Rd);
3390 in_Rs = FLD (in_Rs);
3391 referenced |= 1 << 0;
3392 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
3393 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3394 }
3395 {
3396 int referenced = 0;
3397 int UNUSED insn_referenced = abuf->written;
3398 cycles += crisv32f_model_crisv32_u_mem_w (current_cpu, idesc, 2, referenced);
3399 }
3400 return cycles;
3401#undef FLD
3402}
3403
3404static int
3405model_crisv32_muls_b (SIM_CPU *current_cpu, void *sem_arg)
3406{
3407#define FLD(f) abuf->fields.sfmt_muls_b.f
3408 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3409 const IDESC * UNUSED idesc = abuf->idesc;
3410 int cycles = 0;
3411 {
3412 int referenced = 0;
3413 int UNUSED insn_referenced = abuf->written;
3414 INT in_Rs = -1;
3415 INT in_Rd = -1;
3416 in_Rs = FLD (in_Rs);
3417 in_Rd = FLD (in_Rd);
3418 referenced |= 1 << 0;
3419 referenced |= 1 << 1;
3420 cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd);
3421 }
3422 {
3423 int referenced = 0;
3424 int UNUSED insn_referenced = abuf->written;
3425 INT in_Rd = -1;
3426 INT in_Rs = -1;
3427 INT out_Rd = -1;
3428 in_Rd = FLD (in_Rd);
3429 in_Rs = FLD (in_Rs);
3430 out_Rd = FLD (out_Rd);
3431 referenced |= 1 << 0;
3432 referenced |= 1 << 1;
3433 referenced |= 1 << 2;
3434 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3435 }
3436 return cycles;
3437#undef FLD
3438}
3439
3440static int
3441model_crisv32_muls_w (SIM_CPU *current_cpu, void *sem_arg)
3442{
3443#define FLD(f) abuf->fields.sfmt_muls_b.f
3444 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3445 const IDESC * UNUSED idesc = abuf->idesc;
3446 int cycles = 0;
3447 {
3448 int referenced = 0;
3449 int UNUSED insn_referenced = abuf->written;
3450 INT in_Rs = -1;
3451 INT in_Rd = -1;
3452 in_Rs = FLD (in_Rs);
3453 in_Rd = FLD (in_Rd);
3454 referenced |= 1 << 0;
3455 referenced |= 1 << 1;
3456 cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd);
3457 }
3458 {
3459 int referenced = 0;
3460 int UNUSED insn_referenced = abuf->written;
3461 INT in_Rd = -1;
3462 INT in_Rs = -1;
3463 INT out_Rd = -1;
3464 in_Rd = FLD (in_Rd);
3465 in_Rs = FLD (in_Rs);
3466 out_Rd = FLD (out_Rd);
3467 referenced |= 1 << 0;
3468 referenced |= 1 << 1;
3469 referenced |= 1 << 2;
3470 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3471 }
3472 return cycles;
3473#undef FLD
3474}
3475
3476static int
3477model_crisv32_muls_d (SIM_CPU *current_cpu, void *sem_arg)
3478{
3479#define FLD(f) abuf->fields.sfmt_muls_b.f
3480 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3481 const IDESC * UNUSED idesc = abuf->idesc;
3482 int cycles = 0;
3483 {
3484 int referenced = 0;
3485 int UNUSED insn_referenced = abuf->written;
3486 INT in_Rs = -1;
3487 INT in_Rd = -1;
3488 in_Rs = FLD (in_Rs);
3489 in_Rd = FLD (in_Rd);
3490 referenced |= 1 << 0;
3491 referenced |= 1 << 1;
3492 cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd);
3493 }
3494 {
3495 int referenced = 0;
3496 int UNUSED insn_referenced = abuf->written;
3497 INT in_Rd = -1;
3498 INT in_Rs = -1;
3499 INT out_Rd = -1;
3500 in_Rd = FLD (in_Rd);
3501 in_Rs = FLD (in_Rs);
3502 out_Rd = FLD (out_Rd);
3503 referenced |= 1 << 0;
3504 referenced |= 1 << 1;
3505 referenced |= 1 << 2;
3506 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3507 }
3508 return cycles;
3509#undef FLD
3510}
3511
3512static int
3513model_crisv32_mulu_b (SIM_CPU *current_cpu, void *sem_arg)
3514{
3515#define FLD(f) abuf->fields.sfmt_muls_b.f
3516 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3517 const IDESC * UNUSED idesc = abuf->idesc;
3518 int cycles = 0;
3519 {
3520 int referenced = 0;
3521 int UNUSED insn_referenced = abuf->written;
3522 INT in_Rs = -1;
3523 INT in_Rd = -1;
3524 in_Rs = FLD (in_Rs);
3525 in_Rd = FLD (in_Rd);
3526 referenced |= 1 << 0;
3527 referenced |= 1 << 1;
3528 cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd);
3529 }
3530 {
3531 int referenced = 0;
3532 int UNUSED insn_referenced = abuf->written;
3533 INT in_Rd = -1;
3534 INT in_Rs = -1;
3535 INT out_Rd = -1;
3536 in_Rd = FLD (in_Rd);
3537 in_Rs = FLD (in_Rs);
3538 out_Rd = FLD (out_Rd);
3539 referenced |= 1 << 0;
3540 referenced |= 1 << 1;
3541 referenced |= 1 << 2;
3542 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3543 }
3544 return cycles;
3545#undef FLD
3546}
3547
3548static int
3549model_crisv32_mulu_w (SIM_CPU *current_cpu, void *sem_arg)
3550{
3551#define FLD(f) abuf->fields.sfmt_muls_b.f
3552 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3553 const IDESC * UNUSED idesc = abuf->idesc;
3554 int cycles = 0;
3555 {
3556 int referenced = 0;
3557 int UNUSED insn_referenced = abuf->written;
3558 INT in_Rs = -1;
3559 INT in_Rd = -1;
3560 in_Rs = FLD (in_Rs);
3561 in_Rd = FLD (in_Rd);
3562 referenced |= 1 << 0;
3563 referenced |= 1 << 1;
3564 cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd);
3565 }
3566 {
3567 int referenced = 0;
3568 int UNUSED insn_referenced = abuf->written;
3569 INT in_Rd = -1;
3570 INT in_Rs = -1;
3571 INT out_Rd = -1;
3572 in_Rd = FLD (in_Rd);
3573 in_Rs = FLD (in_Rs);
3574 out_Rd = FLD (out_Rd);
3575 referenced |= 1 << 0;
3576 referenced |= 1 << 1;
3577 referenced |= 1 << 2;
3578 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3579 }
3580 return cycles;
3581#undef FLD
3582}
3583
3584static int
3585model_crisv32_mulu_d (SIM_CPU *current_cpu, void *sem_arg)
3586{
3587#define FLD(f) abuf->fields.sfmt_muls_b.f
3588 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3589 const IDESC * UNUSED idesc = abuf->idesc;
3590 int cycles = 0;
3591 {
3592 int referenced = 0;
3593 int UNUSED insn_referenced = abuf->written;
3594 INT in_Rs = -1;
3595 INT in_Rd = -1;
3596 in_Rs = FLD (in_Rs);
3597 in_Rd = FLD (in_Rd);
3598 referenced |= 1 << 0;
3599 referenced |= 1 << 1;
3600 cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd);
3601 }
3602 {
3603 int referenced = 0;
3604 int UNUSED insn_referenced = abuf->written;
3605 INT in_Rd = -1;
3606 INT in_Rs = -1;
3607 INT out_Rd = -1;
3608 in_Rd = FLD (in_Rd);
3609 in_Rs = FLD (in_Rs);
3610 out_Rd = FLD (out_Rd);
3611 referenced |= 1 << 0;
3612 referenced |= 1 << 1;
3613 referenced |= 1 << 2;
3614 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3615 }
3616 return cycles;
3617#undef FLD
3618}
3619
3620static int
3621model_crisv32_mcp (SIM_CPU *current_cpu, void *sem_arg)
3622{
3623#define FLD(f) abuf->fields.sfmt_mcp.f
3624 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3625 const IDESC * UNUSED idesc = abuf->idesc;
3626 int cycles = 0;
3627 {
3628 int referenced = 0;
3629 int UNUSED insn_referenced = abuf->written;
3630 INT in_Rd = -1;
3631 INT in_Rs = -1;
3632 INT out_Rd = -1;
3633 in_Rs = FLD (in_Rs);
3634 referenced |= 1 << 1;
3635 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3636 }
3637 return cycles;
3638#undef FLD
3639}
3640
3641static int
3642model_crisv32_dstep (SIM_CPU *current_cpu, void *sem_arg)
3643{
3644#define FLD(f) abuf->fields.sfmt_muls_b.f
3645 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3646 const IDESC * UNUSED idesc = abuf->idesc;
3647 int cycles = 0;
3648 {
3649 int referenced = 0;
3650 int UNUSED insn_referenced = abuf->written;
3651 INT in_Rd = -1;
3652 INT in_Rs = -1;
3653 INT out_Rd = -1;
3654 in_Rd = FLD (in_Rd);
3655 in_Rs = FLD (in_Rs);
3656 out_Rd = FLD (out_Rd);
3657 referenced |= 1 << 0;
3658 referenced |= 1 << 1;
3659 referenced |= 1 << 2;
3660 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3661 }
3662 return cycles;
3663#undef FLD
3664}
3665
3666static int
3667model_crisv32_abs (SIM_CPU *current_cpu, void *sem_arg)
3668{
3669#define FLD(f) abuf->fields.sfmt_muls_b.f
3670 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3671 const IDESC * UNUSED idesc = abuf->idesc;
3672 int cycles = 0;
3673 {
3674 int referenced = 0;
3675 int UNUSED insn_referenced = abuf->written;
3676 INT in_Rd = -1;
3677 INT in_Rs = -1;
3678 INT out_Rd = -1;
3679 in_Rs = FLD (in_Rs);
3680 out_Rd = FLD (out_Rd);
3681 referenced |= 1 << 1;
3682 referenced |= 1 << 2;
3683 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3684 }
3685 return cycles;
3686#undef FLD
3687}
3688
3689static int
3690model_crisv32_and_b_r (SIM_CPU *current_cpu, void *sem_arg)
3691{
3692#define FLD(f) abuf->fields.sfmt_addc_m.f
3693 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3694 const IDESC * UNUSED idesc = abuf->idesc;
3695 int cycles = 0;
3696 {
3697 int referenced = 0;
3698 int UNUSED insn_referenced = abuf->written;
3699 INT in_Rd = -1;
3700 INT in_Rs = -1;
3701 INT out_Rd = -1;
3702 in_Rd = FLD (in_Rd);
3703 in_Rs = FLD (in_Rs);
3704 referenced |= 1 << 0;
3705 referenced |= 1 << 1;
3706 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3707 }
3708 return cycles;
3709#undef FLD
3710}
3711
3712static int
3713model_crisv32_and_w_r (SIM_CPU *current_cpu, void *sem_arg)
3714{
3715#define FLD(f) abuf->fields.sfmt_addc_m.f
3716 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3717 const IDESC * UNUSED idesc = abuf->idesc;
3718 int cycles = 0;
3719 {
3720 int referenced = 0;
3721 int UNUSED insn_referenced = abuf->written;
3722 INT in_Rd = -1;
3723 INT in_Rs = -1;
3724 INT out_Rd = -1;
3725 in_Rd = FLD (in_Rd);
3726 in_Rs = FLD (in_Rs);
3727 referenced |= 1 << 0;
3728 referenced |= 1 << 1;
3729 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3730 }
3731 return cycles;
3732#undef FLD
3733}
3734
3735static int
3736model_crisv32_and_d_r (SIM_CPU *current_cpu, void *sem_arg)
3737{
3738#define FLD(f) abuf->fields.sfmt_addc_m.f
3739 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3740 const IDESC * UNUSED idesc = abuf->idesc;
3741 int cycles = 0;
3742 {
3743 int referenced = 0;
3744 int UNUSED insn_referenced = abuf->written;
3745 INT in_Rd = -1;
3746 INT in_Rs = -1;
3747 INT out_Rd = -1;
3748 in_Rd = FLD (in_Rd);
3749 in_Rs = FLD (in_Rs);
3750 referenced |= 1 << 0;
3751 referenced |= 1 << 1;
3752 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3753 }
3754 return cycles;
3755#undef FLD
3756}
3757
3758static int
3759model_crisv32_and_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
3760{
3761#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3762 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3763 const IDESC * UNUSED idesc = abuf->idesc;
3764 int cycles = 0;
3765 {
3766 int referenced = 0;
3767 int UNUSED insn_referenced = abuf->written;
3768 INT in_Rs = -1;
3769 in_Rs = FLD (in_Rs);
3770 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
3771 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
3772 }
3773 {
3774 int referenced = 0;
3775 int UNUSED insn_referenced = abuf->written;
3776 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
3777 }
3778 {
3779 int referenced = 0;
3780 int UNUSED insn_referenced = abuf->written;
3781 INT in_Rd = -1;
3782 INT in_Rs = -1;
3783 INT out_Rd = -1;
3784 in_Rd = FLD (in_Rd);
3785 in_Rs = FLD (in_Rs);
3786 referenced |= 1 << 0;
3787 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
3788 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
3789 }
3790 return cycles;
3791#undef FLD
3792}
3793
3794static int
3795model_crisv32_and_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
3796{
3797#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3798 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3799 const IDESC * UNUSED idesc = abuf->idesc;
3800 int cycles = 0;
3801 {
3802 int referenced = 0;
3803 int UNUSED insn_referenced = abuf->written;
3804 INT in_Rs = -1;
3805 in_Rs = FLD (in_Rs);
3806 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
3807 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
3808 }
3809 {
3810 int referenced = 0;
3811 int UNUSED insn_referenced = abuf->written;
3812 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
3813 }
3814 {
3815 int referenced = 0;
3816 int UNUSED insn_referenced = abuf->written;
3817 INT in_Rd = -1;
3818 INT in_Rs = -1;
3819 INT out_Rd = -1;
3820 in_Rd = FLD (in_Rd);
3821 in_Rs = FLD (in_Rs);
3822 referenced |= 1 << 0;
3823 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
3824 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
3825 }
3826 return cycles;
3827#undef FLD
3828}
3829
3830static int
3831model_crisv32_and_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
3832{
3833#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3834 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3835 const IDESC * UNUSED idesc = abuf->idesc;
3836 int cycles = 0;
3837 {
3838 int referenced = 0;
3839 int UNUSED insn_referenced = abuf->written;
3840 INT in_Rs = -1;
3841 in_Rs = FLD (in_Rs);
3842 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
3843 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
3844 }
3845 {
3846 int referenced = 0;
3847 int UNUSED insn_referenced = abuf->written;
3848 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
3849 }
3850 {
3851 int referenced = 0;
3852 int UNUSED insn_referenced = abuf->written;
3853 INT in_Rd = -1;
3854 INT in_Rs = -1;
3855 INT out_Rd = -1;
3856 in_Rd = FLD (in_Rd);
3857 in_Rs = FLD (in_Rs);
3858 referenced |= 1 << 0;
3859 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
3860 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
3861 }
3862 return cycles;
3863#undef FLD
3864}
3865
3866static int
3867model_crisv32_andcbr (SIM_CPU *current_cpu, void *sem_arg)
3868{
3869#define FLD(f) abuf->fields.sfmt_addcbr.f
3870 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3871 const IDESC * UNUSED idesc = abuf->idesc;
3872 int cycles = 0;
3873 {
3874 int referenced = 0;
3875 int UNUSED insn_referenced = abuf->written;
3876 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
3877 }
3878 {
3879 int referenced = 0;
3880 int UNUSED insn_referenced = abuf->written;
3881 INT in_Rd = -1;
3882 INT in_Rs = -1;
3883 INT out_Rd = -1;
3884 in_Rd = FLD (in_Rd);
3885 referenced |= 1 << 0;
3886 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3887 }
3888 return cycles;
3889#undef FLD
3890}
3891
3892static int
3893model_crisv32_andcwr (SIM_CPU *current_cpu, void *sem_arg)
3894{
3895#define FLD(f) abuf->fields.sfmt_addcwr.f
3896 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3897 const IDESC * UNUSED idesc = abuf->idesc;
3898 int cycles = 0;
3899 {
3900 int referenced = 0;
3901 int UNUSED insn_referenced = abuf->written;
3902 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
3903 }
3904 {
3905 int referenced = 0;
3906 int UNUSED insn_referenced = abuf->written;
3907 INT in_Rd = -1;
3908 INT in_Rs = -1;
3909 INT out_Rd = -1;
3910 in_Rd = FLD (in_Rd);
3911 referenced |= 1 << 0;
3912 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3913 }
3914 return cycles;
3915#undef FLD
3916}
3917
3918static int
3919model_crisv32_andcdr (SIM_CPU *current_cpu, void *sem_arg)
3920{
3921#define FLD(f) abuf->fields.sfmt_addcdr.f
3922 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3923 const IDESC * UNUSED idesc = abuf->idesc;
3924 int cycles = 0;
3925 {
3926 int referenced = 0;
3927 int UNUSED insn_referenced = abuf->written;
3928 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
3929 }
3930 {
3931 int referenced = 0;
3932 int UNUSED insn_referenced = abuf->written;
3933 INT in_Rd = -1;
3934 INT in_Rs = -1;
3935 INT out_Rd = -1;
3936 in_Rd = FLD (in_Rd);
3937 referenced |= 1 << 0;
3938 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3939 }
3940 return cycles;
3941#undef FLD
3942}
3943
3944static int
3945model_crisv32_andq (SIM_CPU *current_cpu, void *sem_arg)
3946{
3947#define FLD(f) abuf->fields.sfmt_andq.f
3948 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3949 const IDESC * UNUSED idesc = abuf->idesc;
3950 int cycles = 0;
3951 {
3952 int referenced = 0;
3953 int UNUSED insn_referenced = abuf->written;
3954 INT in_Rd = -1;
3955 INT in_Rs = -1;
3956 INT out_Rd = -1;
3957 in_Rd = FLD (in_Rd);
3958 referenced |= 1 << 0;
3959 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3960 }
3961 return cycles;
3962#undef FLD
3963}
3964
3965static int
3966model_crisv32_orr_b_r (SIM_CPU *current_cpu, void *sem_arg)
3967{
3968#define FLD(f) abuf->fields.sfmt_addc_m.f
3969 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3970 const IDESC * UNUSED idesc = abuf->idesc;
3971 int cycles = 0;
3972 {
3973 int referenced = 0;
3974 int UNUSED insn_referenced = abuf->written;
3975 INT in_Rd = -1;
3976 INT in_Rs = -1;
3977 INT out_Rd = -1;
3978 in_Rd = FLD (in_Rd);
3979 in_Rs = FLD (in_Rs);
3980 referenced |= 1 << 0;
3981 referenced |= 1 << 1;
3982 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3983 }
3984 return cycles;
3985#undef FLD
3986}
3987
3988static int
3989model_crisv32_orr_w_r (SIM_CPU *current_cpu, void *sem_arg)
3990{
3991#define FLD(f) abuf->fields.sfmt_addc_m.f
3992 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3993 const IDESC * UNUSED idesc = abuf->idesc;
3994 int cycles = 0;
3995 {
3996 int referenced = 0;
3997 int UNUSED insn_referenced = abuf->written;
3998 INT in_Rd = -1;
3999 INT in_Rs = -1;
4000 INT out_Rd = -1;
4001 in_Rd = FLD (in_Rd);
4002 in_Rs = FLD (in_Rs);
4003 referenced |= 1 << 0;
4004 referenced |= 1 << 1;
4005 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4006 }
4007 return cycles;
4008#undef FLD
4009}
4010
4011static int
4012model_crisv32_orr_d_r (SIM_CPU *current_cpu, void *sem_arg)
4013{
4014#define FLD(f) abuf->fields.sfmt_addc_m.f
4015 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4016 const IDESC * UNUSED idesc = abuf->idesc;
4017 int cycles = 0;
4018 {
4019 int referenced = 0;
4020 int UNUSED insn_referenced = abuf->written;
4021 INT in_Rd = -1;
4022 INT in_Rs = -1;
4023 INT out_Rd = -1;
4024 in_Rd = FLD (in_Rd);
4025 in_Rs = FLD (in_Rs);
4026 referenced |= 1 << 0;
4027 referenced |= 1 << 1;
4028 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4029 }
4030 return cycles;
4031#undef FLD
4032}
4033
4034static int
4035model_crisv32_or_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
4036{
4037#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
4038 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4039 const IDESC * UNUSED idesc = abuf->idesc;
4040 int cycles = 0;
4041 {
4042 int referenced = 0;
4043 int UNUSED insn_referenced = abuf->written;
4044 INT in_Rs = -1;
4045 in_Rs = FLD (in_Rs);
4046 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
4047 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
4048 }
4049 {
4050 int referenced = 0;
4051 int UNUSED insn_referenced = abuf->written;
4052 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
4053 }
4054 {
4055 int referenced = 0;
4056 int UNUSED insn_referenced = abuf->written;
4057 INT in_Rd = -1;
4058 INT in_Rs = -1;
4059 INT out_Rd = -1;
4060 in_Rd = FLD (in_Rd);
4061 in_Rs = FLD (in_Rs);
4062 referenced |= 1 << 0;
4063 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
4064 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
4065 }
4066 return cycles;
4067#undef FLD
4068}
4069
4070static int
4071model_crisv32_or_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
4072{
4073#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
4074 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4075 const IDESC * UNUSED idesc = abuf->idesc;
4076 int cycles = 0;
4077 {
4078 int referenced = 0;
4079 int UNUSED insn_referenced = abuf->written;
4080 INT in_Rs = -1;
4081 in_Rs = FLD (in_Rs);
4082 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
4083 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
4084 }
4085 {
4086 int referenced = 0;
4087 int UNUSED insn_referenced = abuf->written;
4088 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
4089 }
4090 {
4091 int referenced = 0;
4092 int UNUSED insn_referenced = abuf->written;
4093 INT in_Rd = -1;
4094 INT in_Rs = -1;
4095 INT out_Rd = -1;
4096 in_Rd = FLD (in_Rd);
4097 in_Rs = FLD (in_Rs);
4098 referenced |= 1 << 0;
4099 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
4100 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
4101 }
4102 return cycles;
4103#undef FLD
4104}
4105
4106static int
4107model_crisv32_or_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
4108{
4109#define FLD(f) abuf->fields.sfmt_add_m_b_m.f
4110 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4111 const IDESC * UNUSED idesc = abuf->idesc;
4112 int cycles = 0;
4113 {
4114 int referenced = 0;
4115 int UNUSED insn_referenced = abuf->written;
4116 INT in_Rs = -1;
4117 in_Rs = FLD (in_Rs);
4118 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
4119 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
4120 }
4121 {
4122 int referenced = 0;
4123 int UNUSED insn_referenced = abuf->written;
4124 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
4125 }
4126 {
4127 int referenced = 0;
4128 int UNUSED insn_referenced = abuf->written;
4129 INT in_Rd = -1;
4130 INT in_Rs = -1;
4131 INT out_Rd = -1;
4132 in_Rd = FLD (in_Rd);
4133 in_Rs = FLD (in_Rs);
4134 referenced |= 1 << 0;
4135 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
4136 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
4137 }
4138 return cycles;
4139#undef FLD
4140}
4141
4142static int
4143model_crisv32_orcbr (SIM_CPU *current_cpu, void *sem_arg)
4144{
4145#define FLD(f) abuf->fields.sfmt_addcbr.f
4146 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4147 const IDESC * UNUSED idesc = abuf->idesc;
4148 int cycles = 0;
4149 {
4150 int referenced = 0;
4151 int UNUSED insn_referenced = abuf->written;
4152 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
4153 }
4154 {
4155 int referenced = 0;
4156 int UNUSED insn_referenced = abuf->written;
4157 INT in_Rd = -1;
4158 INT in_Rs = -1;
4159 INT out_Rd = -1;
4160 in_Rd = FLD (in_Rd);
4161 referenced |= 1 << 0;
4162 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
4163 }
4164 return cycles;
4165#undef FLD
4166}
4167
4168static int
4169model_crisv32_orcwr (SIM_CPU *current_cpu, void *sem_arg)
4170{
4171#define FLD(f) abuf->fields.sfmt_addcwr.f
4172 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4173 const IDESC * UNUSED idesc = abuf->idesc;
4174 int cycles = 0;
4175 {
4176 int referenced = 0;
4177 int UNUSED insn_referenced = abuf->written;
4178 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
4179 }
4180 {
4181 int referenced = 0;
4182 int UNUSED insn_referenced = abuf->written;
4183 INT in_Rd = -1;
4184 INT in_Rs = -1;
4185 INT out_Rd = -1;
4186 in_Rd = FLD (in_Rd);
4187 referenced |= 1 << 0;
4188 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
4189 }
4190 return cycles;
4191#undef FLD
4192}
4193
4194static int
4195model_crisv32_orcdr (SIM_CPU *current_cpu, void *sem_arg)
4196{
4197#define FLD(f) abuf->fields.sfmt_addcdr.f
4198 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4199 const IDESC * UNUSED idesc = abuf->idesc;
4200 int cycles = 0;
4201 {
4202 int referenced = 0;
4203 int UNUSED insn_referenced = abuf->written;
4204 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
4205 }
4206 {
4207 int referenced = 0;
4208 int UNUSED insn_referenced = abuf->written;
4209 INT in_Rd = -1;
4210 INT in_Rs = -1;
4211 INT out_Rd = -1;
4212 in_Rd = FLD (in_Rd);
4213 referenced |= 1 << 0;
4214 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
4215 }
4216 return cycles;
4217#undef FLD
4218}
4219
4220static int
4221model_crisv32_orq (SIM_CPU *current_cpu, void *sem_arg)
4222{
4223#define FLD(f) abuf->fields.sfmt_andq.f
4224 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4225 const IDESC * UNUSED idesc = abuf->idesc;
4226 int cycles = 0;
4227 {
4228 int referenced = 0;
4229 int UNUSED insn_referenced = abuf->written;
4230 INT in_Rd = -1;
4231 INT in_Rs = -1;
4232 INT out_Rd = -1;
4233 in_Rd = FLD (in_Rd);
4234 referenced |= 1 << 0;
4235 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4236 }
4237 return cycles;
4238#undef FLD
4239}
4240
4241static int
4242model_crisv32_xor (SIM_CPU *current_cpu, void *sem_arg)
4243{
4244#define FLD(f) abuf->fields.sfmt_muls_b.f
4245 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4246 const IDESC * UNUSED idesc = abuf->idesc;
4247 int cycles = 0;
4248 {
4249 int referenced = 0;
4250 int UNUSED insn_referenced = abuf->written;
4251 INT in_Rd = -1;
4252 INT in_Rs = -1;
4253 INT out_Rd = -1;
4254 in_Rd = FLD (in_Rd);
4255 in_Rs = FLD (in_Rs);
4256 out_Rd = FLD (out_Rd);
4257 referenced |= 1 << 0;
4258 referenced |= 1 << 1;
4259 referenced |= 1 << 2;
4260 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4261 }
4262 return cycles;
4263#undef FLD
4264}
4265
4266static int
4267model_crisv32_swap (SIM_CPU *current_cpu, void *sem_arg)
4268{
4269#define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
4270 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4271 const IDESC * UNUSED idesc = abuf->idesc;
4272 int cycles = 0;
4273 {
4274 int referenced = 0;
4275 int UNUSED insn_referenced = abuf->written;
4276 INT in_Rd = -1;
4277 INT in_Rs = -1;
4278 INT out_Rd = -1;
4279 in_Rs = FLD (in_Rs);
4280 referenced |= 1 << 1;
4281 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4282 }
4283 return cycles;
4284#undef FLD
4285}
4286
4287static int
4288model_crisv32_asrr_b_r (SIM_CPU *current_cpu, void *sem_arg)
4289{
4290#define FLD(f) abuf->fields.sfmt_addc_m.f
4291 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4292 const IDESC * UNUSED idesc = abuf->idesc;
4293 int cycles = 0;
4294 {
4295 int referenced = 0;
4296 int UNUSED insn_referenced = abuf->written;
4297 INT in_Rd = -1;
4298 INT in_Rs = -1;
4299 INT out_Rd = -1;
4300 in_Rd = FLD (in_Rd);
4301 in_Rs = FLD (in_Rs);
4302 referenced |= 1 << 0;
4303 referenced |= 1 << 1;
4304 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4305 }
4306 return cycles;
4307#undef FLD
4308}
4309
4310static int
4311model_crisv32_asrr_w_r (SIM_CPU *current_cpu, void *sem_arg)
4312{
4313#define FLD(f) abuf->fields.sfmt_addc_m.f
4314 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4315 const IDESC * UNUSED idesc = abuf->idesc;
4316 int cycles = 0;
4317 {
4318 int referenced = 0;
4319 int UNUSED insn_referenced = abuf->written;
4320 INT in_Rd = -1;
4321 INT in_Rs = -1;
4322 INT out_Rd = -1;
4323 in_Rd = FLD (in_Rd);
4324 in_Rs = FLD (in_Rs);
4325 referenced |= 1 << 0;
4326 referenced |= 1 << 1;
4327 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4328 }
4329 return cycles;
4330#undef FLD
4331}
4332
4333static int
4334model_crisv32_asrr_d_r (SIM_CPU *current_cpu, void *sem_arg)
4335{
4336#define FLD(f) abuf->fields.sfmt_addc_m.f
4337 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4338 const IDESC * UNUSED idesc = abuf->idesc;
4339 int cycles = 0;
4340 {
4341 int referenced = 0;
4342 int UNUSED insn_referenced = abuf->written;
4343 INT in_Rd = -1;
4344 INT in_Rs = -1;
4345 INT out_Rd = -1;
4346 in_Rd = FLD (in_Rd);
4347 in_Rs = FLD (in_Rs);
4348 referenced |= 1 << 0;
4349 referenced |= 1 << 1;
4350 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4351 }
4352 return cycles;
4353#undef FLD
4354}
4355
4356static int
4357model_crisv32_asrq (SIM_CPU *current_cpu, void *sem_arg)
4358{
4359#define FLD(f) abuf->fields.sfmt_asrq.f
4360 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4361 const IDESC * UNUSED idesc = abuf->idesc;
4362 int cycles = 0;
4363 {
4364 int referenced = 0;
4365 int UNUSED insn_referenced = abuf->written;
4366 INT in_Rd = -1;
4367 INT in_Rs = -1;
4368 INT out_Rd = -1;
4369 in_Rd = FLD (in_Rd);
4370 out_Rd = FLD (out_Rd);
4371 referenced |= 1 << 0;
4372 referenced |= 1 << 2;
4373 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4374 }
4375 return cycles;
4376#undef FLD
4377}
4378
4379static int
4380model_crisv32_lsrr_b_r (SIM_CPU *current_cpu, void *sem_arg)
4381{
4382#define FLD(f) abuf->fields.sfmt_addc_m.f
4383 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4384 const IDESC * UNUSED idesc = abuf->idesc;
4385 int cycles = 0;
4386 {
4387 int referenced = 0;
4388 int UNUSED insn_referenced = abuf->written;
4389 INT in_Rd = -1;
4390 INT in_Rs = -1;
4391 INT out_Rd = -1;
4392 in_Rd = FLD (in_Rd);
4393 in_Rs = FLD (in_Rs);
4394 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
4395 referenced |= 1 << 1;
4396 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4397 }
4398 return cycles;
4399#undef FLD
4400}
4401
4402static int
4403model_crisv32_lsrr_w_r (SIM_CPU *current_cpu, void *sem_arg)
4404{
4405#define FLD(f) abuf->fields.sfmt_addc_m.f
4406 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4407 const IDESC * UNUSED idesc = abuf->idesc;
4408 int cycles = 0;
4409 {
4410 int referenced = 0;
4411 int UNUSED insn_referenced = abuf->written;
4412 INT in_Rd = -1;
4413 INT in_Rs = -1;
4414 INT out_Rd = -1;
4415 in_Rd = FLD (in_Rd);
4416 in_Rs = FLD (in_Rs);
4417 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
4418 referenced |= 1 << 1;
4419 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4420 }
4421 return cycles;
4422#undef FLD
4423}
4424
4425static int
4426model_crisv32_lsrr_d_r (SIM_CPU *current_cpu, void *sem_arg)
4427{
4428#define FLD(f) abuf->fields.sfmt_addc_m.f
4429 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4430 const IDESC * UNUSED idesc = abuf->idesc;
4431 int cycles = 0;
4432 {
4433 int referenced = 0;
4434 int UNUSED insn_referenced = abuf->written;
4435 INT in_Rd = -1;
4436 INT in_Rs = -1;
4437 INT out_Rd = -1;
4438 in_Rd = FLD (in_Rd);
4439 in_Rs = FLD (in_Rs);
4440 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
4441 referenced |= 1 << 1;
4442 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4443 }
4444 return cycles;
4445#undef FLD
4446}
4447
4448static int
4449model_crisv32_lsrq (SIM_CPU *current_cpu, void *sem_arg)
4450{
4451#define FLD(f) abuf->fields.sfmt_asrq.f
4452 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4453 const IDESC * UNUSED idesc = abuf->idesc;
4454 int cycles = 0;
4455 {
4456 int referenced = 0;
4457 int UNUSED insn_referenced = abuf->written;
4458 INT in_Rd = -1;
4459 INT in_Rs = -1;
4460 INT out_Rd = -1;
4461 in_Rd = FLD (in_Rd);
4462 out_Rd = FLD (out_Rd);
4463 referenced |= 1 << 0;
4464 referenced |= 1 << 2;
4465 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4466 }
4467 return cycles;
4468#undef FLD
4469}
4470
4471static int
4472model_crisv32_lslr_b_r (SIM_CPU *current_cpu, void *sem_arg)
4473{
4474#define FLD(f) abuf->fields.sfmt_addc_m.f
4475 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4476 const IDESC * UNUSED idesc = abuf->idesc;
4477 int cycles = 0;
4478 {
4479 int referenced = 0;
4480 int UNUSED insn_referenced = abuf->written;
4481 INT in_Rd = -1;
4482 INT in_Rs = -1;
4483 INT out_Rd = -1;
4484 in_Rd = FLD (in_Rd);
4485 in_Rs = FLD (in_Rs);
4486 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
4487 referenced |= 1 << 1;
4488 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4489 }
4490 return cycles;
4491#undef FLD
4492}
4493
4494static int
4495model_crisv32_lslr_w_r (SIM_CPU *current_cpu, void *sem_arg)
4496{
4497#define FLD(f) abuf->fields.sfmt_addc_m.f
4498 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4499 const IDESC * UNUSED idesc = abuf->idesc;
4500 int cycles = 0;
4501 {
4502 int referenced = 0;
4503 int UNUSED insn_referenced = abuf->written;
4504 INT in_Rd = -1;
4505 INT in_Rs = -1;
4506 INT out_Rd = -1;
4507 in_Rd = FLD (in_Rd);
4508 in_Rs = FLD (in_Rs);
4509 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
4510 referenced |= 1 << 1;
4511 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4512 }
4513 return cycles;
4514#undef FLD
4515}
4516
4517static int
4518model_crisv32_lslr_d_r (SIM_CPU *current_cpu, void *sem_arg)
4519{
4520#define FLD(f) abuf->fields.sfmt_addc_m.f
4521 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4522 const IDESC * UNUSED idesc = abuf->idesc;
4523 int cycles = 0;
4524 {
4525 int referenced = 0;
4526 int UNUSED insn_referenced = abuf->written;
4527 INT in_Rd = -1;
4528 INT in_Rs = -1;
4529 INT out_Rd = -1;
4530 in_Rd = FLD (in_Rd);
4531 in_Rs = FLD (in_Rs);
4532 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
4533 referenced |= 1 << 1;
4534 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4535 }
4536 return cycles;
4537#undef FLD
4538}
4539
4540static int
4541model_crisv32_lslq (SIM_CPU *current_cpu, void *sem_arg)
4542{
4543#define FLD(f) abuf->fields.sfmt_asrq.f
4544 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4545 const IDESC * UNUSED idesc = abuf->idesc;
4546 int cycles = 0;
4547 {
4548 int referenced = 0;
4549 int UNUSED insn_referenced = abuf->written;
4550 INT in_Rd = -1;
4551 INT in_Rs = -1;
4552 INT out_Rd = -1;
4553 in_Rd = FLD (in_Rd);
4554 out_Rd = FLD (out_Rd);
4555 referenced |= 1 << 0;
4556 referenced |= 1 << 2;
4557 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4558 }
4559 return cycles;
4560#undef FLD
4561}
4562
4563static int
4564model_crisv32_btst (SIM_CPU *current_cpu, void *sem_arg)
4565{
4566#define FLD(f) abuf->fields.sfmt_muls_b.f
4567 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4568 const IDESC * UNUSED idesc = abuf->idesc;
4569 int cycles = 0;
4570 {
4571 int referenced = 0;
4572 int UNUSED insn_referenced = abuf->written;
4573 INT in_Rd = -1;
4574 INT in_Rs = -1;
4575 INT out_Rd = -1;
4576 in_Rd = FLD (in_Rd);
4577 in_Rs = FLD (in_Rs);
4578 referenced |= 1 << 0;
4579 referenced |= 1 << 1;
4580 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4581 }
4582 return cycles;
4583#undef FLD
4584}
4585
4586static int
4587model_crisv32_btstq (SIM_CPU *current_cpu, void *sem_arg)
4588{
4589#define FLD(f) abuf->fields.sfmt_asrq.f
4590 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4591 const IDESC * UNUSED idesc = abuf->idesc;
4592 int cycles = 0;
4593 {
4594 int referenced = 0;
4595 int UNUSED insn_referenced = abuf->written;
4596 INT in_Rd = -1;
4597 INT in_Rs = -1;
4598 INT out_Rd = -1;
4599 in_Rd = FLD (in_Rd);
4600 referenced |= 1 << 0;
4601 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4602 }
4603 return cycles;
4604#undef FLD
4605}
4606
4607static int
4608model_crisv32_setf (SIM_CPU *current_cpu, void *sem_arg)
4609{
4610#define FLD(f) abuf->fields.sfmt_setf.f
4611 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4612 const IDESC * UNUSED idesc = abuf->idesc;
4613 int cycles = 0;
4614 {
4615 int referenced = 0;
4616 int UNUSED insn_referenced = abuf->written;
4617 INT in_Rd = -1;
4618 INT in_Rs = -1;
4619 INT out_Rd = -1;
4620 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4621 }
4622 return cycles;
4623#undef FLD
4624}
4625
4626static int
4627model_crisv32_clearf (SIM_CPU *current_cpu, void *sem_arg)
4628{
4629#define FLD(f) abuf->fields.sfmt_setf.f
4630 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4631 const IDESC * UNUSED idesc = abuf->idesc;
4632 int cycles = 0;
4633 {
4634 int referenced = 0;
4635 int UNUSED insn_referenced = abuf->written;
4636 INT in_Rd = -1;
4637 INT in_Rs = -1;
4638 INT out_Rd = -1;
4639 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4640 }
4641 return cycles;
4642#undef FLD
4643}
4644
4645static int
4646model_crisv32_rfe (SIM_CPU *current_cpu, void *sem_arg)
4647{
4648#define FLD(f) abuf->fields.sfmt_rfe.f
4649 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4650 const IDESC * UNUSED idesc = abuf->idesc;
4651 int cycles = 0;
4652 {
4653 int referenced = 0;
4654 int UNUSED insn_referenced = abuf->written;
4655 INT in_Rd = -1;
4656 INT in_Rs = -1;
4657 INT out_Rd = -1;
4658 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4659 }
4660 return cycles;
4661#undef FLD
4662}
4663
4664static int
4665model_crisv32_sfe (SIM_CPU *current_cpu, void *sem_arg)
4666{
4667#define FLD(f) abuf->fields.sfmt_rfe.f
4668 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4669 const IDESC * UNUSED idesc = abuf->idesc;
4670 int cycles = 0;
4671 {
4672 int referenced = 0;
4673 int UNUSED insn_referenced = abuf->written;
4674 INT in_Rd = -1;
4675 INT in_Rs = -1;
4676 INT out_Rd = -1;
4677 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4678 }
4679 return cycles;
4680#undef FLD
4681}
4682
4683static int
4684model_crisv32_rfg (SIM_CPU *current_cpu, void *sem_arg)
4685{
4686#define FLD(f) abuf->fields.sfmt_empty.f
4687 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4688 const IDESC * UNUSED idesc = abuf->idesc;
4689 int cycles = 0;
4690 {
4691 int referenced = 0;
4692 int UNUSED insn_referenced = abuf->written;
4693 INT in_Rd = -1;
4694 INT in_Rs = -1;
4695 INT out_Rd = -1;
4696 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4697 }
4698 return cycles;
4699#undef FLD
4700}
4701
4702static int
4703model_crisv32_rfn (SIM_CPU *current_cpu, void *sem_arg)
4704{
4705#define FLD(f) abuf->fields.sfmt_rfe.f
4706 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4707 const IDESC * UNUSED idesc = abuf->idesc;
4708 int cycles = 0;
4709 {
4710 int referenced = 0;
4711 int UNUSED insn_referenced = abuf->written;
4712 INT in_Rd = -1;
4713 INT in_Rs = -1;
4714 INT out_Rd = -1;
4715 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4716 }
4717 return cycles;
4718#undef FLD
4719}
4720
4721static int
4722model_crisv32_halt (SIM_CPU *current_cpu, void *sem_arg)
4723{
4724#define FLD(f) abuf->fields.sfmt_empty.f
4725 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4726 const IDESC * UNUSED idesc = abuf->idesc;
4727 int cycles = 0;
4728 {
4729 int referenced = 0;
4730 int UNUSED insn_referenced = abuf->written;
4731 INT in_Rd = -1;
4732 INT in_Rs = -1;
4733 INT out_Rd = -1;
4734 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4735 }
4736 return cycles;
4737#undef FLD
4738}
4739
4740static int
4741model_crisv32_bcc_b (SIM_CPU *current_cpu, void *sem_arg)
4742{
4743#define FLD(f) abuf->fields.sfmt_bcc_b.f
4744 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4745 const IDESC * UNUSED idesc = abuf->idesc;
4746 int cycles = 0;
4747 {
4748 int referenced = 0;
4749 int UNUSED insn_referenced = abuf->written;
4750 cycles += crisv32f_model_crisv32_u_branch (current_cpu, idesc, 0, referenced);
4751 }
4752 {
4753 int referenced = 0;
4754 int UNUSED insn_referenced = abuf->written;
4755 INT in_Rd = -1;
4756 INT in_Rs = -1;
4757 INT out_Rd = -1;
4758 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
4759 }
4760 return cycles;
4761#undef FLD
4762}
4763
4764static int
4765model_crisv32_ba_b (SIM_CPU *current_cpu, void *sem_arg)
4766{
4767#define FLD(f) abuf->fields.sfmt_bcc_b.f
4768 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4769 const IDESC * UNUSED idesc = abuf->idesc;
4770 int cycles = 0;
4771 {
4772 int referenced = 0;
4773 int UNUSED insn_referenced = abuf->written;
4774 INT out_Pd = -1;
4775 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 0, referenced, out_Pd);
4776 }
4777 {
4778 int referenced = 0;
4779 int UNUSED insn_referenced = abuf->written;
4780 INT in_Rd = -1;
4781 INT in_Rs = -1;
4782 INT out_Rd = -1;
4783 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
4784 }
4785 return cycles;
4786#undef FLD
4787}
4788
4789static int
4790model_crisv32_bcc_w (SIM_CPU *current_cpu, void *sem_arg)
4791{
4792#define FLD(f) abuf->fields.sfmt_bcc_w.f
4793 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4794 const IDESC * UNUSED idesc = abuf->idesc;
4795 int cycles = 0;
4796 {
4797 int referenced = 0;
4798 int UNUSED insn_referenced = abuf->written;
4799 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
4800 }
4801 {
4802 int referenced = 0;
4803 int UNUSED insn_referenced = abuf->written;
4804 cycles += crisv32f_model_crisv32_u_branch (current_cpu, idesc, 1, referenced);
4805 }
4806 {
4807 int referenced = 0;
4808 int UNUSED insn_referenced = abuf->written;
4809 INT in_Rd = -1;
4810 INT in_Rs = -1;
4811 INT out_Rd = -1;
4812 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
4813 }
4814 return cycles;
4815#undef FLD
4816}
4817
4818static int
4819model_crisv32_ba_w (SIM_CPU *current_cpu, void *sem_arg)
4820{
4821#define FLD(f) abuf->fields.sfmt_bcc_w.f
4822 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4823 const IDESC * UNUSED idesc = abuf->idesc;
4824 int cycles = 0;
4825 {
4826 int referenced = 0;
4827 int UNUSED insn_referenced = abuf->written;
4828 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
4829 }
4830 {
4831 int referenced = 0;
4832 int UNUSED insn_referenced = abuf->written;
4833 INT out_Pd = -1;
4834 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 1, referenced, out_Pd);
4835 }
4836 {
4837 int referenced = 0;
4838 int UNUSED insn_referenced = abuf->written;
4839 INT in_Rd = -1;
4840 INT in_Rs = -1;
4841 INT out_Rd = -1;
4842 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
4843 }
4844 return cycles;
4845#undef FLD
4846}
4847
4848static int
4849model_crisv32_jas_r (SIM_CPU *current_cpu, void *sem_arg)
4850{
4851#define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
4852 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4853 const IDESC * UNUSED idesc = abuf->idesc;
4854 int cycles = 0;
4855 {
4856 int referenced = 0;
4857 int UNUSED insn_referenced = abuf->written;
4858 INT in_Rs = -1;
4859 in_Rs = FLD (in_Rs);
4860 referenced |= 1 << 0;
4861 cycles += crisv32f_model_crisv32_u_jump_r (current_cpu, idesc, 0, referenced, in_Rs);
4862 }
4863 {
4864 int referenced = 0;
4865 int UNUSED insn_referenced = abuf->written;
4866 INT out_Pd = -1;
4867 out_Pd = FLD (out_Pd);
4868 referenced |= 1 << 0;
4869 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 1, referenced, out_Pd);
4870 }
4871 {
4872 int referenced = 0;
4873 int UNUSED insn_referenced = abuf->written;
4874 INT in_Rd = -1;
4875 INT in_Rs = -1;
4876 INT out_Rd = -1;
4877 in_Rs = FLD (in_Rs);
4878 referenced |= 1 << 1;
4879 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
4880 }
4881 return cycles;
4882#undef FLD
4883}
4884
4885static int
4886model_crisv32_jas_c (SIM_CPU *current_cpu, void *sem_arg)
4887{
4888#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
4889 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4890 const IDESC * UNUSED idesc = abuf->idesc;
4891 int cycles = 0;
4892 {
4893 int referenced = 0;
4894 int UNUSED insn_referenced = abuf->written;
4895 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
4896 }
4897 {
4898 int referenced = 0;
4899 int UNUSED insn_referenced = abuf->written;
4900 INT out_Pd = -1;
4901 out_Pd = FLD (out_Pd);
4902 referenced |= 1 << 0;
4903 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 1, referenced, out_Pd);
4904 }
4905 {
4906 int referenced = 0;
4907 int UNUSED insn_referenced = abuf->written;
4908 INT in_Rd = -1;
4909 INT in_Rs = -1;
4910 INT out_Rd = -1;
4911 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
4912 }
4913 return cycles;
4914#undef FLD
4915}
4916
4917static int
4918model_crisv32_jump_p (SIM_CPU *current_cpu, void *sem_arg)
4919{
4920#define FLD(f) abuf->fields.sfmt_mcp.f
4921 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4922 const IDESC * UNUSED idesc = abuf->idesc;
4923 int cycles = 0;
4924 {
4925 int referenced = 0;
4926 int UNUSED insn_referenced = abuf->written;
4927 INT in_Ps = -1;
4928 in_Ps = FLD (in_Ps);
4929 referenced |= 1 << 0;
4930 cycles += crisv32f_model_crisv32_u_jump_sr (current_cpu, idesc, 0, referenced, in_Ps);
4931 }
4932 {
4933 int referenced = 0;
4934 int UNUSED insn_referenced = abuf->written;
4935 INT in_Rd = -1;
4936 INT in_Rs = -1;
4937 INT out_Rd = -1;
4938 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
4939 }
4940 return cycles;
4941#undef FLD
4942}
4943
4944static int
4945model_crisv32_bas_c (SIM_CPU *current_cpu, void *sem_arg)
4946{
4947#define FLD(f) abuf->fields.sfmt_bas_c.f
4948 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4949 const IDESC * UNUSED idesc = abuf->idesc;
4950 int cycles = 0;
4951 {
4952 int referenced = 0;
4953 int UNUSED insn_referenced = abuf->written;
4954 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
4955 }
4956 {
4957 int referenced = 0;
4958 int UNUSED insn_referenced = abuf->written;
4959 INT out_Pd = -1;
4960 out_Pd = FLD (out_Pd);
4961 referenced |= 1 << 0;
4962 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 1, referenced, out_Pd);
4963 }
4964 {
4965 int referenced = 0;
4966 int UNUSED insn_referenced = abuf->written;
4967 INT in_Rd = -1;
4968 INT in_Rs = -1;
4969 INT out_Rd = -1;
4970 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
4971 }
4972 return cycles;
4973#undef FLD
4974}
4975
4976static int
4977model_crisv32_jasc_r (SIM_CPU *current_cpu, void *sem_arg)
4978{
4979#define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
4980 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4981 const IDESC * UNUSED idesc = abuf->idesc;
4982 int cycles = 0;
4983 {
4984 int referenced = 0;
4985 int UNUSED insn_referenced = abuf->written;
4986 INT in_Rs = -1;
4987 in_Rs = FLD (in_Rs);
4988 referenced |= 1 << 0;
4989 cycles += crisv32f_model_crisv32_u_jump_r (current_cpu, idesc, 0, referenced, in_Rs);
4990 }
4991 {
4992 int referenced = 0;
4993 int UNUSED insn_referenced = abuf->written;
4994 cycles += crisv32f_model_crisv32_u_skip4 (current_cpu, idesc, 1, referenced);
4995 }
4996 {
4997 int referenced = 0;
4998 int UNUSED insn_referenced = abuf->written;
4999 INT out_Pd = -1;
5000 out_Pd = FLD (out_Pd);
5001 referenced |= 1 << 0;
5002 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 2, referenced, out_Pd);
5003 }
5004 {
5005 int referenced = 0;
5006 int UNUSED insn_referenced = abuf->written;
5007 INT in_Rd = -1;
5008 INT in_Rs = -1;
5009 INT out_Rd = -1;
5010 in_Rs = FLD (in_Rs);
5011 referenced |= 1 << 1;
5012 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 3, referenced, in_Rd, in_Rs, out_Rd);
5013 }
5014 return cycles;
5015#undef FLD
5016}
5017
5018static int
5019model_crisv32_jasc_c (SIM_CPU *current_cpu, void *sem_arg)
5020{
5021#define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
5022 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5023 const IDESC * UNUSED idesc = abuf->idesc;
5024 int cycles = 0;
5025 {
5026 int referenced = 0;
5027 int UNUSED insn_referenced = abuf->written;
5028 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
5029 }
5030 {
5031 int referenced = 0;
5032 int UNUSED insn_referenced = abuf->written;
5033 cycles += crisv32f_model_crisv32_u_skip4 (current_cpu, idesc, 1, referenced);
5034 }
5035 {
5036 int referenced = 0;
5037 int UNUSED insn_referenced = abuf->written;
5038 INT out_Pd = -1;
5039 out_Pd = FLD (out_Pd);
5040 referenced |= 1 << 0;
5041 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 2, referenced, out_Pd);
5042 }
5043 {
5044 int referenced = 0;
5045 int UNUSED insn_referenced = abuf->written;
5046 INT in_Rd = -1;
5047 INT in_Rs = -1;
5048 INT out_Rd = -1;
5049 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 3, referenced, in_Rd, in_Rs, out_Rd);
5050 }
5051 return cycles;
5052#undef FLD
5053}
5054
5055static int
5056model_crisv32_basc_c (SIM_CPU *current_cpu, void *sem_arg)
5057{
5058#define FLD(f) abuf->fields.sfmt_bas_c.f
5059 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5060 const IDESC * UNUSED idesc = abuf->idesc;
5061 int cycles = 0;
5062 {
5063 int referenced = 0;
5064 int UNUSED insn_referenced = abuf->written;
5065 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
5066 }
5067 {
5068 int referenced = 0;
5069 int UNUSED insn_referenced = abuf->written;
5070 cycles += crisv32f_model_crisv32_u_skip4 (current_cpu, idesc, 1, referenced);
5071 }
5072 {
5073 int referenced = 0;
5074 int UNUSED insn_referenced = abuf->written;
5075 INT out_Pd = -1;
5076 out_Pd = FLD (out_Pd);
5077 referenced |= 1 << 0;
5078 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 2, referenced, out_Pd);
5079 }
5080 {
5081 int referenced = 0;
5082 int UNUSED insn_referenced = abuf->written;
5083 INT in_Rd = -1;
5084 INT in_Rs = -1;
5085 INT out_Rd = -1;
5086 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 3, referenced, in_Rd, in_Rs, out_Rd);
5087 }
5088 return cycles;
5089#undef FLD
5090}
5091
5092static int
5093model_crisv32_break (SIM_CPU *current_cpu, void *sem_arg)
5094{
5095#define FLD(f) abuf->fields.sfmt_break.f
5096 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5097 const IDESC * UNUSED idesc = abuf->idesc;
5098 int cycles = 0;
5099 {
5100 int referenced = 0;
5101 int UNUSED insn_referenced = abuf->written;
5102 INT in_Rd = -1;
5103 INT in_Rs = -1;
5104 INT out_Rd = -1;
5105 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5106 }
5107 return cycles;
5108#undef FLD
5109}
5110
5111static int
5112model_crisv32_bound_r_b_r (SIM_CPU *current_cpu, void *sem_arg)
5113{
5114#define FLD(f) abuf->fields.sfmt_muls_b.f
5115 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5116 const IDESC * UNUSED idesc = abuf->idesc;
5117 int cycles = 0;
5118 {
5119 int referenced = 0;
5120 int UNUSED insn_referenced = abuf->written;
5121 INT in_Rd = -1;
5122 INT in_Rs = -1;
5123 INT out_Rd = -1;
5124 in_Rd = FLD (in_Rd);
5125 in_Rs = FLD (in_Rs);
5126 out_Rd = FLD (out_Rd);
5127 referenced |= 1 << 0;
5128 referenced |= 1 << 1;
5129 referenced |= 1 << 2;
5130 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5131 }
5132 return cycles;
5133#undef FLD
5134}
5135
5136static int
5137model_crisv32_bound_r_w_r (SIM_CPU *current_cpu, void *sem_arg)
5138{
5139#define FLD(f) abuf->fields.sfmt_muls_b.f
5140 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5141 const IDESC * UNUSED idesc = abuf->idesc;
5142 int cycles = 0;
5143 {
5144 int referenced = 0;
5145 int UNUSED insn_referenced = abuf->written;
5146 INT in_Rd = -1;
5147 INT in_Rs = -1;
5148 INT out_Rd = -1;
5149 in_Rd = FLD (in_Rd);
5150 in_Rs = FLD (in_Rs);
5151 out_Rd = FLD (out_Rd);
5152 referenced |= 1 << 0;
5153 referenced |= 1 << 1;
5154 referenced |= 1 << 2;
5155 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5156 }
5157 return cycles;
5158#undef FLD
5159}
5160
5161static int
5162model_crisv32_bound_r_d_r (SIM_CPU *current_cpu, void *sem_arg)
5163{
5164#define FLD(f) abuf->fields.sfmt_muls_b.f
5165 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5166 const IDESC * UNUSED idesc = abuf->idesc;
5167 int cycles = 0;
5168 {
5169 int referenced = 0;
5170 int UNUSED insn_referenced = abuf->written;
5171 INT in_Rd = -1;
5172 INT in_Rs = -1;
5173 INT out_Rd = -1;
5174 in_Rd = FLD (in_Rd);
5175 in_Rs = FLD (in_Rs);
5176 out_Rd = FLD (out_Rd);
5177 referenced |= 1 << 0;
5178 referenced |= 1 << 1;
5179 referenced |= 1 << 2;
5180 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5181 }
5182 return cycles;
5183#undef FLD
5184}
5185
5186static int
5187model_crisv32_bound_cb (SIM_CPU *current_cpu, void *sem_arg)
5188{
5189#define FLD(f) abuf->fields.sfmt_bound_cb.f
5190 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5191 const IDESC * UNUSED idesc = abuf->idesc;
5192 int cycles = 0;
5193 {
5194 int referenced = 0;
5195 int UNUSED insn_referenced = abuf->written;
5196 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
5197 }
5198 {
5199 int referenced = 0;
5200 int UNUSED insn_referenced = abuf->written;
5201 INT in_Rd = -1;
5202 INT in_Rs = -1;
5203 INT out_Rd = -1;
5204 in_Rd = FLD (in_Rd);
5205 out_Rd = FLD (out_Rd);
5206 referenced |= 1 << 0;
5207 referenced |= 1 << 2;
5208 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
5209 }
5210 return cycles;
5211#undef FLD
5212}
5213
5214static int
5215model_crisv32_bound_cw (SIM_CPU *current_cpu, void *sem_arg)
5216{
5217#define FLD(f) abuf->fields.sfmt_bound_cw.f
5218 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5219 const IDESC * UNUSED idesc = abuf->idesc;
5220 int cycles = 0;
5221 {
5222 int referenced = 0;
5223 int UNUSED insn_referenced = abuf->written;
5224 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
5225 }
5226 {
5227 int referenced = 0;
5228 int UNUSED insn_referenced = abuf->written;
5229 INT in_Rd = -1;
5230 INT in_Rs = -1;
5231 INT out_Rd = -1;
5232 in_Rd = FLD (in_Rd);
5233 out_Rd = FLD (out_Rd);
5234 referenced |= 1 << 0;
5235 referenced |= 1 << 2;
5236 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
5237 }
5238 return cycles;
5239#undef FLD
5240}
5241
5242static int
5243model_crisv32_bound_cd (SIM_CPU *current_cpu, void *sem_arg)
5244{
5245#define FLD(f) abuf->fields.sfmt_bound_cd.f
5246 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5247 const IDESC * UNUSED idesc = abuf->idesc;
5248 int cycles = 0;
5249 {
5250 int referenced = 0;
5251 int UNUSED insn_referenced = abuf->written;
5252 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
5253 }
5254 {
5255 int referenced = 0;
5256 int UNUSED insn_referenced = abuf->written;
5257 INT in_Rd = -1;
5258 INT in_Rs = -1;
5259 INT out_Rd = -1;
5260 in_Rd = FLD (in_Rd);
5261 out_Rd = FLD (out_Rd);
5262 referenced |= 1 << 0;
5263 referenced |= 1 << 2;
5264 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
5265 }
5266 return cycles;
5267#undef FLD
5268}
5269
5270static int
5271model_crisv32_scc (SIM_CPU *current_cpu, void *sem_arg)
5272{
5273#define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
5274 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5275 const IDESC * UNUSED idesc = abuf->idesc;
5276 int cycles = 0;
5277 {
5278 int referenced = 0;
5279 int UNUSED insn_referenced = abuf->written;
5280 INT in_Rd = -1;
5281 INT in_Rs = -1;
5282 INT out_Rd = -1;
5283 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5284 }
5285 return cycles;
5286#undef FLD
5287}
5288
5289static int
5290model_crisv32_lz (SIM_CPU *current_cpu, void *sem_arg)
5291{
5292#define FLD(f) abuf->fields.sfmt_muls_b.f
5293 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5294 const IDESC * UNUSED idesc = abuf->idesc;
5295 int cycles = 0;
5296 {
5297 int referenced = 0;
5298 int UNUSED insn_referenced = abuf->written;
5299 INT in_Rd = -1;
5300 INT in_Rs = -1;
5301 INT out_Rd = -1;
5302 in_Rs = FLD (in_Rs);
5303 out_Rd = FLD (out_Rd);
5304 referenced |= 1 << 1;
5305 referenced |= 1 << 2;
5306 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5307 }
5308 return cycles;
5309#undef FLD
5310}
5311
5312static int
5313model_crisv32_addoq (SIM_CPU *current_cpu, void *sem_arg)
5314{
5315#define FLD(f) abuf->fields.sfmt_addoq.f
5316 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5317 const IDESC * UNUSED idesc = abuf->idesc;
5318 int cycles = 0;
5319 {
5320 int referenced = 0;
5321 int UNUSED insn_referenced = abuf->written;
5322 INT in_Rd = -1;
5323 INT in_Rs = -1;
5324 INT out_Rd = -1;
5325 in_Rd = FLD (in_Rd);
5326 referenced |= 1 << 0;
5327 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5328 }
5329 return cycles;
5330#undef FLD
5331}
5332
5333static int
5334model_crisv32_addo_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
5335{
5336#define FLD(f) abuf->fields.sfmt_addc_m.f
5337 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5338 const IDESC * UNUSED idesc = abuf->idesc;
5339 int cycles = 0;
5340 {
5341 int referenced = 0;
5342 int UNUSED insn_referenced = abuf->written;
5343 INT in_Rs = -1;
5344 in_Rs = FLD (in_Rs);
5345 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
5346 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
5347 }
5348 {
5349 int referenced = 0;
5350 int UNUSED insn_referenced = abuf->written;
5351 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
5352 }
5353 {
5354 int referenced = 0;
5355 int UNUSED insn_referenced = abuf->written;
5356 INT in_Rd = -1;
5357 INT in_Rs = -1;
5358 INT out_Rd = -1;
5359 in_Rd = FLD (in_Rd);
5360 in_Rs = FLD (in_Rs);
5361 referenced |= 1 << 0;
5362 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
5363 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
5364 }
5365 return cycles;
5366#undef FLD
5367}
5368
5369static int
5370model_crisv32_addo_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
5371{
5372#define FLD(f) abuf->fields.sfmt_addc_m.f
5373 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5374 const IDESC * UNUSED idesc = abuf->idesc;
5375 int cycles = 0;
5376 {
5377 int referenced = 0;
5378 int UNUSED insn_referenced = abuf->written;
5379 INT in_Rs = -1;
5380 in_Rs = FLD (in_Rs);
5381 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
5382 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
5383 }
5384 {
5385 int referenced = 0;
5386 int UNUSED insn_referenced = abuf->written;
5387 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
5388 }
5389 {
5390 int referenced = 0;
5391 int UNUSED insn_referenced = abuf->written;
5392 INT in_Rd = -1;
5393 INT in_Rs = -1;
5394 INT out_Rd = -1;
5395 in_Rd = FLD (in_Rd);
5396 in_Rs = FLD (in_Rs);
5397 referenced |= 1 << 0;
5398 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
5399 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
5400 }
5401 return cycles;
5402#undef FLD
5403}
5404
5405static int
5406model_crisv32_addo_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
5407{
5408#define FLD(f) abuf->fields.sfmt_addc_m.f
5409 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5410 const IDESC * UNUSED idesc = abuf->idesc;
5411 int cycles = 0;
5412 {
5413 int referenced = 0;
5414 int UNUSED insn_referenced = abuf->written;
5415 INT in_Rs = -1;
5416 in_Rs = FLD (in_Rs);
5417 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
5418 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
5419 }
5420 {
5421 int referenced = 0;
5422 int UNUSED insn_referenced = abuf->written;
5423 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
5424 }
5425 {
5426 int referenced = 0;
5427 int UNUSED insn_referenced = abuf->written;
5428 INT in_Rd = -1;
5429 INT in_Rs = -1;
5430 INT out_Rd = -1;
5431 in_Rd = FLD (in_Rd);
5432 in_Rs = FLD (in_Rs);
5433 referenced |= 1 << 0;
5434 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
5435 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
5436 }
5437 return cycles;
5438#undef FLD
5439}
5440
5441static int
5442model_crisv32_addo_cb (SIM_CPU *current_cpu, void *sem_arg)
5443{
5444#define FLD(f) abuf->fields.sfmt_bound_cb.f
5445 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5446 const IDESC * UNUSED idesc = abuf->idesc;
5447 int cycles = 0;
5448 {
5449 int referenced = 0;
5450 int UNUSED insn_referenced = abuf->written;
5451 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
5452 }
5453 {
5454 int referenced = 0;
5455 int UNUSED insn_referenced = abuf->written;
5456 INT in_Rd = -1;
5457 INT in_Rs = -1;
5458 INT out_Rd = -1;
5459 in_Rd = FLD (in_Rd);
5460 referenced |= 1 << 0;
5461 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
5462 }
5463 return cycles;
5464#undef FLD
5465}
5466
5467static int
5468model_crisv32_addo_cw (SIM_CPU *current_cpu, void *sem_arg)
5469{
5470#define FLD(f) abuf->fields.sfmt_bound_cw.f
5471 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5472 const IDESC * UNUSED idesc = abuf->idesc;
5473 int cycles = 0;
5474 {
5475 int referenced = 0;
5476 int UNUSED insn_referenced = abuf->written;
5477 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
5478 }
5479 {
5480 int referenced = 0;
5481 int UNUSED insn_referenced = abuf->written;
5482 INT in_Rd = -1;
5483 INT in_Rs = -1;
5484 INT out_Rd = -1;
5485 in_Rd = FLD (in_Rd);
5486 referenced |= 1 << 0;
5487 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
5488 }
5489 return cycles;
5490#undef FLD
5491}
5492
5493static int
5494model_crisv32_addo_cd (SIM_CPU *current_cpu, void *sem_arg)
5495{
5496#define FLD(f) abuf->fields.sfmt_bound_cd.f
5497 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5498 const IDESC * UNUSED idesc = abuf->idesc;
5499 int cycles = 0;
5500 {
5501 int referenced = 0;
5502 int UNUSED insn_referenced = abuf->written;
5503 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
5504 }
5505 {
5506 int referenced = 0;
5507 int UNUSED insn_referenced = abuf->written;
5508 INT in_Rd = -1;
5509 INT in_Rs = -1;
5510 INT out_Rd = -1;
5511 in_Rd = FLD (in_Rd);
5512 referenced |= 1 << 0;
5513 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
5514 }
5515 return cycles;
5516#undef FLD
5517}
5518
5519static int
5520model_crisv32_addi_acr_b_r (SIM_CPU *current_cpu, void *sem_arg)
5521{
5522#define FLD(f) abuf->fields.sfmt_muls_b.f
5523 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5524 const IDESC * UNUSED idesc = abuf->idesc;
5525 int cycles = 0;
5526 {
5527 int referenced = 0;
5528 int UNUSED insn_referenced = abuf->written;
5529 INT in_Rd = -1;
5530 INT in_Rs = -1;
5531 INT out_Rd = -1;
5532 in_Rd = FLD (in_Rd);
5533 in_Rs = FLD (in_Rs);
5534 referenced |= 1 << 0;
5535 referenced |= 1 << 1;
5536 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5537 }
5538 return cycles;
5539#undef FLD
5540}
5541
5542static int
5543model_crisv32_addi_acr_w_r (SIM_CPU *current_cpu, void *sem_arg)
5544{
5545#define FLD(f) abuf->fields.sfmt_muls_b.f
5546 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5547 const IDESC * UNUSED idesc = abuf->idesc;
5548 int cycles = 0;
5549 {
5550 int referenced = 0;
5551 int UNUSED insn_referenced = abuf->written;
5552 INT in_Rd = -1;
5553 INT in_Rs = -1;
5554 INT out_Rd = -1;
5555 in_Rd = FLD (in_Rd);
5556 in_Rs = FLD (in_Rs);
5557 referenced |= 1 << 0;
5558 referenced |= 1 << 1;
5559 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5560 }
5561 return cycles;
5562#undef FLD
5563}
5564
5565static int
5566model_crisv32_addi_acr_d_r (SIM_CPU *current_cpu, void *sem_arg)
5567{
5568#define FLD(f) abuf->fields.sfmt_muls_b.f
5569 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5570 const IDESC * UNUSED idesc = abuf->idesc;
5571 int cycles = 0;
5572 {
5573 int referenced = 0;
5574 int UNUSED insn_referenced = abuf->written;
5575 INT in_Rd = -1;
5576 INT in_Rs = -1;
5577 INT out_Rd = -1;
5578 in_Rd = FLD (in_Rd);
5579 in_Rs = FLD (in_Rs);
5580 referenced |= 1 << 0;
5581 referenced |= 1 << 1;
5582 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5583 }
5584 return cycles;
5585#undef FLD
5586}
5587
5588static int
5589model_crisv32_fidxi (SIM_CPU *current_cpu, void *sem_arg)
5590{
5591#define FLD(f) abuf->fields.sfmt_mcp.f
5592 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5593 const IDESC * UNUSED idesc = abuf->idesc;
5594 int cycles = 0;
5595 {
5596 int referenced = 0;
5597 int UNUSED insn_referenced = abuf->written;
5598 INT in_Rd = -1;
5599 INT in_Rs = -1;
5600 INT out_Rd = -1;
5601 in_Rs = FLD (in_Rs);
5602 referenced |= 1 << 1;
5603 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5604 }
5605 return cycles;
5606#undef FLD
5607}
5608
5609static int
5610model_crisv32_ftagi (SIM_CPU *current_cpu, void *sem_arg)
5611{
5612#define FLD(f) abuf->fields.sfmt_mcp.f
5613 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5614 const IDESC * UNUSED idesc = abuf->idesc;
5615 int cycles = 0;
5616 {
5617 int referenced = 0;
5618 int UNUSED insn_referenced = abuf->written;
5619 INT in_Rd = -1;
5620 INT in_Rs = -1;
5621 INT out_Rd = -1;
5622 in_Rs = FLD (in_Rs);
5623 referenced |= 1 << 1;
5624 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5625 }
5626 return cycles;
5627#undef FLD
5628}
5629
5630static int
5631model_crisv32_fidxd (SIM_CPU *current_cpu, void *sem_arg)
5632{
5633#define FLD(f) abuf->fields.sfmt_mcp.f
5634 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5635 const IDESC * UNUSED idesc = abuf->idesc;
5636 int cycles = 0;
5637 {
5638 int referenced = 0;
5639 int UNUSED insn_referenced = abuf->written;
5640 INT in_Rd = -1;
5641 INT in_Rs = -1;
5642 INT out_Rd = -1;
5643 in_Rs = FLD (in_Rs);
5644 referenced |= 1 << 1;
5645 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5646 }
5647 return cycles;
5648#undef FLD
5649}
5650
5651static int
5652model_crisv32_ftagd (SIM_CPU *current_cpu, void *sem_arg)
5653{
5654#define FLD(f) abuf->fields.sfmt_mcp.f
5655 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5656 const IDESC * UNUSED idesc = abuf->idesc;
5657 int cycles = 0;
5658 {
5659 int referenced = 0;
5660 int UNUSED insn_referenced = abuf->written;
5661 INT in_Rd = -1;
5662 INT in_Rs = -1;
5663 INT out_Rd = -1;
5664 in_Rs = FLD (in_Rs);
5665 referenced |= 1 << 1;
5666 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5667 }
5668 return cycles;
5669#undef FLD
5670}
5671
5672/* We assume UNIT_NONE == 0 because the tables don't always terminate
5673 entries with it. */
5674
5675/* Model timing data for `crisv32'. */
5676
5677static const INSN_TIMING crisv32_timing[] = {
5678 { CRISV32F_INSN_X_INVALID, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5679 { CRISV32F_INSN_X_AFTER, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5680 { CRISV32F_INSN_X_BEFORE, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5681 { CRISV32F_INSN_X_CTI_CHAIN, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5682 { CRISV32F_INSN_X_CHAIN, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5683 { CRISV32F_INSN_X_BEGIN, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5684 { CRISV32F_INSN_MOVE_B_R, model_crisv32_move_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5685 { CRISV32F_INSN_MOVE_W_R, model_crisv32_move_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5686 { CRISV32F_INSN_MOVE_D_R, model_crisv32_move_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5687 { CRISV32F_INSN_MOVEQ, model_crisv32_moveq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5688 { CRISV32F_INSN_MOVS_B_R, model_crisv32_movs_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5689 { CRISV32F_INSN_MOVS_W_R, model_crisv32_movs_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5690 { CRISV32F_INSN_MOVU_B_R, model_crisv32_movu_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5691 { CRISV32F_INSN_MOVU_W_R, model_crisv32_movu_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5692 { CRISV32F_INSN_MOVECBR, model_crisv32_movecbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5693 { CRISV32F_INSN_MOVECWR, model_crisv32_movecwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5694 { CRISV32F_INSN_MOVECDR, model_crisv32_movecdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5695 { CRISV32F_INSN_MOVSCBR, model_crisv32_movscbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5696 { CRISV32F_INSN_MOVSCWR, model_crisv32_movscwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5697 { CRISV32F_INSN_MOVUCBR, model_crisv32_movucbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5698 { CRISV32F_INSN_MOVUCWR, model_crisv32_movucwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5699 { CRISV32F_INSN_ADDQ, model_crisv32_addq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5700 { CRISV32F_INSN_SUBQ, model_crisv32_subq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5701 { CRISV32F_INSN_CMP_R_B_R, model_crisv32_cmp_r_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5702 { CRISV32F_INSN_CMP_R_W_R, model_crisv32_cmp_r_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5703 { CRISV32F_INSN_CMP_R_D_R, model_crisv32_cmp_r_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5704 { CRISV32F_INSN_CMP_M_B_M, model_crisv32_cmp_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5705 { CRISV32F_INSN_CMP_M_W_M, model_crisv32_cmp_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5706 { CRISV32F_INSN_CMP_M_D_M, model_crisv32_cmp_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5707 { CRISV32F_INSN_CMPCBR, model_crisv32_cmpcbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5708 { CRISV32F_INSN_CMPCWR, model_crisv32_cmpcwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5709 { CRISV32F_INSN_CMPCDR, model_crisv32_cmpcdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5710 { CRISV32F_INSN_CMPQ, model_crisv32_cmpq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5711 { CRISV32F_INSN_CMPS_M_B_M, model_crisv32_cmps_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5712 { CRISV32F_INSN_CMPS_M_W_M, model_crisv32_cmps_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5713 { CRISV32F_INSN_CMPSCBR, model_crisv32_cmpscbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5714 { CRISV32F_INSN_CMPSCWR, model_crisv32_cmpscwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5715 { CRISV32F_INSN_CMPU_M_B_M, model_crisv32_cmpu_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5716 { CRISV32F_INSN_CMPU_M_W_M, model_crisv32_cmpu_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5717 { CRISV32F_INSN_CMPUCBR, model_crisv32_cmpucbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5718 { CRISV32F_INSN_CMPUCWR, model_crisv32_cmpucwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5719 { CRISV32F_INSN_MOVE_M_B_M, model_crisv32_move_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5720 { CRISV32F_INSN_MOVE_M_W_M, model_crisv32_move_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5721 { CRISV32F_INSN_MOVE_M_D_M, model_crisv32_move_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5722 { CRISV32F_INSN_MOVS_M_B_M, model_crisv32_movs_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5723 { CRISV32F_INSN_MOVS_M_W_M, model_crisv32_movs_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5724 { CRISV32F_INSN_MOVU_M_B_M, model_crisv32_movu_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5725 { CRISV32F_INSN_MOVU_M_W_M, model_crisv32_movu_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5726 { CRISV32F_INSN_MOVE_R_SPRV32, model_crisv32_move_r_sprv32, { { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5727 { CRISV32F_INSN_MOVE_SPR_RV32, model_crisv32_move_spr_rv32, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5728 { CRISV32F_INSN_MOVE_M_SPRV32, model_crisv32_move_m_sprv32, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5729 { CRISV32F_INSN_MOVE_C_SPRV32_P2, model_crisv32_move_c_sprv32_p2, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5730 { CRISV32F_INSN_MOVE_C_SPRV32_P3, model_crisv32_move_c_sprv32_p3, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5731 { CRISV32F_INSN_MOVE_C_SPRV32_P5, model_crisv32_move_c_sprv32_p5, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5732 { CRISV32F_INSN_MOVE_C_SPRV32_P6, model_crisv32_move_c_sprv32_p6, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5733 { CRISV32F_INSN_MOVE_C_SPRV32_P7, model_crisv32_move_c_sprv32_p7, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5734 { CRISV32F_INSN_MOVE_C_SPRV32_P9, model_crisv32_move_c_sprv32_p9, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5735 { CRISV32F_INSN_MOVE_C_SPRV32_P10, model_crisv32_move_c_sprv32_p10, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5736 { CRISV32F_INSN_MOVE_C_SPRV32_P11, model_crisv32_move_c_sprv32_p11, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5737 { CRISV32F_INSN_MOVE_C_SPRV32_P12, model_crisv32_move_c_sprv32_p12, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5738 { CRISV32F_INSN_MOVE_C_SPRV32_P13, model_crisv32_move_c_sprv32_p13, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5739 { CRISV32F_INSN_MOVE_C_SPRV32_P14, model_crisv32_move_c_sprv32_p14, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5740 { CRISV32F_INSN_MOVE_C_SPRV32_P15, model_crisv32_move_c_sprv32_p15, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5741 { CRISV32F_INSN_MOVE_SPR_MV32, model_crisv32_move_spr_mv32, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_W, 1, 1 } } },
5742 { CRISV32F_INSN_MOVE_SS_R, model_crisv32_move_ss_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5743 { CRISV32F_INSN_MOVE_R_SS, model_crisv32_move_r_ss, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5744 { CRISV32F_INSN_MOVEM_R_M_V32, model_crisv32_movem_r_m_v32, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MOVEM_RTOM, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_MOVEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_W, 1, 1 } } },
5745 { CRISV32F_INSN_MOVEM_M_R_V32, model_crisv32_movem_m_r_v32, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_MOVEM_MTOR, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_MOVEM, 1, 1 } } },
5746 { CRISV32F_INSN_ADD_B_R, model_crisv32_add_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5747 { CRISV32F_INSN_ADD_W_R, model_crisv32_add_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5748 { CRISV32F_INSN_ADD_D_R, model_crisv32_add_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5749 { CRISV32F_INSN_ADD_M_B_M, model_crisv32_add_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5750 { CRISV32F_INSN_ADD_M_W_M, model_crisv32_add_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5751 { CRISV32F_INSN_ADD_M_D_M, model_crisv32_add_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5752 { CRISV32F_INSN_ADDCBR, model_crisv32_addcbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5753 { CRISV32F_INSN_ADDCWR, model_crisv32_addcwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5754 { CRISV32F_INSN_ADDCDR, model_crisv32_addcdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5755 { CRISV32F_INSN_ADDS_B_R, model_crisv32_adds_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5756 { CRISV32F_INSN_ADDS_W_R, model_crisv32_adds_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5757 { CRISV32F_INSN_ADDS_M_B_M, model_crisv32_adds_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5758 { CRISV32F_INSN_ADDS_M_W_M, model_crisv32_adds_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5759 { CRISV32F_INSN_ADDSCBR, model_crisv32_addscbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5760 { CRISV32F_INSN_ADDSCWR, model_crisv32_addscwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5761 { CRISV32F_INSN_ADDU_B_R, model_crisv32_addu_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5762 { CRISV32F_INSN_ADDU_W_R, model_crisv32_addu_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5763 { CRISV32F_INSN_ADDU_M_B_M, model_crisv32_addu_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5764 { CRISV32F_INSN_ADDU_M_W_M, model_crisv32_addu_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5765 { CRISV32F_INSN_ADDUCBR, model_crisv32_adducbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5766 { CRISV32F_INSN_ADDUCWR, model_crisv32_adducwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5767 { CRISV32F_INSN_SUB_B_R, model_crisv32_sub_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5768 { CRISV32F_INSN_SUB_W_R, model_crisv32_sub_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5769 { CRISV32F_INSN_SUB_D_R, model_crisv32_sub_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5770 { CRISV32F_INSN_SUB_M_B_M, model_crisv32_sub_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5771 { CRISV32F_INSN_SUB_M_W_M, model_crisv32_sub_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5772 { CRISV32F_INSN_SUB_M_D_M, model_crisv32_sub_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5773 { CRISV32F_INSN_SUBCBR, model_crisv32_subcbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5774 { CRISV32F_INSN_SUBCWR, model_crisv32_subcwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5775 { CRISV32F_INSN_SUBCDR, model_crisv32_subcdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5776 { CRISV32F_INSN_SUBS_B_R, model_crisv32_subs_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5777 { CRISV32F_INSN_SUBS_W_R, model_crisv32_subs_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5778 { CRISV32F_INSN_SUBS_M_B_M, model_crisv32_subs_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5779 { CRISV32F_INSN_SUBS_M_W_M, model_crisv32_subs_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5780 { CRISV32F_INSN_SUBSCBR, model_crisv32_subscbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5781 { CRISV32F_INSN_SUBSCWR, model_crisv32_subscwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5782 { CRISV32F_INSN_SUBU_B_R, model_crisv32_subu_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5783 { CRISV32F_INSN_SUBU_W_R, model_crisv32_subu_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5784 { CRISV32F_INSN_SUBU_M_B_M, model_crisv32_subu_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5785 { CRISV32F_INSN_SUBU_M_W_M, model_crisv32_subu_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5786 { CRISV32F_INSN_SUBUCBR, model_crisv32_subucbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5787 { CRISV32F_INSN_SUBUCWR, model_crisv32_subucwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5788 { CRISV32F_INSN_ADDC_R, model_crisv32_addc_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5789 { CRISV32F_INSN_ADDC_M, model_crisv32_addc_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5790 { CRISV32F_INSN_ADDC_C, model_crisv32_addc_c, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5791 { CRISV32F_INSN_LAPC_D, model_crisv32_lapc_d, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5792 { CRISV32F_INSN_LAPCQ, model_crisv32_lapcq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5793 { CRISV32F_INSN_ADDI_B_R, model_crisv32_addi_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5794 { CRISV32F_INSN_ADDI_W_R, model_crisv32_addi_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5795 { CRISV32F_INSN_ADDI_D_R, model_crisv32_addi_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5796 { CRISV32F_INSN_NEG_B_R, model_crisv32_neg_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5797 { CRISV32F_INSN_NEG_W_R, model_crisv32_neg_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5798 { CRISV32F_INSN_NEG_D_R, model_crisv32_neg_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5799 { CRISV32F_INSN_TEST_M_B_M, model_crisv32_test_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5800 { CRISV32F_INSN_TEST_M_W_M, model_crisv32_test_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5801 { CRISV32F_INSN_TEST_M_D_M, model_crisv32_test_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5802 { CRISV32F_INSN_MOVE_R_M_B_M, model_crisv32_move_r_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_W, 1, 1 } } },
5803 { CRISV32F_INSN_MOVE_R_M_W_M, model_crisv32_move_r_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_W, 1, 1 } } },
5804 { CRISV32F_INSN_MOVE_R_M_D_M, model_crisv32_move_r_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_W, 1, 1 } } },
5805 { CRISV32F_INSN_MULS_B, model_crisv32_muls_b, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5806 { CRISV32F_INSN_MULS_W, model_crisv32_muls_w, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5807 { CRISV32F_INSN_MULS_D, model_crisv32_muls_d, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5808 { CRISV32F_INSN_MULU_B, model_crisv32_mulu_b, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5809 { CRISV32F_INSN_MULU_W, model_crisv32_mulu_w, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5810 { CRISV32F_INSN_MULU_D, model_crisv32_mulu_d, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5811 { CRISV32F_INSN_MCP, model_crisv32_mcp, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5812 { CRISV32F_INSN_DSTEP, model_crisv32_dstep, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5813 { CRISV32F_INSN_ABS, model_crisv32_abs, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5814 { CRISV32F_INSN_AND_B_R, model_crisv32_and_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5815 { CRISV32F_INSN_AND_W_R, model_crisv32_and_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5816 { CRISV32F_INSN_AND_D_R, model_crisv32_and_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5817 { CRISV32F_INSN_AND_M_B_M, model_crisv32_and_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5818 { CRISV32F_INSN_AND_M_W_M, model_crisv32_and_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5819 { CRISV32F_INSN_AND_M_D_M, model_crisv32_and_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5820 { CRISV32F_INSN_ANDCBR, model_crisv32_andcbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5821 { CRISV32F_INSN_ANDCWR, model_crisv32_andcwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5822 { CRISV32F_INSN_ANDCDR, model_crisv32_andcdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5823 { CRISV32F_INSN_ANDQ, model_crisv32_andq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5824 { CRISV32F_INSN_ORR_B_R, model_crisv32_orr_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5825 { CRISV32F_INSN_ORR_W_R, model_crisv32_orr_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5826 { CRISV32F_INSN_ORR_D_R, model_crisv32_orr_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5827 { CRISV32F_INSN_OR_M_B_M, model_crisv32_or_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5828 { CRISV32F_INSN_OR_M_W_M, model_crisv32_or_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5829 { CRISV32F_INSN_OR_M_D_M, model_crisv32_or_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5830 { CRISV32F_INSN_ORCBR, model_crisv32_orcbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5831 { CRISV32F_INSN_ORCWR, model_crisv32_orcwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5832 { CRISV32F_INSN_ORCDR, model_crisv32_orcdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5833 { CRISV32F_INSN_ORQ, model_crisv32_orq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5834 { CRISV32F_INSN_XOR, model_crisv32_xor, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5835 { CRISV32F_INSN_SWAP, model_crisv32_swap, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5836 { CRISV32F_INSN_ASRR_B_R, model_crisv32_asrr_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5837 { CRISV32F_INSN_ASRR_W_R, model_crisv32_asrr_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5838 { CRISV32F_INSN_ASRR_D_R, model_crisv32_asrr_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5839 { CRISV32F_INSN_ASRQ, model_crisv32_asrq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5840 { CRISV32F_INSN_LSRR_B_R, model_crisv32_lsrr_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5841 { CRISV32F_INSN_LSRR_W_R, model_crisv32_lsrr_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5842 { CRISV32F_INSN_LSRR_D_R, model_crisv32_lsrr_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5843 { CRISV32F_INSN_LSRQ, model_crisv32_lsrq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5844 { CRISV32F_INSN_LSLR_B_R, model_crisv32_lslr_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5845 { CRISV32F_INSN_LSLR_W_R, model_crisv32_lslr_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5846 { CRISV32F_INSN_LSLR_D_R, model_crisv32_lslr_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5847 { CRISV32F_INSN_LSLQ, model_crisv32_lslq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5848 { CRISV32F_INSN_BTST, model_crisv32_btst, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5849 { CRISV32F_INSN_BTSTQ, model_crisv32_btstq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5850 { CRISV32F_INSN_SETF, model_crisv32_setf, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5851 { CRISV32F_INSN_CLEARF, model_crisv32_clearf, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5852 { CRISV32F_INSN_RFE, model_crisv32_rfe, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5853 { CRISV32F_INSN_SFE, model_crisv32_sfe, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5854 { CRISV32F_INSN_RFG, model_crisv32_rfg, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5855 { CRISV32F_INSN_RFN, model_crisv32_rfn, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5856 { CRISV32F_INSN_HALT, model_crisv32_halt, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5857 { CRISV32F_INSN_BCC_B, model_crisv32_bcc_b, { { (int) UNIT_CRISV32_U_BRANCH, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5858 { CRISV32F_INSN_BA_B, model_crisv32_ba_b, { { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5859 { CRISV32F_INSN_BCC_W, model_crisv32_bcc_w, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_BRANCH, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5860 { CRISV32F_INSN_BA_W, model_crisv32_ba_w, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5861 { CRISV32F_INSN_JAS_R, model_crisv32_jas_r, { { (int) UNIT_CRISV32_U_JUMP_R, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5862 { CRISV32F_INSN_JAS_C, model_crisv32_jas_c, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5863 { CRISV32F_INSN_JUMP_P, model_crisv32_jump_p, { { (int) UNIT_CRISV32_U_JUMP_SR, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5864 { CRISV32F_INSN_BAS_C, model_crisv32_bas_c, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5865 { CRISV32F_INSN_JASC_R, model_crisv32_jasc_r, { { (int) UNIT_CRISV32_U_JUMP_R, 1, 1 }, { (int) UNIT_CRISV32_U_SKIP4, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5866 { CRISV32F_INSN_JASC_C, model_crisv32_jasc_c, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_SKIP4, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5867 { CRISV32F_INSN_BASC_C, model_crisv32_basc_c, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_SKIP4, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5868 { CRISV32F_INSN_BREAK, model_crisv32_break, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5869 { CRISV32F_INSN_BOUND_R_B_R, model_crisv32_bound_r_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5870 { CRISV32F_INSN_BOUND_R_W_R, model_crisv32_bound_r_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5871 { CRISV32F_INSN_BOUND_R_D_R, model_crisv32_bound_r_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5872 { CRISV32F_INSN_BOUND_CB, model_crisv32_bound_cb, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5873 { CRISV32F_INSN_BOUND_CW, model_crisv32_bound_cw, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5874 { CRISV32F_INSN_BOUND_CD, model_crisv32_bound_cd, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5875 { CRISV32F_INSN_SCC, model_crisv32_scc, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5876 { CRISV32F_INSN_LZ, model_crisv32_lz, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5877 { CRISV32F_INSN_ADDOQ, model_crisv32_addoq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5878 { CRISV32F_INSN_ADDO_M_B_M, model_crisv32_addo_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5879 { CRISV32F_INSN_ADDO_M_W_M, model_crisv32_addo_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5880 { CRISV32F_INSN_ADDO_M_D_M, model_crisv32_addo_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5881 { CRISV32F_INSN_ADDO_CB, model_crisv32_addo_cb, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5882 { CRISV32F_INSN_ADDO_CW, model_crisv32_addo_cw, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5883 { CRISV32F_INSN_ADDO_CD, model_crisv32_addo_cd, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5884 { CRISV32F_INSN_ADDI_ACR_B_R, model_crisv32_addi_acr_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5885 { CRISV32F_INSN_ADDI_ACR_W_R, model_crisv32_addi_acr_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5886 { CRISV32F_INSN_ADDI_ACR_D_R, model_crisv32_addi_acr_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5887 { CRISV32F_INSN_FIDXI, model_crisv32_fidxi, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5888 { CRISV32F_INSN_FTAGI, model_crisv32_ftagi, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5889 { CRISV32F_INSN_FIDXD, model_crisv32_fidxd, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5890 { CRISV32F_INSN_FTAGD, model_crisv32_ftagd, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5891};
5892
5893#endif /* WITH_PROFILE_MODEL_P */
5894
5895static void
5896crisv32_model_init (SIM_CPU *cpu)
5897{
5898 CPU_MODEL_DATA (cpu) = (void *) zalloc (sizeof (MODEL_CRISV32_DATA));
5899}
5900
5901#if WITH_PROFILE_MODEL_P
5902#define TIMING_DATA(td) td
5903#else
5904#define TIMING_DATA(td) 0
5905#endif
5906
5907static const SIM_MODEL crisv32_models[] =
5908{
5909 { "crisv32", & crisv32_mach, MODEL_CRISV32, TIMING_DATA (& crisv32_timing[0]), crisv32_model_init },
5910 { 0 }
5911};
5912
5913/* The properties of this cpu's implementation. */
5914
5915static const SIM_MACH_IMP_PROPERTIES crisv32f_imp_properties =
5916{
5917 sizeof (SIM_CPU),
5918#if WITH_SCACHE
5919 sizeof (SCACHE)
5920#else
5921 0
5922#endif
5923};
5924
5925
5926static void
5927crisv32f_prepare_run (SIM_CPU *cpu)
5928{
5929 if (CPU_IDESC (cpu) == NULL)
5930 crisv32f_init_idesc_table (cpu);
5931}
5932
5933static const CGEN_INSN *
5934crisv32f_get_idata (SIM_CPU *cpu, int inum)
5935{
5936 return CPU_IDESC (cpu) [inum].idata;
5937}
5938
5939static void
5940crisv32_init_cpu (SIM_CPU *cpu)
5941{
5942 CPU_REG_FETCH (cpu) = crisv32f_fetch_register;
5943 CPU_REG_STORE (cpu) = crisv32f_store_register;
5944 CPU_PC_FETCH (cpu) = crisv32f_h_pc_get;
5945 CPU_PC_STORE (cpu) = crisv32f_h_pc_set;
5946 CPU_GET_IDATA (cpu) = crisv32f_get_idata;
5947 CPU_MAX_INSNS (cpu) = CRISV32F_INSN__MAX;
5948 CPU_INSN_NAME (cpu) = cgen_insn_name;
5949 CPU_FULL_ENGINE_FN (cpu) = crisv32f_engine_run_full;
5950#if WITH_FAST
5951 CPU_FAST_ENGINE_FN (cpu) = crisv32f_engine_run_fast;
5952#else
5953 CPU_FAST_ENGINE_FN (cpu) = crisv32f_engine_run_full;
5954#endif
5955}
5956
5957const SIM_MACH crisv32_mach =
5958{
5959 "crisv32", "crisv32", MACH_CRISV32,
5960 32, 32, & crisv32_models[0], & crisv32f_imp_properties,
5961 crisv32_init_cpu,
5962 crisv32f_prepare_run
5963};
5964