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