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