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