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