This commit was generated by cvs2svn to track changes on a CVS vendor
[external/binutils.git] / sim / iq2000 / model.c
1 /* Simulator model support for iq2000bf.
2
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5 Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
6
7 This file is part of the GNU simulators.
8
9 This program 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 2, or (at your option)
12 any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 GNU General Public 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 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
23 */
24
25 #define WANT_CPU iq2000bf
26 #define WANT_CPU_IQ2000BF
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_iq2000_add (SIM_CPU *current_cpu, void *sem_arg)
39 {
40 #define FLD(f) abuf->fields.sfmt_mrgb.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     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
48   }
49   return cycles;
50 #undef FLD
51 }
52
53 static int
54 model_iq2000_addi (SIM_CPU *current_cpu, void *sem_arg)
55 {
56 #define FLD(f) abuf->fields.sfmt_addi.f
57   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
58   const IDESC * UNUSED idesc = abuf->idesc;
59   int cycles = 0;
60   {
61     int referenced = 0;
62     int UNUSED insn_referenced = abuf->written;
63     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
64   }
65   return cycles;
66 #undef FLD
67 }
68
69 static int
70 model_iq2000_addiu (SIM_CPU *current_cpu, void *sem_arg)
71 {
72 #define FLD(f) abuf->fields.sfmt_addi.f
73   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
74   const IDESC * UNUSED idesc = abuf->idesc;
75   int cycles = 0;
76   {
77     int referenced = 0;
78     int UNUSED insn_referenced = abuf->written;
79     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
80   }
81   return cycles;
82 #undef FLD
83 }
84
85 static int
86 model_iq2000_addu (SIM_CPU *current_cpu, void *sem_arg)
87 {
88 #define FLD(f) abuf->fields.sfmt_mrgb.f
89   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
90   const IDESC * UNUSED idesc = abuf->idesc;
91   int cycles = 0;
92   {
93     int referenced = 0;
94     int UNUSED insn_referenced = abuf->written;
95     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
96   }
97   return cycles;
98 #undef FLD
99 }
100
101 static int
102 model_iq2000_ado16 (SIM_CPU *current_cpu, void *sem_arg)
103 {
104 #define FLD(f) abuf->fields.sfmt_mrgb.f
105   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
106   const IDESC * UNUSED idesc = abuf->idesc;
107   int cycles = 0;
108   {
109     int referenced = 0;
110     int UNUSED insn_referenced = abuf->written;
111     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
112   }
113   return cycles;
114 #undef FLD
115 }
116
117 static int
118 model_iq2000_and (SIM_CPU *current_cpu, void *sem_arg)
119 {
120 #define FLD(f) abuf->fields.sfmt_mrgb.f
121   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
122   const IDESC * UNUSED idesc = abuf->idesc;
123   int cycles = 0;
124   {
125     int referenced = 0;
126     int UNUSED insn_referenced = abuf->written;
127     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
128   }
129   return cycles;
130 #undef FLD
131 }
132
133 static int
134 model_iq2000_andi (SIM_CPU *current_cpu, void *sem_arg)
135 {
136 #define FLD(f) abuf->fields.sfmt_addi.f
137   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
138   const IDESC * UNUSED idesc = abuf->idesc;
139   int cycles = 0;
140   {
141     int referenced = 0;
142     int UNUSED insn_referenced = abuf->written;
143     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
144   }
145   return cycles;
146 #undef FLD
147 }
148
149 static int
150 model_iq2000_andoi (SIM_CPU *current_cpu, void *sem_arg)
151 {
152 #define FLD(f) abuf->fields.sfmt_addi.f
153   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
154   const IDESC * UNUSED idesc = abuf->idesc;
155   int cycles = 0;
156   {
157     int referenced = 0;
158     int UNUSED insn_referenced = abuf->written;
159     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
160   }
161   return cycles;
162 #undef FLD
163 }
164
165 static int
166 model_iq2000_nor (SIM_CPU *current_cpu, void *sem_arg)
167 {
168 #define FLD(f) abuf->fields.sfmt_mrgb.f
169   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
170   const IDESC * UNUSED idesc = abuf->idesc;
171   int cycles = 0;
172   {
173     int referenced = 0;
174     int UNUSED insn_referenced = abuf->written;
175     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
176   }
177   return cycles;
178 #undef FLD
179 }
180
181 static int
182 model_iq2000_or (SIM_CPU *current_cpu, void *sem_arg)
183 {
184 #define FLD(f) abuf->fields.sfmt_mrgb.f
185   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
186   const IDESC * UNUSED idesc = abuf->idesc;
187   int cycles = 0;
188   {
189     int referenced = 0;
190     int UNUSED insn_referenced = abuf->written;
191     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
192   }
193   return cycles;
194 #undef FLD
195 }
196
197 static int
198 model_iq2000_ori (SIM_CPU *current_cpu, void *sem_arg)
199 {
200 #define FLD(f) abuf->fields.sfmt_addi.f
201   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
202   const IDESC * UNUSED idesc = abuf->idesc;
203   int cycles = 0;
204   {
205     int referenced = 0;
206     int UNUSED insn_referenced = abuf->written;
207     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
208   }
209   return cycles;
210 #undef FLD
211 }
212
213 static int
214 model_iq2000_ram (SIM_CPU *current_cpu, void *sem_arg)
215 {
216 #define FLD(f) abuf->fields.sfmt_ram.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 += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
224   }
225   return cycles;
226 #undef FLD
227 }
228
229 static int
230 model_iq2000_sll (SIM_CPU *current_cpu, void *sem_arg)
231 {
232 #define FLD(f) abuf->fields.sfmt_ram.f
233   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
234   const IDESC * UNUSED idesc = abuf->idesc;
235   int cycles = 0;
236   {
237     int referenced = 0;
238     int UNUSED insn_referenced = abuf->written;
239     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
240   }
241   return cycles;
242 #undef FLD
243 }
244
245 static int
246 model_iq2000_sllv (SIM_CPU *current_cpu, void *sem_arg)
247 {
248 #define FLD(f) abuf->fields.sfmt_mrgb.f
249   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
250   const IDESC * UNUSED idesc = abuf->idesc;
251   int cycles = 0;
252   {
253     int referenced = 0;
254     int UNUSED insn_referenced = abuf->written;
255     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
256   }
257   return cycles;
258 #undef FLD
259 }
260
261 static int
262 model_iq2000_slmv (SIM_CPU *current_cpu, void *sem_arg)
263 {
264 #define FLD(f) abuf->fields.sfmt_ram.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 += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
272   }
273   return cycles;
274 #undef FLD
275 }
276
277 static int
278 model_iq2000_slt (SIM_CPU *current_cpu, void *sem_arg)
279 {
280 #define FLD(f) abuf->fields.sfmt_mrgb.f
281   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
282   const IDESC * UNUSED idesc = abuf->idesc;
283   int cycles = 0;
284   {
285     int referenced = 0;
286     int UNUSED insn_referenced = abuf->written;
287     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
288   }
289   return cycles;
290 #undef FLD
291 }
292
293 static int
294 model_iq2000_slti (SIM_CPU *current_cpu, void *sem_arg)
295 {
296 #define FLD(f) abuf->fields.sfmt_addi.f
297   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
298   const IDESC * UNUSED idesc = abuf->idesc;
299   int cycles = 0;
300   {
301     int referenced = 0;
302     int UNUSED insn_referenced = abuf->written;
303     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
304   }
305   return cycles;
306 #undef FLD
307 }
308
309 static int
310 model_iq2000_sltiu (SIM_CPU *current_cpu, void *sem_arg)
311 {
312 #define FLD(f) abuf->fields.sfmt_addi.f
313   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
314   const IDESC * UNUSED idesc = abuf->idesc;
315   int cycles = 0;
316   {
317     int referenced = 0;
318     int UNUSED insn_referenced = abuf->written;
319     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
320   }
321   return cycles;
322 #undef FLD
323 }
324
325 static int
326 model_iq2000_sltu (SIM_CPU *current_cpu, void *sem_arg)
327 {
328 #define FLD(f) abuf->fields.sfmt_mrgb.f
329   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
330   const IDESC * UNUSED idesc = abuf->idesc;
331   int cycles = 0;
332   {
333     int referenced = 0;
334     int UNUSED insn_referenced = abuf->written;
335     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
336   }
337   return cycles;
338 #undef FLD
339 }
340
341 static int
342 model_iq2000_sra (SIM_CPU *current_cpu, void *sem_arg)
343 {
344 #define FLD(f) abuf->fields.sfmt_ram.f
345   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
346   const IDESC * UNUSED idesc = abuf->idesc;
347   int cycles = 0;
348   {
349     int referenced = 0;
350     int UNUSED insn_referenced = abuf->written;
351     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
352   }
353   return cycles;
354 #undef FLD
355 }
356
357 static int
358 model_iq2000_srav (SIM_CPU *current_cpu, void *sem_arg)
359 {
360 #define FLD(f) abuf->fields.sfmt_mrgb.f
361   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
362   const IDESC * UNUSED idesc = abuf->idesc;
363   int cycles = 0;
364   {
365     int referenced = 0;
366     int UNUSED insn_referenced = abuf->written;
367     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
368   }
369   return cycles;
370 #undef FLD
371 }
372
373 static int
374 model_iq2000_srl (SIM_CPU *current_cpu, void *sem_arg)
375 {
376 #define FLD(f) abuf->fields.sfmt_ram.f
377   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
378   const IDESC * UNUSED idesc = abuf->idesc;
379   int cycles = 0;
380   {
381     int referenced = 0;
382     int UNUSED insn_referenced = abuf->written;
383     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
384   }
385   return cycles;
386 #undef FLD
387 }
388
389 static int
390 model_iq2000_srlv (SIM_CPU *current_cpu, void *sem_arg)
391 {
392 #define FLD(f) abuf->fields.sfmt_mrgb.f
393   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
394   const IDESC * UNUSED idesc = abuf->idesc;
395   int cycles = 0;
396   {
397     int referenced = 0;
398     int UNUSED insn_referenced = abuf->written;
399     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
400   }
401   return cycles;
402 #undef FLD
403 }
404
405 static int
406 model_iq2000_srmv (SIM_CPU *current_cpu, void *sem_arg)
407 {
408 #define FLD(f) abuf->fields.sfmt_ram.f
409   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
410   const IDESC * UNUSED idesc = abuf->idesc;
411   int cycles = 0;
412   {
413     int referenced = 0;
414     int UNUSED insn_referenced = abuf->written;
415     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
416   }
417   return cycles;
418 #undef FLD
419 }
420
421 static int
422 model_iq2000_sub (SIM_CPU *current_cpu, void *sem_arg)
423 {
424 #define FLD(f) abuf->fields.sfmt_mrgb.f
425   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
426   const IDESC * UNUSED idesc = abuf->idesc;
427   int cycles = 0;
428   {
429     int referenced = 0;
430     int UNUSED insn_referenced = abuf->written;
431     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
432   }
433   return cycles;
434 #undef FLD
435 }
436
437 static int
438 model_iq2000_subu (SIM_CPU *current_cpu, void *sem_arg)
439 {
440 #define FLD(f) abuf->fields.sfmt_mrgb.f
441   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
442   const IDESC * UNUSED idesc = abuf->idesc;
443   int cycles = 0;
444   {
445     int referenced = 0;
446     int UNUSED insn_referenced = abuf->written;
447     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
448   }
449   return cycles;
450 #undef FLD
451 }
452
453 static int
454 model_iq2000_xor (SIM_CPU *current_cpu, void *sem_arg)
455 {
456 #define FLD(f) abuf->fields.sfmt_mrgb.f
457   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
458   const IDESC * UNUSED idesc = abuf->idesc;
459   int cycles = 0;
460   {
461     int referenced = 0;
462     int UNUSED insn_referenced = abuf->written;
463     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
464   }
465   return cycles;
466 #undef FLD
467 }
468
469 static int
470 model_iq2000_xori (SIM_CPU *current_cpu, void *sem_arg)
471 {
472 #define FLD(f) abuf->fields.sfmt_addi.f
473   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
474   const IDESC * UNUSED idesc = abuf->idesc;
475   int cycles = 0;
476   {
477     int referenced = 0;
478     int UNUSED insn_referenced = abuf->written;
479     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
480   }
481   return cycles;
482 #undef FLD
483 }
484
485 static int
486 model_iq2000_bbi (SIM_CPU *current_cpu, void *sem_arg)
487 {
488 #define FLD(f) abuf->fields.sfmt_bbi.f
489   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
490   const IDESC * UNUSED idesc = abuf->idesc;
491   int cycles = 0;
492   {
493     int referenced = 0;
494     int UNUSED insn_referenced = abuf->written;
495     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
496   }
497   return cycles;
498 #undef FLD
499 }
500
501 static int
502 model_iq2000_bbin (SIM_CPU *current_cpu, void *sem_arg)
503 {
504 #define FLD(f) abuf->fields.sfmt_bbi.f
505   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
506   const IDESC * UNUSED idesc = abuf->idesc;
507   int cycles = 0;
508   {
509     int referenced = 0;
510     int UNUSED insn_referenced = abuf->written;
511     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
512   }
513   return cycles;
514 #undef FLD
515 }
516
517 static int
518 model_iq2000_bbv (SIM_CPU *current_cpu, void *sem_arg)
519 {
520 #define FLD(f) abuf->fields.sfmt_bbi.f
521   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
522   const IDESC * UNUSED idesc = abuf->idesc;
523   int cycles = 0;
524   {
525     int referenced = 0;
526     int UNUSED insn_referenced = abuf->written;
527     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
528   }
529   return cycles;
530 #undef FLD
531 }
532
533 static int
534 model_iq2000_bbvn (SIM_CPU *current_cpu, void *sem_arg)
535 {
536 #define FLD(f) abuf->fields.sfmt_bbi.f
537   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
538   const IDESC * UNUSED idesc = abuf->idesc;
539   int cycles = 0;
540   {
541     int referenced = 0;
542     int UNUSED insn_referenced = abuf->written;
543     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
544   }
545   return cycles;
546 #undef FLD
547 }
548
549 static int
550 model_iq2000_beq (SIM_CPU *current_cpu, void *sem_arg)
551 {
552 #define FLD(f) abuf->fields.sfmt_bbi.f
553   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
554   const IDESC * UNUSED idesc = abuf->idesc;
555   int cycles = 0;
556   {
557     int referenced = 0;
558     int UNUSED insn_referenced = abuf->written;
559     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
560   }
561   return cycles;
562 #undef FLD
563 }
564
565 static int
566 model_iq2000_beql (SIM_CPU *current_cpu, void *sem_arg)
567 {
568 #define FLD(f) abuf->fields.sfmt_bbi.f
569   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
570   const IDESC * UNUSED idesc = abuf->idesc;
571   int cycles = 0;
572   {
573     int referenced = 0;
574     int UNUSED insn_referenced = abuf->written;
575     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
576   }
577   return cycles;
578 #undef FLD
579 }
580
581 static int
582 model_iq2000_bgez (SIM_CPU *current_cpu, void *sem_arg)
583 {
584 #define FLD(f) abuf->fields.sfmt_bbi.f
585   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
586   const IDESC * UNUSED idesc = abuf->idesc;
587   int cycles = 0;
588   {
589     int referenced = 0;
590     int UNUSED insn_referenced = abuf->written;
591     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
592   }
593   return cycles;
594 #undef FLD
595 }
596
597 static int
598 model_iq2000_bgezal (SIM_CPU *current_cpu, void *sem_arg)
599 {
600 #define FLD(f) abuf->fields.sfmt_bbi.f
601   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
602   const IDESC * UNUSED idesc = abuf->idesc;
603   int cycles = 0;
604   {
605     int referenced = 0;
606     int UNUSED insn_referenced = abuf->written;
607     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
608   }
609   return cycles;
610 #undef FLD
611 }
612
613 static int
614 model_iq2000_bgezall (SIM_CPU *current_cpu, void *sem_arg)
615 {
616 #define FLD(f) abuf->fields.sfmt_bbi.f
617   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
618   const IDESC * UNUSED idesc = abuf->idesc;
619   int cycles = 0;
620   {
621     int referenced = 0;
622     int UNUSED insn_referenced = abuf->written;
623     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
624   }
625   return cycles;
626 #undef FLD
627 }
628
629 static int
630 model_iq2000_bgezl (SIM_CPU *current_cpu, void *sem_arg)
631 {
632 #define FLD(f) abuf->fields.sfmt_bbi.f
633   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
634   const IDESC * UNUSED idesc = abuf->idesc;
635   int cycles = 0;
636   {
637     int referenced = 0;
638     int UNUSED insn_referenced = abuf->written;
639     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
640   }
641   return cycles;
642 #undef FLD
643 }
644
645 static int
646 model_iq2000_bltz (SIM_CPU *current_cpu, void *sem_arg)
647 {
648 #define FLD(f) abuf->fields.sfmt_bbi.f
649   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
650   const IDESC * UNUSED idesc = abuf->idesc;
651   int cycles = 0;
652   {
653     int referenced = 0;
654     int UNUSED insn_referenced = abuf->written;
655     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
656   }
657   return cycles;
658 #undef FLD
659 }
660
661 static int
662 model_iq2000_bltzl (SIM_CPU *current_cpu, void *sem_arg)
663 {
664 #define FLD(f) abuf->fields.sfmt_bbi.f
665   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
666   const IDESC * UNUSED idesc = abuf->idesc;
667   int cycles = 0;
668   {
669     int referenced = 0;
670     int UNUSED insn_referenced = abuf->written;
671     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
672   }
673   return cycles;
674 #undef FLD
675 }
676
677 static int
678 model_iq2000_bltzal (SIM_CPU *current_cpu, void *sem_arg)
679 {
680 #define FLD(f) abuf->fields.sfmt_bbi.f
681   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
682   const IDESC * UNUSED idesc = abuf->idesc;
683   int cycles = 0;
684   {
685     int referenced = 0;
686     int UNUSED insn_referenced = abuf->written;
687     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
688   }
689   return cycles;
690 #undef FLD
691 }
692
693 static int
694 model_iq2000_bltzall (SIM_CPU *current_cpu, void *sem_arg)
695 {
696 #define FLD(f) abuf->fields.sfmt_bbi.f
697   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
698   const IDESC * UNUSED idesc = abuf->idesc;
699   int cycles = 0;
700   {
701     int referenced = 0;
702     int UNUSED insn_referenced = abuf->written;
703     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
704   }
705   return cycles;
706 #undef FLD
707 }
708
709 static int
710 model_iq2000_bmb0 (SIM_CPU *current_cpu, void *sem_arg)
711 {
712 #define FLD(f) abuf->fields.sfmt_bbi.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     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
720   }
721   return cycles;
722 #undef FLD
723 }
724
725 static int
726 model_iq2000_bmb1 (SIM_CPU *current_cpu, void *sem_arg)
727 {
728 #define FLD(f) abuf->fields.sfmt_bbi.f
729   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
730   const IDESC * UNUSED idesc = abuf->idesc;
731   int cycles = 0;
732   {
733     int referenced = 0;
734     int UNUSED insn_referenced = abuf->written;
735     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
736   }
737   return cycles;
738 #undef FLD
739 }
740
741 static int
742 model_iq2000_bmb2 (SIM_CPU *current_cpu, void *sem_arg)
743 {
744 #define FLD(f) abuf->fields.sfmt_bbi.f
745   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
746   const IDESC * UNUSED idesc = abuf->idesc;
747   int cycles = 0;
748   {
749     int referenced = 0;
750     int UNUSED insn_referenced = abuf->written;
751     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
752   }
753   return cycles;
754 #undef FLD
755 }
756
757 static int
758 model_iq2000_bmb3 (SIM_CPU *current_cpu, void *sem_arg)
759 {
760 #define FLD(f) abuf->fields.sfmt_bbi.f
761   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
762   const IDESC * UNUSED idesc = abuf->idesc;
763   int cycles = 0;
764   {
765     int referenced = 0;
766     int UNUSED insn_referenced = abuf->written;
767     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
768   }
769   return cycles;
770 #undef FLD
771 }
772
773 static int
774 model_iq2000_bne (SIM_CPU *current_cpu, void *sem_arg)
775 {
776 #define FLD(f) abuf->fields.sfmt_bbi.f
777   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
778   const IDESC * UNUSED idesc = abuf->idesc;
779   int cycles = 0;
780   {
781     int referenced = 0;
782     int UNUSED insn_referenced = abuf->written;
783     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
784   }
785   return cycles;
786 #undef FLD
787 }
788
789 static int
790 model_iq2000_bnel (SIM_CPU *current_cpu, void *sem_arg)
791 {
792 #define FLD(f) abuf->fields.sfmt_bbi.f
793   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
794   const IDESC * UNUSED idesc = abuf->idesc;
795   int cycles = 0;
796   {
797     int referenced = 0;
798     int UNUSED insn_referenced = abuf->written;
799     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
800   }
801   return cycles;
802 #undef FLD
803 }
804
805 static int
806 model_iq2000_jalr (SIM_CPU *current_cpu, void *sem_arg)
807 {
808 #define FLD(f) abuf->fields.sfmt_mrgb.f
809   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
810   const IDESC * UNUSED idesc = abuf->idesc;
811   int cycles = 0;
812   {
813     int referenced = 0;
814     int UNUSED insn_referenced = abuf->written;
815     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
816   }
817   return cycles;
818 #undef FLD
819 }
820
821 static int
822 model_iq2000_jr (SIM_CPU *current_cpu, void *sem_arg)
823 {
824 #define FLD(f) abuf->fields.sfmt_bbi.f
825   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
826   const IDESC * UNUSED idesc = abuf->idesc;
827   int cycles = 0;
828   {
829     int referenced = 0;
830     int UNUSED insn_referenced = abuf->written;
831     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
832   }
833   return cycles;
834 #undef FLD
835 }
836
837 static int
838 model_iq2000_lb (SIM_CPU *current_cpu, void *sem_arg)
839 {
840 #define FLD(f) abuf->fields.sfmt_addi.f
841   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
842   const IDESC * UNUSED idesc = abuf->idesc;
843   int cycles = 0;
844   {
845     int referenced = 0;
846     int UNUSED insn_referenced = abuf->written;
847     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
848   }
849   return cycles;
850 #undef FLD
851 }
852
853 static int
854 model_iq2000_lbu (SIM_CPU *current_cpu, void *sem_arg)
855 {
856 #define FLD(f) abuf->fields.sfmt_addi.f
857   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
858   const IDESC * UNUSED idesc = abuf->idesc;
859   int cycles = 0;
860   {
861     int referenced = 0;
862     int UNUSED insn_referenced = abuf->written;
863     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
864   }
865   return cycles;
866 #undef FLD
867 }
868
869 static int
870 model_iq2000_lh (SIM_CPU *current_cpu, void *sem_arg)
871 {
872 #define FLD(f) abuf->fields.sfmt_addi.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     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
880   }
881   return cycles;
882 #undef FLD
883 }
884
885 static int
886 model_iq2000_lhu (SIM_CPU *current_cpu, void *sem_arg)
887 {
888 #define FLD(f) abuf->fields.sfmt_addi.f
889   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
890   const IDESC * UNUSED idesc = abuf->idesc;
891   int cycles = 0;
892   {
893     int referenced = 0;
894     int UNUSED insn_referenced = abuf->written;
895     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
896   }
897   return cycles;
898 #undef FLD
899 }
900
901 static int
902 model_iq2000_lui (SIM_CPU *current_cpu, void *sem_arg)
903 {
904 #define FLD(f) abuf->fields.sfmt_addi.f
905   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
906   const IDESC * UNUSED idesc = abuf->idesc;
907   int cycles = 0;
908   {
909     int referenced = 0;
910     int UNUSED insn_referenced = abuf->written;
911     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
912   }
913   return cycles;
914 #undef FLD
915 }
916
917 static int
918 model_iq2000_lw (SIM_CPU *current_cpu, void *sem_arg)
919 {
920 #define FLD(f) abuf->fields.sfmt_addi.f
921   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
922   const IDESC * UNUSED idesc = abuf->idesc;
923   int cycles = 0;
924   {
925     int referenced = 0;
926     int UNUSED insn_referenced = abuf->written;
927     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
928   }
929   return cycles;
930 #undef FLD
931 }
932
933 static int
934 model_iq2000_sb (SIM_CPU *current_cpu, void *sem_arg)
935 {
936 #define FLD(f) abuf->fields.sfmt_addi.f
937   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
938   const IDESC * UNUSED idesc = abuf->idesc;
939   int cycles = 0;
940   {
941     int referenced = 0;
942     int UNUSED insn_referenced = abuf->written;
943     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
944   }
945   return cycles;
946 #undef FLD
947 }
948
949 static int
950 model_iq2000_sh (SIM_CPU *current_cpu, void *sem_arg)
951 {
952 #define FLD(f) abuf->fields.sfmt_addi.f
953   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
954   const IDESC * UNUSED idesc = abuf->idesc;
955   int cycles = 0;
956   {
957     int referenced = 0;
958     int UNUSED insn_referenced = abuf->written;
959     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
960   }
961   return cycles;
962 #undef FLD
963 }
964
965 static int
966 model_iq2000_sw (SIM_CPU *current_cpu, void *sem_arg)
967 {
968 #define FLD(f) abuf->fields.sfmt_addi.f
969   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
970   const IDESC * UNUSED idesc = abuf->idesc;
971   int cycles = 0;
972   {
973     int referenced = 0;
974     int UNUSED insn_referenced = abuf->written;
975     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
976   }
977   return cycles;
978 #undef FLD
979 }
980
981 static int
982 model_iq2000_break (SIM_CPU *current_cpu, void *sem_arg)
983 {
984 #define FLD(f) abuf->fields.fmt_empty.f
985   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
986   const IDESC * UNUSED idesc = abuf->idesc;
987   int cycles = 0;
988   {
989     int referenced = 0;
990     int UNUSED insn_referenced = abuf->written;
991     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
992   }
993   return cycles;
994 #undef FLD
995 }
996
997 static int
998 model_iq2000_syscall (SIM_CPU *current_cpu, void *sem_arg)
999 {
1000 #define FLD(f) abuf->fields.fmt_empty.f
1001   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1002   const IDESC * UNUSED idesc = abuf->idesc;
1003   int cycles = 0;
1004   {
1005     int referenced = 0;
1006     int UNUSED insn_referenced = abuf->written;
1007     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1008   }
1009   return cycles;
1010 #undef FLD
1011 }
1012
1013 static int
1014 model_iq2000_andoui (SIM_CPU *current_cpu, void *sem_arg)
1015 {
1016 #define FLD(f) abuf->fields.sfmt_addi.f
1017   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1018   const IDESC * UNUSED idesc = abuf->idesc;
1019   int cycles = 0;
1020   {
1021     int referenced = 0;
1022     int UNUSED insn_referenced = abuf->written;
1023     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1024   }
1025   return cycles;
1026 #undef FLD
1027 }
1028
1029 static int
1030 model_iq2000_orui (SIM_CPU *current_cpu, void *sem_arg)
1031 {
1032 #define FLD(f) abuf->fields.sfmt_addi.f
1033   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1034   const IDESC * UNUSED idesc = abuf->idesc;
1035   int cycles = 0;
1036   {
1037     int referenced = 0;
1038     int UNUSED insn_referenced = abuf->written;
1039     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1040   }
1041   return cycles;
1042 #undef FLD
1043 }
1044
1045 static int
1046 model_iq2000_bgtz (SIM_CPU *current_cpu, void *sem_arg)
1047 {
1048 #define FLD(f) abuf->fields.sfmt_bbi.f
1049   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1050   const IDESC * UNUSED idesc = abuf->idesc;
1051   int cycles = 0;
1052   {
1053     int referenced = 0;
1054     int UNUSED insn_referenced = abuf->written;
1055     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1056   }
1057   return cycles;
1058 #undef FLD
1059 }
1060
1061 static int
1062 model_iq2000_bgtzl (SIM_CPU *current_cpu, void *sem_arg)
1063 {
1064 #define FLD(f) abuf->fields.sfmt_bbi.f
1065   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1066   const IDESC * UNUSED idesc = abuf->idesc;
1067   int cycles = 0;
1068   {
1069     int referenced = 0;
1070     int UNUSED insn_referenced = abuf->written;
1071     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1072   }
1073   return cycles;
1074 #undef FLD
1075 }
1076
1077 static int
1078 model_iq2000_blez (SIM_CPU *current_cpu, void *sem_arg)
1079 {
1080 #define FLD(f) abuf->fields.sfmt_bbi.f
1081   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1082   const IDESC * UNUSED idesc = abuf->idesc;
1083   int cycles = 0;
1084   {
1085     int referenced = 0;
1086     int UNUSED insn_referenced = abuf->written;
1087     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1088   }
1089   return cycles;
1090 #undef FLD
1091 }
1092
1093 static int
1094 model_iq2000_blezl (SIM_CPU *current_cpu, void *sem_arg)
1095 {
1096 #define FLD(f) abuf->fields.sfmt_bbi.f
1097   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1098   const IDESC * UNUSED idesc = abuf->idesc;
1099   int cycles = 0;
1100   {
1101     int referenced = 0;
1102     int UNUSED insn_referenced = abuf->written;
1103     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1104   }
1105   return cycles;
1106 #undef FLD
1107 }
1108
1109 static int
1110 model_iq2000_mrgb (SIM_CPU *current_cpu, void *sem_arg)
1111 {
1112 #define FLD(f) abuf->fields.sfmt_mrgb.f
1113   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1114   const IDESC * UNUSED idesc = abuf->idesc;
1115   int cycles = 0;
1116   {
1117     int referenced = 0;
1118     int UNUSED insn_referenced = abuf->written;
1119     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1120   }
1121   return cycles;
1122 #undef FLD
1123 }
1124
1125 static int
1126 model_iq2000_bctxt (SIM_CPU *current_cpu, void *sem_arg)
1127 {
1128 #define FLD(f) abuf->fields.fmt_empty.f
1129   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1130   const IDESC * UNUSED idesc = abuf->idesc;
1131   int cycles = 0;
1132   {
1133     int referenced = 0;
1134     int UNUSED insn_referenced = abuf->written;
1135     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1136   }
1137   return cycles;
1138 #undef FLD
1139 }
1140
1141 static int
1142 model_iq2000_bc0f (SIM_CPU *current_cpu, void *sem_arg)
1143 {
1144 #define FLD(f) abuf->fields.fmt_empty.f
1145   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1146   const IDESC * UNUSED idesc = abuf->idesc;
1147   int cycles = 0;
1148   {
1149     int referenced = 0;
1150     int UNUSED insn_referenced = abuf->written;
1151     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1152   }
1153   return cycles;
1154 #undef FLD
1155 }
1156
1157 static int
1158 model_iq2000_bc0fl (SIM_CPU *current_cpu, void *sem_arg)
1159 {
1160 #define FLD(f) abuf->fields.fmt_empty.f
1161   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1162   const IDESC * UNUSED idesc = abuf->idesc;
1163   int cycles = 0;
1164   {
1165     int referenced = 0;
1166     int UNUSED insn_referenced = abuf->written;
1167     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1168   }
1169   return cycles;
1170 #undef FLD
1171 }
1172
1173 static int
1174 model_iq2000_bc3f (SIM_CPU *current_cpu, void *sem_arg)
1175 {
1176 #define FLD(f) abuf->fields.fmt_empty.f
1177   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1178   const IDESC * UNUSED idesc = abuf->idesc;
1179   int cycles = 0;
1180   {
1181     int referenced = 0;
1182     int UNUSED insn_referenced = abuf->written;
1183     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1184   }
1185   return cycles;
1186 #undef FLD
1187 }
1188
1189 static int
1190 model_iq2000_bc3fl (SIM_CPU *current_cpu, void *sem_arg)
1191 {
1192 #define FLD(f) abuf->fields.fmt_empty.f
1193   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1194   const IDESC * UNUSED idesc = abuf->idesc;
1195   int cycles = 0;
1196   {
1197     int referenced = 0;
1198     int UNUSED insn_referenced = abuf->written;
1199     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1200   }
1201   return cycles;
1202 #undef FLD
1203 }
1204
1205 static int
1206 model_iq2000_bc0t (SIM_CPU *current_cpu, void *sem_arg)
1207 {
1208 #define FLD(f) abuf->fields.fmt_empty.f
1209   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1210   const IDESC * UNUSED idesc = abuf->idesc;
1211   int cycles = 0;
1212   {
1213     int referenced = 0;
1214     int UNUSED insn_referenced = abuf->written;
1215     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1216   }
1217   return cycles;
1218 #undef FLD
1219 }
1220
1221 static int
1222 model_iq2000_bc0tl (SIM_CPU *current_cpu, void *sem_arg)
1223 {
1224 #define FLD(f) abuf->fields.fmt_empty.f
1225   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1226   const IDESC * UNUSED idesc = abuf->idesc;
1227   int cycles = 0;
1228   {
1229     int referenced = 0;
1230     int UNUSED insn_referenced = abuf->written;
1231     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1232   }
1233   return cycles;
1234 #undef FLD
1235 }
1236
1237 static int
1238 model_iq2000_bc3t (SIM_CPU *current_cpu, void *sem_arg)
1239 {
1240 #define FLD(f) abuf->fields.fmt_empty.f
1241   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1242   const IDESC * UNUSED idesc = abuf->idesc;
1243   int cycles = 0;
1244   {
1245     int referenced = 0;
1246     int UNUSED insn_referenced = abuf->written;
1247     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1248   }
1249   return cycles;
1250 #undef FLD
1251 }
1252
1253 static int
1254 model_iq2000_bc3tl (SIM_CPU *current_cpu, void *sem_arg)
1255 {
1256 #define FLD(f) abuf->fields.fmt_empty.f
1257   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1258   const IDESC * UNUSED idesc = abuf->idesc;
1259   int cycles = 0;
1260   {
1261     int referenced = 0;
1262     int UNUSED insn_referenced = abuf->written;
1263     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1264   }
1265   return cycles;
1266 #undef FLD
1267 }
1268
1269 static int
1270 model_iq2000_cfc0 (SIM_CPU *current_cpu, void *sem_arg)
1271 {
1272 #define FLD(f) abuf->fields.fmt_empty.f
1273   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1274   const IDESC * UNUSED idesc = abuf->idesc;
1275   int cycles = 0;
1276   {
1277     int referenced = 0;
1278     int UNUSED insn_referenced = abuf->written;
1279     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1280   }
1281   return cycles;
1282 #undef FLD
1283 }
1284
1285 static int
1286 model_iq2000_cfc1 (SIM_CPU *current_cpu, void *sem_arg)
1287 {
1288 #define FLD(f) abuf->fields.fmt_empty.f
1289   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1290   const IDESC * UNUSED idesc = abuf->idesc;
1291   int cycles = 0;
1292   {
1293     int referenced = 0;
1294     int UNUSED insn_referenced = abuf->written;
1295     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1296   }
1297   return cycles;
1298 #undef FLD
1299 }
1300
1301 static int
1302 model_iq2000_cfc2 (SIM_CPU *current_cpu, void *sem_arg)
1303 {
1304 #define FLD(f) abuf->fields.fmt_empty.f
1305   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1306   const IDESC * UNUSED idesc = abuf->idesc;
1307   int cycles = 0;
1308   {
1309     int referenced = 0;
1310     int UNUSED insn_referenced = abuf->written;
1311     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1312   }
1313   return cycles;
1314 #undef FLD
1315 }
1316
1317 static int
1318 model_iq2000_cfc3 (SIM_CPU *current_cpu, void *sem_arg)
1319 {
1320 #define FLD(f) abuf->fields.fmt_empty.f
1321   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1322   const IDESC * UNUSED idesc = abuf->idesc;
1323   int cycles = 0;
1324   {
1325     int referenced = 0;
1326     int UNUSED insn_referenced = abuf->written;
1327     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1328   }
1329   return cycles;
1330 #undef FLD
1331 }
1332
1333 static int
1334 model_iq2000_chkhdr (SIM_CPU *current_cpu, void *sem_arg)
1335 {
1336 #define FLD(f) abuf->fields.fmt_empty.f
1337   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1338   const IDESC * UNUSED idesc = abuf->idesc;
1339   int cycles = 0;
1340   {
1341     int referenced = 0;
1342     int UNUSED insn_referenced = abuf->written;
1343     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1344   }
1345   return cycles;
1346 #undef FLD
1347 }
1348
1349 static int
1350 model_iq2000_ctc0 (SIM_CPU *current_cpu, void *sem_arg)
1351 {
1352 #define FLD(f) abuf->fields.fmt_empty.f
1353   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1354   const IDESC * UNUSED idesc = abuf->idesc;
1355   int cycles = 0;
1356   {
1357     int referenced = 0;
1358     int UNUSED insn_referenced = abuf->written;
1359     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1360   }
1361   return cycles;
1362 #undef FLD
1363 }
1364
1365 static int
1366 model_iq2000_ctc1 (SIM_CPU *current_cpu, void *sem_arg)
1367 {
1368 #define FLD(f) abuf->fields.fmt_empty.f
1369   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1370   const IDESC * UNUSED idesc = abuf->idesc;
1371   int cycles = 0;
1372   {
1373     int referenced = 0;
1374     int UNUSED insn_referenced = abuf->written;
1375     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1376   }
1377   return cycles;
1378 #undef FLD
1379 }
1380
1381 static int
1382 model_iq2000_ctc2 (SIM_CPU *current_cpu, void *sem_arg)
1383 {
1384 #define FLD(f) abuf->fields.fmt_empty.f
1385   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1386   const IDESC * UNUSED idesc = abuf->idesc;
1387   int cycles = 0;
1388   {
1389     int referenced = 0;
1390     int UNUSED insn_referenced = abuf->written;
1391     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1392   }
1393   return cycles;
1394 #undef FLD
1395 }
1396
1397 static int
1398 model_iq2000_ctc3 (SIM_CPU *current_cpu, void *sem_arg)
1399 {
1400 #define FLD(f) abuf->fields.fmt_empty.f
1401   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1402   const IDESC * UNUSED idesc = abuf->idesc;
1403   int cycles = 0;
1404   {
1405     int referenced = 0;
1406     int UNUSED insn_referenced = abuf->written;
1407     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1408   }
1409   return cycles;
1410 #undef FLD
1411 }
1412
1413 static int
1414 model_iq2000_jcr (SIM_CPU *current_cpu, void *sem_arg)
1415 {
1416 #define FLD(f) abuf->fields.fmt_empty.f
1417   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1418   const IDESC * UNUSED idesc = abuf->idesc;
1419   int cycles = 0;
1420   {
1421     int referenced = 0;
1422     int UNUSED insn_referenced = abuf->written;
1423     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1424   }
1425   return cycles;
1426 #undef FLD
1427 }
1428
1429 static int
1430 model_iq2000_luc32 (SIM_CPU *current_cpu, void *sem_arg)
1431 {
1432 #define FLD(f) abuf->fields.fmt_empty.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 += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1440   }
1441   return cycles;
1442 #undef FLD
1443 }
1444
1445 static int
1446 model_iq2000_luc32l (SIM_CPU *current_cpu, void *sem_arg)
1447 {
1448 #define FLD(f) abuf->fields.fmt_empty.f
1449   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1450   const IDESC * UNUSED idesc = abuf->idesc;
1451   int cycles = 0;
1452   {
1453     int referenced = 0;
1454     int UNUSED insn_referenced = abuf->written;
1455     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1456   }
1457   return cycles;
1458 #undef FLD
1459 }
1460
1461 static int
1462 model_iq2000_luc64 (SIM_CPU *current_cpu, void *sem_arg)
1463 {
1464 #define FLD(f) abuf->fields.fmt_empty.f
1465   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1466   const IDESC * UNUSED idesc = abuf->idesc;
1467   int cycles = 0;
1468   {
1469     int referenced = 0;
1470     int UNUSED insn_referenced = abuf->written;
1471     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1472   }
1473   return cycles;
1474 #undef FLD
1475 }
1476
1477 static int
1478 model_iq2000_luc64l (SIM_CPU *current_cpu, void *sem_arg)
1479 {
1480 #define FLD(f) abuf->fields.fmt_empty.f
1481   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1482   const IDESC * UNUSED idesc = abuf->idesc;
1483   int cycles = 0;
1484   {
1485     int referenced = 0;
1486     int UNUSED insn_referenced = abuf->written;
1487     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1488   }
1489   return cycles;
1490 #undef FLD
1491 }
1492
1493 static int
1494 model_iq2000_luk (SIM_CPU *current_cpu, void *sem_arg)
1495 {
1496 #define FLD(f) abuf->fields.fmt_empty.f
1497   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1498   const IDESC * UNUSED idesc = abuf->idesc;
1499   int cycles = 0;
1500   {
1501     int referenced = 0;
1502     int UNUSED insn_referenced = abuf->written;
1503     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1504   }
1505   return cycles;
1506 #undef FLD
1507 }
1508
1509 static int
1510 model_iq2000_lulck (SIM_CPU *current_cpu, void *sem_arg)
1511 {
1512 #define FLD(f) abuf->fields.fmt_empty.f
1513   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1514   const IDESC * UNUSED idesc = abuf->idesc;
1515   int cycles = 0;
1516   {
1517     int referenced = 0;
1518     int UNUSED insn_referenced = abuf->written;
1519     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1520   }
1521   return cycles;
1522 #undef FLD
1523 }
1524
1525 static int
1526 model_iq2000_lum32 (SIM_CPU *current_cpu, void *sem_arg)
1527 {
1528 #define FLD(f) abuf->fields.fmt_empty.f
1529   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1530   const IDESC * UNUSED idesc = abuf->idesc;
1531   int cycles = 0;
1532   {
1533     int referenced = 0;
1534     int UNUSED insn_referenced = abuf->written;
1535     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1536   }
1537   return cycles;
1538 #undef FLD
1539 }
1540
1541 static int
1542 model_iq2000_lum32l (SIM_CPU *current_cpu, void *sem_arg)
1543 {
1544 #define FLD(f) abuf->fields.fmt_empty.f
1545   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1546   const IDESC * UNUSED idesc = abuf->idesc;
1547   int cycles = 0;
1548   {
1549     int referenced = 0;
1550     int UNUSED insn_referenced = abuf->written;
1551     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1552   }
1553   return cycles;
1554 #undef FLD
1555 }
1556
1557 static int
1558 model_iq2000_lum64 (SIM_CPU *current_cpu, void *sem_arg)
1559 {
1560 #define FLD(f) abuf->fields.fmt_empty.f
1561   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1562   const IDESC * UNUSED idesc = abuf->idesc;
1563   int cycles = 0;
1564   {
1565     int referenced = 0;
1566     int UNUSED insn_referenced = abuf->written;
1567     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1568   }
1569   return cycles;
1570 #undef FLD
1571 }
1572
1573 static int
1574 model_iq2000_lum64l (SIM_CPU *current_cpu, void *sem_arg)
1575 {
1576 #define FLD(f) abuf->fields.fmt_empty.f
1577   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1578   const IDESC * UNUSED idesc = abuf->idesc;
1579   int cycles = 0;
1580   {
1581     int referenced = 0;
1582     int UNUSED insn_referenced = abuf->written;
1583     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1584   }
1585   return cycles;
1586 #undef FLD
1587 }
1588
1589 static int
1590 model_iq2000_lur (SIM_CPU *current_cpu, void *sem_arg)
1591 {
1592 #define FLD(f) abuf->fields.fmt_empty.f
1593   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1594   const IDESC * UNUSED idesc = abuf->idesc;
1595   int cycles = 0;
1596   {
1597     int referenced = 0;
1598     int UNUSED insn_referenced = abuf->written;
1599     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1600   }
1601   return cycles;
1602 #undef FLD
1603 }
1604
1605 static int
1606 model_iq2000_lurl (SIM_CPU *current_cpu, void *sem_arg)
1607 {
1608 #define FLD(f) abuf->fields.fmt_empty.f
1609   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1610   const IDESC * UNUSED idesc = abuf->idesc;
1611   int cycles = 0;
1612   {
1613     int referenced = 0;
1614     int UNUSED insn_referenced = abuf->written;
1615     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1616   }
1617   return cycles;
1618 #undef FLD
1619 }
1620
1621 static int
1622 model_iq2000_luulck (SIM_CPU *current_cpu, void *sem_arg)
1623 {
1624 #define FLD(f) abuf->fields.fmt_empty.f
1625   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1626   const IDESC * UNUSED idesc = abuf->idesc;
1627   int cycles = 0;
1628   {
1629     int referenced = 0;
1630     int UNUSED insn_referenced = abuf->written;
1631     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1632   }
1633   return cycles;
1634 #undef FLD
1635 }
1636
1637 static int
1638 model_iq2000_mfc0 (SIM_CPU *current_cpu, void *sem_arg)
1639 {
1640 #define FLD(f) abuf->fields.fmt_empty.f
1641   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1642   const IDESC * UNUSED idesc = abuf->idesc;
1643   int cycles = 0;
1644   {
1645     int referenced = 0;
1646     int UNUSED insn_referenced = abuf->written;
1647     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1648   }
1649   return cycles;
1650 #undef FLD
1651 }
1652
1653 static int
1654 model_iq2000_mfc1 (SIM_CPU *current_cpu, void *sem_arg)
1655 {
1656 #define FLD(f) abuf->fields.fmt_empty.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     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1664   }
1665   return cycles;
1666 #undef FLD
1667 }
1668
1669 static int
1670 model_iq2000_mfc2 (SIM_CPU *current_cpu, void *sem_arg)
1671 {
1672 #define FLD(f) abuf->fields.fmt_empty.f
1673   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1674   const IDESC * UNUSED idesc = abuf->idesc;
1675   int cycles = 0;
1676   {
1677     int referenced = 0;
1678     int UNUSED insn_referenced = abuf->written;
1679     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1680   }
1681   return cycles;
1682 #undef FLD
1683 }
1684
1685 static int
1686 model_iq2000_mfc3 (SIM_CPU *current_cpu, void *sem_arg)
1687 {
1688 #define FLD(f) abuf->fields.fmt_empty.f
1689   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1690   const IDESC * UNUSED idesc = abuf->idesc;
1691   int cycles = 0;
1692   {
1693     int referenced = 0;
1694     int UNUSED insn_referenced = abuf->written;
1695     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1696   }
1697   return cycles;
1698 #undef FLD
1699 }
1700
1701 static int
1702 model_iq2000_mtc0 (SIM_CPU *current_cpu, void *sem_arg)
1703 {
1704 #define FLD(f) abuf->fields.fmt_empty.f
1705   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1706   const IDESC * UNUSED idesc = abuf->idesc;
1707   int cycles = 0;
1708   {
1709     int referenced = 0;
1710     int UNUSED insn_referenced = abuf->written;
1711     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1712   }
1713   return cycles;
1714 #undef FLD
1715 }
1716
1717 static int
1718 model_iq2000_mtc1 (SIM_CPU *current_cpu, void *sem_arg)
1719 {
1720 #define FLD(f) abuf->fields.fmt_empty.f
1721   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1722   const IDESC * UNUSED idesc = abuf->idesc;
1723   int cycles = 0;
1724   {
1725     int referenced = 0;
1726     int UNUSED insn_referenced = abuf->written;
1727     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1728   }
1729   return cycles;
1730 #undef FLD
1731 }
1732
1733 static int
1734 model_iq2000_mtc2 (SIM_CPU *current_cpu, void *sem_arg)
1735 {
1736 #define FLD(f) abuf->fields.fmt_empty.f
1737   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1738   const IDESC * UNUSED idesc = abuf->idesc;
1739   int cycles = 0;
1740   {
1741     int referenced = 0;
1742     int UNUSED insn_referenced = abuf->written;
1743     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1744   }
1745   return cycles;
1746 #undef FLD
1747 }
1748
1749 static int
1750 model_iq2000_mtc3 (SIM_CPU *current_cpu, void *sem_arg)
1751 {
1752 #define FLD(f) abuf->fields.fmt_empty.f
1753   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1754   const IDESC * UNUSED idesc = abuf->idesc;
1755   int cycles = 0;
1756   {
1757     int referenced = 0;
1758     int UNUSED insn_referenced = abuf->written;
1759     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1760   }
1761   return cycles;
1762 #undef FLD
1763 }
1764
1765 static int
1766 model_iq2000_pkrl (SIM_CPU *current_cpu, void *sem_arg)
1767 {
1768 #define FLD(f) abuf->fields.fmt_empty.f
1769   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1770   const IDESC * UNUSED idesc = abuf->idesc;
1771   int cycles = 0;
1772   {
1773     int referenced = 0;
1774     int UNUSED insn_referenced = abuf->written;
1775     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1776   }
1777   return cycles;
1778 #undef FLD
1779 }
1780
1781 static int
1782 model_iq2000_pkrlr1 (SIM_CPU *current_cpu, void *sem_arg)
1783 {
1784 #define FLD(f) abuf->fields.fmt_empty.f
1785   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1786   const IDESC * UNUSED idesc = abuf->idesc;
1787   int cycles = 0;
1788   {
1789     int referenced = 0;
1790     int UNUSED insn_referenced = abuf->written;
1791     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1792   }
1793   return cycles;
1794 #undef FLD
1795 }
1796
1797 static int
1798 model_iq2000_pkrlr30 (SIM_CPU *current_cpu, void *sem_arg)
1799 {
1800 #define FLD(f) abuf->fields.fmt_empty.f
1801   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1802   const IDESC * UNUSED idesc = abuf->idesc;
1803   int cycles = 0;
1804   {
1805     int referenced = 0;
1806     int UNUSED insn_referenced = abuf->written;
1807     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1808   }
1809   return cycles;
1810 #undef FLD
1811 }
1812
1813 static int
1814 model_iq2000_rb (SIM_CPU *current_cpu, void *sem_arg)
1815 {
1816 #define FLD(f) abuf->fields.fmt_empty.f
1817   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1818   const IDESC * UNUSED idesc = abuf->idesc;
1819   int cycles = 0;
1820   {
1821     int referenced = 0;
1822     int UNUSED insn_referenced = abuf->written;
1823     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1824   }
1825   return cycles;
1826 #undef FLD
1827 }
1828
1829 static int
1830 model_iq2000_rbr1 (SIM_CPU *current_cpu, void *sem_arg)
1831 {
1832 #define FLD(f) abuf->fields.fmt_empty.f
1833   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1834   const IDESC * UNUSED idesc = abuf->idesc;
1835   int cycles = 0;
1836   {
1837     int referenced = 0;
1838     int UNUSED insn_referenced = abuf->written;
1839     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1840   }
1841   return cycles;
1842 #undef FLD
1843 }
1844
1845 static int
1846 model_iq2000_rbr30 (SIM_CPU *current_cpu, void *sem_arg)
1847 {
1848 #define FLD(f) abuf->fields.fmt_empty.f
1849   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1850   const IDESC * UNUSED idesc = abuf->idesc;
1851   int cycles = 0;
1852   {
1853     int referenced = 0;
1854     int UNUSED insn_referenced = abuf->written;
1855     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1856   }
1857   return cycles;
1858 #undef FLD
1859 }
1860
1861 static int
1862 model_iq2000_rfe (SIM_CPU *current_cpu, void *sem_arg)
1863 {
1864 #define FLD(f) abuf->fields.fmt_empty.f
1865   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1866   const IDESC * UNUSED idesc = abuf->idesc;
1867   int cycles = 0;
1868   {
1869     int referenced = 0;
1870     int UNUSED insn_referenced = abuf->written;
1871     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1872   }
1873   return cycles;
1874 #undef FLD
1875 }
1876
1877 static int
1878 model_iq2000_rx (SIM_CPU *current_cpu, void *sem_arg)
1879 {
1880 #define FLD(f) abuf->fields.fmt_empty.f
1881   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1882   const IDESC * UNUSED idesc = abuf->idesc;
1883   int cycles = 0;
1884   {
1885     int referenced = 0;
1886     int UNUSED insn_referenced = abuf->written;
1887     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1888   }
1889   return cycles;
1890 #undef FLD
1891 }
1892
1893 static int
1894 model_iq2000_rxr1 (SIM_CPU *current_cpu, void *sem_arg)
1895 {
1896 #define FLD(f) abuf->fields.fmt_empty.f
1897   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1898   const IDESC * UNUSED idesc = abuf->idesc;
1899   int cycles = 0;
1900   {
1901     int referenced = 0;
1902     int UNUSED insn_referenced = abuf->written;
1903     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1904   }
1905   return cycles;
1906 #undef FLD
1907 }
1908
1909 static int
1910 model_iq2000_rxr30 (SIM_CPU *current_cpu, void *sem_arg)
1911 {
1912 #define FLD(f) abuf->fields.fmt_empty.f
1913   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1914   const IDESC * UNUSED idesc = abuf->idesc;
1915   int cycles = 0;
1916   {
1917     int referenced = 0;
1918     int UNUSED insn_referenced = abuf->written;
1919     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1920   }
1921   return cycles;
1922 #undef FLD
1923 }
1924
1925 static int
1926 model_iq2000_sleep (SIM_CPU *current_cpu, void *sem_arg)
1927 {
1928 #define FLD(f) abuf->fields.fmt_empty.f
1929   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1930   const IDESC * UNUSED idesc = abuf->idesc;
1931   int cycles = 0;
1932   {
1933     int referenced = 0;
1934     int UNUSED insn_referenced = abuf->written;
1935     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1936   }
1937   return cycles;
1938 #undef FLD
1939 }
1940
1941 static int
1942 model_iq2000_srrd (SIM_CPU *current_cpu, void *sem_arg)
1943 {
1944 #define FLD(f) abuf->fields.fmt_empty.f
1945   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1946   const IDESC * UNUSED idesc = abuf->idesc;
1947   int cycles = 0;
1948   {
1949     int referenced = 0;
1950     int UNUSED insn_referenced = abuf->written;
1951     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1952   }
1953   return cycles;
1954 #undef FLD
1955 }
1956
1957 static int
1958 model_iq2000_srrdl (SIM_CPU *current_cpu, void *sem_arg)
1959 {
1960 #define FLD(f) abuf->fields.fmt_empty.f
1961   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1962   const IDESC * UNUSED idesc = abuf->idesc;
1963   int cycles = 0;
1964   {
1965     int referenced = 0;
1966     int UNUSED insn_referenced = abuf->written;
1967     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1968   }
1969   return cycles;
1970 #undef FLD
1971 }
1972
1973 static int
1974 model_iq2000_srulck (SIM_CPU *current_cpu, void *sem_arg)
1975 {
1976 #define FLD(f) abuf->fields.fmt_empty.f
1977   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1978   const IDESC * UNUSED idesc = abuf->idesc;
1979   int cycles = 0;
1980   {
1981     int referenced = 0;
1982     int UNUSED insn_referenced = abuf->written;
1983     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
1984   }
1985   return cycles;
1986 #undef FLD
1987 }
1988
1989 static int
1990 model_iq2000_srwr (SIM_CPU *current_cpu, void *sem_arg)
1991 {
1992 #define FLD(f) abuf->fields.fmt_empty.f
1993   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
1994   const IDESC * UNUSED idesc = abuf->idesc;
1995   int cycles = 0;
1996   {
1997     int referenced = 0;
1998     int UNUSED insn_referenced = abuf->written;
1999     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
2000   }
2001   return cycles;
2002 #undef FLD
2003 }
2004
2005 static int
2006 model_iq2000_srwru (SIM_CPU *current_cpu, void *sem_arg)
2007 {
2008 #define FLD(f) abuf->fields.fmt_empty.f
2009   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2010   const IDESC * UNUSED idesc = abuf->idesc;
2011   int cycles = 0;
2012   {
2013     int referenced = 0;
2014     int UNUSED insn_referenced = abuf->written;
2015     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
2016   }
2017   return cycles;
2018 #undef FLD
2019 }
2020
2021 static int
2022 model_iq2000_trapqfl (SIM_CPU *current_cpu, void *sem_arg)
2023 {
2024 #define FLD(f) abuf->fields.fmt_empty.f
2025   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2026   const IDESC * UNUSED idesc = abuf->idesc;
2027   int cycles = 0;
2028   {
2029     int referenced = 0;
2030     int UNUSED insn_referenced = abuf->written;
2031     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
2032   }
2033   return cycles;
2034 #undef FLD
2035 }
2036
2037 static int
2038 model_iq2000_trapqne (SIM_CPU *current_cpu, void *sem_arg)
2039 {
2040 #define FLD(f) abuf->fields.fmt_empty.f
2041   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2042   const IDESC * UNUSED idesc = abuf->idesc;
2043   int cycles = 0;
2044   {
2045     int referenced = 0;
2046     int UNUSED insn_referenced = abuf->written;
2047     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
2048   }
2049   return cycles;
2050 #undef FLD
2051 }
2052
2053 static int
2054 model_iq2000_traprel (SIM_CPU *current_cpu, void *sem_arg)
2055 {
2056 #define FLD(f) abuf->fields.fmt_empty.f
2057   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2058   const IDESC * UNUSED idesc = abuf->idesc;
2059   int cycles = 0;
2060   {
2061     int referenced = 0;
2062     int UNUSED insn_referenced = abuf->written;
2063     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
2064   }
2065   return cycles;
2066 #undef FLD
2067 }
2068
2069 static int
2070 model_iq2000_wb (SIM_CPU *current_cpu, void *sem_arg)
2071 {
2072 #define FLD(f) abuf->fields.fmt_empty.f
2073   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2074   const IDESC * UNUSED idesc = abuf->idesc;
2075   int cycles = 0;
2076   {
2077     int referenced = 0;
2078     int UNUSED insn_referenced = abuf->written;
2079     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
2080   }
2081   return cycles;
2082 #undef FLD
2083 }
2084
2085 static int
2086 model_iq2000_wbu (SIM_CPU *current_cpu, void *sem_arg)
2087 {
2088 #define FLD(f) abuf->fields.fmt_empty.f
2089   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2090   const IDESC * UNUSED idesc = abuf->idesc;
2091   int cycles = 0;
2092   {
2093     int referenced = 0;
2094     int UNUSED insn_referenced = abuf->written;
2095     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
2096   }
2097   return cycles;
2098 #undef FLD
2099 }
2100
2101 static int
2102 model_iq2000_wbr1 (SIM_CPU *current_cpu, void *sem_arg)
2103 {
2104 #define FLD(f) abuf->fields.fmt_empty.f
2105   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2106   const IDESC * UNUSED idesc = abuf->idesc;
2107   int cycles = 0;
2108   {
2109     int referenced = 0;
2110     int UNUSED insn_referenced = abuf->written;
2111     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
2112   }
2113   return cycles;
2114 #undef FLD
2115 }
2116
2117 static int
2118 model_iq2000_wbr1u (SIM_CPU *current_cpu, void *sem_arg)
2119 {
2120 #define FLD(f) abuf->fields.fmt_empty.f
2121   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2122   const IDESC * UNUSED idesc = abuf->idesc;
2123   int cycles = 0;
2124   {
2125     int referenced = 0;
2126     int UNUSED insn_referenced = abuf->written;
2127     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
2128   }
2129   return cycles;
2130 #undef FLD
2131 }
2132
2133 static int
2134 model_iq2000_wbr30 (SIM_CPU *current_cpu, void *sem_arg)
2135 {
2136 #define FLD(f) abuf->fields.fmt_empty.f
2137   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2138   const IDESC * UNUSED idesc = abuf->idesc;
2139   int cycles = 0;
2140   {
2141     int referenced = 0;
2142     int UNUSED insn_referenced = abuf->written;
2143     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
2144   }
2145   return cycles;
2146 #undef FLD
2147 }
2148
2149 static int
2150 model_iq2000_wbr30u (SIM_CPU *current_cpu, void *sem_arg)
2151 {
2152 #define FLD(f) abuf->fields.fmt_empty.f
2153   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2154   const IDESC * UNUSED idesc = abuf->idesc;
2155   int cycles = 0;
2156   {
2157     int referenced = 0;
2158     int UNUSED insn_referenced = abuf->written;
2159     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
2160   }
2161   return cycles;
2162 #undef FLD
2163 }
2164
2165 static int
2166 model_iq2000_wx (SIM_CPU *current_cpu, void *sem_arg)
2167 {
2168 #define FLD(f) abuf->fields.fmt_empty.f
2169   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2170   const IDESC * UNUSED idesc = abuf->idesc;
2171   int cycles = 0;
2172   {
2173     int referenced = 0;
2174     int UNUSED insn_referenced = abuf->written;
2175     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
2176   }
2177   return cycles;
2178 #undef FLD
2179 }
2180
2181 static int
2182 model_iq2000_wxu (SIM_CPU *current_cpu, void *sem_arg)
2183 {
2184 #define FLD(f) abuf->fields.fmt_empty.f
2185   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2186   const IDESC * UNUSED idesc = abuf->idesc;
2187   int cycles = 0;
2188   {
2189     int referenced = 0;
2190     int UNUSED insn_referenced = abuf->written;
2191     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
2192   }
2193   return cycles;
2194 #undef FLD
2195 }
2196
2197 static int
2198 model_iq2000_wxr1 (SIM_CPU *current_cpu, void *sem_arg)
2199 {
2200 #define FLD(f) abuf->fields.fmt_empty.f
2201   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2202   const IDESC * UNUSED idesc = abuf->idesc;
2203   int cycles = 0;
2204   {
2205     int referenced = 0;
2206     int UNUSED insn_referenced = abuf->written;
2207     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
2208   }
2209   return cycles;
2210 #undef FLD
2211 }
2212
2213 static int
2214 model_iq2000_wxr1u (SIM_CPU *current_cpu, void *sem_arg)
2215 {
2216 #define FLD(f) abuf->fields.fmt_empty.f
2217   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2218   const IDESC * UNUSED idesc = abuf->idesc;
2219   int cycles = 0;
2220   {
2221     int referenced = 0;
2222     int UNUSED insn_referenced = abuf->written;
2223     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
2224   }
2225   return cycles;
2226 #undef FLD
2227 }
2228
2229 static int
2230 model_iq2000_wxr30 (SIM_CPU *current_cpu, void *sem_arg)
2231 {
2232 #define FLD(f) abuf->fields.fmt_empty.f
2233   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2234   const IDESC * UNUSED idesc = abuf->idesc;
2235   int cycles = 0;
2236   {
2237     int referenced = 0;
2238     int UNUSED insn_referenced = abuf->written;
2239     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
2240   }
2241   return cycles;
2242 #undef FLD
2243 }
2244
2245 static int
2246 model_iq2000_wxr30u (SIM_CPU *current_cpu, void *sem_arg)
2247 {
2248 #define FLD(f) abuf->fields.fmt_empty.f
2249   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2250   const IDESC * UNUSED idesc = abuf->idesc;
2251   int cycles = 0;
2252   {
2253     int referenced = 0;
2254     int UNUSED insn_referenced = abuf->written;
2255     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
2256   }
2257   return cycles;
2258 #undef FLD
2259 }
2260
2261 static int
2262 model_iq2000_ldw (SIM_CPU *current_cpu, void *sem_arg)
2263 {
2264 #define FLD(f) abuf->fields.sfmt_addi.f
2265   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2266   const IDESC * UNUSED idesc = abuf->idesc;
2267   int cycles = 0;
2268   {
2269     int referenced = 0;
2270     int UNUSED insn_referenced = abuf->written;
2271     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
2272   }
2273   return cycles;
2274 #undef FLD
2275 }
2276
2277 static int
2278 model_iq2000_sdw (SIM_CPU *current_cpu, void *sem_arg)
2279 {
2280 #define FLD(f) abuf->fields.sfmt_addi.f
2281   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2282   const IDESC * UNUSED idesc = abuf->idesc;
2283   int cycles = 0;
2284   {
2285     int referenced = 0;
2286     int UNUSED insn_referenced = abuf->written;
2287     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
2288   }
2289   return cycles;
2290 #undef FLD
2291 }
2292
2293 static int
2294 model_iq2000_j (SIM_CPU *current_cpu, void *sem_arg)
2295 {
2296 #define FLD(f) abuf->fields.sfmt_j.f
2297   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2298   const IDESC * UNUSED idesc = abuf->idesc;
2299   int cycles = 0;
2300   {
2301     int referenced = 0;
2302     int UNUSED insn_referenced = abuf->written;
2303     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
2304   }
2305   return cycles;
2306 #undef FLD
2307 }
2308
2309 static int
2310 model_iq2000_jal (SIM_CPU *current_cpu, void *sem_arg)
2311 {
2312 #define FLD(f) abuf->fields.sfmt_j.f
2313   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2314   const IDESC * UNUSED idesc = abuf->idesc;
2315   int cycles = 0;
2316   {
2317     int referenced = 0;
2318     int UNUSED insn_referenced = abuf->written;
2319     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
2320   }
2321   return cycles;
2322 #undef FLD
2323 }
2324
2325 static int
2326 model_iq2000_bmb (SIM_CPU *current_cpu, void *sem_arg)
2327 {
2328 #define FLD(f) abuf->fields.sfmt_bbi.f
2329   const ARGBUF * UNUSED abuf = SEM_ARGBUF ((SEM_ARG) sem_arg);
2330   const IDESC * UNUSED idesc = abuf->idesc;
2331   int cycles = 0;
2332   {
2333     int referenced = 0;
2334     int UNUSED insn_referenced = abuf->written;
2335     cycles += iq2000bf_model_iq2000_u_exec (current_cpu, idesc, 0, referenced);
2336   }
2337   return cycles;
2338 #undef FLD
2339 }
2340
2341 /* We assume UNIT_NONE == 0 because the tables don't always terminate
2342    entries with it.  */
2343
2344 /* Model timing data for `iq2000'.  */
2345
2346 static const INSN_TIMING iq2000_timing[] = {
2347   { IQ2000BF_INSN_X_INVALID, 0, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2348   { IQ2000BF_INSN_X_AFTER, 0, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2349   { IQ2000BF_INSN_X_BEFORE, 0, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2350   { IQ2000BF_INSN_X_CTI_CHAIN, 0, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2351   { IQ2000BF_INSN_X_CHAIN, 0, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2352   { IQ2000BF_INSN_X_BEGIN, 0, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2353   { IQ2000BF_INSN_ADD, model_iq2000_add, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2354   { IQ2000BF_INSN_ADDI, model_iq2000_addi, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2355   { IQ2000BF_INSN_ADDIU, model_iq2000_addiu, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2356   { IQ2000BF_INSN_ADDU, model_iq2000_addu, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2357   { IQ2000BF_INSN_ADO16, model_iq2000_ado16, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2358   { IQ2000BF_INSN_AND, model_iq2000_and, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2359   { IQ2000BF_INSN_ANDI, model_iq2000_andi, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2360   { IQ2000BF_INSN_ANDOI, model_iq2000_andoi, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2361   { IQ2000BF_INSN_NOR, model_iq2000_nor, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2362   { IQ2000BF_INSN_OR, model_iq2000_or, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2363   { IQ2000BF_INSN_ORI, model_iq2000_ori, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2364   { IQ2000BF_INSN_RAM, model_iq2000_ram, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2365   { IQ2000BF_INSN_SLL, model_iq2000_sll, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2366   { IQ2000BF_INSN_SLLV, model_iq2000_sllv, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2367   { IQ2000BF_INSN_SLMV, model_iq2000_slmv, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2368   { IQ2000BF_INSN_SLT, model_iq2000_slt, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2369   { IQ2000BF_INSN_SLTI, model_iq2000_slti, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2370   { IQ2000BF_INSN_SLTIU, model_iq2000_sltiu, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2371   { IQ2000BF_INSN_SLTU, model_iq2000_sltu, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2372   { IQ2000BF_INSN_SRA, model_iq2000_sra, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2373   { IQ2000BF_INSN_SRAV, model_iq2000_srav, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2374   { IQ2000BF_INSN_SRL, model_iq2000_srl, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2375   { IQ2000BF_INSN_SRLV, model_iq2000_srlv, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2376   { IQ2000BF_INSN_SRMV, model_iq2000_srmv, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2377   { IQ2000BF_INSN_SUB, model_iq2000_sub, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2378   { IQ2000BF_INSN_SUBU, model_iq2000_subu, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2379   { IQ2000BF_INSN_XOR, model_iq2000_xor, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2380   { IQ2000BF_INSN_XORI, model_iq2000_xori, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2381   { IQ2000BF_INSN_BBI, model_iq2000_bbi, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2382   { IQ2000BF_INSN_BBIN, model_iq2000_bbin, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2383   { IQ2000BF_INSN_BBV, model_iq2000_bbv, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2384   { IQ2000BF_INSN_BBVN, model_iq2000_bbvn, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2385   { IQ2000BF_INSN_BEQ, model_iq2000_beq, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2386   { IQ2000BF_INSN_BEQL, model_iq2000_beql, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2387   { IQ2000BF_INSN_BGEZ, model_iq2000_bgez, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2388   { IQ2000BF_INSN_BGEZAL, model_iq2000_bgezal, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2389   { IQ2000BF_INSN_BGEZALL, model_iq2000_bgezall, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2390   { IQ2000BF_INSN_BGEZL, model_iq2000_bgezl, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2391   { IQ2000BF_INSN_BLTZ, model_iq2000_bltz, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2392   { IQ2000BF_INSN_BLTZL, model_iq2000_bltzl, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2393   { IQ2000BF_INSN_BLTZAL, model_iq2000_bltzal, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2394   { IQ2000BF_INSN_BLTZALL, model_iq2000_bltzall, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2395   { IQ2000BF_INSN_BMB0, model_iq2000_bmb0, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2396   { IQ2000BF_INSN_BMB1, model_iq2000_bmb1, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2397   { IQ2000BF_INSN_BMB2, model_iq2000_bmb2, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2398   { IQ2000BF_INSN_BMB3, model_iq2000_bmb3, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2399   { IQ2000BF_INSN_BNE, model_iq2000_bne, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2400   { IQ2000BF_INSN_BNEL, model_iq2000_bnel, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2401   { IQ2000BF_INSN_JALR, model_iq2000_jalr, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2402   { IQ2000BF_INSN_JR, model_iq2000_jr, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2403   { IQ2000BF_INSN_LB, model_iq2000_lb, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2404   { IQ2000BF_INSN_LBU, model_iq2000_lbu, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2405   { IQ2000BF_INSN_LH, model_iq2000_lh, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2406   { IQ2000BF_INSN_LHU, model_iq2000_lhu, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2407   { IQ2000BF_INSN_LUI, model_iq2000_lui, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2408   { IQ2000BF_INSN_LW, model_iq2000_lw, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2409   { IQ2000BF_INSN_SB, model_iq2000_sb, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2410   { IQ2000BF_INSN_SH, model_iq2000_sh, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2411   { IQ2000BF_INSN_SW, model_iq2000_sw, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2412   { IQ2000BF_INSN_BREAK, model_iq2000_break, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2413   { IQ2000BF_INSN_SYSCALL, model_iq2000_syscall, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2414   { IQ2000BF_INSN_ANDOUI, model_iq2000_andoui, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2415   { IQ2000BF_INSN_ORUI, model_iq2000_orui, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2416   { IQ2000BF_INSN_BGTZ, model_iq2000_bgtz, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2417   { IQ2000BF_INSN_BGTZL, model_iq2000_bgtzl, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2418   { IQ2000BF_INSN_BLEZ, model_iq2000_blez, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2419   { IQ2000BF_INSN_BLEZL, model_iq2000_blezl, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2420   { IQ2000BF_INSN_MRGB, model_iq2000_mrgb, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2421   { IQ2000BF_INSN_BCTXT, model_iq2000_bctxt, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2422   { IQ2000BF_INSN_BC0F, model_iq2000_bc0f, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2423   { IQ2000BF_INSN_BC0FL, model_iq2000_bc0fl, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2424   { IQ2000BF_INSN_BC3F, model_iq2000_bc3f, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2425   { IQ2000BF_INSN_BC3FL, model_iq2000_bc3fl, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2426   { IQ2000BF_INSN_BC0T, model_iq2000_bc0t, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2427   { IQ2000BF_INSN_BC0TL, model_iq2000_bc0tl, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2428   { IQ2000BF_INSN_BC3T, model_iq2000_bc3t, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2429   { IQ2000BF_INSN_BC3TL, model_iq2000_bc3tl, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2430   { IQ2000BF_INSN_CFC0, model_iq2000_cfc0, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2431   { IQ2000BF_INSN_CFC1, model_iq2000_cfc1, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2432   { IQ2000BF_INSN_CFC2, model_iq2000_cfc2, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2433   { IQ2000BF_INSN_CFC3, model_iq2000_cfc3, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2434   { IQ2000BF_INSN_CHKHDR, model_iq2000_chkhdr, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2435   { IQ2000BF_INSN_CTC0, model_iq2000_ctc0, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2436   { IQ2000BF_INSN_CTC1, model_iq2000_ctc1, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2437   { IQ2000BF_INSN_CTC2, model_iq2000_ctc2, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2438   { IQ2000BF_INSN_CTC3, model_iq2000_ctc3, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2439   { IQ2000BF_INSN_JCR, model_iq2000_jcr, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2440   { IQ2000BF_INSN_LUC32, model_iq2000_luc32, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2441   { IQ2000BF_INSN_LUC32L, model_iq2000_luc32l, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2442   { IQ2000BF_INSN_LUC64, model_iq2000_luc64, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2443   { IQ2000BF_INSN_LUC64L, model_iq2000_luc64l, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2444   { IQ2000BF_INSN_LUK, model_iq2000_luk, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2445   { IQ2000BF_INSN_LULCK, model_iq2000_lulck, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2446   { IQ2000BF_INSN_LUM32, model_iq2000_lum32, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2447   { IQ2000BF_INSN_LUM32L, model_iq2000_lum32l, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2448   { IQ2000BF_INSN_LUM64, model_iq2000_lum64, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2449   { IQ2000BF_INSN_LUM64L, model_iq2000_lum64l, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2450   { IQ2000BF_INSN_LUR, model_iq2000_lur, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2451   { IQ2000BF_INSN_LURL, model_iq2000_lurl, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2452   { IQ2000BF_INSN_LUULCK, model_iq2000_luulck, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2453   { IQ2000BF_INSN_MFC0, model_iq2000_mfc0, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2454   { IQ2000BF_INSN_MFC1, model_iq2000_mfc1, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2455   { IQ2000BF_INSN_MFC2, model_iq2000_mfc2, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2456   { IQ2000BF_INSN_MFC3, model_iq2000_mfc3, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2457   { IQ2000BF_INSN_MTC0, model_iq2000_mtc0, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2458   { IQ2000BF_INSN_MTC1, model_iq2000_mtc1, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2459   { IQ2000BF_INSN_MTC2, model_iq2000_mtc2, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2460   { IQ2000BF_INSN_MTC3, model_iq2000_mtc3, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2461   { IQ2000BF_INSN_PKRL, model_iq2000_pkrl, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2462   { IQ2000BF_INSN_PKRLR1, model_iq2000_pkrlr1, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2463   { IQ2000BF_INSN_PKRLR30, model_iq2000_pkrlr30, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2464   { IQ2000BF_INSN_RB, model_iq2000_rb, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2465   { IQ2000BF_INSN_RBR1, model_iq2000_rbr1, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2466   { IQ2000BF_INSN_RBR30, model_iq2000_rbr30, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2467   { IQ2000BF_INSN_RFE, model_iq2000_rfe, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2468   { IQ2000BF_INSN_RX, model_iq2000_rx, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2469   { IQ2000BF_INSN_RXR1, model_iq2000_rxr1, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2470   { IQ2000BF_INSN_RXR30, model_iq2000_rxr30, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2471   { IQ2000BF_INSN_SLEEP, model_iq2000_sleep, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2472   { IQ2000BF_INSN_SRRD, model_iq2000_srrd, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2473   { IQ2000BF_INSN_SRRDL, model_iq2000_srrdl, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2474   { IQ2000BF_INSN_SRULCK, model_iq2000_srulck, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2475   { IQ2000BF_INSN_SRWR, model_iq2000_srwr, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2476   { IQ2000BF_INSN_SRWRU, model_iq2000_srwru, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2477   { IQ2000BF_INSN_TRAPQFL, model_iq2000_trapqfl, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2478   { IQ2000BF_INSN_TRAPQNE, model_iq2000_trapqne, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2479   { IQ2000BF_INSN_TRAPREL, model_iq2000_traprel, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2480   { IQ2000BF_INSN_WB, model_iq2000_wb, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2481   { IQ2000BF_INSN_WBU, model_iq2000_wbu, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2482   { IQ2000BF_INSN_WBR1, model_iq2000_wbr1, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2483   { IQ2000BF_INSN_WBR1U, model_iq2000_wbr1u, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2484   { IQ2000BF_INSN_WBR30, model_iq2000_wbr30, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2485   { IQ2000BF_INSN_WBR30U, model_iq2000_wbr30u, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2486   { IQ2000BF_INSN_WX, model_iq2000_wx, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2487   { IQ2000BF_INSN_WXU, model_iq2000_wxu, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2488   { IQ2000BF_INSN_WXR1, model_iq2000_wxr1, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2489   { IQ2000BF_INSN_WXR1U, model_iq2000_wxr1u, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2490   { IQ2000BF_INSN_WXR30, model_iq2000_wxr30, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2491   { IQ2000BF_INSN_WXR30U, model_iq2000_wxr30u, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2492   { IQ2000BF_INSN_LDW, model_iq2000_ldw, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2493   { IQ2000BF_INSN_SDW, model_iq2000_sdw, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2494   { IQ2000BF_INSN_J, model_iq2000_j, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2495   { IQ2000BF_INSN_JAL, model_iq2000_jal, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2496   { IQ2000BF_INSN_BMB, model_iq2000_bmb, { { (int) UNIT_IQ2000_U_EXEC, 1, 1 } } },
2497 };
2498
2499 #endif /* WITH_PROFILE_MODEL_P */
2500
2501 static void
2502 iq2000_model_init (SIM_CPU *cpu)
2503 {
2504   CPU_MODEL_DATA (cpu) = (void *) zalloc (sizeof (MODEL_IQ2000_DATA));
2505 }
2506
2507 #if WITH_PROFILE_MODEL_P
2508 #define TIMING_DATA(td) td
2509 #else
2510 #define TIMING_DATA(td) 0
2511 #endif
2512
2513 static const MODEL iq2000_models[] =
2514 {
2515   { "iq2000", & iq2000_mach, MODEL_IQ2000, TIMING_DATA (& iq2000_timing[0]), iq2000_model_init },
2516   { 0 }
2517 };
2518
2519 /* The properties of this cpu's implementation.  */
2520
2521 static const MACH_IMP_PROPERTIES iq2000bf_imp_properties =
2522 {
2523   sizeof (SIM_CPU),
2524 #if WITH_SCACHE
2525   sizeof (SCACHE)
2526 #else
2527   0
2528 #endif
2529 };
2530
2531
2532 static void
2533 iq2000bf_prepare_run (SIM_CPU *cpu)
2534 {
2535   if (CPU_IDESC (cpu) == NULL)
2536     iq2000bf_init_idesc_table (cpu);
2537 }
2538
2539 static const CGEN_INSN *
2540 iq2000bf_get_idata (SIM_CPU *cpu, int inum)
2541 {
2542   return CPU_IDESC (cpu) [inum].idata;
2543 }
2544
2545 static void
2546 iq2000_init_cpu (SIM_CPU *cpu)
2547 {
2548   CPU_REG_FETCH (cpu) = iq2000bf_fetch_register;
2549   CPU_REG_STORE (cpu) = iq2000bf_store_register;
2550   CPU_PC_FETCH (cpu) = iq2000bf_h_pc_get;
2551   CPU_PC_STORE (cpu) = iq2000bf_h_pc_set;
2552   CPU_GET_IDATA (cpu) = iq2000bf_get_idata;
2553   CPU_MAX_INSNS (cpu) = IQ2000BF_INSN_BMB + 1;
2554   CPU_INSN_NAME (cpu) = cgen_insn_name;
2555   CPU_FULL_ENGINE_FN (cpu) = iq2000bf_engine_run_full;
2556 #if WITH_FAST
2557   CPU_FAST_ENGINE_FN (cpu) = iq2000bf_engine_run_fast;
2558 #else
2559   CPU_FAST_ENGINE_FN (cpu) = iq2000bf_engine_run_full;
2560 #endif
2561 }
2562
2563 const MACH iq2000_mach =
2564 {
2565   "iq2000", "iq2000", MACH_IQ2000,
2566   32, 32, & iq2000_models[0], & iq2000bf_imp_properties,
2567   iq2000_init_cpu,
2568   iq2000bf_prepare_run
2569 };
2570