]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blob - sim/cris/modelv32.c
This commit was manufactured by cvs2svn to create branch 'gdb_7_0-branch'.
[thirdparty/binutils-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-2007 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.fmt_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.fmt_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