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