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