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