Synchronize sourceware version of the libiberty sources with the master gcc versions.
[binutils-gdb.git] / sim / cris / modelv32.c
blob5ef81ffb6c3632fbb31f6a72f37ba66f9873dd64
1 /* Simulator model support for crisv32f.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright (C) 1996-2023 Free Software Foundation, Inc.
7 This file is part of the GNU simulators.
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.
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.
19 You should have received a copy of the GNU General Public License along
20 with this program; if not, write to the Free Software Foundation, Inc.,
21 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
25 #define WANT_CPU crisv32f
26 #define WANT_CPU_CRISV32F
28 #include "sim-main.h"
30 /* The profiling data is recorded here, but is accessed via the profiling
31 mechanism. After all, this is information for profiling. */
33 #if WITH_PROFILE_MODEL_P
35 /* Model handlers for each insn. */
37 static int
38 model_crisv32_move_b_r (SIM_CPU *current_cpu, void *sem_arg)
40 #define FLD(f) abuf->fields.sfmt_addc_m.f
41 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
42 const IDESC * UNUSED idesc = abuf->idesc;
43 int cycles = 0;
45 int referenced = 0;
46 int UNUSED insn_referenced = abuf->written;
47 INT in_Rd = -1;
48 INT in_Rs = -1;
49 INT out_Rd = -1;
50 in_Rs = FLD (in_Rs);
51 referenced |= 1 << 1;
52 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
54 return cycles;
55 #undef FLD
58 static int
59 model_crisv32_move_w_r (SIM_CPU *current_cpu, void *sem_arg)
61 #define FLD(f) abuf->fields.sfmt_addc_m.f
62 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
63 const IDESC * UNUSED idesc = abuf->idesc;
64 int cycles = 0;
66 int referenced = 0;
67 int UNUSED insn_referenced = abuf->written;
68 INT in_Rd = -1;
69 INT in_Rs = -1;
70 INT out_Rd = -1;
71 in_Rs = FLD (in_Rs);
72 referenced |= 1 << 1;
73 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
75 return cycles;
76 #undef FLD
79 static int
80 model_crisv32_move_d_r (SIM_CPU *current_cpu, void *sem_arg)
82 #define FLD(f) abuf->fields.sfmt_addc_m.f
83 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
84 const IDESC * UNUSED idesc = abuf->idesc;
85 int cycles = 0;
87 int referenced = 0;
88 int UNUSED insn_referenced = abuf->written;
89 INT in_Rd = -1;
90 INT in_Rs = -1;
91 INT out_Rd = -1;
92 in_Rs = FLD (in_Rs);
93 referenced |= 1 << 1;
94 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
96 return cycles;
97 #undef FLD
100 static int
101 model_crisv32_moveq (SIM_CPU *current_cpu, void *sem_arg)
103 #define FLD(f) abuf->fields.sfmt_moveq.f
104 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
105 const IDESC * UNUSED idesc = abuf->idesc;
106 int cycles = 0;
108 int referenced = 0;
109 int UNUSED insn_referenced = abuf->written;
110 INT in_Rd = -1;
111 INT in_Rs = -1;
112 INT out_Rd = -1;
113 out_Rd = FLD (out_Rd);
114 referenced |= 1 << 2;
115 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
117 return cycles;
118 #undef FLD
121 static int
122 model_crisv32_movs_b_r (SIM_CPU *current_cpu, void *sem_arg)
124 #define FLD(f) abuf->fields.sfmt_muls_b.f
125 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
126 const IDESC * UNUSED idesc = abuf->idesc;
127 int cycles = 0;
129 int referenced = 0;
130 int UNUSED insn_referenced = abuf->written;
131 INT in_Rd = -1;
132 INT in_Rs = -1;
133 INT out_Rd = -1;
134 in_Rs = FLD (in_Rs);
135 out_Rd = FLD (out_Rd);
136 referenced |= 1 << 1;
137 referenced |= 1 << 2;
138 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
140 return cycles;
141 #undef FLD
144 static int
145 model_crisv32_movs_w_r (SIM_CPU *current_cpu, void *sem_arg)
147 #define FLD(f) abuf->fields.sfmt_muls_b.f
148 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
149 const IDESC * UNUSED idesc = abuf->idesc;
150 int cycles = 0;
152 int referenced = 0;
153 int UNUSED insn_referenced = abuf->written;
154 INT in_Rd = -1;
155 INT in_Rs = -1;
156 INT out_Rd = -1;
157 in_Rs = FLD (in_Rs);
158 out_Rd = FLD (out_Rd);
159 referenced |= 1 << 1;
160 referenced |= 1 << 2;
161 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
163 return cycles;
164 #undef FLD
167 static int
168 model_crisv32_movu_b_r (SIM_CPU *current_cpu, void *sem_arg)
170 #define FLD(f) abuf->fields.sfmt_muls_b.f
171 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
172 const IDESC * UNUSED idesc = abuf->idesc;
173 int cycles = 0;
175 int referenced = 0;
176 int UNUSED insn_referenced = abuf->written;
177 INT in_Rd = -1;
178 INT in_Rs = -1;
179 INT out_Rd = -1;
180 in_Rs = FLD (in_Rs);
181 out_Rd = FLD (out_Rd);
182 referenced |= 1 << 1;
183 referenced |= 1 << 2;
184 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
186 return cycles;
187 #undef FLD
190 static int
191 model_crisv32_movu_w_r (SIM_CPU *current_cpu, void *sem_arg)
193 #define FLD(f) abuf->fields.sfmt_muls_b.f
194 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
195 const IDESC * UNUSED idesc = abuf->idesc;
196 int cycles = 0;
198 int referenced = 0;
199 int UNUSED insn_referenced = abuf->written;
200 INT in_Rd = -1;
201 INT in_Rs = -1;
202 INT out_Rd = -1;
203 in_Rs = FLD (in_Rs);
204 out_Rd = FLD (out_Rd);
205 referenced |= 1 << 1;
206 referenced |= 1 << 2;
207 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
209 return cycles;
210 #undef FLD
213 static int
214 model_crisv32_movecbr (SIM_CPU *current_cpu, void *sem_arg)
216 #define FLD(f) abuf->fields.sfmt_addcbr.f
217 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
218 const IDESC * UNUSED idesc = abuf->idesc;
219 int cycles = 0;
221 int referenced = 0;
222 int UNUSED insn_referenced = abuf->written;
223 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
226 int referenced = 0;
227 int UNUSED insn_referenced = abuf->written;
228 INT in_Rd = -1;
229 INT in_Rs = -1;
230 INT out_Rd = -1;
231 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
233 return cycles;
234 #undef FLD
237 static int
238 model_crisv32_movecwr (SIM_CPU *current_cpu, void *sem_arg)
240 #define FLD(f) abuf->fields.sfmt_addcwr.f
241 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
242 const IDESC * UNUSED idesc = abuf->idesc;
243 int cycles = 0;
245 int referenced = 0;
246 int UNUSED insn_referenced = abuf->written;
247 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
250 int referenced = 0;
251 int UNUSED insn_referenced = abuf->written;
252 INT in_Rd = -1;
253 INT in_Rs = -1;
254 INT out_Rd = -1;
255 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
257 return cycles;
258 #undef FLD
261 static int
262 model_crisv32_movecdr (SIM_CPU *current_cpu, void *sem_arg)
264 #define FLD(f) abuf->fields.sfmt_bound_cd.f
265 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
266 const IDESC * UNUSED idesc = abuf->idesc;
267 int cycles = 0;
269 int referenced = 0;
270 int UNUSED insn_referenced = abuf->written;
271 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
274 int referenced = 0;
275 int UNUSED insn_referenced = abuf->written;
276 INT in_Rd = -1;
277 INT in_Rs = -1;
278 INT out_Rd = -1;
279 out_Rd = FLD (out_Rd);
280 referenced |= 1 << 2;
281 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
283 return cycles;
284 #undef FLD
287 static int
288 model_crisv32_movscbr (SIM_CPU *current_cpu, void *sem_arg)
290 #define FLD(f) abuf->fields.sfmt_bound_cb.f
291 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
292 const IDESC * UNUSED idesc = abuf->idesc;
293 int cycles = 0;
295 int referenced = 0;
296 int UNUSED insn_referenced = abuf->written;
297 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
300 int referenced = 0;
301 int UNUSED insn_referenced = abuf->written;
302 INT in_Rd = -1;
303 INT in_Rs = -1;
304 INT out_Rd = -1;
305 out_Rd = FLD (out_Rd);
306 referenced |= 1 << 2;
307 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
309 return cycles;
310 #undef FLD
313 static int
314 model_crisv32_movscwr (SIM_CPU *current_cpu, void *sem_arg)
316 #define FLD(f) abuf->fields.sfmt_bound_cw.f
317 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
318 const IDESC * UNUSED idesc = abuf->idesc;
319 int cycles = 0;
321 int referenced = 0;
322 int UNUSED insn_referenced = abuf->written;
323 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
326 int referenced = 0;
327 int UNUSED insn_referenced = abuf->written;
328 INT in_Rd = -1;
329 INT in_Rs = -1;
330 INT out_Rd = -1;
331 out_Rd = FLD (out_Rd);
332 referenced |= 1 << 2;
333 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
335 return cycles;
336 #undef FLD
339 static int
340 model_crisv32_movucbr (SIM_CPU *current_cpu, void *sem_arg)
342 #define FLD(f) abuf->fields.sfmt_bound_cb.f
343 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
344 const IDESC * UNUSED idesc = abuf->idesc;
345 int cycles = 0;
347 int referenced = 0;
348 int UNUSED insn_referenced = abuf->written;
349 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
352 int referenced = 0;
353 int UNUSED insn_referenced = abuf->written;
354 INT in_Rd = -1;
355 INT in_Rs = -1;
356 INT out_Rd = -1;
357 out_Rd = FLD (out_Rd);
358 referenced |= 1 << 2;
359 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
361 return cycles;
362 #undef FLD
365 static int
366 model_crisv32_movucwr (SIM_CPU *current_cpu, void *sem_arg)
368 #define FLD(f) abuf->fields.sfmt_bound_cw.f
369 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
370 const IDESC * UNUSED idesc = abuf->idesc;
371 int cycles = 0;
373 int referenced = 0;
374 int UNUSED insn_referenced = abuf->written;
375 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
378 int referenced = 0;
379 int UNUSED insn_referenced = abuf->written;
380 INT in_Rd = -1;
381 INT in_Rs = -1;
382 INT out_Rd = -1;
383 out_Rd = FLD (out_Rd);
384 referenced |= 1 << 2;
385 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
387 return cycles;
388 #undef FLD
391 static int
392 model_crisv32_addq (SIM_CPU *current_cpu, void *sem_arg)
394 #define FLD(f) abuf->fields.sfmt_addq.f
395 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
396 const IDESC * UNUSED idesc = abuf->idesc;
397 int cycles = 0;
399 int referenced = 0;
400 int UNUSED insn_referenced = abuf->written;
401 INT in_Rd = -1;
402 INT in_Rs = -1;
403 INT out_Rd = -1;
404 in_Rd = FLD (in_Rd);
405 referenced |= 1 << 0;
406 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
408 return cycles;
409 #undef FLD
412 static int
413 model_crisv32_subq (SIM_CPU *current_cpu, void *sem_arg)
415 #define FLD(f) abuf->fields.sfmt_addq.f
416 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
417 const IDESC * UNUSED idesc = abuf->idesc;
418 int cycles = 0;
420 int referenced = 0;
421 int UNUSED insn_referenced = abuf->written;
422 INT in_Rd = -1;
423 INT in_Rs = -1;
424 INT out_Rd = -1;
425 in_Rd = FLD (in_Rd);
426 referenced |= 1 << 0;
427 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
429 return cycles;
430 #undef FLD
433 static int
434 model_crisv32_cmp_r_b_r (SIM_CPU *current_cpu, void *sem_arg)
436 #define FLD(f) abuf->fields.sfmt_muls_b.f
437 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
438 const IDESC * UNUSED idesc = abuf->idesc;
439 int cycles = 0;
441 int referenced = 0;
442 int UNUSED insn_referenced = abuf->written;
443 INT in_Rd = -1;
444 INT in_Rs = -1;
445 INT out_Rd = -1;
446 in_Rd = FLD (in_Rd);
447 in_Rs = FLD (in_Rs);
448 referenced |= 1 << 0;
449 referenced |= 1 << 1;
450 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
452 return cycles;
453 #undef FLD
456 static int
457 model_crisv32_cmp_r_w_r (SIM_CPU *current_cpu, void *sem_arg)
459 #define FLD(f) abuf->fields.sfmt_muls_b.f
460 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
461 const IDESC * UNUSED idesc = abuf->idesc;
462 int cycles = 0;
464 int referenced = 0;
465 int UNUSED insn_referenced = abuf->written;
466 INT in_Rd = -1;
467 INT in_Rs = -1;
468 INT out_Rd = -1;
469 in_Rd = FLD (in_Rd);
470 in_Rs = FLD (in_Rs);
471 referenced |= 1 << 0;
472 referenced |= 1 << 1;
473 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
475 return cycles;
476 #undef FLD
479 static int
480 model_crisv32_cmp_r_d_r (SIM_CPU *current_cpu, void *sem_arg)
482 #define FLD(f) abuf->fields.sfmt_muls_b.f
483 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
484 const IDESC * UNUSED idesc = abuf->idesc;
485 int cycles = 0;
487 int referenced = 0;
488 int UNUSED insn_referenced = abuf->written;
489 INT in_Rd = -1;
490 INT in_Rs = -1;
491 INT out_Rd = -1;
492 in_Rd = FLD (in_Rd);
493 in_Rs = FLD (in_Rs);
494 referenced |= 1 << 0;
495 referenced |= 1 << 1;
496 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
498 return cycles;
499 #undef FLD
502 static int
503 model_crisv32_cmp_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
505 #define FLD(f) abuf->fields.sfmt_addc_m.f
506 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
507 const IDESC * UNUSED idesc = abuf->idesc;
508 int cycles = 0;
510 int referenced = 0;
511 int UNUSED insn_referenced = abuf->written;
512 INT in_Rs = -1;
513 in_Rs = FLD (in_Rs);
514 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
515 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
518 int referenced = 0;
519 int UNUSED insn_referenced = abuf->written;
520 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
523 int referenced = 0;
524 int UNUSED insn_referenced = abuf->written;
525 INT in_Rd = -1;
526 INT in_Rs = -1;
527 INT out_Rd = -1;
528 in_Rd = FLD (in_Rd);
529 in_Rs = FLD (in_Rs);
530 referenced |= 1 << 0;
531 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
532 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
534 return cycles;
535 #undef FLD
538 static int
539 model_crisv32_cmp_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
541 #define FLD(f) abuf->fields.sfmt_addc_m.f
542 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
543 const IDESC * UNUSED idesc = abuf->idesc;
544 int cycles = 0;
546 int referenced = 0;
547 int UNUSED insn_referenced = abuf->written;
548 INT in_Rs = -1;
549 in_Rs = FLD (in_Rs);
550 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
551 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
554 int referenced = 0;
555 int UNUSED insn_referenced = abuf->written;
556 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
559 int referenced = 0;
560 int UNUSED insn_referenced = abuf->written;
561 INT in_Rd = -1;
562 INT in_Rs = -1;
563 INT out_Rd = -1;
564 in_Rd = FLD (in_Rd);
565 in_Rs = FLD (in_Rs);
566 referenced |= 1 << 0;
567 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
568 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
570 return cycles;
571 #undef FLD
574 static int
575 model_crisv32_cmp_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
577 #define FLD(f) abuf->fields.sfmt_addc_m.f
578 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
579 const IDESC * UNUSED idesc = abuf->idesc;
580 int cycles = 0;
582 int referenced = 0;
583 int UNUSED insn_referenced = abuf->written;
584 INT in_Rs = -1;
585 in_Rs = FLD (in_Rs);
586 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
587 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
590 int referenced = 0;
591 int UNUSED insn_referenced = abuf->written;
592 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
595 int referenced = 0;
596 int UNUSED insn_referenced = abuf->written;
597 INT in_Rd = -1;
598 INT in_Rs = -1;
599 INT out_Rd = -1;
600 in_Rd = FLD (in_Rd);
601 in_Rs = FLD (in_Rs);
602 referenced |= 1 << 0;
603 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
604 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
606 return cycles;
607 #undef FLD
610 static int
611 model_crisv32_cmpcbr (SIM_CPU *current_cpu, void *sem_arg)
613 #define FLD(f) abuf->fields.sfmt_bound_cb.f
614 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
615 const IDESC * UNUSED idesc = abuf->idesc;
616 int cycles = 0;
618 int referenced = 0;
619 int UNUSED insn_referenced = abuf->written;
620 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
623 int referenced = 0;
624 int UNUSED insn_referenced = abuf->written;
625 INT in_Rd = -1;
626 INT in_Rs = -1;
627 INT out_Rd = -1;
628 in_Rd = FLD (in_Rd);
629 referenced |= 1 << 0;
630 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
632 return cycles;
633 #undef FLD
636 static int
637 model_crisv32_cmpcwr (SIM_CPU *current_cpu, void *sem_arg)
639 #define FLD(f) abuf->fields.sfmt_bound_cw.f
640 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
641 const IDESC * UNUSED idesc = abuf->idesc;
642 int cycles = 0;
644 int referenced = 0;
645 int UNUSED insn_referenced = abuf->written;
646 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
649 int referenced = 0;
650 int UNUSED insn_referenced = abuf->written;
651 INT in_Rd = -1;
652 INT in_Rs = -1;
653 INT out_Rd = -1;
654 in_Rd = FLD (in_Rd);
655 referenced |= 1 << 0;
656 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
658 return cycles;
659 #undef FLD
662 static int
663 model_crisv32_cmpcdr (SIM_CPU *current_cpu, void *sem_arg)
665 #define FLD(f) abuf->fields.sfmt_bound_cd.f
666 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
667 const IDESC * UNUSED idesc = abuf->idesc;
668 int cycles = 0;
670 int referenced = 0;
671 int UNUSED insn_referenced = abuf->written;
672 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
675 int referenced = 0;
676 int UNUSED insn_referenced = abuf->written;
677 INT in_Rd = -1;
678 INT in_Rs = -1;
679 INT out_Rd = -1;
680 in_Rd = FLD (in_Rd);
681 referenced |= 1 << 0;
682 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
684 return cycles;
685 #undef FLD
688 static int
689 model_crisv32_cmpq (SIM_CPU *current_cpu, void *sem_arg)
691 #define FLD(f) abuf->fields.sfmt_andq.f
692 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
693 const IDESC * UNUSED idesc = abuf->idesc;
694 int cycles = 0;
696 int referenced = 0;
697 int UNUSED insn_referenced = abuf->written;
698 INT in_Rd = -1;
699 INT in_Rs = -1;
700 INT out_Rd = -1;
701 in_Rd = FLD (in_Rd);
702 referenced |= 1 << 0;
703 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
705 return cycles;
706 #undef FLD
709 static int
710 model_crisv32_cmps_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
712 #define FLD(f) abuf->fields.sfmt_addc_m.f
713 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
714 const IDESC * UNUSED idesc = abuf->idesc;
715 int cycles = 0;
717 int referenced = 0;
718 int UNUSED insn_referenced = abuf->written;
719 INT in_Rs = -1;
720 in_Rs = FLD (in_Rs);
721 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
722 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
725 int referenced = 0;
726 int UNUSED insn_referenced = abuf->written;
727 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
730 int referenced = 0;
731 int UNUSED insn_referenced = abuf->written;
732 INT in_Rd = -1;
733 INT in_Rs = -1;
734 INT out_Rd = -1;
735 in_Rd = FLD (in_Rd);
736 in_Rs = FLD (in_Rs);
737 referenced |= 1 << 0;
738 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
739 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
741 return cycles;
742 #undef FLD
745 static int
746 model_crisv32_cmps_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
748 #define FLD(f) abuf->fields.sfmt_addc_m.f
749 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
750 const IDESC * UNUSED idesc = abuf->idesc;
751 int cycles = 0;
753 int referenced = 0;
754 int UNUSED insn_referenced = abuf->written;
755 INT in_Rs = -1;
756 in_Rs = FLD (in_Rs);
757 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
758 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
761 int referenced = 0;
762 int UNUSED insn_referenced = abuf->written;
763 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
766 int referenced = 0;
767 int UNUSED insn_referenced = abuf->written;
768 INT in_Rd = -1;
769 INT in_Rs = -1;
770 INT out_Rd = -1;
771 in_Rd = FLD (in_Rd);
772 in_Rs = FLD (in_Rs);
773 referenced |= 1 << 0;
774 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
775 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
777 return cycles;
778 #undef FLD
781 static int
782 model_crisv32_cmpscbr (SIM_CPU *current_cpu, void *sem_arg)
784 #define FLD(f) abuf->fields.sfmt_bound_cb.f
785 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
786 const IDESC * UNUSED idesc = abuf->idesc;
787 int cycles = 0;
789 int referenced = 0;
790 int UNUSED insn_referenced = abuf->written;
791 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
794 int referenced = 0;
795 int UNUSED insn_referenced = abuf->written;
796 INT in_Rd = -1;
797 INT in_Rs = -1;
798 INT out_Rd = -1;
799 in_Rd = FLD (in_Rd);
800 referenced |= 1 << 0;
801 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
803 return cycles;
804 #undef FLD
807 static int
808 model_crisv32_cmpscwr (SIM_CPU *current_cpu, void *sem_arg)
810 #define FLD(f) abuf->fields.sfmt_bound_cw.f
811 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
812 const IDESC * UNUSED idesc = abuf->idesc;
813 int cycles = 0;
815 int referenced = 0;
816 int UNUSED insn_referenced = abuf->written;
817 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
820 int referenced = 0;
821 int UNUSED insn_referenced = abuf->written;
822 INT in_Rd = -1;
823 INT in_Rs = -1;
824 INT out_Rd = -1;
825 in_Rd = FLD (in_Rd);
826 referenced |= 1 << 0;
827 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
829 return cycles;
830 #undef FLD
833 static int
834 model_crisv32_cmpu_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
836 #define FLD(f) abuf->fields.sfmt_addc_m.f
837 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
838 const IDESC * UNUSED idesc = abuf->idesc;
839 int cycles = 0;
841 int referenced = 0;
842 int UNUSED insn_referenced = abuf->written;
843 INT in_Rs = -1;
844 in_Rs = FLD (in_Rs);
845 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
846 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
849 int referenced = 0;
850 int UNUSED insn_referenced = abuf->written;
851 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
854 int referenced = 0;
855 int UNUSED insn_referenced = abuf->written;
856 INT in_Rd = -1;
857 INT in_Rs = -1;
858 INT out_Rd = -1;
859 in_Rd = FLD (in_Rd);
860 in_Rs = FLD (in_Rs);
861 referenced |= 1 << 0;
862 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
863 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
865 return cycles;
866 #undef FLD
869 static int
870 model_crisv32_cmpu_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
872 #define FLD(f) abuf->fields.sfmt_addc_m.f
873 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
874 const IDESC * UNUSED idesc = abuf->idesc;
875 int cycles = 0;
877 int referenced = 0;
878 int UNUSED insn_referenced = abuf->written;
879 INT in_Rs = -1;
880 in_Rs = FLD (in_Rs);
881 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
882 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
885 int referenced = 0;
886 int UNUSED insn_referenced = abuf->written;
887 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
890 int referenced = 0;
891 int UNUSED insn_referenced = abuf->written;
892 INT in_Rd = -1;
893 INT in_Rs = -1;
894 INT out_Rd = -1;
895 in_Rd = FLD (in_Rd);
896 in_Rs = FLD (in_Rs);
897 referenced |= 1 << 0;
898 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
899 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
901 return cycles;
902 #undef FLD
905 static int
906 model_crisv32_cmpucbr (SIM_CPU *current_cpu, void *sem_arg)
908 #define FLD(f) abuf->fields.sfmt_bound_cb.f
909 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
910 const IDESC * UNUSED idesc = abuf->idesc;
911 int cycles = 0;
913 int referenced = 0;
914 int UNUSED insn_referenced = abuf->written;
915 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
918 int referenced = 0;
919 int UNUSED insn_referenced = abuf->written;
920 INT in_Rd = -1;
921 INT in_Rs = -1;
922 INT out_Rd = -1;
923 in_Rd = FLD (in_Rd);
924 referenced |= 1 << 0;
925 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
927 return cycles;
928 #undef FLD
931 static int
932 model_crisv32_cmpucwr (SIM_CPU *current_cpu, void *sem_arg)
934 #define FLD(f) abuf->fields.sfmt_bound_cw.f
935 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
936 const IDESC * UNUSED idesc = abuf->idesc;
937 int cycles = 0;
939 int referenced = 0;
940 int UNUSED insn_referenced = abuf->written;
941 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
944 int referenced = 0;
945 int UNUSED insn_referenced = abuf->written;
946 INT in_Rd = -1;
947 INT in_Rs = -1;
948 INT out_Rd = -1;
949 in_Rd = FLD (in_Rd);
950 referenced |= 1 << 0;
951 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
953 return cycles;
954 #undef FLD
957 static int
958 model_crisv32_move_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
960 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
961 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
962 const IDESC * UNUSED idesc = abuf->idesc;
963 int cycles = 0;
965 int referenced = 0;
966 int UNUSED insn_referenced = abuf->written;
967 INT in_Rs = -1;
968 in_Rs = FLD (in_Rs);
969 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
970 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
973 int referenced = 0;
974 int UNUSED insn_referenced = abuf->written;
975 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
978 int referenced = 0;
979 int UNUSED insn_referenced = abuf->written;
980 INT in_Rd = -1;
981 INT in_Rs = -1;
982 INT out_Rd = -1;
983 in_Rs = FLD (in_Rs);
984 if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
985 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
987 return cycles;
988 #undef FLD
991 static int
992 model_crisv32_move_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
994 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
995 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
996 const IDESC * UNUSED idesc = abuf->idesc;
997 int cycles = 0;
999 int referenced = 0;
1000 int UNUSED insn_referenced = abuf->written;
1001 INT in_Rs = -1;
1002 in_Rs = FLD (in_Rs);
1003 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
1004 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1007 int referenced = 0;
1008 int UNUSED insn_referenced = abuf->written;
1009 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
1012 int referenced = 0;
1013 int UNUSED insn_referenced = abuf->written;
1014 INT in_Rd = -1;
1015 INT in_Rs = -1;
1016 INT out_Rd = -1;
1017 in_Rs = FLD (in_Rs);
1018 if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
1019 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
1021 return cycles;
1022 #undef FLD
1025 static int
1026 model_crisv32_move_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
1028 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
1029 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1030 const IDESC * UNUSED idesc = abuf->idesc;
1031 int cycles = 0;
1033 int referenced = 0;
1034 int UNUSED insn_referenced = abuf->written;
1035 INT in_Rs = -1;
1036 in_Rs = FLD (in_Rs);
1037 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
1038 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1041 int referenced = 0;
1042 int UNUSED insn_referenced = abuf->written;
1043 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
1046 int referenced = 0;
1047 int UNUSED insn_referenced = abuf->written;
1048 INT in_Rd = -1;
1049 INT in_Rs = -1;
1050 INT out_Rd = -1;
1051 in_Rs = FLD (in_Rs);
1052 if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
1053 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
1055 return cycles;
1056 #undef FLD
1059 static int
1060 model_crisv32_movs_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
1062 #define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
1063 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1064 const IDESC * UNUSED idesc = abuf->idesc;
1065 int cycles = 0;
1067 int referenced = 0;
1068 int UNUSED insn_referenced = abuf->written;
1069 INT in_Rs = -1;
1070 in_Rs = FLD (in_Rs);
1071 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
1072 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1075 int referenced = 0;
1076 int UNUSED insn_referenced = abuf->written;
1077 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
1080 int referenced = 0;
1081 int UNUSED insn_referenced = abuf->written;
1082 INT in_Rd = -1;
1083 INT in_Rs = -1;
1084 INT out_Rd = -1;
1085 in_Rs = FLD (in_Rs);
1086 out_Rd = FLD (out_Rd);
1087 if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
1088 if (insn_referenced & (1 << 7)) referenced |= 1 << 2;
1089 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
1091 return cycles;
1092 #undef FLD
1095 static int
1096 model_crisv32_movs_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
1098 #define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
1099 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1100 const IDESC * UNUSED idesc = abuf->idesc;
1101 int cycles = 0;
1103 int referenced = 0;
1104 int UNUSED insn_referenced = abuf->written;
1105 INT in_Rs = -1;
1106 in_Rs = FLD (in_Rs);
1107 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
1108 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1111 int referenced = 0;
1112 int UNUSED insn_referenced = abuf->written;
1113 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
1116 int referenced = 0;
1117 int UNUSED insn_referenced = abuf->written;
1118 INT in_Rd = -1;
1119 INT in_Rs = -1;
1120 INT out_Rd = -1;
1121 in_Rs = FLD (in_Rs);
1122 out_Rd = FLD (out_Rd);
1123 if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
1124 if (insn_referenced & (1 << 7)) referenced |= 1 << 2;
1125 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
1127 return cycles;
1128 #undef FLD
1131 static int
1132 model_crisv32_movu_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
1134 #define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
1135 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1136 const IDESC * UNUSED idesc = abuf->idesc;
1137 int cycles = 0;
1139 int referenced = 0;
1140 int UNUSED insn_referenced = abuf->written;
1141 INT in_Rs = -1;
1142 in_Rs = FLD (in_Rs);
1143 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
1144 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1147 int referenced = 0;
1148 int UNUSED insn_referenced = abuf->written;
1149 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
1152 int referenced = 0;
1153 int UNUSED insn_referenced = abuf->written;
1154 INT in_Rd = -1;
1155 INT in_Rs = -1;
1156 INT out_Rd = -1;
1157 in_Rs = FLD (in_Rs);
1158 out_Rd = FLD (out_Rd);
1159 if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
1160 if (insn_referenced & (1 << 7)) referenced |= 1 << 2;
1161 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
1163 return cycles;
1164 #undef FLD
1167 static int
1168 model_crisv32_movu_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
1170 #define FLD(f) abuf->fields.sfmt_movs_m_b_m.f
1171 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1172 const IDESC * UNUSED idesc = abuf->idesc;
1173 int cycles = 0;
1175 int referenced = 0;
1176 int UNUSED insn_referenced = abuf->written;
1177 INT in_Rs = -1;
1178 in_Rs = FLD (in_Rs);
1179 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
1180 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1183 int referenced = 0;
1184 int UNUSED insn_referenced = abuf->written;
1185 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
1188 int referenced = 0;
1189 int UNUSED insn_referenced = abuf->written;
1190 INT in_Rd = -1;
1191 INT in_Rs = -1;
1192 INT out_Rd = -1;
1193 in_Rs = FLD (in_Rs);
1194 out_Rd = FLD (out_Rd);
1195 if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
1196 if (insn_referenced & (1 << 7)) referenced |= 1 << 2;
1197 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
1199 return cycles;
1200 #undef FLD
1203 static int
1204 model_crisv32_move_r_sprv32 (SIM_CPU *current_cpu, void *sem_arg)
1206 #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
1207 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1208 const IDESC * UNUSED idesc = abuf->idesc;
1209 int cycles = 0;
1211 int referenced = 0;
1212 int UNUSED insn_referenced = abuf->written;
1213 INT in_Rs = -1;
1214 INT out_Pd = -1;
1215 in_Rs = FLD (in_Rs);
1216 out_Pd = FLD (out_Pd);
1217 referenced |= 1 << 0;
1218 if (insn_referenced & (1 << 2)) referenced |= 1 << 1;
1219 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 0, referenced, in_Rs, out_Pd);
1221 return cycles;
1222 #undef FLD
1225 static int
1226 model_crisv32_move_spr_rv32 (SIM_CPU *current_cpu, void *sem_arg)
1228 #define FLD(f) abuf->fields.sfmt_mcp.f
1229 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1230 const IDESC * UNUSED idesc = abuf->idesc;
1231 int cycles = 0;
1233 int referenced = 0;
1234 int UNUSED insn_referenced = abuf->written;
1235 INT in_Rd = -1;
1236 INT in_Rs = -1;
1237 INT out_Rd = -1;
1238 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
1240 return cycles;
1241 #undef FLD
1244 static int
1245 model_crisv32_move_m_sprv32 (SIM_CPU *current_cpu, void *sem_arg)
1247 #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
1248 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1249 const IDESC * UNUSED idesc = abuf->idesc;
1250 int cycles = 0;
1252 int referenced = 0;
1253 int UNUSED insn_referenced = abuf->written;
1254 INT in_Rs = -1;
1255 in_Rs = FLD (in_Rs);
1256 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
1257 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1260 int referenced = 0;
1261 int UNUSED insn_referenced = abuf->written;
1262 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
1265 int referenced = 0;
1266 int UNUSED insn_referenced = abuf->written;
1267 INT in_Rs = -1;
1268 INT out_Pd = -1;
1269 in_Rs = FLD (in_Rs);
1270 out_Pd = FLD (out_Pd);
1271 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
1272 referenced |= 1 << 1;
1273 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 2, referenced, in_Rs, out_Pd);
1275 return cycles;
1276 #undef FLD
1279 static int
1280 model_crisv32_move_c_sprv32_p2 (SIM_CPU *current_cpu, void *sem_arg)
1282 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1283 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1284 const IDESC * UNUSED idesc = abuf->idesc;
1285 int cycles = 0;
1287 int referenced = 0;
1288 int UNUSED insn_referenced = abuf->written;
1289 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1292 int referenced = 0;
1293 int UNUSED insn_referenced = abuf->written;
1294 INT in_Rs = -1;
1295 INT out_Pd = -1;
1296 out_Pd = FLD (out_Pd);
1297 referenced |= 1 << 1;
1298 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1300 return cycles;
1301 #undef FLD
1304 static int
1305 model_crisv32_move_c_sprv32_p3 (SIM_CPU *current_cpu, void *sem_arg)
1307 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1308 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1309 const IDESC * UNUSED idesc = abuf->idesc;
1310 int cycles = 0;
1312 int referenced = 0;
1313 int UNUSED insn_referenced = abuf->written;
1314 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1317 int referenced = 0;
1318 int UNUSED insn_referenced = abuf->written;
1319 INT in_Rs = -1;
1320 INT out_Pd = -1;
1321 out_Pd = FLD (out_Pd);
1322 referenced |= 1 << 1;
1323 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1325 return cycles;
1326 #undef FLD
1329 static int
1330 model_crisv32_move_c_sprv32_p5 (SIM_CPU *current_cpu, void *sem_arg)
1332 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1333 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1334 const IDESC * UNUSED idesc = abuf->idesc;
1335 int cycles = 0;
1337 int referenced = 0;
1338 int UNUSED insn_referenced = abuf->written;
1339 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1342 int referenced = 0;
1343 int UNUSED insn_referenced = abuf->written;
1344 INT in_Rs = -1;
1345 INT out_Pd = -1;
1346 out_Pd = FLD (out_Pd);
1347 referenced |= 1 << 1;
1348 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1350 return cycles;
1351 #undef FLD
1354 static int
1355 model_crisv32_move_c_sprv32_p6 (SIM_CPU *current_cpu, void *sem_arg)
1357 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1358 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1359 const IDESC * UNUSED idesc = abuf->idesc;
1360 int cycles = 0;
1362 int referenced = 0;
1363 int UNUSED insn_referenced = abuf->written;
1364 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1367 int referenced = 0;
1368 int UNUSED insn_referenced = abuf->written;
1369 INT in_Rs = -1;
1370 INT out_Pd = -1;
1371 out_Pd = FLD (out_Pd);
1372 referenced |= 1 << 1;
1373 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1375 return cycles;
1376 #undef FLD
1379 static int
1380 model_crisv32_move_c_sprv32_p7 (SIM_CPU *current_cpu, void *sem_arg)
1382 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1383 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1384 const IDESC * UNUSED idesc = abuf->idesc;
1385 int cycles = 0;
1387 int referenced = 0;
1388 int UNUSED insn_referenced = abuf->written;
1389 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1392 int referenced = 0;
1393 int UNUSED insn_referenced = abuf->written;
1394 INT in_Rs = -1;
1395 INT out_Pd = -1;
1396 out_Pd = FLD (out_Pd);
1397 referenced |= 1 << 1;
1398 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1400 return cycles;
1401 #undef FLD
1404 static int
1405 model_crisv32_move_c_sprv32_p9 (SIM_CPU *current_cpu, void *sem_arg)
1407 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1408 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1409 const IDESC * UNUSED idesc = abuf->idesc;
1410 int cycles = 0;
1412 int referenced = 0;
1413 int UNUSED insn_referenced = abuf->written;
1414 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1417 int referenced = 0;
1418 int UNUSED insn_referenced = abuf->written;
1419 INT in_Rs = -1;
1420 INT out_Pd = -1;
1421 out_Pd = FLD (out_Pd);
1422 referenced |= 1 << 1;
1423 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1425 return cycles;
1426 #undef FLD
1429 static int
1430 model_crisv32_move_c_sprv32_p10 (SIM_CPU *current_cpu, void *sem_arg)
1432 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1433 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1434 const IDESC * UNUSED idesc = abuf->idesc;
1435 int cycles = 0;
1437 int referenced = 0;
1438 int UNUSED insn_referenced = abuf->written;
1439 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1442 int referenced = 0;
1443 int UNUSED insn_referenced = abuf->written;
1444 INT in_Rs = -1;
1445 INT out_Pd = -1;
1446 out_Pd = FLD (out_Pd);
1447 referenced |= 1 << 1;
1448 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1450 return cycles;
1451 #undef FLD
1454 static int
1455 model_crisv32_move_c_sprv32_p11 (SIM_CPU *current_cpu, void *sem_arg)
1457 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1458 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1459 const IDESC * UNUSED idesc = abuf->idesc;
1460 int cycles = 0;
1462 int referenced = 0;
1463 int UNUSED insn_referenced = abuf->written;
1464 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1467 int referenced = 0;
1468 int UNUSED insn_referenced = abuf->written;
1469 INT in_Rs = -1;
1470 INT out_Pd = -1;
1471 out_Pd = FLD (out_Pd);
1472 referenced |= 1 << 1;
1473 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1475 return cycles;
1476 #undef FLD
1479 static int
1480 model_crisv32_move_c_sprv32_p12 (SIM_CPU *current_cpu, void *sem_arg)
1482 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1483 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1484 const IDESC * UNUSED idesc = abuf->idesc;
1485 int cycles = 0;
1487 int referenced = 0;
1488 int UNUSED insn_referenced = abuf->written;
1489 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1492 int referenced = 0;
1493 int UNUSED insn_referenced = abuf->written;
1494 INT in_Rs = -1;
1495 INT out_Pd = -1;
1496 out_Pd = FLD (out_Pd);
1497 referenced |= 1 << 1;
1498 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1500 return cycles;
1501 #undef FLD
1504 static int
1505 model_crisv32_move_c_sprv32_p13 (SIM_CPU *current_cpu, void *sem_arg)
1507 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1508 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1509 const IDESC * UNUSED idesc = abuf->idesc;
1510 int cycles = 0;
1512 int referenced = 0;
1513 int UNUSED insn_referenced = abuf->written;
1514 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1517 int referenced = 0;
1518 int UNUSED insn_referenced = abuf->written;
1519 INT in_Rs = -1;
1520 INT out_Pd = -1;
1521 out_Pd = FLD (out_Pd);
1522 referenced |= 1 << 1;
1523 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1525 return cycles;
1526 #undef FLD
1529 static int
1530 model_crisv32_move_c_sprv32_p14 (SIM_CPU *current_cpu, void *sem_arg)
1532 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1533 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1534 const IDESC * UNUSED idesc = abuf->idesc;
1535 int cycles = 0;
1537 int referenced = 0;
1538 int UNUSED insn_referenced = abuf->written;
1539 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1542 int referenced = 0;
1543 int UNUSED insn_referenced = abuf->written;
1544 INT in_Rs = -1;
1545 INT out_Pd = -1;
1546 out_Pd = FLD (out_Pd);
1547 referenced |= 1 << 1;
1548 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1550 return cycles;
1551 #undef FLD
1554 static int
1555 model_crisv32_move_c_sprv32_p15 (SIM_CPU *current_cpu, void *sem_arg)
1557 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
1558 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1559 const IDESC * UNUSED idesc = abuf->idesc;
1560 int cycles = 0;
1562 int referenced = 0;
1563 int UNUSED insn_referenced = abuf->written;
1564 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1567 int referenced = 0;
1568 int UNUSED insn_referenced = abuf->written;
1569 INT in_Rs = -1;
1570 INT out_Pd = -1;
1571 out_Pd = FLD (out_Pd);
1572 referenced |= 1 << 1;
1573 cycles += crisv32f_model_crisv32_u_exec_to_sr (current_cpu, idesc, 1, referenced, in_Rs, out_Pd);
1575 return cycles;
1576 #undef FLD
1579 static int
1580 model_crisv32_move_spr_mv32 (SIM_CPU *current_cpu, void *sem_arg)
1582 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
1583 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1584 const IDESC * UNUSED idesc = abuf->idesc;
1585 int cycles = 0;
1587 int referenced = 0;
1588 int UNUSED insn_referenced = abuf->written;
1589 INT in_Rs = -1;
1590 in_Rs = FLD (in_Rs);
1591 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
1592 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1595 int referenced = 0;
1596 int UNUSED insn_referenced = abuf->written;
1597 INT in_Rd = -1;
1598 INT in_Rs = -1;
1599 INT out_Rd = -1;
1600 in_Rs = FLD (in_Rs);
1601 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
1602 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
1605 int referenced = 0;
1606 int UNUSED insn_referenced = abuf->written;
1607 cycles += crisv32f_model_crisv32_u_mem_w (current_cpu, idesc, 2, referenced);
1609 return cycles;
1610 #undef FLD
1613 static int
1614 model_crisv32_move_ss_r (SIM_CPU *current_cpu, void *sem_arg)
1616 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
1617 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1618 const IDESC * UNUSED idesc = abuf->idesc;
1619 int cycles = 0;
1621 int referenced = 0;
1622 int UNUSED insn_referenced = abuf->written;
1623 INT in_Rd = -1;
1624 INT in_Rs = -1;
1625 INT out_Rd = -1;
1626 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
1628 return cycles;
1629 #undef FLD
1632 static int
1633 model_crisv32_move_r_ss (SIM_CPU *current_cpu, void *sem_arg)
1635 #define FLD(f) abuf->fields.sfmt_mcp.f
1636 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1637 const IDESC * UNUSED idesc = abuf->idesc;
1638 int cycles = 0;
1640 int referenced = 0;
1641 int UNUSED insn_referenced = abuf->written;
1642 INT in_Rd = -1;
1643 INT in_Rs = -1;
1644 INT out_Rd = -1;
1645 in_Rs = FLD (in_Rs);
1646 referenced |= 1 << 1;
1647 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
1649 return cycles;
1650 #undef FLD
1653 static int
1654 model_crisv32_movem_r_m_v32 (SIM_CPU *current_cpu, void *sem_arg)
1656 #define FLD(f) abuf->fields.sfmt_movem_r_m_v32.f
1657 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1658 const IDESC * UNUSED idesc = abuf->idesc;
1659 int cycles = 0;
1661 int referenced = 0;
1662 int UNUSED insn_referenced = abuf->written;
1663 INT in_Rs = -1;
1664 in_Rs = FLD (in_Rs);
1665 referenced |= 1 << 0;
1666 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1669 int referenced = 0;
1670 int UNUSED insn_referenced = abuf->written;
1671 INT in_Rs = -1;
1672 INT in_Rd = -1;
1673 in_Rs = FLD (in_Rs);
1674 in_Rd = FLD (in_Rd);
1675 referenced |= 1 << 0;
1676 referenced |= 1 << 1;
1677 cycles += crisv32f_model_crisv32_u_movem_rtom (current_cpu, idesc, 1, referenced, in_Rs, in_Rd);
1680 int referenced = 0;
1681 int UNUSED insn_referenced = abuf->written;
1682 INT in_Rs = -1;
1683 INT out_Rd = -1;
1684 in_Rs = FLD (in_Rs);
1685 referenced |= 1 << 0;
1686 cycles += crisv32f_model_crisv32_u_exec_movem (current_cpu, idesc, 2, referenced, in_Rs, out_Rd);
1689 int referenced = 0;
1690 int UNUSED insn_referenced = abuf->written;
1691 cycles += crisv32f_model_crisv32_u_mem_w (current_cpu, idesc, 3, referenced);
1693 return cycles;
1694 #undef FLD
1697 static int
1698 model_crisv32_movem_m_r_v32 (SIM_CPU *current_cpu, void *sem_arg)
1700 #define FLD(f) abuf->fields.sfmt_movem_m_r_v32.f
1701 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1702 const IDESC * UNUSED idesc = abuf->idesc;
1703 int cycles = 0;
1705 int referenced = 0;
1706 int UNUSED insn_referenced = abuf->written;
1707 INT in_Rs = -1;
1708 in_Rs = FLD (in_Rs);
1709 referenced |= 1 << 0;
1710 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1713 int referenced = 0;
1714 int UNUSED insn_referenced = abuf->written;
1715 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
1718 int referenced = 0;
1719 int UNUSED insn_referenced = abuf->written;
1720 INT in_Rs = -1;
1721 INT in_Rd = -1;
1722 in_Rs = FLD (in_Rs);
1723 in_Rd = FLD (in_Rd);
1724 referenced |= 1 << 0;
1725 referenced |= 1 << 1;
1726 cycles += crisv32f_model_crisv32_u_movem_mtor (current_cpu, idesc, 2, referenced, in_Rs, in_Rd);
1729 int referenced = 0;
1730 int UNUSED insn_referenced = abuf->written;
1731 INT in_Rs = -1;
1732 INT out_Rd = -1;
1733 in_Rs = FLD (in_Rs);
1734 referenced |= 1 << 0;
1735 cycles += crisv32f_model_crisv32_u_exec_movem (current_cpu, idesc, 3, referenced, in_Rs, out_Rd);
1737 return cycles;
1738 #undef FLD
1741 static int
1742 model_crisv32_add_b_r (SIM_CPU *current_cpu, void *sem_arg)
1744 #define FLD(f) abuf->fields.sfmt_addc_m.f
1745 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1746 const IDESC * UNUSED idesc = abuf->idesc;
1747 int cycles = 0;
1749 int referenced = 0;
1750 int UNUSED insn_referenced = abuf->written;
1751 INT in_Rd = -1;
1752 INT in_Rs = -1;
1753 INT out_Rd = -1;
1754 in_Rd = FLD (in_Rd);
1755 in_Rs = FLD (in_Rs);
1756 referenced |= 1 << 0;
1757 referenced |= 1 << 1;
1758 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
1760 return cycles;
1761 #undef FLD
1764 static int
1765 model_crisv32_add_w_r (SIM_CPU *current_cpu, void *sem_arg)
1767 #define FLD(f) abuf->fields.sfmt_addc_m.f
1768 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1769 const IDESC * UNUSED idesc = abuf->idesc;
1770 int cycles = 0;
1772 int referenced = 0;
1773 int UNUSED insn_referenced = abuf->written;
1774 INT in_Rd = -1;
1775 INT in_Rs = -1;
1776 INT out_Rd = -1;
1777 in_Rd = FLD (in_Rd);
1778 in_Rs = FLD (in_Rs);
1779 referenced |= 1 << 0;
1780 referenced |= 1 << 1;
1781 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
1783 return cycles;
1784 #undef FLD
1787 static int
1788 model_crisv32_add_d_r (SIM_CPU *current_cpu, void *sem_arg)
1790 #define FLD(f) abuf->fields.sfmt_addc_m.f
1791 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1792 const IDESC * UNUSED idesc = abuf->idesc;
1793 int cycles = 0;
1795 int referenced = 0;
1796 int UNUSED insn_referenced = abuf->written;
1797 INT in_Rd = -1;
1798 INT in_Rs = -1;
1799 INT out_Rd = -1;
1800 in_Rd = FLD (in_Rd);
1801 in_Rs = FLD (in_Rs);
1802 referenced |= 1 << 0;
1803 referenced |= 1 << 1;
1804 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
1806 return cycles;
1807 #undef FLD
1810 static int
1811 model_crisv32_add_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
1813 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
1814 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1815 const IDESC * UNUSED idesc = abuf->idesc;
1816 int cycles = 0;
1818 int referenced = 0;
1819 int UNUSED insn_referenced = abuf->written;
1820 INT in_Rs = -1;
1821 in_Rs = FLD (in_Rs);
1822 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
1823 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1826 int referenced = 0;
1827 int UNUSED insn_referenced = abuf->written;
1828 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
1831 int referenced = 0;
1832 int UNUSED insn_referenced = abuf->written;
1833 INT in_Rd = -1;
1834 INT in_Rs = -1;
1835 INT out_Rd = -1;
1836 in_Rd = FLD (in_Rd);
1837 in_Rs = FLD (in_Rs);
1838 referenced |= 1 << 0;
1839 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
1840 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
1842 return cycles;
1843 #undef FLD
1846 static int
1847 model_crisv32_add_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
1849 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
1850 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1851 const IDESC * UNUSED idesc = abuf->idesc;
1852 int cycles = 0;
1854 int referenced = 0;
1855 int UNUSED insn_referenced = abuf->written;
1856 INT in_Rs = -1;
1857 in_Rs = FLD (in_Rs);
1858 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
1859 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1862 int referenced = 0;
1863 int UNUSED insn_referenced = abuf->written;
1864 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
1867 int referenced = 0;
1868 int UNUSED insn_referenced = abuf->written;
1869 INT in_Rd = -1;
1870 INT in_Rs = -1;
1871 INT out_Rd = -1;
1872 in_Rd = FLD (in_Rd);
1873 in_Rs = FLD (in_Rs);
1874 referenced |= 1 << 0;
1875 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
1876 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
1878 return cycles;
1879 #undef FLD
1882 static int
1883 model_crisv32_add_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
1885 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
1886 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1887 const IDESC * UNUSED idesc = abuf->idesc;
1888 int cycles = 0;
1890 int referenced = 0;
1891 int UNUSED insn_referenced = abuf->written;
1892 INT in_Rs = -1;
1893 in_Rs = FLD (in_Rs);
1894 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
1895 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
1898 int referenced = 0;
1899 int UNUSED insn_referenced = abuf->written;
1900 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
1903 int referenced = 0;
1904 int UNUSED insn_referenced = abuf->written;
1905 INT in_Rd = -1;
1906 INT in_Rs = -1;
1907 INT out_Rd = -1;
1908 in_Rd = FLD (in_Rd);
1909 in_Rs = FLD (in_Rs);
1910 referenced |= 1 << 0;
1911 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
1912 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
1914 return cycles;
1915 #undef FLD
1918 static int
1919 model_crisv32_addcbr (SIM_CPU *current_cpu, void *sem_arg)
1921 #define FLD(f) abuf->fields.sfmt_addcbr.f
1922 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1923 const IDESC * UNUSED idesc = abuf->idesc;
1924 int cycles = 0;
1926 int referenced = 0;
1927 int UNUSED insn_referenced = abuf->written;
1928 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
1931 int referenced = 0;
1932 int UNUSED insn_referenced = abuf->written;
1933 INT in_Rd = -1;
1934 INT in_Rs = -1;
1935 INT out_Rd = -1;
1936 in_Rd = FLD (in_Rd);
1937 referenced |= 1 << 0;
1938 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
1940 return cycles;
1941 #undef FLD
1944 static int
1945 model_crisv32_addcwr (SIM_CPU *current_cpu, void *sem_arg)
1947 #define FLD(f) abuf->fields.sfmt_addcwr.f
1948 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1949 const IDESC * UNUSED idesc = abuf->idesc;
1950 int cycles = 0;
1952 int referenced = 0;
1953 int UNUSED insn_referenced = abuf->written;
1954 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
1957 int referenced = 0;
1958 int UNUSED insn_referenced = abuf->written;
1959 INT in_Rd = -1;
1960 INT in_Rs = -1;
1961 INT out_Rd = -1;
1962 in_Rd = FLD (in_Rd);
1963 referenced |= 1 << 0;
1964 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
1966 return cycles;
1967 #undef FLD
1970 static int
1971 model_crisv32_addcdr (SIM_CPU *current_cpu, void *sem_arg)
1973 #define FLD(f) abuf->fields.sfmt_addcdr.f
1974 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1975 const IDESC * UNUSED idesc = abuf->idesc;
1976 int cycles = 0;
1978 int referenced = 0;
1979 int UNUSED insn_referenced = abuf->written;
1980 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
1983 int referenced = 0;
1984 int UNUSED insn_referenced = abuf->written;
1985 INT in_Rd = -1;
1986 INT in_Rs = -1;
1987 INT out_Rd = -1;
1988 in_Rd = FLD (in_Rd);
1989 referenced |= 1 << 0;
1990 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
1992 return cycles;
1993 #undef FLD
1996 static int
1997 model_crisv32_adds_b_r (SIM_CPU *current_cpu, void *sem_arg)
1999 #define FLD(f) abuf->fields.sfmt_addc_m.f
2000 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2001 const IDESC * UNUSED idesc = abuf->idesc;
2002 int cycles = 0;
2004 int referenced = 0;
2005 int UNUSED insn_referenced = abuf->written;
2006 INT in_Rd = -1;
2007 INT in_Rs = -1;
2008 INT out_Rd = -1;
2009 in_Rd = FLD (in_Rd);
2010 in_Rs = FLD (in_Rs);
2011 referenced |= 1 << 0;
2012 referenced |= 1 << 1;
2013 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2015 return cycles;
2016 #undef FLD
2019 static int
2020 model_crisv32_adds_w_r (SIM_CPU *current_cpu, void *sem_arg)
2022 #define FLD(f) abuf->fields.sfmt_addc_m.f
2023 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2024 const IDESC * UNUSED idesc = abuf->idesc;
2025 int cycles = 0;
2027 int referenced = 0;
2028 int UNUSED insn_referenced = abuf->written;
2029 INT in_Rd = -1;
2030 INT in_Rs = -1;
2031 INT out_Rd = -1;
2032 in_Rd = FLD (in_Rd);
2033 in_Rs = FLD (in_Rs);
2034 referenced |= 1 << 0;
2035 referenced |= 1 << 1;
2036 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2038 return cycles;
2039 #undef FLD
2042 static int
2043 model_crisv32_adds_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
2045 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2046 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2047 const IDESC * UNUSED idesc = abuf->idesc;
2048 int cycles = 0;
2050 int referenced = 0;
2051 int UNUSED insn_referenced = abuf->written;
2052 INT in_Rs = -1;
2053 in_Rs = FLD (in_Rs);
2054 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2055 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2058 int referenced = 0;
2059 int UNUSED insn_referenced = abuf->written;
2060 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2063 int referenced = 0;
2064 int UNUSED insn_referenced = abuf->written;
2065 INT in_Rd = -1;
2066 INT in_Rs = -1;
2067 INT out_Rd = -1;
2068 in_Rd = FLD (in_Rd);
2069 in_Rs = FLD (in_Rs);
2070 referenced |= 1 << 0;
2071 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2072 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2074 return cycles;
2075 #undef FLD
2078 static int
2079 model_crisv32_adds_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
2081 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2082 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2083 const IDESC * UNUSED idesc = abuf->idesc;
2084 int cycles = 0;
2086 int referenced = 0;
2087 int UNUSED insn_referenced = abuf->written;
2088 INT in_Rs = -1;
2089 in_Rs = FLD (in_Rs);
2090 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2091 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2094 int referenced = 0;
2095 int UNUSED insn_referenced = abuf->written;
2096 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2099 int referenced = 0;
2100 int UNUSED insn_referenced = abuf->written;
2101 INT in_Rd = -1;
2102 INT in_Rs = -1;
2103 INT out_Rd = -1;
2104 in_Rd = FLD (in_Rd);
2105 in_Rs = FLD (in_Rs);
2106 referenced |= 1 << 0;
2107 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2108 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2110 return cycles;
2111 #undef FLD
2114 static int
2115 model_crisv32_addscbr (SIM_CPU *current_cpu, void *sem_arg)
2117 #define FLD(f) abuf->fields.sfmt_addcbr.f
2118 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2119 const IDESC * UNUSED idesc = abuf->idesc;
2120 int cycles = 0;
2122 int referenced = 0;
2123 int UNUSED insn_referenced = abuf->written;
2124 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
2127 int referenced = 0;
2128 int UNUSED insn_referenced = abuf->written;
2129 INT in_Rd = -1;
2130 INT in_Rs = -1;
2131 INT out_Rd = -1;
2132 in_Rd = FLD (in_Rd);
2133 referenced |= 1 << 0;
2134 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
2136 return cycles;
2137 #undef FLD
2140 static int
2141 model_crisv32_addscwr (SIM_CPU *current_cpu, void *sem_arg)
2143 #define FLD(f) abuf->fields.sfmt_addcwr.f
2144 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2145 const IDESC * UNUSED idesc = abuf->idesc;
2146 int cycles = 0;
2148 int referenced = 0;
2149 int UNUSED insn_referenced = abuf->written;
2150 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
2153 int referenced = 0;
2154 int UNUSED insn_referenced = abuf->written;
2155 INT in_Rd = -1;
2156 INT in_Rs = -1;
2157 INT out_Rd = -1;
2158 in_Rd = FLD (in_Rd);
2159 referenced |= 1 << 0;
2160 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
2162 return cycles;
2163 #undef FLD
2166 static int
2167 model_crisv32_addu_b_r (SIM_CPU *current_cpu, void *sem_arg)
2169 #define FLD(f) abuf->fields.sfmt_addc_m.f
2170 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2171 const IDESC * UNUSED idesc = abuf->idesc;
2172 int cycles = 0;
2174 int referenced = 0;
2175 int UNUSED insn_referenced = abuf->written;
2176 INT in_Rd = -1;
2177 INT in_Rs = -1;
2178 INT out_Rd = -1;
2179 in_Rd = FLD (in_Rd);
2180 in_Rs = FLD (in_Rs);
2181 referenced |= 1 << 0;
2182 referenced |= 1 << 1;
2183 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2185 return cycles;
2186 #undef FLD
2189 static int
2190 model_crisv32_addu_w_r (SIM_CPU *current_cpu, void *sem_arg)
2192 #define FLD(f) abuf->fields.sfmt_addc_m.f
2193 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2194 const IDESC * UNUSED idesc = abuf->idesc;
2195 int cycles = 0;
2197 int referenced = 0;
2198 int UNUSED insn_referenced = abuf->written;
2199 INT in_Rd = -1;
2200 INT in_Rs = -1;
2201 INT out_Rd = -1;
2202 in_Rd = FLD (in_Rd);
2203 in_Rs = FLD (in_Rs);
2204 referenced |= 1 << 0;
2205 referenced |= 1 << 1;
2206 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2208 return cycles;
2209 #undef FLD
2212 static int
2213 model_crisv32_addu_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
2215 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2216 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2217 const IDESC * UNUSED idesc = abuf->idesc;
2218 int cycles = 0;
2220 int referenced = 0;
2221 int UNUSED insn_referenced = abuf->written;
2222 INT in_Rs = -1;
2223 in_Rs = FLD (in_Rs);
2224 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2225 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2228 int referenced = 0;
2229 int UNUSED insn_referenced = abuf->written;
2230 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2233 int referenced = 0;
2234 int UNUSED insn_referenced = abuf->written;
2235 INT in_Rd = -1;
2236 INT in_Rs = -1;
2237 INT out_Rd = -1;
2238 in_Rd = FLD (in_Rd);
2239 in_Rs = FLD (in_Rs);
2240 referenced |= 1 << 0;
2241 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2242 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2244 return cycles;
2245 #undef FLD
2248 static int
2249 model_crisv32_addu_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
2251 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2252 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2253 const IDESC * UNUSED idesc = abuf->idesc;
2254 int cycles = 0;
2256 int referenced = 0;
2257 int UNUSED insn_referenced = abuf->written;
2258 INT in_Rs = -1;
2259 in_Rs = FLD (in_Rs);
2260 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2261 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2264 int referenced = 0;
2265 int UNUSED insn_referenced = abuf->written;
2266 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2269 int referenced = 0;
2270 int UNUSED insn_referenced = abuf->written;
2271 INT in_Rd = -1;
2272 INT in_Rs = -1;
2273 INT out_Rd = -1;
2274 in_Rd = FLD (in_Rd);
2275 in_Rs = FLD (in_Rs);
2276 referenced |= 1 << 0;
2277 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2278 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2280 return cycles;
2281 #undef FLD
2284 static int
2285 model_crisv32_adducbr (SIM_CPU *current_cpu, void *sem_arg)
2287 #define FLD(f) abuf->fields.sfmt_addcbr.f
2288 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2289 const IDESC * UNUSED idesc = abuf->idesc;
2290 int cycles = 0;
2292 int referenced = 0;
2293 int UNUSED insn_referenced = abuf->written;
2294 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
2297 int referenced = 0;
2298 int UNUSED insn_referenced = abuf->written;
2299 INT in_Rd = -1;
2300 INT in_Rs = -1;
2301 INT out_Rd = -1;
2302 in_Rd = FLD (in_Rd);
2303 referenced |= 1 << 0;
2304 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
2306 return cycles;
2307 #undef FLD
2310 static int
2311 model_crisv32_adducwr (SIM_CPU *current_cpu, void *sem_arg)
2313 #define FLD(f) abuf->fields.sfmt_addcwr.f
2314 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2315 const IDESC * UNUSED idesc = abuf->idesc;
2316 int cycles = 0;
2318 int referenced = 0;
2319 int UNUSED insn_referenced = abuf->written;
2320 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
2323 int referenced = 0;
2324 int UNUSED insn_referenced = abuf->written;
2325 INT in_Rd = -1;
2326 INT in_Rs = -1;
2327 INT out_Rd = -1;
2328 in_Rd = FLD (in_Rd);
2329 referenced |= 1 << 0;
2330 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
2332 return cycles;
2333 #undef FLD
2336 static int
2337 model_crisv32_sub_b_r (SIM_CPU *current_cpu, void *sem_arg)
2339 #define FLD(f) abuf->fields.sfmt_addc_m.f
2340 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2341 const IDESC * UNUSED idesc = abuf->idesc;
2342 int cycles = 0;
2344 int referenced = 0;
2345 int UNUSED insn_referenced = abuf->written;
2346 INT in_Rd = -1;
2347 INT in_Rs = -1;
2348 INT out_Rd = -1;
2349 in_Rd = FLD (in_Rd);
2350 in_Rs = FLD (in_Rs);
2351 referenced |= 1 << 0;
2352 referenced |= 1 << 1;
2353 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2355 return cycles;
2356 #undef FLD
2359 static int
2360 model_crisv32_sub_w_r (SIM_CPU *current_cpu, void *sem_arg)
2362 #define FLD(f) abuf->fields.sfmt_addc_m.f
2363 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2364 const IDESC * UNUSED idesc = abuf->idesc;
2365 int cycles = 0;
2367 int referenced = 0;
2368 int UNUSED insn_referenced = abuf->written;
2369 INT in_Rd = -1;
2370 INT in_Rs = -1;
2371 INT out_Rd = -1;
2372 in_Rd = FLD (in_Rd);
2373 in_Rs = FLD (in_Rs);
2374 referenced |= 1 << 0;
2375 referenced |= 1 << 1;
2376 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2378 return cycles;
2379 #undef FLD
2382 static int
2383 model_crisv32_sub_d_r (SIM_CPU *current_cpu, void *sem_arg)
2385 #define FLD(f) abuf->fields.sfmt_addc_m.f
2386 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2387 const IDESC * UNUSED idesc = abuf->idesc;
2388 int cycles = 0;
2390 int referenced = 0;
2391 int UNUSED insn_referenced = abuf->written;
2392 INT in_Rd = -1;
2393 INT in_Rs = -1;
2394 INT out_Rd = -1;
2395 in_Rd = FLD (in_Rd);
2396 in_Rs = FLD (in_Rs);
2397 referenced |= 1 << 0;
2398 referenced |= 1 << 1;
2399 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2401 return cycles;
2402 #undef FLD
2405 static int
2406 model_crisv32_sub_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
2408 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2409 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2410 const IDESC * UNUSED idesc = abuf->idesc;
2411 int cycles = 0;
2413 int referenced = 0;
2414 int UNUSED insn_referenced = abuf->written;
2415 INT in_Rs = -1;
2416 in_Rs = FLD (in_Rs);
2417 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2418 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2421 int referenced = 0;
2422 int UNUSED insn_referenced = abuf->written;
2423 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2426 int referenced = 0;
2427 int UNUSED insn_referenced = abuf->written;
2428 INT in_Rd = -1;
2429 INT in_Rs = -1;
2430 INT out_Rd = -1;
2431 in_Rd = FLD (in_Rd);
2432 in_Rs = FLD (in_Rs);
2433 referenced |= 1 << 0;
2434 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2435 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2437 return cycles;
2438 #undef FLD
2441 static int
2442 model_crisv32_sub_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
2444 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2445 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2446 const IDESC * UNUSED idesc = abuf->idesc;
2447 int cycles = 0;
2449 int referenced = 0;
2450 int UNUSED insn_referenced = abuf->written;
2451 INT in_Rs = -1;
2452 in_Rs = FLD (in_Rs);
2453 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2454 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2457 int referenced = 0;
2458 int UNUSED insn_referenced = abuf->written;
2459 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2462 int referenced = 0;
2463 int UNUSED insn_referenced = abuf->written;
2464 INT in_Rd = -1;
2465 INT in_Rs = -1;
2466 INT out_Rd = -1;
2467 in_Rd = FLD (in_Rd);
2468 in_Rs = FLD (in_Rs);
2469 referenced |= 1 << 0;
2470 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2471 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2473 return cycles;
2474 #undef FLD
2477 static int
2478 model_crisv32_sub_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
2480 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2481 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2482 const IDESC * UNUSED idesc = abuf->idesc;
2483 int cycles = 0;
2485 int referenced = 0;
2486 int UNUSED insn_referenced = abuf->written;
2487 INT in_Rs = -1;
2488 in_Rs = FLD (in_Rs);
2489 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2490 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2493 int referenced = 0;
2494 int UNUSED insn_referenced = abuf->written;
2495 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2498 int referenced = 0;
2499 int UNUSED insn_referenced = abuf->written;
2500 INT in_Rd = -1;
2501 INT in_Rs = -1;
2502 INT out_Rd = -1;
2503 in_Rd = FLD (in_Rd);
2504 in_Rs = FLD (in_Rs);
2505 referenced |= 1 << 0;
2506 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2507 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2509 return cycles;
2510 #undef FLD
2513 static int
2514 model_crisv32_subcbr (SIM_CPU *current_cpu, void *sem_arg)
2516 #define FLD(f) abuf->fields.sfmt_addcbr.f
2517 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2518 const IDESC * UNUSED idesc = abuf->idesc;
2519 int cycles = 0;
2521 int referenced = 0;
2522 int UNUSED insn_referenced = abuf->written;
2523 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
2526 int referenced = 0;
2527 int UNUSED insn_referenced = abuf->written;
2528 INT in_Rd = -1;
2529 INT in_Rs = -1;
2530 INT out_Rd = -1;
2531 in_Rd = FLD (in_Rd);
2532 referenced |= 1 << 0;
2533 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
2535 return cycles;
2536 #undef FLD
2539 static int
2540 model_crisv32_subcwr (SIM_CPU *current_cpu, void *sem_arg)
2542 #define FLD(f) abuf->fields.sfmt_addcwr.f
2543 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2544 const IDESC * UNUSED idesc = abuf->idesc;
2545 int cycles = 0;
2547 int referenced = 0;
2548 int UNUSED insn_referenced = abuf->written;
2549 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
2552 int referenced = 0;
2553 int UNUSED insn_referenced = abuf->written;
2554 INT in_Rd = -1;
2555 INT in_Rs = -1;
2556 INT out_Rd = -1;
2557 in_Rd = FLD (in_Rd);
2558 referenced |= 1 << 0;
2559 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
2561 return cycles;
2562 #undef FLD
2565 static int
2566 model_crisv32_subcdr (SIM_CPU *current_cpu, void *sem_arg)
2568 #define FLD(f) abuf->fields.sfmt_addcdr.f
2569 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2570 const IDESC * UNUSED idesc = abuf->idesc;
2571 int cycles = 0;
2573 int referenced = 0;
2574 int UNUSED insn_referenced = abuf->written;
2575 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
2578 int referenced = 0;
2579 int UNUSED insn_referenced = abuf->written;
2580 INT in_Rd = -1;
2581 INT in_Rs = -1;
2582 INT out_Rd = -1;
2583 in_Rd = FLD (in_Rd);
2584 referenced |= 1 << 0;
2585 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
2587 return cycles;
2588 #undef FLD
2591 static int
2592 model_crisv32_subs_b_r (SIM_CPU *current_cpu, void *sem_arg)
2594 #define FLD(f) abuf->fields.sfmt_addc_m.f
2595 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2596 const IDESC * UNUSED idesc = abuf->idesc;
2597 int cycles = 0;
2599 int referenced = 0;
2600 int UNUSED insn_referenced = abuf->written;
2601 INT in_Rd = -1;
2602 INT in_Rs = -1;
2603 INT out_Rd = -1;
2604 in_Rd = FLD (in_Rd);
2605 in_Rs = FLD (in_Rs);
2606 referenced |= 1 << 0;
2607 referenced |= 1 << 1;
2608 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2610 return cycles;
2611 #undef FLD
2614 static int
2615 model_crisv32_subs_w_r (SIM_CPU *current_cpu, void *sem_arg)
2617 #define FLD(f) abuf->fields.sfmt_addc_m.f
2618 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2619 const IDESC * UNUSED idesc = abuf->idesc;
2620 int cycles = 0;
2622 int referenced = 0;
2623 int UNUSED insn_referenced = abuf->written;
2624 INT in_Rd = -1;
2625 INT in_Rs = -1;
2626 INT out_Rd = -1;
2627 in_Rd = FLD (in_Rd);
2628 in_Rs = FLD (in_Rs);
2629 referenced |= 1 << 0;
2630 referenced |= 1 << 1;
2631 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2633 return cycles;
2634 #undef FLD
2637 static int
2638 model_crisv32_subs_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
2640 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2641 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2642 const IDESC * UNUSED idesc = abuf->idesc;
2643 int cycles = 0;
2645 int referenced = 0;
2646 int UNUSED insn_referenced = abuf->written;
2647 INT in_Rs = -1;
2648 in_Rs = FLD (in_Rs);
2649 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2650 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2653 int referenced = 0;
2654 int UNUSED insn_referenced = abuf->written;
2655 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2658 int referenced = 0;
2659 int UNUSED insn_referenced = abuf->written;
2660 INT in_Rd = -1;
2661 INT in_Rs = -1;
2662 INT out_Rd = -1;
2663 in_Rd = FLD (in_Rd);
2664 in_Rs = FLD (in_Rs);
2665 referenced |= 1 << 0;
2666 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2667 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2669 return cycles;
2670 #undef FLD
2673 static int
2674 model_crisv32_subs_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
2676 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2677 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2678 const IDESC * UNUSED idesc = abuf->idesc;
2679 int cycles = 0;
2681 int referenced = 0;
2682 int UNUSED insn_referenced = abuf->written;
2683 INT in_Rs = -1;
2684 in_Rs = FLD (in_Rs);
2685 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2686 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2689 int referenced = 0;
2690 int UNUSED insn_referenced = abuf->written;
2691 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2694 int referenced = 0;
2695 int UNUSED insn_referenced = abuf->written;
2696 INT in_Rd = -1;
2697 INT in_Rs = -1;
2698 INT out_Rd = -1;
2699 in_Rd = FLD (in_Rd);
2700 in_Rs = FLD (in_Rs);
2701 referenced |= 1 << 0;
2702 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2703 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2705 return cycles;
2706 #undef FLD
2709 static int
2710 model_crisv32_subscbr (SIM_CPU *current_cpu, void *sem_arg)
2712 #define FLD(f) abuf->fields.sfmt_addcbr.f
2713 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2714 const IDESC * UNUSED idesc = abuf->idesc;
2715 int cycles = 0;
2717 int referenced = 0;
2718 int UNUSED insn_referenced = abuf->written;
2719 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
2722 int referenced = 0;
2723 int UNUSED insn_referenced = abuf->written;
2724 INT in_Rd = -1;
2725 INT in_Rs = -1;
2726 INT out_Rd = -1;
2727 in_Rd = FLD (in_Rd);
2728 referenced |= 1 << 0;
2729 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
2731 return cycles;
2732 #undef FLD
2735 static int
2736 model_crisv32_subscwr (SIM_CPU *current_cpu, void *sem_arg)
2738 #define FLD(f) abuf->fields.sfmt_addcwr.f
2739 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2740 const IDESC * UNUSED idesc = abuf->idesc;
2741 int cycles = 0;
2743 int referenced = 0;
2744 int UNUSED insn_referenced = abuf->written;
2745 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
2748 int referenced = 0;
2749 int UNUSED insn_referenced = abuf->written;
2750 INT in_Rd = -1;
2751 INT in_Rs = -1;
2752 INT out_Rd = -1;
2753 in_Rd = FLD (in_Rd);
2754 referenced |= 1 << 0;
2755 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
2757 return cycles;
2758 #undef FLD
2761 static int
2762 model_crisv32_subu_b_r (SIM_CPU *current_cpu, void *sem_arg)
2764 #define FLD(f) abuf->fields.sfmt_addc_m.f
2765 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2766 const IDESC * UNUSED idesc = abuf->idesc;
2767 int cycles = 0;
2769 int referenced = 0;
2770 int UNUSED insn_referenced = abuf->written;
2771 INT in_Rd = -1;
2772 INT in_Rs = -1;
2773 INT out_Rd = -1;
2774 in_Rd = FLD (in_Rd);
2775 in_Rs = FLD (in_Rs);
2776 referenced |= 1 << 0;
2777 referenced |= 1 << 1;
2778 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2780 return cycles;
2781 #undef FLD
2784 static int
2785 model_crisv32_subu_w_r (SIM_CPU *current_cpu, void *sem_arg)
2787 #define FLD(f) abuf->fields.sfmt_addc_m.f
2788 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2789 const IDESC * UNUSED idesc = abuf->idesc;
2790 int cycles = 0;
2792 int referenced = 0;
2793 int UNUSED insn_referenced = abuf->written;
2794 INT in_Rd = -1;
2795 INT in_Rs = -1;
2796 INT out_Rd = -1;
2797 in_Rd = FLD (in_Rd);
2798 in_Rs = FLD (in_Rs);
2799 referenced |= 1 << 0;
2800 referenced |= 1 << 1;
2801 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2803 return cycles;
2804 #undef FLD
2807 static int
2808 model_crisv32_subu_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
2810 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2811 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2812 const IDESC * UNUSED idesc = abuf->idesc;
2813 int cycles = 0;
2815 int referenced = 0;
2816 int UNUSED insn_referenced = abuf->written;
2817 INT in_Rs = -1;
2818 in_Rs = FLD (in_Rs);
2819 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2820 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2823 int referenced = 0;
2824 int UNUSED insn_referenced = abuf->written;
2825 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2828 int referenced = 0;
2829 int UNUSED insn_referenced = abuf->written;
2830 INT in_Rd = -1;
2831 INT in_Rs = -1;
2832 INT out_Rd = -1;
2833 in_Rd = FLD (in_Rd);
2834 in_Rs = FLD (in_Rs);
2835 referenced |= 1 << 0;
2836 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2837 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2839 return cycles;
2840 #undef FLD
2843 static int
2844 model_crisv32_subu_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
2846 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
2847 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2848 const IDESC * UNUSED idesc = abuf->idesc;
2849 int cycles = 0;
2851 int referenced = 0;
2852 int UNUSED insn_referenced = abuf->written;
2853 INT in_Rs = -1;
2854 in_Rs = FLD (in_Rs);
2855 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2856 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2859 int referenced = 0;
2860 int UNUSED insn_referenced = abuf->written;
2861 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2864 int referenced = 0;
2865 int UNUSED insn_referenced = abuf->written;
2866 INT in_Rd = -1;
2867 INT in_Rs = -1;
2868 INT out_Rd = -1;
2869 in_Rd = FLD (in_Rd);
2870 in_Rs = FLD (in_Rs);
2871 referenced |= 1 << 0;
2872 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2873 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2875 return cycles;
2876 #undef FLD
2879 static int
2880 model_crisv32_subucbr (SIM_CPU *current_cpu, void *sem_arg)
2882 #define FLD(f) abuf->fields.sfmt_addcbr.f
2883 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2884 const IDESC * UNUSED idesc = abuf->idesc;
2885 int cycles = 0;
2887 int referenced = 0;
2888 int UNUSED insn_referenced = abuf->written;
2889 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
2892 int referenced = 0;
2893 int UNUSED insn_referenced = abuf->written;
2894 INT in_Rd = -1;
2895 INT in_Rs = -1;
2896 INT out_Rd = -1;
2897 in_Rd = FLD (in_Rd);
2898 referenced |= 1 << 0;
2899 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
2901 return cycles;
2902 #undef FLD
2905 static int
2906 model_crisv32_subucwr (SIM_CPU *current_cpu, void *sem_arg)
2908 #define FLD(f) abuf->fields.sfmt_addcwr.f
2909 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2910 const IDESC * UNUSED idesc = abuf->idesc;
2911 int cycles = 0;
2913 int referenced = 0;
2914 int UNUSED insn_referenced = abuf->written;
2915 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
2918 int referenced = 0;
2919 int UNUSED insn_referenced = abuf->written;
2920 INT in_Rd = -1;
2921 INT in_Rs = -1;
2922 INT out_Rd = -1;
2923 in_Rd = FLD (in_Rd);
2924 referenced |= 1 << 0;
2925 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
2927 return cycles;
2928 #undef FLD
2931 static int
2932 model_crisv32_addc_r (SIM_CPU *current_cpu, void *sem_arg)
2934 #define FLD(f) abuf->fields.sfmt_addc_m.f
2935 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2936 const IDESC * UNUSED idesc = abuf->idesc;
2937 int cycles = 0;
2939 int referenced = 0;
2940 int UNUSED insn_referenced = abuf->written;
2941 INT in_Rd = -1;
2942 INT in_Rs = -1;
2943 INT out_Rd = -1;
2944 in_Rd = FLD (in_Rd);
2945 in_Rs = FLD (in_Rs);
2946 referenced |= 1 << 0;
2947 referenced |= 1 << 1;
2948 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
2950 return cycles;
2951 #undef FLD
2954 static int
2955 model_crisv32_addc_m (SIM_CPU *current_cpu, void *sem_arg)
2957 #define FLD(f) abuf->fields.sfmt_addc_m.f
2958 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2959 const IDESC * UNUSED idesc = abuf->idesc;
2960 int cycles = 0;
2962 int referenced = 0;
2963 int UNUSED insn_referenced = abuf->written;
2964 INT in_Rs = -1;
2965 in_Rs = FLD (in_Rs);
2966 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
2967 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
2970 int referenced = 0;
2971 int UNUSED insn_referenced = abuf->written;
2972 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
2975 int referenced = 0;
2976 int UNUSED insn_referenced = abuf->written;
2977 INT in_Rd = -1;
2978 INT in_Rs = -1;
2979 INT out_Rd = -1;
2980 in_Rd = FLD (in_Rd);
2981 in_Rs = FLD (in_Rs);
2982 referenced |= 1 << 0;
2983 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
2984 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
2986 return cycles;
2987 #undef FLD
2990 static int
2991 model_crisv32_addc_c (SIM_CPU *current_cpu, void *sem_arg)
2993 #define FLD(f) abuf->fields.sfmt_addcdr.f
2994 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2995 const IDESC * UNUSED idesc = abuf->idesc;
2996 int cycles = 0;
2998 int referenced = 0;
2999 int UNUSED insn_referenced = abuf->written;
3000 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
3003 int referenced = 0;
3004 int UNUSED insn_referenced = abuf->written;
3005 INT in_Rd = -1;
3006 INT in_Rs = -1;
3007 INT out_Rd = -1;
3008 in_Rd = FLD (in_Rd);
3009 referenced |= 1 << 0;
3010 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3012 return cycles;
3013 #undef FLD
3016 static int
3017 model_crisv32_lapc_d (SIM_CPU *current_cpu, void *sem_arg)
3019 #define FLD(f) abuf->fields.sfmt_lapc_d.f
3020 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3021 const IDESC * UNUSED idesc = abuf->idesc;
3022 int cycles = 0;
3024 int referenced = 0;
3025 int UNUSED insn_referenced = abuf->written;
3026 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
3029 int referenced = 0;
3030 int UNUSED insn_referenced = abuf->written;
3031 INT in_Rd = -1;
3032 INT in_Rs = -1;
3033 INT out_Rd = -1;
3034 out_Rd = FLD (out_Rd);
3035 referenced |= 1 << 2;
3036 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3038 return cycles;
3039 #undef FLD
3042 static int
3043 model_crisv32_lapcq (SIM_CPU *current_cpu, void *sem_arg)
3045 #define FLD(f) abuf->fields.sfmt_lapcq.f
3046 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3047 const IDESC * UNUSED idesc = abuf->idesc;
3048 int cycles = 0;
3050 int referenced = 0;
3051 int UNUSED insn_referenced = abuf->written;
3052 INT in_Rd = -1;
3053 INT in_Rs = -1;
3054 INT out_Rd = -1;
3055 out_Rd = FLD (out_Rd);
3056 referenced |= 1 << 2;
3057 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3059 return cycles;
3060 #undef FLD
3063 static int
3064 model_crisv32_addi_b_r (SIM_CPU *current_cpu, void *sem_arg)
3066 #define FLD(f) abuf->fields.sfmt_addc_m.f
3067 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3068 const IDESC * UNUSED idesc = abuf->idesc;
3069 int cycles = 0;
3071 int referenced = 0;
3072 int UNUSED insn_referenced = abuf->written;
3073 INT in_Rd = -1;
3074 INT in_Rs = -1;
3075 INT out_Rd = -1;
3076 in_Rd = FLD (in_Rd);
3077 in_Rs = FLD (in_Rs);
3078 referenced |= 1 << 0;
3079 referenced |= 1 << 1;
3080 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3082 return cycles;
3083 #undef FLD
3086 static int
3087 model_crisv32_addi_w_r (SIM_CPU *current_cpu, void *sem_arg)
3089 #define FLD(f) abuf->fields.sfmt_addc_m.f
3090 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3091 const IDESC * UNUSED idesc = abuf->idesc;
3092 int cycles = 0;
3094 int referenced = 0;
3095 int UNUSED insn_referenced = abuf->written;
3096 INT in_Rd = -1;
3097 INT in_Rs = -1;
3098 INT out_Rd = -1;
3099 in_Rd = FLD (in_Rd);
3100 in_Rs = FLD (in_Rs);
3101 referenced |= 1 << 0;
3102 referenced |= 1 << 1;
3103 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3105 return cycles;
3106 #undef FLD
3109 static int
3110 model_crisv32_addi_d_r (SIM_CPU *current_cpu, void *sem_arg)
3112 #define FLD(f) abuf->fields.sfmt_addc_m.f
3113 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3114 const IDESC * UNUSED idesc = abuf->idesc;
3115 int cycles = 0;
3117 int referenced = 0;
3118 int UNUSED insn_referenced = abuf->written;
3119 INT in_Rd = -1;
3120 INT in_Rs = -1;
3121 INT out_Rd = -1;
3122 in_Rd = FLD (in_Rd);
3123 in_Rs = FLD (in_Rs);
3124 referenced |= 1 << 0;
3125 referenced |= 1 << 1;
3126 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3128 return cycles;
3129 #undef FLD
3132 static int
3133 model_crisv32_neg_b_r (SIM_CPU *current_cpu, void *sem_arg)
3135 #define FLD(f) abuf->fields.sfmt_addc_m.f
3136 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3137 const IDESC * UNUSED idesc = abuf->idesc;
3138 int cycles = 0;
3140 int referenced = 0;
3141 int UNUSED insn_referenced = abuf->written;
3142 INT in_Rd = -1;
3143 INT in_Rs = -1;
3144 INT out_Rd = -1;
3145 in_Rs = FLD (in_Rs);
3146 referenced |= 1 << 1;
3147 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3149 return cycles;
3150 #undef FLD
3153 static int
3154 model_crisv32_neg_w_r (SIM_CPU *current_cpu, void *sem_arg)
3156 #define FLD(f) abuf->fields.sfmt_addc_m.f
3157 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3158 const IDESC * UNUSED idesc = abuf->idesc;
3159 int cycles = 0;
3161 int referenced = 0;
3162 int UNUSED insn_referenced = abuf->written;
3163 INT in_Rd = -1;
3164 INT in_Rs = -1;
3165 INT out_Rd = -1;
3166 in_Rs = FLD (in_Rs);
3167 referenced |= 1 << 1;
3168 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3170 return cycles;
3171 #undef FLD
3174 static int
3175 model_crisv32_neg_d_r (SIM_CPU *current_cpu, void *sem_arg)
3177 #define FLD(f) abuf->fields.sfmt_addc_m.f
3178 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3179 const IDESC * UNUSED idesc = abuf->idesc;
3180 int cycles = 0;
3182 int referenced = 0;
3183 int UNUSED insn_referenced = abuf->written;
3184 INT in_Rd = -1;
3185 INT in_Rs = -1;
3186 INT out_Rd = -1;
3187 in_Rs = FLD (in_Rs);
3188 referenced |= 1 << 1;
3189 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3191 return cycles;
3192 #undef FLD
3195 static int
3196 model_crisv32_test_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
3198 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
3199 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3200 const IDESC * UNUSED idesc = abuf->idesc;
3201 int cycles = 0;
3203 int referenced = 0;
3204 int UNUSED insn_referenced = abuf->written;
3205 INT in_Rs = -1;
3206 in_Rs = FLD (in_Rs);
3207 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
3208 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
3211 int referenced = 0;
3212 int UNUSED insn_referenced = abuf->written;
3213 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
3216 int referenced = 0;
3217 int UNUSED insn_referenced = abuf->written;
3218 INT in_Rd = -1;
3219 INT in_Rs = -1;
3220 INT out_Rd = -1;
3221 in_Rs = FLD (in_Rs);
3222 if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
3223 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
3225 return cycles;
3226 #undef FLD
3229 static int
3230 model_crisv32_test_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
3232 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
3233 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3234 const IDESC * UNUSED idesc = abuf->idesc;
3235 int cycles = 0;
3237 int referenced = 0;
3238 int UNUSED insn_referenced = abuf->written;
3239 INT in_Rs = -1;
3240 in_Rs = FLD (in_Rs);
3241 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
3242 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
3245 int referenced = 0;
3246 int UNUSED insn_referenced = abuf->written;
3247 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
3250 int referenced = 0;
3251 int UNUSED insn_referenced = abuf->written;
3252 INT in_Rd = -1;
3253 INT in_Rs = -1;
3254 INT out_Rd = -1;
3255 in_Rs = FLD (in_Rs);
3256 if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
3257 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
3259 return cycles;
3260 #undef FLD
3263 static int
3264 model_crisv32_test_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
3266 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
3267 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3268 const IDESC * UNUSED idesc = abuf->idesc;
3269 int cycles = 0;
3271 int referenced = 0;
3272 int UNUSED insn_referenced = abuf->written;
3273 INT in_Rs = -1;
3274 in_Rs = FLD (in_Rs);
3275 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
3276 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
3279 int referenced = 0;
3280 int UNUSED insn_referenced = abuf->written;
3281 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
3284 int referenced = 0;
3285 int UNUSED insn_referenced = abuf->written;
3286 INT in_Rd = -1;
3287 INT in_Rs = -1;
3288 INT out_Rd = -1;
3289 in_Rs = FLD (in_Rs);
3290 if (insn_referenced & (1 << 0)) referenced |= 1 << 1;
3291 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
3293 return cycles;
3294 #undef FLD
3297 static int
3298 model_crisv32_move_r_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
3300 #define FLD(f) abuf->fields.sfmt_addc_m.f
3301 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3302 const IDESC * UNUSED idesc = abuf->idesc;
3303 int cycles = 0;
3305 int referenced = 0;
3306 int UNUSED insn_referenced = abuf->written;
3307 INT in_Rs = -1;
3308 in_Rs = FLD (in_Rs);
3309 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
3310 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
3313 int referenced = 0;
3314 int UNUSED insn_referenced = abuf->written;
3315 INT in_Rd = -1;
3316 INT in_Rs = -1;
3317 INT out_Rd = -1;
3318 in_Rd = FLD (in_Rd);
3319 in_Rs = FLD (in_Rs);
3320 referenced |= 1 << 0;
3321 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
3322 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3325 int referenced = 0;
3326 int UNUSED insn_referenced = abuf->written;
3327 cycles += crisv32f_model_crisv32_u_mem_w (current_cpu, idesc, 2, referenced);
3329 return cycles;
3330 #undef FLD
3333 static int
3334 model_crisv32_move_r_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
3336 #define FLD(f) abuf->fields.sfmt_addc_m.f
3337 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3338 const IDESC * UNUSED idesc = abuf->idesc;
3339 int cycles = 0;
3341 int referenced = 0;
3342 int UNUSED insn_referenced = abuf->written;
3343 INT in_Rs = -1;
3344 in_Rs = FLD (in_Rs);
3345 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
3346 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
3349 int referenced = 0;
3350 int UNUSED insn_referenced = abuf->written;
3351 INT in_Rd = -1;
3352 INT in_Rs = -1;
3353 INT out_Rd = -1;
3354 in_Rd = FLD (in_Rd);
3355 in_Rs = FLD (in_Rs);
3356 referenced |= 1 << 0;
3357 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
3358 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3361 int referenced = 0;
3362 int UNUSED insn_referenced = abuf->written;
3363 cycles += crisv32f_model_crisv32_u_mem_w (current_cpu, idesc, 2, referenced);
3365 return cycles;
3366 #undef FLD
3369 static int
3370 model_crisv32_move_r_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
3372 #define FLD(f) abuf->fields.sfmt_addc_m.f
3373 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3374 const IDESC * UNUSED idesc = abuf->idesc;
3375 int cycles = 0;
3377 int referenced = 0;
3378 int UNUSED insn_referenced = abuf->written;
3379 INT in_Rs = -1;
3380 in_Rs = FLD (in_Rs);
3381 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
3382 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
3385 int referenced = 0;
3386 int UNUSED insn_referenced = abuf->written;
3387 INT in_Rd = -1;
3388 INT in_Rs = -1;
3389 INT out_Rd = -1;
3390 in_Rd = FLD (in_Rd);
3391 in_Rs = FLD (in_Rs);
3392 referenced |= 1 << 0;
3393 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
3394 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3397 int referenced = 0;
3398 int UNUSED insn_referenced = abuf->written;
3399 cycles += crisv32f_model_crisv32_u_mem_w (current_cpu, idesc, 2, referenced);
3401 return cycles;
3402 #undef FLD
3405 static int
3406 model_crisv32_muls_b (SIM_CPU *current_cpu, void *sem_arg)
3408 #define FLD(f) abuf->fields.sfmt_muls_b.f
3409 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3410 const IDESC * UNUSED idesc = abuf->idesc;
3411 int cycles = 0;
3413 int referenced = 0;
3414 int UNUSED insn_referenced = abuf->written;
3415 INT in_Rs = -1;
3416 INT in_Rd = -1;
3417 in_Rs = FLD (in_Rs);
3418 in_Rd = FLD (in_Rd);
3419 referenced |= 1 << 0;
3420 referenced |= 1 << 1;
3421 cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd);
3424 int referenced = 0;
3425 int UNUSED insn_referenced = abuf->written;
3426 INT in_Rd = -1;
3427 INT in_Rs = -1;
3428 INT out_Rd = -1;
3429 in_Rd = FLD (in_Rd);
3430 in_Rs = FLD (in_Rs);
3431 out_Rd = FLD (out_Rd);
3432 referenced |= 1 << 0;
3433 referenced |= 1 << 1;
3434 referenced |= 1 << 2;
3435 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3437 return cycles;
3438 #undef FLD
3441 static int
3442 model_crisv32_muls_w (SIM_CPU *current_cpu, void *sem_arg)
3444 #define FLD(f) abuf->fields.sfmt_muls_b.f
3445 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3446 const IDESC * UNUSED idesc = abuf->idesc;
3447 int cycles = 0;
3449 int referenced = 0;
3450 int UNUSED insn_referenced = abuf->written;
3451 INT in_Rs = -1;
3452 INT in_Rd = -1;
3453 in_Rs = FLD (in_Rs);
3454 in_Rd = FLD (in_Rd);
3455 referenced |= 1 << 0;
3456 referenced |= 1 << 1;
3457 cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd);
3460 int referenced = 0;
3461 int UNUSED insn_referenced = abuf->written;
3462 INT in_Rd = -1;
3463 INT in_Rs = -1;
3464 INT out_Rd = -1;
3465 in_Rd = FLD (in_Rd);
3466 in_Rs = FLD (in_Rs);
3467 out_Rd = FLD (out_Rd);
3468 referenced |= 1 << 0;
3469 referenced |= 1 << 1;
3470 referenced |= 1 << 2;
3471 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3473 return cycles;
3474 #undef FLD
3477 static int
3478 model_crisv32_muls_d (SIM_CPU *current_cpu, void *sem_arg)
3480 #define FLD(f) abuf->fields.sfmt_muls_b.f
3481 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3482 const IDESC * UNUSED idesc = abuf->idesc;
3483 int cycles = 0;
3485 int referenced = 0;
3486 int UNUSED insn_referenced = abuf->written;
3487 INT in_Rs = -1;
3488 INT in_Rd = -1;
3489 in_Rs = FLD (in_Rs);
3490 in_Rd = FLD (in_Rd);
3491 referenced |= 1 << 0;
3492 referenced |= 1 << 1;
3493 cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd);
3496 int referenced = 0;
3497 int UNUSED insn_referenced = abuf->written;
3498 INT in_Rd = -1;
3499 INT in_Rs = -1;
3500 INT out_Rd = -1;
3501 in_Rd = FLD (in_Rd);
3502 in_Rs = FLD (in_Rs);
3503 out_Rd = FLD (out_Rd);
3504 referenced |= 1 << 0;
3505 referenced |= 1 << 1;
3506 referenced |= 1 << 2;
3507 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3509 return cycles;
3510 #undef FLD
3513 static int
3514 model_crisv32_mulu_b (SIM_CPU *current_cpu, void *sem_arg)
3516 #define FLD(f) abuf->fields.sfmt_muls_b.f
3517 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3518 const IDESC * UNUSED idesc = abuf->idesc;
3519 int cycles = 0;
3521 int referenced = 0;
3522 int UNUSED insn_referenced = abuf->written;
3523 INT in_Rs = -1;
3524 INT in_Rd = -1;
3525 in_Rs = FLD (in_Rs);
3526 in_Rd = FLD (in_Rd);
3527 referenced |= 1 << 0;
3528 referenced |= 1 << 1;
3529 cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd);
3532 int referenced = 0;
3533 int UNUSED insn_referenced = abuf->written;
3534 INT in_Rd = -1;
3535 INT in_Rs = -1;
3536 INT out_Rd = -1;
3537 in_Rd = FLD (in_Rd);
3538 in_Rs = FLD (in_Rs);
3539 out_Rd = FLD (out_Rd);
3540 referenced |= 1 << 0;
3541 referenced |= 1 << 1;
3542 referenced |= 1 << 2;
3543 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3545 return cycles;
3546 #undef FLD
3549 static int
3550 model_crisv32_mulu_w (SIM_CPU *current_cpu, void *sem_arg)
3552 #define FLD(f) abuf->fields.sfmt_muls_b.f
3553 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3554 const IDESC * UNUSED idesc = abuf->idesc;
3555 int cycles = 0;
3557 int referenced = 0;
3558 int UNUSED insn_referenced = abuf->written;
3559 INT in_Rs = -1;
3560 INT in_Rd = -1;
3561 in_Rs = FLD (in_Rs);
3562 in_Rd = FLD (in_Rd);
3563 referenced |= 1 << 0;
3564 referenced |= 1 << 1;
3565 cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd);
3568 int referenced = 0;
3569 int UNUSED insn_referenced = abuf->written;
3570 INT in_Rd = -1;
3571 INT in_Rs = -1;
3572 INT out_Rd = -1;
3573 in_Rd = FLD (in_Rd);
3574 in_Rs = FLD (in_Rs);
3575 out_Rd = FLD (out_Rd);
3576 referenced |= 1 << 0;
3577 referenced |= 1 << 1;
3578 referenced |= 1 << 2;
3579 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3581 return cycles;
3582 #undef FLD
3585 static int
3586 model_crisv32_mulu_d (SIM_CPU *current_cpu, void *sem_arg)
3588 #define FLD(f) abuf->fields.sfmt_muls_b.f
3589 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3590 const IDESC * UNUSED idesc = abuf->idesc;
3591 int cycles = 0;
3593 int referenced = 0;
3594 int UNUSED insn_referenced = abuf->written;
3595 INT in_Rs = -1;
3596 INT in_Rd = -1;
3597 in_Rs = FLD (in_Rs);
3598 in_Rd = FLD (in_Rd);
3599 referenced |= 1 << 0;
3600 referenced |= 1 << 1;
3601 cycles += crisv32f_model_crisv32_u_multiply (current_cpu, idesc, 0, referenced, in_Rs, in_Rd);
3604 int referenced = 0;
3605 int UNUSED insn_referenced = abuf->written;
3606 INT in_Rd = -1;
3607 INT in_Rs = -1;
3608 INT out_Rd = -1;
3609 in_Rd = FLD (in_Rd);
3610 in_Rs = FLD (in_Rs);
3611 out_Rd = FLD (out_Rd);
3612 referenced |= 1 << 0;
3613 referenced |= 1 << 1;
3614 referenced |= 1 << 2;
3615 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3617 return cycles;
3618 #undef FLD
3621 static int
3622 model_crisv32_mcp (SIM_CPU *current_cpu, void *sem_arg)
3624 #define FLD(f) abuf->fields.sfmt_mcp.f
3625 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3626 const IDESC * UNUSED idesc = abuf->idesc;
3627 int cycles = 0;
3629 int referenced = 0;
3630 int UNUSED insn_referenced = abuf->written;
3631 INT in_Rd = -1;
3632 INT in_Rs = -1;
3633 INT out_Rd = -1;
3634 in_Rs = FLD (in_Rs);
3635 referenced |= 1 << 1;
3636 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3638 return cycles;
3639 #undef FLD
3642 static int
3643 model_crisv32_dstep (SIM_CPU *current_cpu, void *sem_arg)
3645 #define FLD(f) abuf->fields.sfmt_muls_b.f
3646 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3647 const IDESC * UNUSED idesc = abuf->idesc;
3648 int cycles = 0;
3650 int referenced = 0;
3651 int UNUSED insn_referenced = abuf->written;
3652 INT in_Rd = -1;
3653 INT in_Rs = -1;
3654 INT out_Rd = -1;
3655 in_Rd = FLD (in_Rd);
3656 in_Rs = FLD (in_Rs);
3657 out_Rd = FLD (out_Rd);
3658 referenced |= 1 << 0;
3659 referenced |= 1 << 1;
3660 referenced |= 1 << 2;
3661 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3663 return cycles;
3664 #undef FLD
3667 static int
3668 model_crisv32_abs (SIM_CPU *current_cpu, void *sem_arg)
3670 #define FLD(f) abuf->fields.sfmt_muls_b.f
3671 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3672 const IDESC * UNUSED idesc = abuf->idesc;
3673 int cycles = 0;
3675 int referenced = 0;
3676 int UNUSED insn_referenced = abuf->written;
3677 INT in_Rd = -1;
3678 INT in_Rs = -1;
3679 INT out_Rd = -1;
3680 in_Rs = FLD (in_Rs);
3681 out_Rd = FLD (out_Rd);
3682 referenced |= 1 << 1;
3683 referenced |= 1 << 2;
3684 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3686 return cycles;
3687 #undef FLD
3690 static int
3691 model_crisv32_and_b_r (SIM_CPU *current_cpu, void *sem_arg)
3693 #define FLD(f) abuf->fields.sfmt_addc_m.f
3694 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3695 const IDESC * UNUSED idesc = abuf->idesc;
3696 int cycles = 0;
3698 int referenced = 0;
3699 int UNUSED insn_referenced = abuf->written;
3700 INT in_Rd = -1;
3701 INT in_Rs = -1;
3702 INT out_Rd = -1;
3703 in_Rd = FLD (in_Rd);
3704 in_Rs = FLD (in_Rs);
3705 referenced |= 1 << 0;
3706 referenced |= 1 << 1;
3707 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3709 return cycles;
3710 #undef FLD
3713 static int
3714 model_crisv32_and_w_r (SIM_CPU *current_cpu, void *sem_arg)
3716 #define FLD(f) abuf->fields.sfmt_addc_m.f
3717 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3718 const IDESC * UNUSED idesc = abuf->idesc;
3719 int cycles = 0;
3721 int referenced = 0;
3722 int UNUSED insn_referenced = abuf->written;
3723 INT in_Rd = -1;
3724 INT in_Rs = -1;
3725 INT out_Rd = -1;
3726 in_Rd = FLD (in_Rd);
3727 in_Rs = FLD (in_Rs);
3728 referenced |= 1 << 0;
3729 referenced |= 1 << 1;
3730 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3732 return cycles;
3733 #undef FLD
3736 static int
3737 model_crisv32_and_d_r (SIM_CPU *current_cpu, void *sem_arg)
3739 #define FLD(f) abuf->fields.sfmt_addc_m.f
3740 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3741 const IDESC * UNUSED idesc = abuf->idesc;
3742 int cycles = 0;
3744 int referenced = 0;
3745 int UNUSED insn_referenced = abuf->written;
3746 INT in_Rd = -1;
3747 INT in_Rs = -1;
3748 INT out_Rd = -1;
3749 in_Rd = FLD (in_Rd);
3750 in_Rs = FLD (in_Rs);
3751 referenced |= 1 << 0;
3752 referenced |= 1 << 1;
3753 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3755 return cycles;
3756 #undef FLD
3759 static int
3760 model_crisv32_and_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
3762 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3763 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3764 const IDESC * UNUSED idesc = abuf->idesc;
3765 int cycles = 0;
3767 int referenced = 0;
3768 int UNUSED insn_referenced = abuf->written;
3769 INT in_Rs = -1;
3770 in_Rs = FLD (in_Rs);
3771 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
3772 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
3775 int referenced = 0;
3776 int UNUSED insn_referenced = abuf->written;
3777 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
3780 int referenced = 0;
3781 int UNUSED insn_referenced = abuf->written;
3782 INT in_Rd = -1;
3783 INT in_Rs = -1;
3784 INT out_Rd = -1;
3785 in_Rd = FLD (in_Rd);
3786 in_Rs = FLD (in_Rs);
3787 referenced |= 1 << 0;
3788 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
3789 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
3791 return cycles;
3792 #undef FLD
3795 static int
3796 model_crisv32_and_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
3798 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3799 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3800 const IDESC * UNUSED idesc = abuf->idesc;
3801 int cycles = 0;
3803 int referenced = 0;
3804 int UNUSED insn_referenced = abuf->written;
3805 INT in_Rs = -1;
3806 in_Rs = FLD (in_Rs);
3807 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
3808 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
3811 int referenced = 0;
3812 int UNUSED insn_referenced = abuf->written;
3813 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
3816 int referenced = 0;
3817 int UNUSED insn_referenced = abuf->written;
3818 INT in_Rd = -1;
3819 INT in_Rs = -1;
3820 INT out_Rd = -1;
3821 in_Rd = FLD (in_Rd);
3822 in_Rs = FLD (in_Rs);
3823 referenced |= 1 << 0;
3824 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
3825 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
3827 return cycles;
3828 #undef FLD
3831 static int
3832 model_crisv32_and_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
3834 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
3835 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3836 const IDESC * UNUSED idesc = abuf->idesc;
3837 int cycles = 0;
3839 int referenced = 0;
3840 int UNUSED insn_referenced = abuf->written;
3841 INT in_Rs = -1;
3842 in_Rs = FLD (in_Rs);
3843 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
3844 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
3847 int referenced = 0;
3848 int UNUSED insn_referenced = abuf->written;
3849 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
3852 int referenced = 0;
3853 int UNUSED insn_referenced = abuf->written;
3854 INT in_Rd = -1;
3855 INT in_Rs = -1;
3856 INT out_Rd = -1;
3857 in_Rd = FLD (in_Rd);
3858 in_Rs = FLD (in_Rs);
3859 referenced |= 1 << 0;
3860 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
3861 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
3863 return cycles;
3864 #undef FLD
3867 static int
3868 model_crisv32_andcbr (SIM_CPU *current_cpu, void *sem_arg)
3870 #define FLD(f) abuf->fields.sfmt_addcbr.f
3871 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3872 const IDESC * UNUSED idesc = abuf->idesc;
3873 int cycles = 0;
3875 int referenced = 0;
3876 int UNUSED insn_referenced = abuf->written;
3877 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
3880 int referenced = 0;
3881 int UNUSED insn_referenced = abuf->written;
3882 INT in_Rd = -1;
3883 INT in_Rs = -1;
3884 INT out_Rd = -1;
3885 in_Rd = FLD (in_Rd);
3886 referenced |= 1 << 0;
3887 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3889 return cycles;
3890 #undef FLD
3893 static int
3894 model_crisv32_andcwr (SIM_CPU *current_cpu, void *sem_arg)
3896 #define FLD(f) abuf->fields.sfmt_addcwr.f
3897 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3898 const IDESC * UNUSED idesc = abuf->idesc;
3899 int cycles = 0;
3901 int referenced = 0;
3902 int UNUSED insn_referenced = abuf->written;
3903 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
3906 int referenced = 0;
3907 int UNUSED insn_referenced = abuf->written;
3908 INT in_Rd = -1;
3909 INT in_Rs = -1;
3910 INT out_Rd = -1;
3911 in_Rd = FLD (in_Rd);
3912 referenced |= 1 << 0;
3913 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3915 return cycles;
3916 #undef FLD
3919 static int
3920 model_crisv32_andcdr (SIM_CPU *current_cpu, void *sem_arg)
3922 #define FLD(f) abuf->fields.sfmt_addcdr.f
3923 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3924 const IDESC * UNUSED idesc = abuf->idesc;
3925 int cycles = 0;
3927 int referenced = 0;
3928 int UNUSED insn_referenced = abuf->written;
3929 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
3932 int referenced = 0;
3933 int UNUSED insn_referenced = abuf->written;
3934 INT in_Rd = -1;
3935 INT in_Rs = -1;
3936 INT out_Rd = -1;
3937 in_Rd = FLD (in_Rd);
3938 referenced |= 1 << 0;
3939 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
3941 return cycles;
3942 #undef FLD
3945 static int
3946 model_crisv32_andq (SIM_CPU *current_cpu, void *sem_arg)
3948 #define FLD(f) abuf->fields.sfmt_andq.f
3949 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3950 const IDESC * UNUSED idesc = abuf->idesc;
3951 int cycles = 0;
3953 int referenced = 0;
3954 int UNUSED insn_referenced = abuf->written;
3955 INT in_Rd = -1;
3956 INT in_Rs = -1;
3957 INT out_Rd = -1;
3958 in_Rd = FLD (in_Rd);
3959 referenced |= 1 << 0;
3960 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3962 return cycles;
3963 #undef FLD
3966 static int
3967 model_crisv32_orr_b_r (SIM_CPU *current_cpu, void *sem_arg)
3969 #define FLD(f) abuf->fields.sfmt_addc_m.f
3970 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3971 const IDESC * UNUSED idesc = abuf->idesc;
3972 int cycles = 0;
3974 int referenced = 0;
3975 int UNUSED insn_referenced = abuf->written;
3976 INT in_Rd = -1;
3977 INT in_Rs = -1;
3978 INT out_Rd = -1;
3979 in_Rd = FLD (in_Rd);
3980 in_Rs = FLD (in_Rs);
3981 referenced |= 1 << 0;
3982 referenced |= 1 << 1;
3983 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
3985 return cycles;
3986 #undef FLD
3989 static int
3990 model_crisv32_orr_w_r (SIM_CPU *current_cpu, void *sem_arg)
3992 #define FLD(f) abuf->fields.sfmt_addc_m.f
3993 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
3994 const IDESC * UNUSED idesc = abuf->idesc;
3995 int cycles = 0;
3997 int referenced = 0;
3998 int UNUSED insn_referenced = abuf->written;
3999 INT in_Rd = -1;
4000 INT in_Rs = -1;
4001 INT out_Rd = -1;
4002 in_Rd = FLD (in_Rd);
4003 in_Rs = FLD (in_Rs);
4004 referenced |= 1 << 0;
4005 referenced |= 1 << 1;
4006 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4008 return cycles;
4009 #undef FLD
4012 static int
4013 model_crisv32_orr_d_r (SIM_CPU *current_cpu, void *sem_arg)
4015 #define FLD(f) abuf->fields.sfmt_addc_m.f
4016 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4017 const IDESC * UNUSED idesc = abuf->idesc;
4018 int cycles = 0;
4020 int referenced = 0;
4021 int UNUSED insn_referenced = abuf->written;
4022 INT in_Rd = -1;
4023 INT in_Rs = -1;
4024 INT out_Rd = -1;
4025 in_Rd = FLD (in_Rd);
4026 in_Rs = FLD (in_Rs);
4027 referenced |= 1 << 0;
4028 referenced |= 1 << 1;
4029 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4031 return cycles;
4032 #undef FLD
4035 static int
4036 model_crisv32_or_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
4038 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
4039 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4040 const IDESC * UNUSED idesc = abuf->idesc;
4041 int cycles = 0;
4043 int referenced = 0;
4044 int UNUSED insn_referenced = abuf->written;
4045 INT in_Rs = -1;
4046 in_Rs = FLD (in_Rs);
4047 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
4048 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
4051 int referenced = 0;
4052 int UNUSED insn_referenced = abuf->written;
4053 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
4056 int referenced = 0;
4057 int UNUSED insn_referenced = abuf->written;
4058 INT in_Rd = -1;
4059 INT in_Rs = -1;
4060 INT out_Rd = -1;
4061 in_Rd = FLD (in_Rd);
4062 in_Rs = FLD (in_Rs);
4063 referenced |= 1 << 0;
4064 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
4065 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
4067 return cycles;
4068 #undef FLD
4071 static int
4072 model_crisv32_or_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
4074 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
4075 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4076 const IDESC * UNUSED idesc = abuf->idesc;
4077 int cycles = 0;
4079 int referenced = 0;
4080 int UNUSED insn_referenced = abuf->written;
4081 INT in_Rs = -1;
4082 in_Rs = FLD (in_Rs);
4083 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
4084 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
4087 int referenced = 0;
4088 int UNUSED insn_referenced = abuf->written;
4089 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
4092 int referenced = 0;
4093 int UNUSED insn_referenced = abuf->written;
4094 INT in_Rd = -1;
4095 INT in_Rs = -1;
4096 INT out_Rd = -1;
4097 in_Rd = FLD (in_Rd);
4098 in_Rs = FLD (in_Rs);
4099 referenced |= 1 << 0;
4100 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
4101 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
4103 return cycles;
4104 #undef FLD
4107 static int
4108 model_crisv32_or_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
4110 #define FLD(f) abuf->fields.sfmt_add_m_b_m.f
4111 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4112 const IDESC * UNUSED idesc = abuf->idesc;
4113 int cycles = 0;
4115 int referenced = 0;
4116 int UNUSED insn_referenced = abuf->written;
4117 INT in_Rs = -1;
4118 in_Rs = FLD (in_Rs);
4119 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
4120 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
4123 int referenced = 0;
4124 int UNUSED insn_referenced = abuf->written;
4125 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
4128 int referenced = 0;
4129 int UNUSED insn_referenced = abuf->written;
4130 INT in_Rd = -1;
4131 INT in_Rs = -1;
4132 INT out_Rd = -1;
4133 in_Rd = FLD (in_Rd);
4134 in_Rs = FLD (in_Rs);
4135 referenced |= 1 << 0;
4136 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
4137 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
4139 return cycles;
4140 #undef FLD
4143 static int
4144 model_crisv32_orcbr (SIM_CPU *current_cpu, void *sem_arg)
4146 #define FLD(f) abuf->fields.sfmt_addcbr.f
4147 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4148 const IDESC * UNUSED idesc = abuf->idesc;
4149 int cycles = 0;
4151 int referenced = 0;
4152 int UNUSED insn_referenced = abuf->written;
4153 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
4156 int referenced = 0;
4157 int UNUSED insn_referenced = abuf->written;
4158 INT in_Rd = -1;
4159 INT in_Rs = -1;
4160 INT out_Rd = -1;
4161 in_Rd = FLD (in_Rd);
4162 referenced |= 1 << 0;
4163 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
4165 return cycles;
4166 #undef FLD
4169 static int
4170 model_crisv32_orcwr (SIM_CPU *current_cpu, void *sem_arg)
4172 #define FLD(f) abuf->fields.sfmt_addcwr.f
4173 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4174 const IDESC * UNUSED idesc = abuf->idesc;
4175 int cycles = 0;
4177 int referenced = 0;
4178 int UNUSED insn_referenced = abuf->written;
4179 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
4182 int referenced = 0;
4183 int UNUSED insn_referenced = abuf->written;
4184 INT in_Rd = -1;
4185 INT in_Rs = -1;
4186 INT out_Rd = -1;
4187 in_Rd = FLD (in_Rd);
4188 referenced |= 1 << 0;
4189 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
4191 return cycles;
4192 #undef FLD
4195 static int
4196 model_crisv32_orcdr (SIM_CPU *current_cpu, void *sem_arg)
4198 #define FLD(f) abuf->fields.sfmt_addcdr.f
4199 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4200 const IDESC * UNUSED idesc = abuf->idesc;
4201 int cycles = 0;
4203 int referenced = 0;
4204 int UNUSED insn_referenced = abuf->written;
4205 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
4208 int referenced = 0;
4209 int UNUSED insn_referenced = abuf->written;
4210 INT in_Rd = -1;
4211 INT in_Rs = -1;
4212 INT out_Rd = -1;
4213 in_Rd = FLD (in_Rd);
4214 referenced |= 1 << 0;
4215 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
4217 return cycles;
4218 #undef FLD
4221 static int
4222 model_crisv32_orq (SIM_CPU *current_cpu, void *sem_arg)
4224 #define FLD(f) abuf->fields.sfmt_andq.f
4225 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4226 const IDESC * UNUSED idesc = abuf->idesc;
4227 int cycles = 0;
4229 int referenced = 0;
4230 int UNUSED insn_referenced = abuf->written;
4231 INT in_Rd = -1;
4232 INT in_Rs = -1;
4233 INT out_Rd = -1;
4234 in_Rd = FLD (in_Rd);
4235 referenced |= 1 << 0;
4236 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4238 return cycles;
4239 #undef FLD
4242 static int
4243 model_crisv32_xor (SIM_CPU *current_cpu, void *sem_arg)
4245 #define FLD(f) abuf->fields.sfmt_muls_b.f
4246 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4247 const IDESC * UNUSED idesc = abuf->idesc;
4248 int cycles = 0;
4250 int referenced = 0;
4251 int UNUSED insn_referenced = abuf->written;
4252 INT in_Rd = -1;
4253 INT in_Rs = -1;
4254 INT out_Rd = -1;
4255 in_Rd = FLD (in_Rd);
4256 in_Rs = FLD (in_Rs);
4257 out_Rd = FLD (out_Rd);
4258 referenced |= 1 << 0;
4259 referenced |= 1 << 1;
4260 referenced |= 1 << 2;
4261 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4263 return cycles;
4264 #undef FLD
4267 static int
4268 model_crisv32_swap (SIM_CPU *current_cpu, void *sem_arg)
4270 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
4271 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4272 const IDESC * UNUSED idesc = abuf->idesc;
4273 int cycles = 0;
4275 int referenced = 0;
4276 int UNUSED insn_referenced = abuf->written;
4277 INT in_Rd = -1;
4278 INT in_Rs = -1;
4279 INT out_Rd = -1;
4280 in_Rs = FLD (in_Rs);
4281 referenced |= 1 << 1;
4282 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4284 return cycles;
4285 #undef FLD
4288 static int
4289 model_crisv32_asrr_b_r (SIM_CPU *current_cpu, void *sem_arg)
4291 #define FLD(f) abuf->fields.sfmt_addc_m.f
4292 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4293 const IDESC * UNUSED idesc = abuf->idesc;
4294 int cycles = 0;
4296 int referenced = 0;
4297 int UNUSED insn_referenced = abuf->written;
4298 INT in_Rd = -1;
4299 INT in_Rs = -1;
4300 INT out_Rd = -1;
4301 in_Rd = FLD (in_Rd);
4302 in_Rs = FLD (in_Rs);
4303 referenced |= 1 << 0;
4304 referenced |= 1 << 1;
4305 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4307 return cycles;
4308 #undef FLD
4311 static int
4312 model_crisv32_asrr_w_r (SIM_CPU *current_cpu, void *sem_arg)
4314 #define FLD(f) abuf->fields.sfmt_addc_m.f
4315 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4316 const IDESC * UNUSED idesc = abuf->idesc;
4317 int cycles = 0;
4319 int referenced = 0;
4320 int UNUSED insn_referenced = abuf->written;
4321 INT in_Rd = -1;
4322 INT in_Rs = -1;
4323 INT out_Rd = -1;
4324 in_Rd = FLD (in_Rd);
4325 in_Rs = FLD (in_Rs);
4326 referenced |= 1 << 0;
4327 referenced |= 1 << 1;
4328 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4330 return cycles;
4331 #undef FLD
4334 static int
4335 model_crisv32_asrr_d_r (SIM_CPU *current_cpu, void *sem_arg)
4337 #define FLD(f) abuf->fields.sfmt_addc_m.f
4338 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4339 const IDESC * UNUSED idesc = abuf->idesc;
4340 int cycles = 0;
4342 int referenced = 0;
4343 int UNUSED insn_referenced = abuf->written;
4344 INT in_Rd = -1;
4345 INT in_Rs = -1;
4346 INT out_Rd = -1;
4347 in_Rd = FLD (in_Rd);
4348 in_Rs = FLD (in_Rs);
4349 referenced |= 1 << 0;
4350 referenced |= 1 << 1;
4351 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4353 return cycles;
4354 #undef FLD
4357 static int
4358 model_crisv32_asrq (SIM_CPU *current_cpu, void *sem_arg)
4360 #define FLD(f) abuf->fields.sfmt_asrq.f
4361 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4362 const IDESC * UNUSED idesc = abuf->idesc;
4363 int cycles = 0;
4365 int referenced = 0;
4366 int UNUSED insn_referenced = abuf->written;
4367 INT in_Rd = -1;
4368 INT in_Rs = -1;
4369 INT out_Rd = -1;
4370 in_Rd = FLD (in_Rd);
4371 out_Rd = FLD (out_Rd);
4372 referenced |= 1 << 0;
4373 referenced |= 1 << 2;
4374 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4376 return cycles;
4377 #undef FLD
4380 static int
4381 model_crisv32_lsrr_b_r (SIM_CPU *current_cpu, void *sem_arg)
4383 #define FLD(f) abuf->fields.sfmt_addc_m.f
4384 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4385 const IDESC * UNUSED idesc = abuf->idesc;
4386 int cycles = 0;
4388 int referenced = 0;
4389 int UNUSED insn_referenced = abuf->written;
4390 INT in_Rd = -1;
4391 INT in_Rs = -1;
4392 INT out_Rd = -1;
4393 in_Rd = FLD (in_Rd);
4394 in_Rs = FLD (in_Rs);
4395 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
4396 referenced |= 1 << 1;
4397 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4399 return cycles;
4400 #undef FLD
4403 static int
4404 model_crisv32_lsrr_w_r (SIM_CPU *current_cpu, void *sem_arg)
4406 #define FLD(f) abuf->fields.sfmt_addc_m.f
4407 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4408 const IDESC * UNUSED idesc = abuf->idesc;
4409 int cycles = 0;
4411 int referenced = 0;
4412 int UNUSED insn_referenced = abuf->written;
4413 INT in_Rd = -1;
4414 INT in_Rs = -1;
4415 INT out_Rd = -1;
4416 in_Rd = FLD (in_Rd);
4417 in_Rs = FLD (in_Rs);
4418 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
4419 referenced |= 1 << 1;
4420 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4422 return cycles;
4423 #undef FLD
4426 static int
4427 model_crisv32_lsrr_d_r (SIM_CPU *current_cpu, void *sem_arg)
4429 #define FLD(f) abuf->fields.sfmt_addc_m.f
4430 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4431 const IDESC * UNUSED idesc = abuf->idesc;
4432 int cycles = 0;
4434 int referenced = 0;
4435 int UNUSED insn_referenced = abuf->written;
4436 INT in_Rd = -1;
4437 INT in_Rs = -1;
4438 INT out_Rd = -1;
4439 in_Rd = FLD (in_Rd);
4440 in_Rs = FLD (in_Rs);
4441 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
4442 referenced |= 1 << 1;
4443 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4445 return cycles;
4446 #undef FLD
4449 static int
4450 model_crisv32_lsrq (SIM_CPU *current_cpu, void *sem_arg)
4452 #define FLD(f) abuf->fields.sfmt_asrq.f
4453 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4454 const IDESC * UNUSED idesc = abuf->idesc;
4455 int cycles = 0;
4457 int referenced = 0;
4458 int UNUSED insn_referenced = abuf->written;
4459 INT in_Rd = -1;
4460 INT in_Rs = -1;
4461 INT out_Rd = -1;
4462 in_Rd = FLD (in_Rd);
4463 out_Rd = FLD (out_Rd);
4464 referenced |= 1 << 0;
4465 referenced |= 1 << 2;
4466 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4468 return cycles;
4469 #undef FLD
4472 static int
4473 model_crisv32_lslr_b_r (SIM_CPU *current_cpu, void *sem_arg)
4475 #define FLD(f) abuf->fields.sfmt_addc_m.f
4476 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4477 const IDESC * UNUSED idesc = abuf->idesc;
4478 int cycles = 0;
4480 int referenced = 0;
4481 int UNUSED insn_referenced = abuf->written;
4482 INT in_Rd = -1;
4483 INT in_Rs = -1;
4484 INT out_Rd = -1;
4485 in_Rd = FLD (in_Rd);
4486 in_Rs = FLD (in_Rs);
4487 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
4488 referenced |= 1 << 1;
4489 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4491 return cycles;
4492 #undef FLD
4495 static int
4496 model_crisv32_lslr_w_r (SIM_CPU *current_cpu, void *sem_arg)
4498 #define FLD(f) abuf->fields.sfmt_addc_m.f
4499 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4500 const IDESC * UNUSED idesc = abuf->idesc;
4501 int cycles = 0;
4503 int referenced = 0;
4504 int UNUSED insn_referenced = abuf->written;
4505 INT in_Rd = -1;
4506 INT in_Rs = -1;
4507 INT out_Rd = -1;
4508 in_Rd = FLD (in_Rd);
4509 in_Rs = FLD (in_Rs);
4510 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
4511 referenced |= 1 << 1;
4512 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4514 return cycles;
4515 #undef FLD
4518 static int
4519 model_crisv32_lslr_d_r (SIM_CPU *current_cpu, void *sem_arg)
4521 #define FLD(f) abuf->fields.sfmt_addc_m.f
4522 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4523 const IDESC * UNUSED idesc = abuf->idesc;
4524 int cycles = 0;
4526 int referenced = 0;
4527 int UNUSED insn_referenced = abuf->written;
4528 INT in_Rd = -1;
4529 INT in_Rs = -1;
4530 INT out_Rd = -1;
4531 in_Rd = FLD (in_Rd);
4532 in_Rs = FLD (in_Rs);
4533 if (insn_referenced & (1 << 0)) referenced |= 1 << 0;
4534 referenced |= 1 << 1;
4535 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4537 return cycles;
4538 #undef FLD
4541 static int
4542 model_crisv32_lslq (SIM_CPU *current_cpu, void *sem_arg)
4544 #define FLD(f) abuf->fields.sfmt_asrq.f
4545 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4546 const IDESC * UNUSED idesc = abuf->idesc;
4547 int cycles = 0;
4549 int referenced = 0;
4550 int UNUSED insn_referenced = abuf->written;
4551 INT in_Rd = -1;
4552 INT in_Rs = -1;
4553 INT out_Rd = -1;
4554 in_Rd = FLD (in_Rd);
4555 out_Rd = FLD (out_Rd);
4556 referenced |= 1 << 0;
4557 referenced |= 1 << 2;
4558 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4560 return cycles;
4561 #undef FLD
4564 static int
4565 model_crisv32_btst (SIM_CPU *current_cpu, void *sem_arg)
4567 #define FLD(f) abuf->fields.sfmt_muls_b.f
4568 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4569 const IDESC * UNUSED idesc = abuf->idesc;
4570 int cycles = 0;
4572 int referenced = 0;
4573 int UNUSED insn_referenced = abuf->written;
4574 INT in_Rd = -1;
4575 INT in_Rs = -1;
4576 INT out_Rd = -1;
4577 in_Rd = FLD (in_Rd);
4578 in_Rs = FLD (in_Rs);
4579 referenced |= 1 << 0;
4580 referenced |= 1 << 1;
4581 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4583 return cycles;
4584 #undef FLD
4587 static int
4588 model_crisv32_btstq (SIM_CPU *current_cpu, void *sem_arg)
4590 #define FLD(f) abuf->fields.sfmt_asrq.f
4591 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4592 const IDESC * UNUSED idesc = abuf->idesc;
4593 int cycles = 0;
4595 int referenced = 0;
4596 int UNUSED insn_referenced = abuf->written;
4597 INT in_Rd = -1;
4598 INT in_Rs = -1;
4599 INT out_Rd = -1;
4600 in_Rd = FLD (in_Rd);
4601 referenced |= 1 << 0;
4602 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4604 return cycles;
4605 #undef FLD
4608 static int
4609 model_crisv32_setf (SIM_CPU *current_cpu, void *sem_arg)
4611 #define FLD(f) abuf->fields.sfmt_setf.f
4612 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4613 const IDESC * UNUSED idesc = abuf->idesc;
4614 int cycles = 0;
4616 int referenced = 0;
4617 int UNUSED insn_referenced = abuf->written;
4618 INT in_Rd = -1;
4619 INT in_Rs = -1;
4620 INT out_Rd = -1;
4621 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4623 return cycles;
4624 #undef FLD
4627 static int
4628 model_crisv32_clearf (SIM_CPU *current_cpu, void *sem_arg)
4630 #define FLD(f) abuf->fields.sfmt_setf.f
4631 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4632 const IDESC * UNUSED idesc = abuf->idesc;
4633 int cycles = 0;
4635 int referenced = 0;
4636 int UNUSED insn_referenced = abuf->written;
4637 INT in_Rd = -1;
4638 INT in_Rs = -1;
4639 INT out_Rd = -1;
4640 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4642 return cycles;
4643 #undef FLD
4646 static int
4647 model_crisv32_rfe (SIM_CPU *current_cpu, void *sem_arg)
4649 #define FLD(f) abuf->fields.sfmt_rfe.f
4650 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4651 const IDESC * UNUSED idesc = abuf->idesc;
4652 int cycles = 0;
4654 int referenced = 0;
4655 int UNUSED insn_referenced = abuf->written;
4656 INT in_Rd = -1;
4657 INT in_Rs = -1;
4658 INT out_Rd = -1;
4659 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4661 return cycles;
4662 #undef FLD
4665 static int
4666 model_crisv32_sfe (SIM_CPU *current_cpu, void *sem_arg)
4668 #define FLD(f) abuf->fields.sfmt_rfe.f
4669 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4670 const IDESC * UNUSED idesc = abuf->idesc;
4671 int cycles = 0;
4673 int referenced = 0;
4674 int UNUSED insn_referenced = abuf->written;
4675 INT in_Rd = -1;
4676 INT in_Rs = -1;
4677 INT out_Rd = -1;
4678 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4680 return cycles;
4681 #undef FLD
4684 static int
4685 model_crisv32_rfg (SIM_CPU *current_cpu, void *sem_arg)
4687 #define FLD(f) abuf->fields.sfmt_empty.f
4688 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4689 const IDESC * UNUSED idesc = abuf->idesc;
4690 int cycles = 0;
4692 int referenced = 0;
4693 int UNUSED insn_referenced = abuf->written;
4694 INT in_Rd = -1;
4695 INT in_Rs = -1;
4696 INT out_Rd = -1;
4697 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4699 return cycles;
4700 #undef FLD
4703 static int
4704 model_crisv32_rfn (SIM_CPU *current_cpu, void *sem_arg)
4706 #define FLD(f) abuf->fields.sfmt_rfe.f
4707 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4708 const IDESC * UNUSED idesc = abuf->idesc;
4709 int cycles = 0;
4711 int referenced = 0;
4712 int UNUSED insn_referenced = abuf->written;
4713 INT in_Rd = -1;
4714 INT in_Rs = -1;
4715 INT out_Rd = -1;
4716 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4718 return cycles;
4719 #undef FLD
4722 static int
4723 model_crisv32_halt (SIM_CPU *current_cpu, void *sem_arg)
4725 #define FLD(f) abuf->fields.sfmt_empty.f
4726 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4727 const IDESC * UNUSED idesc = abuf->idesc;
4728 int cycles = 0;
4730 int referenced = 0;
4731 int UNUSED insn_referenced = abuf->written;
4732 INT in_Rd = -1;
4733 INT in_Rs = -1;
4734 INT out_Rd = -1;
4735 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
4737 return cycles;
4738 #undef FLD
4741 static int
4742 model_crisv32_bcc_b (SIM_CPU *current_cpu, void *sem_arg)
4744 #define FLD(f) abuf->fields.sfmt_bcc_b.f
4745 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4746 const IDESC * UNUSED idesc = abuf->idesc;
4747 int cycles = 0;
4749 int referenced = 0;
4750 int UNUSED insn_referenced = abuf->written;
4751 cycles += crisv32f_model_crisv32_u_branch (current_cpu, idesc, 0, referenced);
4754 int referenced = 0;
4755 int UNUSED insn_referenced = abuf->written;
4756 INT in_Rd = -1;
4757 INT in_Rs = -1;
4758 INT out_Rd = -1;
4759 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
4761 return cycles;
4762 #undef FLD
4765 static int
4766 model_crisv32_ba_b (SIM_CPU *current_cpu, void *sem_arg)
4768 #define FLD(f) abuf->fields.sfmt_bcc_b.f
4769 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4770 const IDESC * UNUSED idesc = abuf->idesc;
4771 int cycles = 0;
4773 int referenced = 0;
4774 int UNUSED insn_referenced = abuf->written;
4775 INT out_Pd = -1;
4776 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 0, referenced, out_Pd);
4779 int referenced = 0;
4780 int UNUSED insn_referenced = abuf->written;
4781 INT in_Rd = -1;
4782 INT in_Rs = -1;
4783 INT out_Rd = -1;
4784 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
4786 return cycles;
4787 #undef FLD
4790 static int
4791 model_crisv32_bcc_w (SIM_CPU *current_cpu, void *sem_arg)
4793 #define FLD(f) abuf->fields.sfmt_bcc_w.f
4794 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4795 const IDESC * UNUSED idesc = abuf->idesc;
4796 int cycles = 0;
4798 int referenced = 0;
4799 int UNUSED insn_referenced = abuf->written;
4800 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
4803 int referenced = 0;
4804 int UNUSED insn_referenced = abuf->written;
4805 cycles += crisv32f_model_crisv32_u_branch (current_cpu, idesc, 1, referenced);
4808 int referenced = 0;
4809 int UNUSED insn_referenced = abuf->written;
4810 INT in_Rd = -1;
4811 INT in_Rs = -1;
4812 INT out_Rd = -1;
4813 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
4815 return cycles;
4816 #undef FLD
4819 static int
4820 model_crisv32_ba_w (SIM_CPU *current_cpu, void *sem_arg)
4822 #define FLD(f) abuf->fields.sfmt_bcc_w.f
4823 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4824 const IDESC * UNUSED idesc = abuf->idesc;
4825 int cycles = 0;
4827 int referenced = 0;
4828 int UNUSED insn_referenced = abuf->written;
4829 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
4832 int referenced = 0;
4833 int UNUSED insn_referenced = abuf->written;
4834 INT out_Pd = -1;
4835 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 1, referenced, out_Pd);
4838 int referenced = 0;
4839 int UNUSED insn_referenced = abuf->written;
4840 INT in_Rd = -1;
4841 INT in_Rs = -1;
4842 INT out_Rd = -1;
4843 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
4845 return cycles;
4846 #undef FLD
4849 static int
4850 model_crisv32_jas_r (SIM_CPU *current_cpu, void *sem_arg)
4852 #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
4853 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4854 const IDESC * UNUSED idesc = abuf->idesc;
4855 int cycles = 0;
4857 int referenced = 0;
4858 int UNUSED insn_referenced = abuf->written;
4859 INT in_Rs = -1;
4860 in_Rs = FLD (in_Rs);
4861 referenced |= 1 << 0;
4862 cycles += crisv32f_model_crisv32_u_jump_r (current_cpu, idesc, 0, referenced, in_Rs);
4865 int referenced = 0;
4866 int UNUSED insn_referenced = abuf->written;
4867 INT out_Pd = -1;
4868 out_Pd = FLD (out_Pd);
4869 referenced |= 1 << 0;
4870 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 1, referenced, out_Pd);
4873 int referenced = 0;
4874 int UNUSED insn_referenced = abuf->written;
4875 INT in_Rd = -1;
4876 INT in_Rs = -1;
4877 INT out_Rd = -1;
4878 in_Rs = FLD (in_Rs);
4879 referenced |= 1 << 1;
4880 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
4882 return cycles;
4883 #undef FLD
4886 static int
4887 model_crisv32_jas_c (SIM_CPU *current_cpu, void *sem_arg)
4889 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
4890 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4891 const IDESC * UNUSED idesc = abuf->idesc;
4892 int cycles = 0;
4894 int referenced = 0;
4895 int UNUSED insn_referenced = abuf->written;
4896 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
4899 int referenced = 0;
4900 int UNUSED insn_referenced = abuf->written;
4901 INT out_Pd = -1;
4902 out_Pd = FLD (out_Pd);
4903 referenced |= 1 << 0;
4904 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 1, referenced, out_Pd);
4907 int referenced = 0;
4908 int UNUSED insn_referenced = abuf->written;
4909 INT in_Rd = -1;
4910 INT in_Rs = -1;
4911 INT out_Rd = -1;
4912 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
4914 return cycles;
4915 #undef FLD
4918 static int
4919 model_crisv32_jump_p (SIM_CPU *current_cpu, void *sem_arg)
4921 #define FLD(f) abuf->fields.sfmt_mcp.f
4922 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4923 const IDESC * UNUSED idesc = abuf->idesc;
4924 int cycles = 0;
4926 int referenced = 0;
4927 int UNUSED insn_referenced = abuf->written;
4928 INT in_Ps = -1;
4929 in_Ps = FLD (in_Ps);
4930 referenced |= 1 << 0;
4931 cycles += crisv32f_model_crisv32_u_jump_sr (current_cpu, idesc, 0, referenced, in_Ps);
4934 int referenced = 0;
4935 int UNUSED insn_referenced = abuf->written;
4936 INT in_Rd = -1;
4937 INT in_Rs = -1;
4938 INT out_Rd = -1;
4939 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
4941 return cycles;
4942 #undef FLD
4945 static int
4946 model_crisv32_bas_c (SIM_CPU *current_cpu, void *sem_arg)
4948 #define FLD(f) abuf->fields.sfmt_bas_c.f
4949 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4950 const IDESC * UNUSED idesc = abuf->idesc;
4951 int cycles = 0;
4953 int referenced = 0;
4954 int UNUSED insn_referenced = abuf->written;
4955 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
4958 int referenced = 0;
4959 int UNUSED insn_referenced = abuf->written;
4960 INT out_Pd = -1;
4961 out_Pd = FLD (out_Pd);
4962 referenced |= 1 << 0;
4963 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 1, referenced, out_Pd);
4966 int referenced = 0;
4967 int UNUSED insn_referenced = abuf->written;
4968 INT in_Rd = -1;
4969 INT in_Rs = -1;
4970 INT out_Rd = -1;
4971 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
4973 return cycles;
4974 #undef FLD
4977 static int
4978 model_crisv32_jasc_r (SIM_CPU *current_cpu, void *sem_arg)
4980 #define FLD(f) abuf->fields.sfmt_move_m_sprv32.f
4981 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
4982 const IDESC * UNUSED idesc = abuf->idesc;
4983 int cycles = 0;
4985 int referenced = 0;
4986 int UNUSED insn_referenced = abuf->written;
4987 INT in_Rs = -1;
4988 in_Rs = FLD (in_Rs);
4989 referenced |= 1 << 0;
4990 cycles += crisv32f_model_crisv32_u_jump_r (current_cpu, idesc, 0, referenced, in_Rs);
4993 int referenced = 0;
4994 int UNUSED insn_referenced = abuf->written;
4995 cycles += crisv32f_model_crisv32_u_skip4 (current_cpu, idesc, 1, referenced);
4998 int referenced = 0;
4999 int UNUSED insn_referenced = abuf->written;
5000 INT out_Pd = -1;
5001 out_Pd = FLD (out_Pd);
5002 referenced |= 1 << 0;
5003 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 2, referenced, out_Pd);
5006 int referenced = 0;
5007 int UNUSED insn_referenced = abuf->written;
5008 INT in_Rd = -1;
5009 INT in_Rs = -1;
5010 INT out_Rd = -1;
5011 in_Rs = FLD (in_Rs);
5012 referenced |= 1 << 1;
5013 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 3, referenced, in_Rd, in_Rs, out_Rd);
5015 return cycles;
5016 #undef FLD
5019 static int
5020 model_crisv32_jasc_c (SIM_CPU *current_cpu, void *sem_arg)
5022 #define FLD(f) abuf->fields.sfmt_move_c_sprv32_p2.f
5023 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5024 const IDESC * UNUSED idesc = abuf->idesc;
5025 int cycles = 0;
5027 int referenced = 0;
5028 int UNUSED insn_referenced = abuf->written;
5029 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
5032 int referenced = 0;
5033 int UNUSED insn_referenced = abuf->written;
5034 cycles += crisv32f_model_crisv32_u_skip4 (current_cpu, idesc, 1, referenced);
5037 int referenced = 0;
5038 int UNUSED insn_referenced = abuf->written;
5039 INT out_Pd = -1;
5040 out_Pd = FLD (out_Pd);
5041 referenced |= 1 << 0;
5042 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 2, referenced, out_Pd);
5045 int referenced = 0;
5046 int UNUSED insn_referenced = abuf->written;
5047 INT in_Rd = -1;
5048 INT in_Rs = -1;
5049 INT out_Rd = -1;
5050 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 3, referenced, in_Rd, in_Rs, out_Rd);
5052 return cycles;
5053 #undef FLD
5056 static int
5057 model_crisv32_basc_c (SIM_CPU *current_cpu, void *sem_arg)
5059 #define FLD(f) abuf->fields.sfmt_bas_c.f
5060 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5061 const IDESC * UNUSED idesc = abuf->idesc;
5062 int cycles = 0;
5064 int referenced = 0;
5065 int UNUSED insn_referenced = abuf->written;
5066 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
5069 int referenced = 0;
5070 int UNUSED insn_referenced = abuf->written;
5071 cycles += crisv32f_model_crisv32_u_skip4 (current_cpu, idesc, 1, referenced);
5074 int referenced = 0;
5075 int UNUSED insn_referenced = abuf->written;
5076 INT out_Pd = -1;
5077 out_Pd = FLD (out_Pd);
5078 referenced |= 1 << 0;
5079 cycles += crisv32f_model_crisv32_u_jump (current_cpu, idesc, 2, referenced, out_Pd);
5082 int referenced = 0;
5083 int UNUSED insn_referenced = abuf->written;
5084 INT in_Rd = -1;
5085 INT in_Rs = -1;
5086 INT out_Rd = -1;
5087 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 3, referenced, in_Rd, in_Rs, out_Rd);
5089 return cycles;
5090 #undef FLD
5093 static int
5094 model_crisv32_break (SIM_CPU *current_cpu, void *sem_arg)
5096 #define FLD(f) abuf->fields.sfmt_break.f
5097 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5098 const IDESC * UNUSED idesc = abuf->idesc;
5099 int cycles = 0;
5101 int referenced = 0;
5102 int UNUSED insn_referenced = abuf->written;
5103 INT in_Rd = -1;
5104 INT in_Rs = -1;
5105 INT out_Rd = -1;
5106 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5108 return cycles;
5109 #undef FLD
5112 static int
5113 model_crisv32_bound_r_b_r (SIM_CPU *current_cpu, void *sem_arg)
5115 #define FLD(f) abuf->fields.sfmt_muls_b.f
5116 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5117 const IDESC * UNUSED idesc = abuf->idesc;
5118 int cycles = 0;
5120 int referenced = 0;
5121 int UNUSED insn_referenced = abuf->written;
5122 INT in_Rd = -1;
5123 INT in_Rs = -1;
5124 INT out_Rd = -1;
5125 in_Rd = FLD (in_Rd);
5126 in_Rs = FLD (in_Rs);
5127 out_Rd = FLD (out_Rd);
5128 referenced |= 1 << 0;
5129 referenced |= 1 << 1;
5130 referenced |= 1 << 2;
5131 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5133 return cycles;
5134 #undef FLD
5137 static int
5138 model_crisv32_bound_r_w_r (SIM_CPU *current_cpu, void *sem_arg)
5140 #define FLD(f) abuf->fields.sfmt_muls_b.f
5141 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5142 const IDESC * UNUSED idesc = abuf->idesc;
5143 int cycles = 0;
5145 int referenced = 0;
5146 int UNUSED insn_referenced = abuf->written;
5147 INT in_Rd = -1;
5148 INT in_Rs = -1;
5149 INT out_Rd = -1;
5150 in_Rd = FLD (in_Rd);
5151 in_Rs = FLD (in_Rs);
5152 out_Rd = FLD (out_Rd);
5153 referenced |= 1 << 0;
5154 referenced |= 1 << 1;
5155 referenced |= 1 << 2;
5156 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5158 return cycles;
5159 #undef FLD
5162 static int
5163 model_crisv32_bound_r_d_r (SIM_CPU *current_cpu, void *sem_arg)
5165 #define FLD(f) abuf->fields.sfmt_muls_b.f
5166 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5167 const IDESC * UNUSED idesc = abuf->idesc;
5168 int cycles = 0;
5170 int referenced = 0;
5171 int UNUSED insn_referenced = abuf->written;
5172 INT in_Rd = -1;
5173 INT in_Rs = -1;
5174 INT out_Rd = -1;
5175 in_Rd = FLD (in_Rd);
5176 in_Rs = FLD (in_Rs);
5177 out_Rd = FLD (out_Rd);
5178 referenced |= 1 << 0;
5179 referenced |= 1 << 1;
5180 referenced |= 1 << 2;
5181 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5183 return cycles;
5184 #undef FLD
5187 static int
5188 model_crisv32_bound_cb (SIM_CPU *current_cpu, void *sem_arg)
5190 #define FLD(f) abuf->fields.sfmt_bound_cb.f
5191 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5192 const IDESC * UNUSED idesc = abuf->idesc;
5193 int cycles = 0;
5195 int referenced = 0;
5196 int UNUSED insn_referenced = abuf->written;
5197 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
5200 int referenced = 0;
5201 int UNUSED insn_referenced = abuf->written;
5202 INT in_Rd = -1;
5203 INT in_Rs = -1;
5204 INT out_Rd = -1;
5205 in_Rd = FLD (in_Rd);
5206 out_Rd = FLD (out_Rd);
5207 referenced |= 1 << 0;
5208 referenced |= 1 << 2;
5209 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
5211 return cycles;
5212 #undef FLD
5215 static int
5216 model_crisv32_bound_cw (SIM_CPU *current_cpu, void *sem_arg)
5218 #define FLD(f) abuf->fields.sfmt_bound_cw.f
5219 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5220 const IDESC * UNUSED idesc = abuf->idesc;
5221 int cycles = 0;
5223 int referenced = 0;
5224 int UNUSED insn_referenced = abuf->written;
5225 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
5228 int referenced = 0;
5229 int UNUSED insn_referenced = abuf->written;
5230 INT in_Rd = -1;
5231 INT in_Rs = -1;
5232 INT out_Rd = -1;
5233 in_Rd = FLD (in_Rd);
5234 out_Rd = FLD (out_Rd);
5235 referenced |= 1 << 0;
5236 referenced |= 1 << 2;
5237 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
5239 return cycles;
5240 #undef FLD
5243 static int
5244 model_crisv32_bound_cd (SIM_CPU *current_cpu, void *sem_arg)
5246 #define FLD(f) abuf->fields.sfmt_bound_cd.f
5247 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5248 const IDESC * UNUSED idesc = abuf->idesc;
5249 int cycles = 0;
5251 int referenced = 0;
5252 int UNUSED insn_referenced = abuf->written;
5253 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
5256 int referenced = 0;
5257 int UNUSED insn_referenced = abuf->written;
5258 INT in_Rd = -1;
5259 INT in_Rs = -1;
5260 INT out_Rd = -1;
5261 in_Rd = FLD (in_Rd);
5262 out_Rd = FLD (out_Rd);
5263 referenced |= 1 << 0;
5264 referenced |= 1 << 2;
5265 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
5267 return cycles;
5268 #undef FLD
5271 static int
5272 model_crisv32_scc (SIM_CPU *current_cpu, void *sem_arg)
5274 #define FLD(f) abuf->fields.sfmt_move_spr_mv32.f
5275 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5276 const IDESC * UNUSED idesc = abuf->idesc;
5277 int cycles = 0;
5279 int referenced = 0;
5280 int UNUSED insn_referenced = abuf->written;
5281 INT in_Rd = -1;
5282 INT in_Rs = -1;
5283 INT out_Rd = -1;
5284 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5286 return cycles;
5287 #undef FLD
5290 static int
5291 model_crisv32_lz (SIM_CPU *current_cpu, void *sem_arg)
5293 #define FLD(f) abuf->fields.sfmt_muls_b.f
5294 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5295 const IDESC * UNUSED idesc = abuf->idesc;
5296 int cycles = 0;
5298 int referenced = 0;
5299 int UNUSED insn_referenced = abuf->written;
5300 INT in_Rd = -1;
5301 INT in_Rs = -1;
5302 INT out_Rd = -1;
5303 in_Rs = FLD (in_Rs);
5304 out_Rd = FLD (out_Rd);
5305 referenced |= 1 << 1;
5306 referenced |= 1 << 2;
5307 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5309 return cycles;
5310 #undef FLD
5313 static int
5314 model_crisv32_addoq (SIM_CPU *current_cpu, void *sem_arg)
5316 #define FLD(f) abuf->fields.sfmt_addoq.f
5317 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5318 const IDESC * UNUSED idesc = abuf->idesc;
5319 int cycles = 0;
5321 int referenced = 0;
5322 int UNUSED insn_referenced = abuf->written;
5323 INT in_Rd = -1;
5324 INT in_Rs = -1;
5325 INT out_Rd = -1;
5326 in_Rd = FLD (in_Rd);
5327 referenced |= 1 << 0;
5328 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5330 return cycles;
5331 #undef FLD
5334 static int
5335 model_crisv32_addo_m_b_m (SIM_CPU *current_cpu, void *sem_arg)
5337 #define FLD(f) abuf->fields.sfmt_addc_m.f
5338 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5339 const IDESC * UNUSED idesc = abuf->idesc;
5340 int cycles = 0;
5342 int referenced = 0;
5343 int UNUSED insn_referenced = abuf->written;
5344 INT in_Rs = -1;
5345 in_Rs = FLD (in_Rs);
5346 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
5347 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
5350 int referenced = 0;
5351 int UNUSED insn_referenced = abuf->written;
5352 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
5355 int referenced = 0;
5356 int UNUSED insn_referenced = abuf->written;
5357 INT in_Rd = -1;
5358 INT in_Rs = -1;
5359 INT out_Rd = -1;
5360 in_Rd = FLD (in_Rd);
5361 in_Rs = FLD (in_Rs);
5362 referenced |= 1 << 0;
5363 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
5364 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
5366 return cycles;
5367 #undef FLD
5370 static int
5371 model_crisv32_addo_m_w_m (SIM_CPU *current_cpu, void *sem_arg)
5373 #define FLD(f) abuf->fields.sfmt_addc_m.f
5374 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5375 const IDESC * UNUSED idesc = abuf->idesc;
5376 int cycles = 0;
5378 int referenced = 0;
5379 int UNUSED insn_referenced = abuf->written;
5380 INT in_Rs = -1;
5381 in_Rs = FLD (in_Rs);
5382 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
5383 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
5386 int referenced = 0;
5387 int UNUSED insn_referenced = abuf->written;
5388 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
5391 int referenced = 0;
5392 int UNUSED insn_referenced = abuf->written;
5393 INT in_Rd = -1;
5394 INT in_Rs = -1;
5395 INT out_Rd = -1;
5396 in_Rd = FLD (in_Rd);
5397 in_Rs = FLD (in_Rs);
5398 referenced |= 1 << 0;
5399 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
5400 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
5402 return cycles;
5403 #undef FLD
5406 static int
5407 model_crisv32_addo_m_d_m (SIM_CPU *current_cpu, void *sem_arg)
5409 #define FLD(f) abuf->fields.sfmt_addc_m.f
5410 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5411 const IDESC * UNUSED idesc = abuf->idesc;
5412 int cycles = 0;
5414 int referenced = 0;
5415 int UNUSED insn_referenced = abuf->written;
5416 INT in_Rs = -1;
5417 in_Rs = FLD (in_Rs);
5418 if (insn_referenced & (1 << 1)) referenced |= 1 << 0;
5419 cycles += crisv32f_model_crisv32_u_mem (current_cpu, idesc, 0, referenced, in_Rs);
5422 int referenced = 0;
5423 int UNUSED insn_referenced = abuf->written;
5424 cycles += crisv32f_model_crisv32_u_mem_r (current_cpu, idesc, 1, referenced);
5427 int referenced = 0;
5428 int UNUSED insn_referenced = abuf->written;
5429 INT in_Rd = -1;
5430 INT in_Rs = -1;
5431 INT out_Rd = -1;
5432 in_Rd = FLD (in_Rd);
5433 in_Rs = FLD (in_Rs);
5434 referenced |= 1 << 0;
5435 if (insn_referenced & (1 << 1)) referenced |= 1 << 1;
5436 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 2, referenced, in_Rd, in_Rs, out_Rd);
5438 return cycles;
5439 #undef FLD
5442 static int
5443 model_crisv32_addo_cb (SIM_CPU *current_cpu, void *sem_arg)
5445 #define FLD(f) abuf->fields.sfmt_bound_cb.f
5446 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5447 const IDESC * UNUSED idesc = abuf->idesc;
5448 int cycles = 0;
5450 int referenced = 0;
5451 int UNUSED insn_referenced = abuf->written;
5452 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
5455 int referenced = 0;
5456 int UNUSED insn_referenced = abuf->written;
5457 INT in_Rd = -1;
5458 INT in_Rs = -1;
5459 INT out_Rd = -1;
5460 in_Rd = FLD (in_Rd);
5461 referenced |= 1 << 0;
5462 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
5464 return cycles;
5465 #undef FLD
5468 static int
5469 model_crisv32_addo_cw (SIM_CPU *current_cpu, void *sem_arg)
5471 #define FLD(f) abuf->fields.sfmt_bound_cw.f
5472 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5473 const IDESC * UNUSED idesc = abuf->idesc;
5474 int cycles = 0;
5476 int referenced = 0;
5477 int UNUSED insn_referenced = abuf->written;
5478 cycles += crisv32f_model_crisv32_u_const16 (current_cpu, idesc, 0, referenced);
5481 int referenced = 0;
5482 int UNUSED insn_referenced = abuf->written;
5483 INT in_Rd = -1;
5484 INT in_Rs = -1;
5485 INT out_Rd = -1;
5486 in_Rd = FLD (in_Rd);
5487 referenced |= 1 << 0;
5488 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
5490 return cycles;
5491 #undef FLD
5494 static int
5495 model_crisv32_addo_cd (SIM_CPU *current_cpu, void *sem_arg)
5497 #define FLD(f) abuf->fields.sfmt_bound_cd.f
5498 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5499 const IDESC * UNUSED idesc = abuf->idesc;
5500 int cycles = 0;
5502 int referenced = 0;
5503 int UNUSED insn_referenced = abuf->written;
5504 cycles += crisv32f_model_crisv32_u_const32 (current_cpu, idesc, 0, referenced);
5507 int referenced = 0;
5508 int UNUSED insn_referenced = abuf->written;
5509 INT in_Rd = -1;
5510 INT in_Rs = -1;
5511 INT out_Rd = -1;
5512 in_Rd = FLD (in_Rd);
5513 referenced |= 1 << 0;
5514 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 1, referenced, in_Rd, in_Rs, out_Rd);
5516 return cycles;
5517 #undef FLD
5520 static int
5521 model_crisv32_addi_acr_b_r (SIM_CPU *current_cpu, void *sem_arg)
5523 #define FLD(f) abuf->fields.sfmt_muls_b.f
5524 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5525 const IDESC * UNUSED idesc = abuf->idesc;
5526 int cycles = 0;
5528 int referenced = 0;
5529 int UNUSED insn_referenced = abuf->written;
5530 INT in_Rd = -1;
5531 INT in_Rs = -1;
5532 INT out_Rd = -1;
5533 in_Rd = FLD (in_Rd);
5534 in_Rs = FLD (in_Rs);
5535 referenced |= 1 << 0;
5536 referenced |= 1 << 1;
5537 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5539 return cycles;
5540 #undef FLD
5543 static int
5544 model_crisv32_addi_acr_w_r (SIM_CPU *current_cpu, void *sem_arg)
5546 #define FLD(f) abuf->fields.sfmt_muls_b.f
5547 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5548 const IDESC * UNUSED idesc = abuf->idesc;
5549 int cycles = 0;
5551 int referenced = 0;
5552 int UNUSED insn_referenced = abuf->written;
5553 INT in_Rd = -1;
5554 INT in_Rs = -1;
5555 INT out_Rd = -1;
5556 in_Rd = FLD (in_Rd);
5557 in_Rs = FLD (in_Rs);
5558 referenced |= 1 << 0;
5559 referenced |= 1 << 1;
5560 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5562 return cycles;
5563 #undef FLD
5566 static int
5567 model_crisv32_addi_acr_d_r (SIM_CPU *current_cpu, void *sem_arg)
5569 #define FLD(f) abuf->fields.sfmt_muls_b.f
5570 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5571 const IDESC * UNUSED idesc = abuf->idesc;
5572 int cycles = 0;
5574 int referenced = 0;
5575 int UNUSED insn_referenced = abuf->written;
5576 INT in_Rd = -1;
5577 INT in_Rs = -1;
5578 INT out_Rd = -1;
5579 in_Rd = FLD (in_Rd);
5580 in_Rs = FLD (in_Rs);
5581 referenced |= 1 << 0;
5582 referenced |= 1 << 1;
5583 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5585 return cycles;
5586 #undef FLD
5589 static int
5590 model_crisv32_fidxi (SIM_CPU *current_cpu, void *sem_arg)
5592 #define FLD(f) abuf->fields.sfmt_mcp.f
5593 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5594 const IDESC * UNUSED idesc = abuf->idesc;
5595 int cycles = 0;
5597 int referenced = 0;
5598 int UNUSED insn_referenced = abuf->written;
5599 INT in_Rd = -1;
5600 INT in_Rs = -1;
5601 INT out_Rd = -1;
5602 in_Rs = FLD (in_Rs);
5603 referenced |= 1 << 1;
5604 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5606 return cycles;
5607 #undef FLD
5610 static int
5611 model_crisv32_ftagi (SIM_CPU *current_cpu, void *sem_arg)
5613 #define FLD(f) abuf->fields.sfmt_mcp.f
5614 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5615 const IDESC * UNUSED idesc = abuf->idesc;
5616 int cycles = 0;
5618 int referenced = 0;
5619 int UNUSED insn_referenced = abuf->written;
5620 INT in_Rd = -1;
5621 INT in_Rs = -1;
5622 INT out_Rd = -1;
5623 in_Rs = FLD (in_Rs);
5624 referenced |= 1 << 1;
5625 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5627 return cycles;
5628 #undef FLD
5631 static int
5632 model_crisv32_fidxd (SIM_CPU *current_cpu, void *sem_arg)
5634 #define FLD(f) abuf->fields.sfmt_mcp.f
5635 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5636 const IDESC * UNUSED idesc = abuf->idesc;
5637 int cycles = 0;
5639 int referenced = 0;
5640 int UNUSED insn_referenced = abuf->written;
5641 INT in_Rd = -1;
5642 INT in_Rs = -1;
5643 INT out_Rd = -1;
5644 in_Rs = FLD (in_Rs);
5645 referenced |= 1 << 1;
5646 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5648 return cycles;
5649 #undef FLD
5652 static int
5653 model_crisv32_ftagd (SIM_CPU *current_cpu, void *sem_arg)
5655 #define FLD(f) abuf->fields.sfmt_mcp.f
5656 const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
5657 const IDESC * UNUSED idesc = abuf->idesc;
5658 int cycles = 0;
5660 int referenced = 0;
5661 int UNUSED insn_referenced = abuf->written;
5662 INT in_Rd = -1;
5663 INT in_Rs = -1;
5664 INT out_Rd = -1;
5665 in_Rs = FLD (in_Rs);
5666 referenced |= 1 << 1;
5667 cycles += crisv32f_model_crisv32_u_exec (current_cpu, idesc, 0, referenced, in_Rd, in_Rs, out_Rd);
5669 return cycles;
5670 #undef FLD
5673 /* We assume UNIT_NONE == 0 because the tables don't always terminate
5674 entries with it. */
5676 /* Model timing data for `crisv32'. */
5678 static const INSN_TIMING crisv32_timing[] = {
5679 { CRISV32F_INSN_X_INVALID, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5680 { CRISV32F_INSN_X_AFTER, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5681 { CRISV32F_INSN_X_BEFORE, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5682 { CRISV32F_INSN_X_CTI_CHAIN, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5683 { CRISV32F_INSN_X_CHAIN, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5684 { CRISV32F_INSN_X_BEGIN, 0, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5685 { CRISV32F_INSN_MOVE_B_R, model_crisv32_move_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5686 { CRISV32F_INSN_MOVE_W_R, model_crisv32_move_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5687 { CRISV32F_INSN_MOVE_D_R, model_crisv32_move_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5688 { CRISV32F_INSN_MOVEQ, model_crisv32_moveq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5689 { CRISV32F_INSN_MOVS_B_R, model_crisv32_movs_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5690 { CRISV32F_INSN_MOVS_W_R, model_crisv32_movs_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5691 { CRISV32F_INSN_MOVU_B_R, model_crisv32_movu_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5692 { CRISV32F_INSN_MOVU_W_R, model_crisv32_movu_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5693 { CRISV32F_INSN_MOVECBR, model_crisv32_movecbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5694 { CRISV32F_INSN_MOVECWR, model_crisv32_movecwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5695 { CRISV32F_INSN_MOVECDR, model_crisv32_movecdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5696 { CRISV32F_INSN_MOVSCBR, model_crisv32_movscbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5697 { CRISV32F_INSN_MOVSCWR, model_crisv32_movscwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5698 { CRISV32F_INSN_MOVUCBR, model_crisv32_movucbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5699 { CRISV32F_INSN_MOVUCWR, model_crisv32_movucwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5700 { CRISV32F_INSN_ADDQ, model_crisv32_addq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5701 { CRISV32F_INSN_SUBQ, model_crisv32_subq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5702 { CRISV32F_INSN_CMP_R_B_R, model_crisv32_cmp_r_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5703 { CRISV32F_INSN_CMP_R_W_R, model_crisv32_cmp_r_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5704 { CRISV32F_INSN_CMP_R_D_R, model_crisv32_cmp_r_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5705 { CRISV32F_INSN_CMP_M_B_M, model_crisv32_cmp_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5706 { CRISV32F_INSN_CMP_M_W_M, model_crisv32_cmp_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5707 { CRISV32F_INSN_CMP_M_D_M, model_crisv32_cmp_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5708 { CRISV32F_INSN_CMPCBR, model_crisv32_cmpcbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5709 { CRISV32F_INSN_CMPCWR, model_crisv32_cmpcwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5710 { CRISV32F_INSN_CMPCDR, model_crisv32_cmpcdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5711 { CRISV32F_INSN_CMPQ, model_crisv32_cmpq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5712 { CRISV32F_INSN_CMPS_M_B_M, model_crisv32_cmps_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5713 { CRISV32F_INSN_CMPS_M_W_M, model_crisv32_cmps_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5714 { CRISV32F_INSN_CMPSCBR, model_crisv32_cmpscbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5715 { CRISV32F_INSN_CMPSCWR, model_crisv32_cmpscwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5716 { CRISV32F_INSN_CMPU_M_B_M, model_crisv32_cmpu_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5717 { CRISV32F_INSN_CMPU_M_W_M, model_crisv32_cmpu_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5718 { CRISV32F_INSN_CMPUCBR, model_crisv32_cmpucbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5719 { CRISV32F_INSN_CMPUCWR, model_crisv32_cmpucwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5720 { CRISV32F_INSN_MOVE_M_B_M, model_crisv32_move_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5721 { CRISV32F_INSN_MOVE_M_W_M, model_crisv32_move_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5722 { CRISV32F_INSN_MOVE_M_D_M, model_crisv32_move_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5723 { CRISV32F_INSN_MOVS_M_B_M, model_crisv32_movs_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5724 { CRISV32F_INSN_MOVS_M_W_M, model_crisv32_movs_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5725 { CRISV32F_INSN_MOVU_M_B_M, model_crisv32_movu_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5726 { CRISV32F_INSN_MOVU_M_W_M, model_crisv32_movu_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5727 { CRISV32F_INSN_MOVE_R_SPRV32, model_crisv32_move_r_sprv32, { { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5728 { CRISV32F_INSN_MOVE_SPR_RV32, model_crisv32_move_spr_rv32, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5729 { CRISV32F_INSN_MOVE_M_SPRV32, model_crisv32_move_m_sprv32, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5730 { CRISV32F_INSN_MOVE_C_SPRV32_P2, model_crisv32_move_c_sprv32_p2, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5731 { CRISV32F_INSN_MOVE_C_SPRV32_P3, model_crisv32_move_c_sprv32_p3, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5732 { CRISV32F_INSN_MOVE_C_SPRV32_P5, model_crisv32_move_c_sprv32_p5, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5733 { CRISV32F_INSN_MOVE_C_SPRV32_P6, model_crisv32_move_c_sprv32_p6, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5734 { CRISV32F_INSN_MOVE_C_SPRV32_P7, model_crisv32_move_c_sprv32_p7, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5735 { CRISV32F_INSN_MOVE_C_SPRV32_P9, model_crisv32_move_c_sprv32_p9, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5736 { CRISV32F_INSN_MOVE_C_SPRV32_P10, model_crisv32_move_c_sprv32_p10, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5737 { CRISV32F_INSN_MOVE_C_SPRV32_P11, model_crisv32_move_c_sprv32_p11, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5738 { CRISV32F_INSN_MOVE_C_SPRV32_P12, model_crisv32_move_c_sprv32_p12, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5739 { CRISV32F_INSN_MOVE_C_SPRV32_P13, model_crisv32_move_c_sprv32_p13, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5740 { CRISV32F_INSN_MOVE_C_SPRV32_P14, model_crisv32_move_c_sprv32_p14, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5741 { CRISV32F_INSN_MOVE_C_SPRV32_P15, model_crisv32_move_c_sprv32_p15, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_TO_SR, 1, 1 } } },
5742 { CRISV32F_INSN_MOVE_SPR_MV32, model_crisv32_move_spr_mv32, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_W, 1, 1 } } },
5743 { CRISV32F_INSN_MOVE_SS_R, model_crisv32_move_ss_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5744 { CRISV32F_INSN_MOVE_R_SS, model_crisv32_move_r_ss, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5745 { CRISV32F_INSN_MOVEM_R_M_V32, model_crisv32_movem_r_m_v32, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MOVEM_RTOM, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_MOVEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_W, 1, 1 } } },
5746 { CRISV32F_INSN_MOVEM_M_R_V32, model_crisv32_movem_m_r_v32, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_MOVEM_MTOR, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC_MOVEM, 1, 1 } } },
5747 { CRISV32F_INSN_ADD_B_R, model_crisv32_add_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5748 { CRISV32F_INSN_ADD_W_R, model_crisv32_add_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5749 { CRISV32F_INSN_ADD_D_R, model_crisv32_add_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5750 { CRISV32F_INSN_ADD_M_B_M, model_crisv32_add_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5751 { CRISV32F_INSN_ADD_M_W_M, model_crisv32_add_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5752 { CRISV32F_INSN_ADD_M_D_M, model_crisv32_add_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5753 { CRISV32F_INSN_ADDCBR, model_crisv32_addcbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5754 { CRISV32F_INSN_ADDCWR, model_crisv32_addcwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5755 { CRISV32F_INSN_ADDCDR, model_crisv32_addcdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5756 { CRISV32F_INSN_ADDS_B_R, model_crisv32_adds_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5757 { CRISV32F_INSN_ADDS_W_R, model_crisv32_adds_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5758 { CRISV32F_INSN_ADDS_M_B_M, model_crisv32_adds_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5759 { CRISV32F_INSN_ADDS_M_W_M, model_crisv32_adds_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5760 { CRISV32F_INSN_ADDSCBR, model_crisv32_addscbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5761 { CRISV32F_INSN_ADDSCWR, model_crisv32_addscwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5762 { CRISV32F_INSN_ADDU_B_R, model_crisv32_addu_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5763 { CRISV32F_INSN_ADDU_W_R, model_crisv32_addu_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5764 { CRISV32F_INSN_ADDU_M_B_M, model_crisv32_addu_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5765 { CRISV32F_INSN_ADDU_M_W_M, model_crisv32_addu_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5766 { CRISV32F_INSN_ADDUCBR, model_crisv32_adducbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5767 { CRISV32F_INSN_ADDUCWR, model_crisv32_adducwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5768 { CRISV32F_INSN_SUB_B_R, model_crisv32_sub_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5769 { CRISV32F_INSN_SUB_W_R, model_crisv32_sub_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5770 { CRISV32F_INSN_SUB_D_R, model_crisv32_sub_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5771 { CRISV32F_INSN_SUB_M_B_M, model_crisv32_sub_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5772 { CRISV32F_INSN_SUB_M_W_M, model_crisv32_sub_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5773 { CRISV32F_INSN_SUB_M_D_M, model_crisv32_sub_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5774 { CRISV32F_INSN_SUBCBR, model_crisv32_subcbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5775 { CRISV32F_INSN_SUBCWR, model_crisv32_subcwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5776 { CRISV32F_INSN_SUBCDR, model_crisv32_subcdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5777 { CRISV32F_INSN_SUBS_B_R, model_crisv32_subs_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5778 { CRISV32F_INSN_SUBS_W_R, model_crisv32_subs_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5779 { CRISV32F_INSN_SUBS_M_B_M, model_crisv32_subs_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5780 { CRISV32F_INSN_SUBS_M_W_M, model_crisv32_subs_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5781 { CRISV32F_INSN_SUBSCBR, model_crisv32_subscbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5782 { CRISV32F_INSN_SUBSCWR, model_crisv32_subscwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5783 { CRISV32F_INSN_SUBU_B_R, model_crisv32_subu_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5784 { CRISV32F_INSN_SUBU_W_R, model_crisv32_subu_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5785 { CRISV32F_INSN_SUBU_M_B_M, model_crisv32_subu_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5786 { CRISV32F_INSN_SUBU_M_W_M, model_crisv32_subu_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5787 { CRISV32F_INSN_SUBUCBR, model_crisv32_subucbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5788 { CRISV32F_INSN_SUBUCWR, model_crisv32_subucwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5789 { CRISV32F_INSN_ADDC_R, model_crisv32_addc_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5790 { CRISV32F_INSN_ADDC_M, model_crisv32_addc_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5791 { CRISV32F_INSN_ADDC_C, model_crisv32_addc_c, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5792 { CRISV32F_INSN_LAPC_D, model_crisv32_lapc_d, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5793 { CRISV32F_INSN_LAPCQ, model_crisv32_lapcq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5794 { CRISV32F_INSN_ADDI_B_R, model_crisv32_addi_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5795 { CRISV32F_INSN_ADDI_W_R, model_crisv32_addi_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5796 { CRISV32F_INSN_ADDI_D_R, model_crisv32_addi_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5797 { CRISV32F_INSN_NEG_B_R, model_crisv32_neg_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5798 { CRISV32F_INSN_NEG_W_R, model_crisv32_neg_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5799 { CRISV32F_INSN_NEG_D_R, model_crisv32_neg_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5800 { CRISV32F_INSN_TEST_M_B_M, model_crisv32_test_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5801 { CRISV32F_INSN_TEST_M_W_M, model_crisv32_test_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5802 { CRISV32F_INSN_TEST_M_D_M, model_crisv32_test_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5803 { CRISV32F_INSN_MOVE_R_M_B_M, model_crisv32_move_r_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_W, 1, 1 } } },
5804 { CRISV32F_INSN_MOVE_R_M_W_M, model_crisv32_move_r_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_W, 1, 1 } } },
5805 { CRISV32F_INSN_MOVE_R_M_D_M, model_crisv32_move_r_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_W, 1, 1 } } },
5806 { CRISV32F_INSN_MULS_B, model_crisv32_muls_b, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5807 { CRISV32F_INSN_MULS_W, model_crisv32_muls_w, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5808 { CRISV32F_INSN_MULS_D, model_crisv32_muls_d, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5809 { CRISV32F_INSN_MULU_B, model_crisv32_mulu_b, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5810 { CRISV32F_INSN_MULU_W, model_crisv32_mulu_w, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5811 { CRISV32F_INSN_MULU_D, model_crisv32_mulu_d, { { (int) UNIT_CRISV32_U_MULTIPLY, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5812 { CRISV32F_INSN_MCP, model_crisv32_mcp, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5813 { CRISV32F_INSN_DSTEP, model_crisv32_dstep, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5814 { CRISV32F_INSN_ABS, model_crisv32_abs, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5815 { CRISV32F_INSN_AND_B_R, model_crisv32_and_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5816 { CRISV32F_INSN_AND_W_R, model_crisv32_and_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5817 { CRISV32F_INSN_AND_D_R, model_crisv32_and_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5818 { CRISV32F_INSN_AND_M_B_M, model_crisv32_and_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5819 { CRISV32F_INSN_AND_M_W_M, model_crisv32_and_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5820 { CRISV32F_INSN_AND_M_D_M, model_crisv32_and_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5821 { CRISV32F_INSN_ANDCBR, model_crisv32_andcbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5822 { CRISV32F_INSN_ANDCWR, model_crisv32_andcwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5823 { CRISV32F_INSN_ANDCDR, model_crisv32_andcdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5824 { CRISV32F_INSN_ANDQ, model_crisv32_andq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5825 { CRISV32F_INSN_ORR_B_R, model_crisv32_orr_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5826 { CRISV32F_INSN_ORR_W_R, model_crisv32_orr_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5827 { CRISV32F_INSN_ORR_D_R, model_crisv32_orr_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5828 { CRISV32F_INSN_OR_M_B_M, model_crisv32_or_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5829 { CRISV32F_INSN_OR_M_W_M, model_crisv32_or_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5830 { CRISV32F_INSN_OR_M_D_M, model_crisv32_or_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5831 { CRISV32F_INSN_ORCBR, model_crisv32_orcbr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5832 { CRISV32F_INSN_ORCWR, model_crisv32_orcwr, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5833 { CRISV32F_INSN_ORCDR, model_crisv32_orcdr, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5834 { CRISV32F_INSN_ORQ, model_crisv32_orq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5835 { CRISV32F_INSN_XOR, model_crisv32_xor, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5836 { CRISV32F_INSN_SWAP, model_crisv32_swap, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5837 { CRISV32F_INSN_ASRR_B_R, model_crisv32_asrr_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5838 { CRISV32F_INSN_ASRR_W_R, model_crisv32_asrr_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5839 { CRISV32F_INSN_ASRR_D_R, model_crisv32_asrr_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5840 { CRISV32F_INSN_ASRQ, model_crisv32_asrq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5841 { CRISV32F_INSN_LSRR_B_R, model_crisv32_lsrr_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5842 { CRISV32F_INSN_LSRR_W_R, model_crisv32_lsrr_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5843 { CRISV32F_INSN_LSRR_D_R, model_crisv32_lsrr_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5844 { CRISV32F_INSN_LSRQ, model_crisv32_lsrq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5845 { CRISV32F_INSN_LSLR_B_R, model_crisv32_lslr_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5846 { CRISV32F_INSN_LSLR_W_R, model_crisv32_lslr_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5847 { CRISV32F_INSN_LSLR_D_R, model_crisv32_lslr_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5848 { CRISV32F_INSN_LSLQ, model_crisv32_lslq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5849 { CRISV32F_INSN_BTST, model_crisv32_btst, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5850 { CRISV32F_INSN_BTSTQ, model_crisv32_btstq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5851 { CRISV32F_INSN_SETF, model_crisv32_setf, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5852 { CRISV32F_INSN_CLEARF, model_crisv32_clearf, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5853 { CRISV32F_INSN_RFE, model_crisv32_rfe, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5854 { CRISV32F_INSN_SFE, model_crisv32_sfe, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5855 { CRISV32F_INSN_RFG, model_crisv32_rfg, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5856 { CRISV32F_INSN_RFN, model_crisv32_rfn, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5857 { CRISV32F_INSN_HALT, model_crisv32_halt, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5858 { CRISV32F_INSN_BCC_B, model_crisv32_bcc_b, { { (int) UNIT_CRISV32_U_BRANCH, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5859 { CRISV32F_INSN_BA_B, model_crisv32_ba_b, { { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5860 { CRISV32F_INSN_BCC_W, model_crisv32_bcc_w, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_BRANCH, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5861 { CRISV32F_INSN_BA_W, model_crisv32_ba_w, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5862 { CRISV32F_INSN_JAS_R, model_crisv32_jas_r, { { (int) UNIT_CRISV32_U_JUMP_R, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5863 { CRISV32F_INSN_JAS_C, model_crisv32_jas_c, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5864 { CRISV32F_INSN_JUMP_P, model_crisv32_jump_p, { { (int) UNIT_CRISV32_U_JUMP_SR, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5865 { CRISV32F_INSN_BAS_C, model_crisv32_bas_c, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5866 { CRISV32F_INSN_JASC_R, model_crisv32_jasc_r, { { (int) UNIT_CRISV32_U_JUMP_R, 1, 1 }, { (int) UNIT_CRISV32_U_SKIP4, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5867 { CRISV32F_INSN_JASC_C, model_crisv32_jasc_c, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_SKIP4, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5868 { CRISV32F_INSN_BASC_C, model_crisv32_basc_c, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_SKIP4, 1, 1 }, { (int) UNIT_CRISV32_U_JUMP, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5869 { CRISV32F_INSN_BREAK, model_crisv32_break, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5870 { CRISV32F_INSN_BOUND_R_B_R, model_crisv32_bound_r_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5871 { CRISV32F_INSN_BOUND_R_W_R, model_crisv32_bound_r_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5872 { CRISV32F_INSN_BOUND_R_D_R, model_crisv32_bound_r_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5873 { CRISV32F_INSN_BOUND_CB, model_crisv32_bound_cb, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5874 { CRISV32F_INSN_BOUND_CW, model_crisv32_bound_cw, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5875 { CRISV32F_INSN_BOUND_CD, model_crisv32_bound_cd, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5876 { CRISV32F_INSN_SCC, model_crisv32_scc, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5877 { CRISV32F_INSN_LZ, model_crisv32_lz, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5878 { CRISV32F_INSN_ADDOQ, model_crisv32_addoq, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5879 { CRISV32F_INSN_ADDO_M_B_M, model_crisv32_addo_m_b_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5880 { CRISV32F_INSN_ADDO_M_W_M, model_crisv32_addo_m_w_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5881 { CRISV32F_INSN_ADDO_M_D_M, model_crisv32_addo_m_d_m, { { (int) UNIT_CRISV32_U_MEM, 1, 1 }, { (int) UNIT_CRISV32_U_MEM_R, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5882 { CRISV32F_INSN_ADDO_CB, model_crisv32_addo_cb, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5883 { CRISV32F_INSN_ADDO_CW, model_crisv32_addo_cw, { { (int) UNIT_CRISV32_U_CONST16, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5884 { CRISV32F_INSN_ADDO_CD, model_crisv32_addo_cd, { { (int) UNIT_CRISV32_U_CONST32, 1, 1 }, { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5885 { CRISV32F_INSN_ADDI_ACR_B_R, model_crisv32_addi_acr_b_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5886 { CRISV32F_INSN_ADDI_ACR_W_R, model_crisv32_addi_acr_w_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5887 { CRISV32F_INSN_ADDI_ACR_D_R, model_crisv32_addi_acr_d_r, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5888 { CRISV32F_INSN_FIDXI, model_crisv32_fidxi, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5889 { CRISV32F_INSN_FTAGI, model_crisv32_ftagi, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5890 { CRISV32F_INSN_FIDXD, model_crisv32_fidxd, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5891 { CRISV32F_INSN_FTAGD, model_crisv32_ftagd, { { (int) UNIT_CRISV32_U_EXEC, 1, 1 } } },
5894 #endif /* WITH_PROFILE_MODEL_P */
5896 static void
5897 crisv32_model_init (SIM_CPU *cpu)
5899 CPU_MODEL_DATA (cpu) = (void *) zalloc (sizeof (MODEL_CRISV32_DATA));
5902 #if WITH_PROFILE_MODEL_P
5903 #define TIMING_DATA(td) td
5904 #else
5905 #define TIMING_DATA(td) 0
5906 #endif
5908 static const SIM_MODEL crisv32_models[] =
5910 { "crisv32", & crisv32_mach, MODEL_CRISV32, TIMING_DATA (& crisv32_timing[0]), crisv32_model_init },
5911 { 0 }
5914 /* The properties of this cpu's implementation. */
5916 static const SIM_MACH_IMP_PROPERTIES crisv32f_imp_properties =
5918 sizeof (SIM_CPU),
5919 #if WITH_SCACHE
5920 sizeof (SCACHE)
5921 #else
5923 #endif
5927 static void
5928 crisv32f_prepare_run (SIM_CPU *cpu)
5930 if (CPU_IDESC (cpu) == NULL)
5931 crisv32f_init_idesc_table (cpu);
5934 static const CGEN_INSN *
5935 crisv32f_get_idata (SIM_CPU *cpu, int inum)
5937 return CPU_IDESC (cpu) [inum].idata;
5940 static void
5941 crisv32_init_cpu (SIM_CPU *cpu)
5943 CPU_REG_FETCH (cpu) = crisv32f_fetch_register;
5944 CPU_REG_STORE (cpu) = crisv32f_store_register;
5945 CPU_PC_FETCH (cpu) = crisv32f_h_pc_get;
5946 CPU_PC_STORE (cpu) = crisv32f_h_pc_set;
5947 CPU_GET_IDATA (cpu) = crisv32f_get_idata;
5948 CPU_MAX_INSNS (cpu) = CRISV32F_INSN__MAX;
5949 CPU_INSN_NAME (cpu) = cgen_insn_name;
5950 CPU_FULL_ENGINE_FN (cpu) = crisv32f_engine_run_full;
5951 #if WITH_FAST
5952 CPU_FAST_ENGINE_FN (cpu) = crisv32f_engine_run_fast;
5953 #else
5954 CPU_FAST_ENGINE_FN (cpu) = crisv32f_engine_run_full;
5955 #endif
5958 const SIM_MACH crisv32_mach =
5960 "crisv32", "crisv32", MACH_CRISV32,
5961 32, 32, & crisv32_models[0], & crisv32f_imp_properties,
5962 crisv32_init_cpu,
5963 crisv32f_prepare_run