Regenerate. Updates from cgen for better VoidMode handling.
[binutils-gdb.git] / sim / m32r / sem.c
1 /* Simulator instruction semantics for m32r.
2
3 This file is machine generated with CGEN.
4
5 Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
6
7 This file is part of the GNU Simulators.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2, or (at your option)
12 any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License along
20 with this program; if not, write to the Free Software Foundation, Inc.,
21 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
23 */
24
25 #define WANT_CPU
26 #define WANT_CPU_M32R
27
28 #include "sim-main.h"
29 #include "cgen-mem.h"
30 #include "cgen-ops.h"
31 #include "cpu-sim.h"
32
33 #if WITH_SCACHE
34
35 #undef GET_ATTR
36 #define GET_ATTR(cpu, num, attr) CGEN_INSN_ATTR (abuf->idesc->opcode, CGEN_INSN_##attr)
37
38 /* add: add $dr,$sr. */
39
40 CIA
41 SEM_FN_NAME (m32r,add) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
42 {
43 #define FLD(f) abuf->fields.fmt_add.f
44 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
45 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
46
47 * FLD (f_r1) = ADDSI (* FLD (f_r1), * FLD (f_r2));
48 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
49
50 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
51
52 #if WITH_PROFILE_MODEL_P
53 if (PROFILE_MODEL_P (current_cpu))
54 {
55 m32r_model_mark_get_h_gr (current_cpu, abuf);
56 m32r_model_mark_set_h_gr (current_cpu, abuf);
57 m32r_model_profile_insn (current_cpu, abuf);
58 }
59 #endif
60
61 return new_pc;
62 #undef FLD
63 }
64
65 /* add3: add3 $dr,$sr,$hash$slo16. */
66
67 CIA
68 SEM_FN_NAME (m32r,add3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
69 {
70 #define FLD(f) abuf->fields.fmt_add3.f
71 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
72 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
73
74 * FLD (f_r1) = ADDSI (* FLD (f_r2), FLD (f_simm16));
75 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
76
77 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
78
79 #if WITH_PROFILE_MODEL_P
80 if (PROFILE_MODEL_P (current_cpu))
81 {
82 m32r_model_mark_get_h_gr (current_cpu, abuf);
83 m32r_model_mark_set_h_gr (current_cpu, abuf);
84 m32r_model_profile_insn (current_cpu, abuf);
85 }
86 #endif
87
88 return new_pc;
89 #undef FLD
90 }
91
92 /* and: and $dr,$sr. */
93
94 CIA
95 SEM_FN_NAME (m32r,and) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
96 {
97 #define FLD(f) abuf->fields.fmt_add.f
98 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
99 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
100
101 * FLD (f_r1) = ANDSI (* FLD (f_r1), * FLD (f_r2));
102 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
103
104 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
105
106 #if WITH_PROFILE_MODEL_P
107 if (PROFILE_MODEL_P (current_cpu))
108 {
109 m32r_model_mark_get_h_gr (current_cpu, abuf);
110 m32r_model_mark_set_h_gr (current_cpu, abuf);
111 m32r_model_profile_insn (current_cpu, abuf);
112 }
113 #endif
114
115 return new_pc;
116 #undef FLD
117 }
118
119 /* and3: and3 $dr,$sr,$uimm16. */
120
121 CIA
122 SEM_FN_NAME (m32r,and3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
123 {
124 #define FLD(f) abuf->fields.fmt_and3.f
125 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
126 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
127
128 * FLD (f_r1) = ANDSI (* FLD (f_r2), FLD (f_uimm16));
129 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
130
131 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
132
133 #if WITH_PROFILE_MODEL_P
134 if (PROFILE_MODEL_P (current_cpu))
135 {
136 m32r_model_mark_get_h_gr (current_cpu, abuf);
137 m32r_model_mark_set_h_gr (current_cpu, abuf);
138 m32r_model_profile_insn (current_cpu, abuf);
139 }
140 #endif
141
142 return new_pc;
143 #undef FLD
144 }
145
146 /* or: or $dr,$sr. */
147
148 CIA
149 SEM_FN_NAME (m32r,or) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
150 {
151 #define FLD(f) abuf->fields.fmt_add.f
152 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
153 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
154
155 * FLD (f_r1) = ORSI (* FLD (f_r1), * FLD (f_r2));
156 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
157
158 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
159
160 #if WITH_PROFILE_MODEL_P
161 if (PROFILE_MODEL_P (current_cpu))
162 {
163 m32r_model_mark_get_h_gr (current_cpu, abuf);
164 m32r_model_mark_set_h_gr (current_cpu, abuf);
165 m32r_model_profile_insn (current_cpu, abuf);
166 }
167 #endif
168
169 return new_pc;
170 #undef FLD
171 }
172
173 /* or3: or3 $dr,$sr,$hash$ulo16. */
174
175 CIA
176 SEM_FN_NAME (m32r,or3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
177 {
178 #define FLD(f) abuf->fields.fmt_or3.f
179 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
180 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
181
182 * FLD (f_r1) = ORSI (* FLD (f_r2), FLD (f_uimm16));
183 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
184
185 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
186
187 #if WITH_PROFILE_MODEL_P
188 if (PROFILE_MODEL_P (current_cpu))
189 {
190 m32r_model_mark_get_h_gr (current_cpu, abuf);
191 m32r_model_mark_set_h_gr (current_cpu, abuf);
192 m32r_model_profile_insn (current_cpu, abuf);
193 }
194 #endif
195
196 return new_pc;
197 #undef FLD
198 }
199
200 /* xor: xor $dr,$sr. */
201
202 CIA
203 SEM_FN_NAME (m32r,xor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
204 {
205 #define FLD(f) abuf->fields.fmt_add.f
206 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
207 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
208
209 * FLD (f_r1) = XORSI (* FLD (f_r1), * FLD (f_r2));
210 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
211
212 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
213
214 #if WITH_PROFILE_MODEL_P
215 if (PROFILE_MODEL_P (current_cpu))
216 {
217 m32r_model_mark_get_h_gr (current_cpu, abuf);
218 m32r_model_mark_set_h_gr (current_cpu, abuf);
219 m32r_model_profile_insn (current_cpu, abuf);
220 }
221 #endif
222
223 return new_pc;
224 #undef FLD
225 }
226
227 /* xor3: xor3 $dr,$sr,$uimm16. */
228
229 CIA
230 SEM_FN_NAME (m32r,xor3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
231 {
232 #define FLD(f) abuf->fields.fmt_and3.f
233 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
234 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
235
236 * FLD (f_r1) = XORSI (* FLD (f_r2), FLD (f_uimm16));
237 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
238
239 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
240
241 #if WITH_PROFILE_MODEL_P
242 if (PROFILE_MODEL_P (current_cpu))
243 {
244 m32r_model_mark_get_h_gr (current_cpu, abuf);
245 m32r_model_mark_set_h_gr (current_cpu, abuf);
246 m32r_model_profile_insn (current_cpu, abuf);
247 }
248 #endif
249
250 return new_pc;
251 #undef FLD
252 }
253
254 /* addi: addi $dr,$simm8. */
255
256 CIA
257 SEM_FN_NAME (m32r,addi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
258 {
259 #define FLD(f) abuf->fields.fmt_addi.f
260 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
261 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
262
263 * FLD (f_r1) = ADDSI (* FLD (f_r1), FLD (f_simm8));
264 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
265
266 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
267
268 #if WITH_PROFILE_MODEL_P
269 if (PROFILE_MODEL_P (current_cpu))
270 {
271 m32r_model_mark_get_h_gr (current_cpu, abuf);
272 m32r_model_mark_set_h_gr (current_cpu, abuf);
273 m32r_model_profile_insn (current_cpu, abuf);
274 }
275 #endif
276
277 return new_pc;
278 #undef FLD
279 }
280
281 /* addv: addv $dr,$sr. */
282
283 CIA
284 SEM_FN_NAME (m32r,addv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
285 {
286 #define FLD(f) abuf->fields.fmt_addv.f
287 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
288 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
289
290 do {
291 UBI temp1;SI temp0;
292 temp0 = ADDSI (* FLD (f_r1), * FLD (f_r2));
293 temp1 = ADDOFSI (* FLD (f_r1), * FLD (f_r2), 0);
294 * FLD (f_r1) = temp0;
295 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
296 CPU (h_cond) = temp1;
297 TRACE_RESULT (current_cpu, "condbit", 'x', CPU (h_cond));
298 } while (0);
299
300 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
301
302 #if WITH_PROFILE_MODEL_P
303 if (PROFILE_MODEL_P (current_cpu))
304 {
305 m32r_model_mark_get_h_gr (current_cpu, abuf);
306 m32r_model_mark_set_h_gr (current_cpu, abuf);
307 m32r_model_profile_insn (current_cpu, abuf);
308 }
309 #endif
310
311 return new_pc;
312 #undef FLD
313 }
314
315 /* addv3: addv3 $dr,$sr,$simm16. */
316
317 CIA
318 SEM_FN_NAME (m32r,addv3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
319 {
320 #define FLD(f) abuf->fields.fmt_addv3.f
321 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
322 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
323
324 do {
325 UBI temp1;SI temp0;
326 temp0 = ADDSI (* FLD (f_r2), FLD (f_simm16));
327 temp1 = ADDOFSI (* FLD (f_r2), FLD (f_simm16), 0);
328 * FLD (f_r1) = temp0;
329 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
330 CPU (h_cond) = temp1;
331 TRACE_RESULT (current_cpu, "condbit", 'x', CPU (h_cond));
332 } while (0);
333
334 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
335
336 #if WITH_PROFILE_MODEL_P
337 if (PROFILE_MODEL_P (current_cpu))
338 {
339 m32r_model_mark_get_h_gr (current_cpu, abuf);
340 m32r_model_mark_set_h_gr (current_cpu, abuf);
341 m32r_model_profile_insn (current_cpu, abuf);
342 }
343 #endif
344
345 return new_pc;
346 #undef FLD
347 }
348
349 /* addx: addx $dr,$sr. */
350
351 CIA
352 SEM_FN_NAME (m32r,addx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
353 {
354 #define FLD(f) abuf->fields.fmt_addx.f
355 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
356 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
357
358 do {
359 UBI temp1;SI temp0;
360 temp0 = ADDCSI (* FLD (f_r1), * FLD (f_r2), CPU (h_cond));
361 temp1 = ADDCFSI (* FLD (f_r1), * FLD (f_r2), CPU (h_cond));
362 * FLD (f_r1) = temp0;
363 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
364 CPU (h_cond) = temp1;
365 TRACE_RESULT (current_cpu, "condbit", 'x', CPU (h_cond));
366 } while (0);
367
368 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
369
370 #if WITH_PROFILE_MODEL_P
371 if (PROFILE_MODEL_P (current_cpu))
372 {
373 m32r_model_mark_get_h_gr (current_cpu, abuf);
374 m32r_model_mark_set_h_gr (current_cpu, abuf);
375 m32r_model_profile_insn (current_cpu, abuf);
376 }
377 #endif
378
379 return new_pc;
380 #undef FLD
381 }
382
383 /* bc8: bc.s $disp8. */
384
385 CIA
386 SEM_FN_NAME (m32r,bc8) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
387 {
388 #define FLD(f) abuf->fields.fmt_bc8.f
389 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
390 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
391 int taken_p = 0;
392
393 if (CPU (h_cond)) {
394 BRANCH_NEW_PC (new_pc, SEM_BRANCH_VIA_CACHE (sem_arg, FLD (f_disp8)));
395 taken_p = 1;
396 TRACE_RESULT (current_cpu, "pc", 'x', new_pc);
397 }
398
399 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
400
401 #if WITH_PROFILE_MODEL_P
402 if (PROFILE_MODEL_P (current_cpu))
403 {
404 m32r_model_profile_cti_insn (current_cpu, abuf, taken_p);
405 }
406 #endif
407
408 return new_pc;
409 #undef FLD
410 }
411
412 /* bc24: bc.l $disp24. */
413
414 CIA
415 SEM_FN_NAME (m32r,bc24) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
416 {
417 #define FLD(f) abuf->fields.fmt_bc24.f
418 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
419 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
420 int taken_p = 0;
421
422 if (CPU (h_cond)) {
423 BRANCH_NEW_PC (new_pc, SEM_BRANCH_VIA_CACHE (sem_arg, FLD (f_disp24)));
424 taken_p = 1;
425 TRACE_RESULT (current_cpu, "pc", 'x', new_pc);
426 }
427
428 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
429
430 #if WITH_PROFILE_MODEL_P
431 if (PROFILE_MODEL_P (current_cpu))
432 {
433 m32r_model_profile_cti_insn (current_cpu, abuf, taken_p);
434 }
435 #endif
436
437 return new_pc;
438 #undef FLD
439 }
440
441 /* beq: beq $src1,$src2,$disp16. */
442
443 CIA
444 SEM_FN_NAME (m32r,beq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
445 {
446 #define FLD(f) abuf->fields.fmt_beq.f
447 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
448 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
449 int taken_p = 0;
450
451 if (EQSI (* FLD (f_r1), * FLD (f_r2))) {
452 BRANCH_NEW_PC (new_pc, SEM_BRANCH_VIA_CACHE (sem_arg, FLD (f_disp16)));
453 taken_p = 1;
454 TRACE_RESULT (current_cpu, "pc", 'x', new_pc);
455 }
456
457 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
458
459 #if WITH_PROFILE_MODEL_P
460 if (PROFILE_MODEL_P (current_cpu))
461 {
462 m32r_model_mark_get_h_gr (current_cpu, abuf);
463 m32r_model_profile_cti_insn (current_cpu, abuf, taken_p);
464 }
465 #endif
466
467 return new_pc;
468 #undef FLD
469 }
470
471 /* beqz: beqz $src2,$disp16. */
472
473 CIA
474 SEM_FN_NAME (m32r,beqz) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
475 {
476 #define FLD(f) abuf->fields.fmt_beqz.f
477 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
478 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
479 int taken_p = 0;
480
481 if (EQSI (* FLD (f_r2), 0)) {
482 BRANCH_NEW_PC (new_pc, SEM_BRANCH_VIA_CACHE (sem_arg, FLD (f_disp16)));
483 taken_p = 1;
484 TRACE_RESULT (current_cpu, "pc", 'x', new_pc);
485 }
486
487 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
488
489 #if WITH_PROFILE_MODEL_P
490 if (PROFILE_MODEL_P (current_cpu))
491 {
492 m32r_model_mark_get_h_gr (current_cpu, abuf);
493 m32r_model_profile_cti_insn (current_cpu, abuf, taken_p);
494 }
495 #endif
496
497 return new_pc;
498 #undef FLD
499 }
500
501 /* bgez: bgez $src2,$disp16. */
502
503 CIA
504 SEM_FN_NAME (m32r,bgez) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
505 {
506 #define FLD(f) abuf->fields.fmt_beqz.f
507 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
508 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
509 int taken_p = 0;
510
511 if (GESI (* FLD (f_r2), 0)) {
512 BRANCH_NEW_PC (new_pc, SEM_BRANCH_VIA_CACHE (sem_arg, FLD (f_disp16)));
513 taken_p = 1;
514 TRACE_RESULT (current_cpu, "pc", 'x', new_pc);
515 }
516
517 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
518
519 #if WITH_PROFILE_MODEL_P
520 if (PROFILE_MODEL_P (current_cpu))
521 {
522 m32r_model_mark_get_h_gr (current_cpu, abuf);
523 m32r_model_profile_cti_insn (current_cpu, abuf, taken_p);
524 }
525 #endif
526
527 return new_pc;
528 #undef FLD
529 }
530
531 /* bgtz: bgtz $src2,$disp16. */
532
533 CIA
534 SEM_FN_NAME (m32r,bgtz) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
535 {
536 #define FLD(f) abuf->fields.fmt_beqz.f
537 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
538 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
539 int taken_p = 0;
540
541 if (GTSI (* FLD (f_r2), 0)) {
542 BRANCH_NEW_PC (new_pc, SEM_BRANCH_VIA_CACHE (sem_arg, FLD (f_disp16)));
543 taken_p = 1;
544 TRACE_RESULT (current_cpu, "pc", 'x', new_pc);
545 }
546
547 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
548
549 #if WITH_PROFILE_MODEL_P
550 if (PROFILE_MODEL_P (current_cpu))
551 {
552 m32r_model_mark_get_h_gr (current_cpu, abuf);
553 m32r_model_profile_cti_insn (current_cpu, abuf, taken_p);
554 }
555 #endif
556
557 return new_pc;
558 #undef FLD
559 }
560
561 /* blez: blez $src2,$disp16. */
562
563 CIA
564 SEM_FN_NAME (m32r,blez) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
565 {
566 #define FLD(f) abuf->fields.fmt_beqz.f
567 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
568 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
569 int taken_p = 0;
570
571 if (LESI (* FLD (f_r2), 0)) {
572 BRANCH_NEW_PC (new_pc, SEM_BRANCH_VIA_CACHE (sem_arg, FLD (f_disp16)));
573 taken_p = 1;
574 TRACE_RESULT (current_cpu, "pc", 'x', new_pc);
575 }
576
577 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
578
579 #if WITH_PROFILE_MODEL_P
580 if (PROFILE_MODEL_P (current_cpu))
581 {
582 m32r_model_mark_get_h_gr (current_cpu, abuf);
583 m32r_model_profile_cti_insn (current_cpu, abuf, taken_p);
584 }
585 #endif
586
587 return new_pc;
588 #undef FLD
589 }
590
591 /* bltz: bltz $src2,$disp16. */
592
593 CIA
594 SEM_FN_NAME (m32r,bltz) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
595 {
596 #define FLD(f) abuf->fields.fmt_beqz.f
597 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
598 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
599 int taken_p = 0;
600
601 if (LTSI (* FLD (f_r2), 0)) {
602 BRANCH_NEW_PC (new_pc, SEM_BRANCH_VIA_CACHE (sem_arg, FLD (f_disp16)));
603 taken_p = 1;
604 TRACE_RESULT (current_cpu, "pc", 'x', new_pc);
605 }
606
607 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
608
609 #if WITH_PROFILE_MODEL_P
610 if (PROFILE_MODEL_P (current_cpu))
611 {
612 m32r_model_mark_get_h_gr (current_cpu, abuf);
613 m32r_model_profile_cti_insn (current_cpu, abuf, taken_p);
614 }
615 #endif
616
617 return new_pc;
618 #undef FLD
619 }
620
621 /* bnez: bnez $src2,$disp16. */
622
623 CIA
624 SEM_FN_NAME (m32r,bnez) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
625 {
626 #define FLD(f) abuf->fields.fmt_beqz.f
627 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
628 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
629 int taken_p = 0;
630
631 if (NESI (* FLD (f_r2), 0)) {
632 BRANCH_NEW_PC (new_pc, SEM_BRANCH_VIA_CACHE (sem_arg, FLD (f_disp16)));
633 taken_p = 1;
634 TRACE_RESULT (current_cpu, "pc", 'x', new_pc);
635 }
636
637 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
638
639 #if WITH_PROFILE_MODEL_P
640 if (PROFILE_MODEL_P (current_cpu))
641 {
642 m32r_model_mark_get_h_gr (current_cpu, abuf);
643 m32r_model_profile_cti_insn (current_cpu, abuf, taken_p);
644 }
645 #endif
646
647 return new_pc;
648 #undef FLD
649 }
650
651 /* bl8: bl.s $disp8. */
652
653 CIA
654 SEM_FN_NAME (m32r,bl8) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
655 {
656 #define FLD(f) abuf->fields.fmt_bl8.f
657 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
658 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
659 int taken_p = 0;
660
661 do {
662 CPU (h_gr[14]) = ADDSI (ANDSI (CPU (h_pc), -4), 4);
663 TRACE_RESULT (current_cpu, "gr-14", 'x', CPU (h_gr[14]));
664 BRANCH_NEW_PC (new_pc, SEM_BRANCH_VIA_CACHE (sem_arg, FLD (f_disp8)));
665 taken_p = 1;
666 TRACE_RESULT (current_cpu, "pc", 'x', new_pc);
667 } while (0);
668
669 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
670
671 #if WITH_PROFILE_MODEL_P
672 if (PROFILE_MODEL_P (current_cpu))
673 {
674 m32r_model_mark_set_h_gr (current_cpu, abuf);
675 m32r_model_profile_cti_insn (current_cpu, abuf, taken_p);
676 }
677 #endif
678
679 return new_pc;
680 #undef FLD
681 }
682
683 /* bl24: bl.l $disp24. */
684
685 CIA
686 SEM_FN_NAME (m32r,bl24) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
687 {
688 #define FLD(f) abuf->fields.fmt_bl24.f
689 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
690 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
691 int taken_p = 0;
692
693 do {
694 CPU (h_gr[14]) = ADDSI (CPU (h_pc), 4);
695 TRACE_RESULT (current_cpu, "gr-14", 'x', CPU (h_gr[14]));
696 BRANCH_NEW_PC (new_pc, SEM_BRANCH_VIA_CACHE (sem_arg, FLD (f_disp24)));
697 taken_p = 1;
698 TRACE_RESULT (current_cpu, "pc", 'x', new_pc);
699 } while (0);
700
701 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
702
703 #if WITH_PROFILE_MODEL_P
704 if (PROFILE_MODEL_P (current_cpu))
705 {
706 m32r_model_mark_set_h_gr (current_cpu, abuf);
707 m32r_model_profile_cti_insn (current_cpu, abuf, taken_p);
708 }
709 #endif
710
711 return new_pc;
712 #undef FLD
713 }
714
715 /* bnc8: bnc.s $disp8. */
716
717 CIA
718 SEM_FN_NAME (m32r,bnc8) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
719 {
720 #define FLD(f) abuf->fields.fmt_bc8.f
721 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
722 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
723 int taken_p = 0;
724
725 if (NOTBI (CPU (h_cond))) {
726 BRANCH_NEW_PC (new_pc, SEM_BRANCH_VIA_CACHE (sem_arg, FLD (f_disp8)));
727 taken_p = 1;
728 TRACE_RESULT (current_cpu, "pc", 'x', new_pc);
729 }
730
731 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
732
733 #if WITH_PROFILE_MODEL_P
734 if (PROFILE_MODEL_P (current_cpu))
735 {
736 m32r_model_profile_cti_insn (current_cpu, abuf, taken_p);
737 }
738 #endif
739
740 return new_pc;
741 #undef FLD
742 }
743
744 /* bnc24: bnc.l $disp24. */
745
746 CIA
747 SEM_FN_NAME (m32r,bnc24) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
748 {
749 #define FLD(f) abuf->fields.fmt_bc24.f
750 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
751 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
752 int taken_p = 0;
753
754 if (NOTBI (CPU (h_cond))) {
755 BRANCH_NEW_PC (new_pc, SEM_BRANCH_VIA_CACHE (sem_arg, FLD (f_disp24)));
756 taken_p = 1;
757 TRACE_RESULT (current_cpu, "pc", 'x', new_pc);
758 }
759
760 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
761
762 #if WITH_PROFILE_MODEL_P
763 if (PROFILE_MODEL_P (current_cpu))
764 {
765 m32r_model_profile_cti_insn (current_cpu, abuf, taken_p);
766 }
767 #endif
768
769 return new_pc;
770 #undef FLD
771 }
772
773 /* bne: bne $src1,$src2,$disp16. */
774
775 CIA
776 SEM_FN_NAME (m32r,bne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
777 {
778 #define FLD(f) abuf->fields.fmt_beq.f
779 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
780 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
781 int taken_p = 0;
782
783 if (NESI (* FLD (f_r1), * FLD (f_r2))) {
784 BRANCH_NEW_PC (new_pc, SEM_BRANCH_VIA_CACHE (sem_arg, FLD (f_disp16)));
785 taken_p = 1;
786 TRACE_RESULT (current_cpu, "pc", 'x', new_pc);
787 }
788
789 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
790
791 #if WITH_PROFILE_MODEL_P
792 if (PROFILE_MODEL_P (current_cpu))
793 {
794 m32r_model_mark_get_h_gr (current_cpu, abuf);
795 m32r_model_profile_cti_insn (current_cpu, abuf, taken_p);
796 }
797 #endif
798
799 return new_pc;
800 #undef FLD
801 }
802
803 /* bra8: bra.s $disp8. */
804
805 CIA
806 SEM_FN_NAME (m32r,bra8) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
807 {
808 #define FLD(f) abuf->fields.fmt_bra8.f
809 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
810 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
811 int taken_p = 0;
812
813 BRANCH_NEW_PC (new_pc, SEM_BRANCH_VIA_CACHE (sem_arg, FLD (f_disp8)));
814 taken_p = 1;
815 TRACE_RESULT (current_cpu, "pc", 'x', new_pc);
816
817 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
818
819 #if WITH_PROFILE_MODEL_P
820 if (PROFILE_MODEL_P (current_cpu))
821 {
822 m32r_model_profile_cti_insn (current_cpu, abuf, taken_p);
823 }
824 #endif
825
826 return new_pc;
827 #undef FLD
828 }
829
830 /* bra24: bra.l $disp24. */
831
832 CIA
833 SEM_FN_NAME (m32r,bra24) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
834 {
835 #define FLD(f) abuf->fields.fmt_bra24.f
836 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
837 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
838 int taken_p = 0;
839
840 BRANCH_NEW_PC (new_pc, SEM_BRANCH_VIA_CACHE (sem_arg, FLD (f_disp24)));
841 taken_p = 1;
842 TRACE_RESULT (current_cpu, "pc", 'x', new_pc);
843
844 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
845
846 #if WITH_PROFILE_MODEL_P
847 if (PROFILE_MODEL_P (current_cpu))
848 {
849 m32r_model_profile_cti_insn (current_cpu, abuf, taken_p);
850 }
851 #endif
852
853 return new_pc;
854 #undef FLD
855 }
856
857 /* cmp: cmp $src1,$src2. */
858
859 CIA
860 SEM_FN_NAME (m32r,cmp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
861 {
862 #define FLD(f) abuf->fields.fmt_cmp.f
863 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
864 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
865
866 CPU (h_cond) = LTSI (* FLD (f_r1), * FLD (f_r2));
867 TRACE_RESULT (current_cpu, "condbit", 'x', CPU (h_cond));
868
869 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
870
871 #if WITH_PROFILE_MODEL_P
872 if (PROFILE_MODEL_P (current_cpu))
873 {
874 m32r_model_mark_get_h_gr (current_cpu, abuf);
875 m32r_model_profile_insn (current_cpu, abuf);
876 }
877 #endif
878
879 return new_pc;
880 #undef FLD
881 }
882
883 /* cmpi: cmpi $src2,$simm16. */
884
885 CIA
886 SEM_FN_NAME (m32r,cmpi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
887 {
888 #define FLD(f) abuf->fields.fmt_cmpi.f
889 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
890 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
891
892 CPU (h_cond) = LTSI (* FLD (f_r2), FLD (f_simm16));
893 TRACE_RESULT (current_cpu, "condbit", 'x', CPU (h_cond));
894
895 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
896
897 #if WITH_PROFILE_MODEL_P
898 if (PROFILE_MODEL_P (current_cpu))
899 {
900 m32r_model_mark_get_h_gr (current_cpu, abuf);
901 m32r_model_profile_insn (current_cpu, abuf);
902 }
903 #endif
904
905 return new_pc;
906 #undef FLD
907 }
908
909 /* cmpu: cmpu $src1,$src2. */
910
911 CIA
912 SEM_FN_NAME (m32r,cmpu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
913 {
914 #define FLD(f) abuf->fields.fmt_cmp.f
915 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
916 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
917
918 CPU (h_cond) = LTUSI (* FLD (f_r1), * FLD (f_r2));
919 TRACE_RESULT (current_cpu, "condbit", 'x', CPU (h_cond));
920
921 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
922
923 #if WITH_PROFILE_MODEL_P
924 if (PROFILE_MODEL_P (current_cpu))
925 {
926 m32r_model_mark_get_h_gr (current_cpu, abuf);
927 m32r_model_profile_insn (current_cpu, abuf);
928 }
929 #endif
930
931 return new_pc;
932 #undef FLD
933 }
934
935 /* cmpui: cmpui $src2,$simm16. */
936
937 CIA
938 SEM_FN_NAME (m32r,cmpui) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
939 {
940 #define FLD(f) abuf->fields.fmt_cmpi.f
941 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
942 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
943
944 CPU (h_cond) = LTUSI (* FLD (f_r2), FLD (f_simm16));
945 TRACE_RESULT (current_cpu, "condbit", 'x', CPU (h_cond));
946
947 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
948
949 #if WITH_PROFILE_MODEL_P
950 if (PROFILE_MODEL_P (current_cpu))
951 {
952 m32r_model_mark_get_h_gr (current_cpu, abuf);
953 m32r_model_profile_insn (current_cpu, abuf);
954 }
955 #endif
956
957 return new_pc;
958 #undef FLD
959 }
960
961 /* div: div $dr,$sr. */
962
963 CIA
964 SEM_FN_NAME (m32r,div) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
965 {
966 #define FLD(f) abuf->fields.fmt_div.f
967 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
968 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
969
970 if (NESI (* FLD (f_r2), 0)) {
971 * FLD (f_r1) = DIVSI (* FLD (f_r1), * FLD (f_r2));
972 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
973 }
974
975 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
976
977 #if WITH_PROFILE_MODEL_P
978 if (PROFILE_MODEL_P (current_cpu))
979 {
980 m32r_model_mark_get_h_gr (current_cpu, abuf);
981 m32r_model_mark_set_h_gr (current_cpu, abuf);
982 m32r_model_profile_insn (current_cpu, abuf);
983 }
984 #endif
985
986 return new_pc;
987 #undef FLD
988 }
989
990 /* divu: divu $dr,$sr. */
991
992 CIA
993 SEM_FN_NAME (m32r,divu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
994 {
995 #define FLD(f) abuf->fields.fmt_div.f
996 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
997 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
998
999 if (NESI (* FLD (f_r2), 0)) {
1000 * FLD (f_r1) = UDIVSI (* FLD (f_r1), * FLD (f_r2));
1001 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1002 }
1003
1004 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1005
1006 #if WITH_PROFILE_MODEL_P
1007 if (PROFILE_MODEL_P (current_cpu))
1008 {
1009 m32r_model_mark_get_h_gr (current_cpu, abuf);
1010 m32r_model_mark_set_h_gr (current_cpu, abuf);
1011 m32r_model_profile_insn (current_cpu, abuf);
1012 }
1013 #endif
1014
1015 return new_pc;
1016 #undef FLD
1017 }
1018
1019 /* rem: rem $dr,$sr. */
1020
1021 CIA
1022 SEM_FN_NAME (m32r,rem) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1023 {
1024 #define FLD(f) abuf->fields.fmt_div.f
1025 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1026 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
1027
1028 if (NESI (* FLD (f_r2), 0)) {
1029 * FLD (f_r1) = MODSI (* FLD (f_r1), * FLD (f_r2));
1030 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1031 }
1032
1033 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1034
1035 #if WITH_PROFILE_MODEL_P
1036 if (PROFILE_MODEL_P (current_cpu))
1037 {
1038 m32r_model_mark_get_h_gr (current_cpu, abuf);
1039 m32r_model_mark_set_h_gr (current_cpu, abuf);
1040 m32r_model_profile_insn (current_cpu, abuf);
1041 }
1042 #endif
1043
1044 return new_pc;
1045 #undef FLD
1046 }
1047
1048 /* remu: remu $dr,$sr. */
1049
1050 CIA
1051 SEM_FN_NAME (m32r,remu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1052 {
1053 #define FLD(f) abuf->fields.fmt_div.f
1054 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1055 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
1056
1057 if (NESI (* FLD (f_r2), 0)) {
1058 * FLD (f_r1) = UMODSI (* FLD (f_r1), * FLD (f_r2));
1059 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1060 }
1061
1062 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1063
1064 #if WITH_PROFILE_MODEL_P
1065 if (PROFILE_MODEL_P (current_cpu))
1066 {
1067 m32r_model_mark_get_h_gr (current_cpu, abuf);
1068 m32r_model_mark_set_h_gr (current_cpu, abuf);
1069 m32r_model_profile_insn (current_cpu, abuf);
1070 }
1071 #endif
1072
1073 return new_pc;
1074 #undef FLD
1075 }
1076
1077 /* jl: jl $sr. */
1078
1079 CIA
1080 SEM_FN_NAME (m32r,jl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1081 {
1082 #define FLD(f) abuf->fields.fmt_jl.f
1083 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1084 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1085 int taken_p = 0;
1086
1087 do {
1088 USI temp1;SI temp0;
1089 temp0 = ADDSI (ANDSI (CPU (h_pc), -4), 4);
1090 temp1 = ANDSI (* FLD (f_r2), -4);
1091 CPU (h_gr[14]) = temp0;
1092 TRACE_RESULT (current_cpu, "gr-14", 'x', CPU (h_gr[14]));
1093 BRANCH_NEW_PC (new_pc, SEM_BRANCH_VIA_ADDR (sem_arg, temp1));
1094 taken_p = 1;
1095 TRACE_RESULT (current_cpu, "pc", 'x', new_pc);
1096 } while (0);
1097
1098 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1099
1100 #if WITH_PROFILE_MODEL_P
1101 if (PROFILE_MODEL_P (current_cpu))
1102 {
1103 m32r_model_mark_get_h_gr (current_cpu, abuf);
1104 m32r_model_mark_set_h_gr (current_cpu, abuf);
1105 m32r_model_profile_cti_insn (current_cpu, abuf, taken_p);
1106 }
1107 #endif
1108
1109 return new_pc;
1110 #undef FLD
1111 }
1112
1113 /* jmp: jmp $sr. */
1114
1115 CIA
1116 SEM_FN_NAME (m32r,jmp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1117 {
1118 #define FLD(f) abuf->fields.fmt_jmp.f
1119 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1120 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1121 int taken_p = 0;
1122
1123 BRANCH_NEW_PC (new_pc, SEM_BRANCH_VIA_ADDR (sem_arg, ANDSI (* FLD (f_r2), -4)));
1124 taken_p = 1;
1125 TRACE_RESULT (current_cpu, "pc", 'x', new_pc);
1126
1127 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1128
1129 #if WITH_PROFILE_MODEL_P
1130 if (PROFILE_MODEL_P (current_cpu))
1131 {
1132 m32r_model_mark_get_h_gr (current_cpu, abuf);
1133 m32r_model_profile_cti_insn (current_cpu, abuf, taken_p);
1134 }
1135 #endif
1136
1137 return new_pc;
1138 #undef FLD
1139 }
1140
1141 /* ld: ld $dr,@$sr. */
1142
1143 CIA
1144 SEM_FN_NAME (m32r,ld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1145 {
1146 #define FLD(f) abuf->fields.fmt_ld.f
1147 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1148 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1149
1150 * FLD (f_r1) = GETMEMSI (current_cpu, * FLD (f_r2));
1151 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1152
1153 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1154
1155 #if WITH_PROFILE_MODEL_P
1156 if (PROFILE_MODEL_P (current_cpu))
1157 {
1158 m32r_model_mark_get_h_gr (current_cpu, abuf);
1159 m32r_model_mark_set_h_gr (current_cpu, abuf);
1160 m32r_model_profile_insn (current_cpu, abuf);
1161 }
1162 #endif
1163
1164 return new_pc;
1165 #undef FLD
1166 }
1167
1168 /* ld-d: ld $dr,@($slo16,$sr). */
1169
1170 CIA
1171 SEM_FN_NAME (m32r,ld_d) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1172 {
1173 #define FLD(f) abuf->fields.fmt_ld_d.f
1174 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1175 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
1176
1177 * FLD (f_r1) = GETMEMSI (current_cpu, ADDSI (* FLD (f_r2), FLD (f_simm16)));
1178 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1179
1180 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1181
1182 #if WITH_PROFILE_MODEL_P
1183 if (PROFILE_MODEL_P (current_cpu))
1184 {
1185 m32r_model_mark_get_h_gr (current_cpu, abuf);
1186 m32r_model_mark_set_h_gr (current_cpu, abuf);
1187 m32r_model_profile_insn (current_cpu, abuf);
1188 }
1189 #endif
1190
1191 return new_pc;
1192 #undef FLD
1193 }
1194
1195 /* ldb: ldb $dr,@$sr. */
1196
1197 CIA
1198 SEM_FN_NAME (m32r,ldb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1199 {
1200 #define FLD(f) abuf->fields.fmt_ldb.f
1201 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1202 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1203
1204 * FLD (f_r1) = EXTQISI (GETMEMQI (current_cpu, * FLD (f_r2)));
1205 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1206
1207 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1208
1209 #if WITH_PROFILE_MODEL_P
1210 if (PROFILE_MODEL_P (current_cpu))
1211 {
1212 m32r_model_mark_get_h_gr (current_cpu, abuf);
1213 m32r_model_mark_set_h_gr (current_cpu, abuf);
1214 m32r_model_profile_insn (current_cpu, abuf);
1215 }
1216 #endif
1217
1218 return new_pc;
1219 #undef FLD
1220 }
1221
1222 /* ldb-d: ldb $dr,@($slo16,$sr). */
1223
1224 CIA
1225 SEM_FN_NAME (m32r,ldb_d) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1226 {
1227 #define FLD(f) abuf->fields.fmt_ldb_d.f
1228 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1229 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
1230
1231 * FLD (f_r1) = EXTQISI (GETMEMQI (current_cpu, ADDSI (* FLD (f_r2), FLD (f_simm16))));
1232 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1233
1234 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1235
1236 #if WITH_PROFILE_MODEL_P
1237 if (PROFILE_MODEL_P (current_cpu))
1238 {
1239 m32r_model_mark_get_h_gr (current_cpu, abuf);
1240 m32r_model_mark_set_h_gr (current_cpu, abuf);
1241 m32r_model_profile_insn (current_cpu, abuf);
1242 }
1243 #endif
1244
1245 return new_pc;
1246 #undef FLD
1247 }
1248
1249 /* ldh: ldh $dr,@$sr. */
1250
1251 CIA
1252 SEM_FN_NAME (m32r,ldh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1253 {
1254 #define FLD(f) abuf->fields.fmt_ldh.f
1255 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1256 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1257
1258 * FLD (f_r1) = EXTHISI (GETMEMHI (current_cpu, * FLD (f_r2)));
1259 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1260
1261 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1262
1263 #if WITH_PROFILE_MODEL_P
1264 if (PROFILE_MODEL_P (current_cpu))
1265 {
1266 m32r_model_mark_get_h_gr (current_cpu, abuf);
1267 m32r_model_mark_set_h_gr (current_cpu, abuf);
1268 m32r_model_profile_insn (current_cpu, abuf);
1269 }
1270 #endif
1271
1272 return new_pc;
1273 #undef FLD
1274 }
1275
1276 /* ldh-d: ldh $dr,@($slo16,$sr). */
1277
1278 CIA
1279 SEM_FN_NAME (m32r,ldh_d) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1280 {
1281 #define FLD(f) abuf->fields.fmt_ldh_d.f
1282 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1283 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
1284
1285 * FLD (f_r1) = EXTHISI (GETMEMHI (current_cpu, ADDSI (* FLD (f_r2), FLD (f_simm16))));
1286 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1287
1288 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1289
1290 #if WITH_PROFILE_MODEL_P
1291 if (PROFILE_MODEL_P (current_cpu))
1292 {
1293 m32r_model_mark_get_h_gr (current_cpu, abuf);
1294 m32r_model_mark_set_h_gr (current_cpu, abuf);
1295 m32r_model_profile_insn (current_cpu, abuf);
1296 }
1297 #endif
1298
1299 return new_pc;
1300 #undef FLD
1301 }
1302
1303 /* ldub: ldub $dr,@$sr. */
1304
1305 CIA
1306 SEM_FN_NAME (m32r,ldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1307 {
1308 #define FLD(f) abuf->fields.fmt_ldb.f
1309 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1310 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1311
1312 * FLD (f_r1) = ZEXTQISI (GETMEMQI (current_cpu, * FLD (f_r2)));
1313 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1314
1315 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1316
1317 #if WITH_PROFILE_MODEL_P
1318 if (PROFILE_MODEL_P (current_cpu))
1319 {
1320 m32r_model_mark_get_h_gr (current_cpu, abuf);
1321 m32r_model_mark_set_h_gr (current_cpu, abuf);
1322 m32r_model_profile_insn (current_cpu, abuf);
1323 }
1324 #endif
1325
1326 return new_pc;
1327 #undef FLD
1328 }
1329
1330 /* ldub-d: ldub $dr,@($slo16,$sr). */
1331
1332 CIA
1333 SEM_FN_NAME (m32r,ldub_d) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1334 {
1335 #define FLD(f) abuf->fields.fmt_ldb_d.f
1336 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1337 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
1338
1339 * FLD (f_r1) = ZEXTQISI (GETMEMQI (current_cpu, ADDSI (* FLD (f_r2), FLD (f_simm16))));
1340 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1341
1342 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1343
1344 #if WITH_PROFILE_MODEL_P
1345 if (PROFILE_MODEL_P (current_cpu))
1346 {
1347 m32r_model_mark_get_h_gr (current_cpu, abuf);
1348 m32r_model_mark_set_h_gr (current_cpu, abuf);
1349 m32r_model_profile_insn (current_cpu, abuf);
1350 }
1351 #endif
1352
1353 return new_pc;
1354 #undef FLD
1355 }
1356
1357 /* lduh: lduh $dr,@$sr. */
1358
1359 CIA
1360 SEM_FN_NAME (m32r,lduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1361 {
1362 #define FLD(f) abuf->fields.fmt_ldh.f
1363 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1364 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1365
1366 * FLD (f_r1) = ZEXTHISI (GETMEMHI (current_cpu, * FLD (f_r2)));
1367 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1368
1369 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1370
1371 #if WITH_PROFILE_MODEL_P
1372 if (PROFILE_MODEL_P (current_cpu))
1373 {
1374 m32r_model_mark_get_h_gr (current_cpu, abuf);
1375 m32r_model_mark_set_h_gr (current_cpu, abuf);
1376 m32r_model_profile_insn (current_cpu, abuf);
1377 }
1378 #endif
1379
1380 return new_pc;
1381 #undef FLD
1382 }
1383
1384 /* lduh-d: lduh $dr,@($slo16,$sr). */
1385
1386 CIA
1387 SEM_FN_NAME (m32r,lduh_d) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1388 {
1389 #define FLD(f) abuf->fields.fmt_ldh_d.f
1390 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1391 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
1392
1393 * FLD (f_r1) = ZEXTHISI (GETMEMHI (current_cpu, ADDSI (* FLD (f_r2), FLD (f_simm16))));
1394 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1395
1396 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1397
1398 #if WITH_PROFILE_MODEL_P
1399 if (PROFILE_MODEL_P (current_cpu))
1400 {
1401 m32r_model_mark_get_h_gr (current_cpu, abuf);
1402 m32r_model_mark_set_h_gr (current_cpu, abuf);
1403 m32r_model_profile_insn (current_cpu, abuf);
1404 }
1405 #endif
1406
1407 return new_pc;
1408 #undef FLD
1409 }
1410
1411 /* ld-plus: ld $dr,@$sr+. */
1412
1413 CIA
1414 SEM_FN_NAME (m32r,ld_plus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1415 {
1416 #define FLD(f) abuf->fields.fmt_ld_plus.f
1417 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1418 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1419
1420 do {
1421 SI temp1;SI temp0;
1422 temp0 = GETMEMSI (current_cpu, * FLD (f_r2));
1423 temp1 = ADDSI (* FLD (f_r2), 4);
1424 * FLD (f_r1) = temp0;
1425 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1426 * FLD (f_r2) = temp1;
1427 TRACE_RESULT (current_cpu, "sr", 'x', * FLD (f_r2));
1428 } while (0);
1429
1430 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1431
1432 #if WITH_PROFILE_MODEL_P
1433 if (PROFILE_MODEL_P (current_cpu))
1434 {
1435 m32r_model_mark_get_h_gr (current_cpu, abuf);
1436 m32r_model_mark_set_h_gr (current_cpu, abuf);
1437 m32r_model_profile_insn (current_cpu, abuf);
1438 }
1439 #endif
1440
1441 return new_pc;
1442 #undef FLD
1443 }
1444
1445 /* ld24: ld24 $dr,$uimm24. */
1446
1447 CIA
1448 SEM_FN_NAME (m32r,ld24) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1449 {
1450 #define FLD(f) abuf->fields.fmt_ld24.f
1451 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1452 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
1453
1454 * FLD (f_r1) = FLD (f_uimm24);
1455 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1456
1457 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1458
1459 #if WITH_PROFILE_MODEL_P
1460 if (PROFILE_MODEL_P (current_cpu))
1461 {
1462 m32r_model_mark_set_h_gr (current_cpu, abuf);
1463 m32r_model_profile_insn (current_cpu, abuf);
1464 }
1465 #endif
1466
1467 return new_pc;
1468 #undef FLD
1469 }
1470
1471 /* ldi8: ldi8 $dr,$simm8. */
1472
1473 CIA
1474 SEM_FN_NAME (m32r,ldi8) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1475 {
1476 #define FLD(f) abuf->fields.fmt_ldi8.f
1477 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1478 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1479
1480 * FLD (f_r1) = FLD (f_simm8);
1481 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1482
1483 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1484
1485 #if WITH_PROFILE_MODEL_P
1486 if (PROFILE_MODEL_P (current_cpu))
1487 {
1488 m32r_model_mark_set_h_gr (current_cpu, abuf);
1489 m32r_model_profile_insn (current_cpu, abuf);
1490 }
1491 #endif
1492
1493 return new_pc;
1494 #undef FLD
1495 }
1496
1497 /* ldi16: ldi16 $dr,$hash$slo16. */
1498
1499 CIA
1500 SEM_FN_NAME (m32r,ldi16) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1501 {
1502 #define FLD(f) abuf->fields.fmt_ldi16.f
1503 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1504 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
1505
1506 * FLD (f_r1) = FLD (f_simm16);
1507 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1508
1509 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1510
1511 #if WITH_PROFILE_MODEL_P
1512 if (PROFILE_MODEL_P (current_cpu))
1513 {
1514 m32r_model_mark_set_h_gr (current_cpu, abuf);
1515 m32r_model_profile_insn (current_cpu, abuf);
1516 }
1517 #endif
1518
1519 return new_pc;
1520 #undef FLD
1521 }
1522
1523 /* lock: lock $dr,@$sr. */
1524
1525 CIA
1526 SEM_FN_NAME (m32r,lock) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1527 {
1528 #define FLD(f) abuf->fields.fmt_lock.f
1529 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1530 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1531
1532 do {
1533 CPU (h_lock) = 1;
1534 TRACE_RESULT (current_cpu, "lock-0", 'x', CPU (h_lock));
1535 * FLD (f_r1) = GETMEMSI (current_cpu, * FLD (f_r2));
1536 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1537 } while (0);
1538
1539 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1540
1541 #if WITH_PROFILE_MODEL_P
1542 if (PROFILE_MODEL_P (current_cpu))
1543 {
1544 m32r_model_mark_get_h_gr (current_cpu, abuf);
1545 m32r_model_mark_set_h_gr (current_cpu, abuf);
1546 m32r_model_profile_insn (current_cpu, abuf);
1547 }
1548 #endif
1549
1550 return new_pc;
1551 #undef FLD
1552 }
1553
1554 /* machi: machi $src1,$src2. */
1555
1556 CIA
1557 SEM_FN_NAME (m32r,machi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1558 {
1559 #define FLD(f) abuf->fields.fmt_machi.f
1560 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1561 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1562
1563 m32r_h_accum_set (current_cpu, SRADI (SLLDI (ADDDI (m32r_h_accum_get (current_cpu), MULDI (EXTSIDI (ANDSI (* FLD (f_r1), 0xffff0000)), EXTHIDI (TRUNCSIHI (SRASI (* FLD (f_r2), 16))))), 8), 8));
1564 TRACE_RESULT (current_cpu, "accum", 'D', m32r_h_accum_get (current_cpu));
1565
1566 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1567
1568 #if WITH_PROFILE_MODEL_P
1569 if (PROFILE_MODEL_P (current_cpu))
1570 {
1571 m32r_model_mark_get_h_gr (current_cpu, abuf);
1572 m32r_model_profile_insn (current_cpu, abuf);
1573 }
1574 #endif
1575
1576 return new_pc;
1577 #undef FLD
1578 }
1579
1580 /* maclo: maclo $src1,$src2. */
1581
1582 CIA
1583 SEM_FN_NAME (m32r,maclo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1584 {
1585 #define FLD(f) abuf->fields.fmt_machi.f
1586 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1587 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1588
1589 m32r_h_accum_set (current_cpu, SRADI (SLLDI (ADDDI (m32r_h_accum_get (current_cpu), MULDI (EXTSIDI (SLLSI (* FLD (f_r1), 16)), EXTHIDI (TRUNCSIHI (* FLD (f_r2))))), 8), 8));
1590 TRACE_RESULT (current_cpu, "accum", 'D', m32r_h_accum_get (current_cpu));
1591
1592 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1593
1594 #if WITH_PROFILE_MODEL_P
1595 if (PROFILE_MODEL_P (current_cpu))
1596 {
1597 m32r_model_mark_get_h_gr (current_cpu, abuf);
1598 m32r_model_profile_insn (current_cpu, abuf);
1599 }
1600 #endif
1601
1602 return new_pc;
1603 #undef FLD
1604 }
1605
1606 /* macwhi: macwhi $src1,$src2. */
1607
1608 CIA
1609 SEM_FN_NAME (m32r,macwhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1610 {
1611 #define FLD(f) abuf->fields.fmt_machi.f
1612 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1613 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1614
1615 m32r_h_accum_set (current_cpu, SRADI (SLLDI (ADDDI (m32r_h_accum_get (current_cpu), MULDI (EXTSIDI (* FLD (f_r1)), EXTHIDI (TRUNCSIHI (SRASI (* FLD (f_r2), 16))))), 8), 8));
1616 TRACE_RESULT (current_cpu, "accum", 'D', m32r_h_accum_get (current_cpu));
1617
1618 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1619
1620 #if WITH_PROFILE_MODEL_P
1621 if (PROFILE_MODEL_P (current_cpu))
1622 {
1623 m32r_model_mark_get_h_gr (current_cpu, abuf);
1624 m32r_model_profile_insn (current_cpu, abuf);
1625 }
1626 #endif
1627
1628 return new_pc;
1629 #undef FLD
1630 }
1631
1632 /* macwlo: macwlo $src1,$src2. */
1633
1634 CIA
1635 SEM_FN_NAME (m32r,macwlo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1636 {
1637 #define FLD(f) abuf->fields.fmt_machi.f
1638 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1639 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1640
1641 m32r_h_accum_set (current_cpu, SRADI (SLLDI (ADDDI (m32r_h_accum_get (current_cpu), MULDI (EXTSIDI (* FLD (f_r1)), EXTHIDI (TRUNCSIHI (* FLD (f_r2))))), 8), 8));
1642 TRACE_RESULT (current_cpu, "accum", 'D', m32r_h_accum_get (current_cpu));
1643
1644 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1645
1646 #if WITH_PROFILE_MODEL_P
1647 if (PROFILE_MODEL_P (current_cpu))
1648 {
1649 m32r_model_mark_get_h_gr (current_cpu, abuf);
1650 m32r_model_profile_insn (current_cpu, abuf);
1651 }
1652 #endif
1653
1654 return new_pc;
1655 #undef FLD
1656 }
1657
1658 /* mul: mul $dr,$sr. */
1659
1660 CIA
1661 SEM_FN_NAME (m32r,mul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1662 {
1663 #define FLD(f) abuf->fields.fmt_add.f
1664 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1665 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1666
1667 * FLD (f_r1) = MULSI (* FLD (f_r1), * FLD (f_r2));
1668 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1669
1670 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1671
1672 #if WITH_PROFILE_MODEL_P
1673 if (PROFILE_MODEL_P (current_cpu))
1674 {
1675 m32r_model_mark_get_h_gr (current_cpu, abuf);
1676 m32r_model_mark_set_h_gr (current_cpu, abuf);
1677 m32r_model_profile_insn (current_cpu, abuf);
1678 }
1679 #endif
1680
1681 return new_pc;
1682 #undef FLD
1683 }
1684
1685 /* mulhi: mulhi $src1,$src2. */
1686
1687 CIA
1688 SEM_FN_NAME (m32r,mulhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1689 {
1690 #define FLD(f) abuf->fields.fmt_mulhi.f
1691 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1692 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1693
1694 m32r_h_accum_set (current_cpu, SRADI (SLLDI (MULDI (EXTSIDI (ANDSI (* FLD (f_r1), 0xffff0000)), EXTHIDI (TRUNCSIHI (SRASI (* FLD (f_r2), 16)))), 16), 16));
1695 TRACE_RESULT (current_cpu, "accum", 'D', m32r_h_accum_get (current_cpu));
1696
1697 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1698
1699 #if WITH_PROFILE_MODEL_P
1700 if (PROFILE_MODEL_P (current_cpu))
1701 {
1702 m32r_model_mark_get_h_gr (current_cpu, abuf);
1703 m32r_model_profile_insn (current_cpu, abuf);
1704 }
1705 #endif
1706
1707 return new_pc;
1708 #undef FLD
1709 }
1710
1711 /* mullo: mullo $src1,$src2. */
1712
1713 CIA
1714 SEM_FN_NAME (m32r,mullo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1715 {
1716 #define FLD(f) abuf->fields.fmt_mulhi.f
1717 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1718 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1719
1720 m32r_h_accum_set (current_cpu, SRADI (SLLDI (MULDI (EXTSIDI (SLLSI (* FLD (f_r1), 16)), EXTHIDI (TRUNCSIHI (* FLD (f_r2)))), 16), 16));
1721 TRACE_RESULT (current_cpu, "accum", 'D', m32r_h_accum_get (current_cpu));
1722
1723 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1724
1725 #if WITH_PROFILE_MODEL_P
1726 if (PROFILE_MODEL_P (current_cpu))
1727 {
1728 m32r_model_mark_get_h_gr (current_cpu, abuf);
1729 m32r_model_profile_insn (current_cpu, abuf);
1730 }
1731 #endif
1732
1733 return new_pc;
1734 #undef FLD
1735 }
1736
1737 /* mulwhi: mulwhi $src1,$src2. */
1738
1739 CIA
1740 SEM_FN_NAME (m32r,mulwhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1741 {
1742 #define FLD(f) abuf->fields.fmt_mulhi.f
1743 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1744 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1745
1746 m32r_h_accum_set (current_cpu, SRADI (SLLDI (MULDI (EXTSIDI (* FLD (f_r1)), EXTHIDI (TRUNCSIHI (SRASI (* FLD (f_r2), 16)))), 8), 8));
1747 TRACE_RESULT (current_cpu, "accum", 'D', m32r_h_accum_get (current_cpu));
1748
1749 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1750
1751 #if WITH_PROFILE_MODEL_P
1752 if (PROFILE_MODEL_P (current_cpu))
1753 {
1754 m32r_model_mark_get_h_gr (current_cpu, abuf);
1755 m32r_model_profile_insn (current_cpu, abuf);
1756 }
1757 #endif
1758
1759 return new_pc;
1760 #undef FLD
1761 }
1762
1763 /* mulwlo: mulwlo $src1,$src2. */
1764
1765 CIA
1766 SEM_FN_NAME (m32r,mulwlo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1767 {
1768 #define FLD(f) abuf->fields.fmt_mulhi.f
1769 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1770 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1771
1772 m32r_h_accum_set (current_cpu, SRADI (SLLDI (MULDI (EXTSIDI (* FLD (f_r1)), EXTHIDI (TRUNCSIHI (* FLD (f_r2)))), 8), 8));
1773 TRACE_RESULT (current_cpu, "accum", 'D', m32r_h_accum_get (current_cpu));
1774
1775 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1776
1777 #if WITH_PROFILE_MODEL_P
1778 if (PROFILE_MODEL_P (current_cpu))
1779 {
1780 m32r_model_mark_get_h_gr (current_cpu, abuf);
1781 m32r_model_profile_insn (current_cpu, abuf);
1782 }
1783 #endif
1784
1785 return new_pc;
1786 #undef FLD
1787 }
1788
1789 /* mv: mv $dr,$sr. */
1790
1791 CIA
1792 SEM_FN_NAME (m32r,mv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1793 {
1794 #define FLD(f) abuf->fields.fmt_mv.f
1795 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1796 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1797
1798 * FLD (f_r1) = * FLD (f_r2);
1799 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1800
1801 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1802
1803 #if WITH_PROFILE_MODEL_P
1804 if (PROFILE_MODEL_P (current_cpu))
1805 {
1806 m32r_model_mark_get_h_gr (current_cpu, abuf);
1807 m32r_model_mark_set_h_gr (current_cpu, abuf);
1808 m32r_model_profile_insn (current_cpu, abuf);
1809 }
1810 #endif
1811
1812 return new_pc;
1813 #undef FLD
1814 }
1815
1816 /* mvfachi: mvfachi $dr. */
1817
1818 CIA
1819 SEM_FN_NAME (m32r,mvfachi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1820 {
1821 #define FLD(f) abuf->fields.fmt_mvfachi.f
1822 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1823 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1824
1825 * FLD (f_r1) = TRUNCDISI (SRADI (m32r_h_accum_get (current_cpu), 32));
1826 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1827
1828 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1829
1830 #if WITH_PROFILE_MODEL_P
1831 if (PROFILE_MODEL_P (current_cpu))
1832 {
1833 m32r_model_mark_set_h_gr (current_cpu, abuf);
1834 m32r_model_profile_insn (current_cpu, abuf);
1835 }
1836 #endif
1837
1838 return new_pc;
1839 #undef FLD
1840 }
1841
1842 /* mvfaclo: mvfaclo $dr. */
1843
1844 CIA
1845 SEM_FN_NAME (m32r,mvfaclo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1846 {
1847 #define FLD(f) abuf->fields.fmt_mvfachi.f
1848 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1849 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1850
1851 * FLD (f_r1) = TRUNCDISI (m32r_h_accum_get (current_cpu));
1852 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1853
1854 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1855
1856 #if WITH_PROFILE_MODEL_P
1857 if (PROFILE_MODEL_P (current_cpu))
1858 {
1859 m32r_model_mark_set_h_gr (current_cpu, abuf);
1860 m32r_model_profile_insn (current_cpu, abuf);
1861 }
1862 #endif
1863
1864 return new_pc;
1865 #undef FLD
1866 }
1867
1868 /* mvfacmi: mvfacmi $dr. */
1869
1870 CIA
1871 SEM_FN_NAME (m32r,mvfacmi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1872 {
1873 #define FLD(f) abuf->fields.fmt_mvfachi.f
1874 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1875 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1876
1877 * FLD (f_r1) = TRUNCDISI (SRADI (m32r_h_accum_get (current_cpu), 16));
1878 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1879
1880 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1881
1882 #if WITH_PROFILE_MODEL_P
1883 if (PROFILE_MODEL_P (current_cpu))
1884 {
1885 m32r_model_mark_set_h_gr (current_cpu, abuf);
1886 m32r_model_profile_insn (current_cpu, abuf);
1887 }
1888 #endif
1889
1890 return new_pc;
1891 #undef FLD
1892 }
1893
1894 /* mvfc: mvfc $dr,$scr. */
1895
1896 CIA
1897 SEM_FN_NAME (m32r,mvfc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1898 {
1899 #define FLD(f) abuf->fields.fmt_mvfc.f
1900 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1901 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1902
1903 * FLD (f_r1) = m32r_h_cr_get (current_cpu, FLD (f_r2));
1904 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
1905
1906 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1907
1908 #if WITH_PROFILE_MODEL_P
1909 if (PROFILE_MODEL_P (current_cpu))
1910 {
1911 m32r_model_mark_set_h_gr (current_cpu, abuf);
1912 m32r_model_profile_insn (current_cpu, abuf);
1913 }
1914 #endif
1915
1916 return new_pc;
1917 #undef FLD
1918 }
1919
1920 /* mvtachi: mvtachi $src1. */
1921
1922 CIA
1923 SEM_FN_NAME (m32r,mvtachi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1924 {
1925 #define FLD(f) abuf->fields.fmt_mvtachi.f
1926 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1927 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1928
1929 m32r_h_accum_set (current_cpu, ORDI (ANDDI (m32r_h_accum_get (current_cpu), MAKEDI (0, 0xffffffff)), SLLDI (EXTSIDI (* FLD (f_r1)), 32)));
1930 TRACE_RESULT (current_cpu, "accum", 'D', m32r_h_accum_get (current_cpu));
1931
1932 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1933
1934 #if WITH_PROFILE_MODEL_P
1935 if (PROFILE_MODEL_P (current_cpu))
1936 {
1937 m32r_model_mark_get_h_gr (current_cpu, abuf);
1938 m32r_model_profile_insn (current_cpu, abuf);
1939 }
1940 #endif
1941
1942 return new_pc;
1943 #undef FLD
1944 }
1945
1946 /* mvtaclo: mvtaclo $src1. */
1947
1948 CIA
1949 SEM_FN_NAME (m32r,mvtaclo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1950 {
1951 #define FLD(f) abuf->fields.fmt_mvtachi.f
1952 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1953 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1954
1955 m32r_h_accum_set (current_cpu, ORDI (ANDDI (m32r_h_accum_get (current_cpu), MAKEDI (0xffffffff, 0)), ZEXTSIDI (* FLD (f_r1))));
1956 TRACE_RESULT (current_cpu, "accum", 'D', m32r_h_accum_get (current_cpu));
1957
1958 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1959
1960 #if WITH_PROFILE_MODEL_P
1961 if (PROFILE_MODEL_P (current_cpu))
1962 {
1963 m32r_model_mark_get_h_gr (current_cpu, abuf);
1964 m32r_model_profile_insn (current_cpu, abuf);
1965 }
1966 #endif
1967
1968 return new_pc;
1969 #undef FLD
1970 }
1971
1972 /* mvtc: mvtc $sr,$dcr. */
1973
1974 CIA
1975 SEM_FN_NAME (m32r,mvtc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1976 {
1977 #define FLD(f) abuf->fields.fmt_mvtc.f
1978 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1979 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
1980
1981 m32r_h_cr_set (current_cpu, FLD (f_r1), * FLD (f_r2));
1982 TRACE_RESULT (current_cpu, "dcr", 'x', m32r_h_cr_get (current_cpu, FLD (f_r1)));
1983
1984 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
1985
1986 #if WITH_PROFILE_MODEL_P
1987 if (PROFILE_MODEL_P (current_cpu))
1988 {
1989 m32r_model_mark_get_h_gr (current_cpu, abuf);
1990 m32r_model_profile_insn (current_cpu, abuf);
1991 }
1992 #endif
1993
1994 return new_pc;
1995 #undef FLD
1996 }
1997
1998 /* neg: neg $dr,$sr. */
1999
2000 CIA
2001 SEM_FN_NAME (m32r,neg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2002 {
2003 #define FLD(f) abuf->fields.fmt_mv.f
2004 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2005 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
2006
2007 * FLD (f_r1) = NEGSI (* FLD (f_r2));
2008 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
2009
2010 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2011
2012 #if WITH_PROFILE_MODEL_P
2013 if (PROFILE_MODEL_P (current_cpu))
2014 {
2015 m32r_model_mark_get_h_gr (current_cpu, abuf);
2016 m32r_model_mark_set_h_gr (current_cpu, abuf);
2017 m32r_model_profile_insn (current_cpu, abuf);
2018 }
2019 #endif
2020
2021 return new_pc;
2022 #undef FLD
2023 }
2024
2025 /* nop: nop. */
2026
2027 CIA
2028 SEM_FN_NAME (m32r,nop) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2029 {
2030 #define FLD(f) abuf->fields.fmt_nop.f
2031 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2032 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
2033
2034 PROFILE_COUNT_FILLNOPS (current_cpu, abuf->addr);
2035
2036 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2037
2038 #if WITH_PROFILE_MODEL_P
2039 if (PROFILE_MODEL_P (current_cpu))
2040 {
2041 m32r_model_profile_insn (current_cpu, abuf);
2042 }
2043 #endif
2044
2045 return new_pc;
2046 #undef FLD
2047 }
2048
2049 /* not: not $dr,$sr. */
2050
2051 CIA
2052 SEM_FN_NAME (m32r,not) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2053 {
2054 #define FLD(f) abuf->fields.fmt_mv.f
2055 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2056 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
2057
2058 * FLD (f_r1) = INVSI (* FLD (f_r2));
2059 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
2060
2061 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2062
2063 #if WITH_PROFILE_MODEL_P
2064 if (PROFILE_MODEL_P (current_cpu))
2065 {
2066 m32r_model_mark_get_h_gr (current_cpu, abuf);
2067 m32r_model_mark_set_h_gr (current_cpu, abuf);
2068 m32r_model_profile_insn (current_cpu, abuf);
2069 }
2070 #endif
2071
2072 return new_pc;
2073 #undef FLD
2074 }
2075
2076 /* rac: rac. */
2077
2078 CIA
2079 SEM_FN_NAME (m32r,rac) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2080 {
2081 #define FLD(f) abuf->fields.fmt_rac.f
2082 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2083 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
2084
2085 do {
2086 DI tmp_tmp1;
2087 tmp_tmp1 = SLLDI (m32r_h_accum_get (current_cpu), 1);
2088 tmp_tmp1 = ADDDI (tmp_tmp1, MAKEDI (0, 32768));
2089 m32r_h_accum_set (current_cpu, (GTDI (tmp_tmp1, MAKEDI (32767, 0xffff0000))) ? (MAKEDI (32767, 0xffff0000)) : (LTDI (tmp_tmp1, MAKEDI (0xffff8000, 0))) ? (MAKEDI (0xffff8000, 0)) : (ANDDI (tmp_tmp1, MAKEDI (0xffffffff, 0xffff0000))));
2090 TRACE_RESULT (current_cpu, "accum", 'D', m32r_h_accum_get (current_cpu));
2091 } while (0);
2092
2093 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2094
2095 #if WITH_PROFILE_MODEL_P
2096 if (PROFILE_MODEL_P (current_cpu))
2097 {
2098 m32r_model_profile_insn (current_cpu, abuf);
2099 }
2100 #endif
2101
2102 return new_pc;
2103 #undef FLD
2104 }
2105
2106 /* rach: rach. */
2107
2108 CIA
2109 SEM_FN_NAME (m32r,rach) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2110 {
2111 #define FLD(f) abuf->fields.fmt_rac.f
2112 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2113 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
2114
2115 do {
2116 DI tmp_tmp1;
2117 tmp_tmp1 = ANDDI (m32r_h_accum_get (current_cpu), MAKEDI (16777215, 0xffffffff));
2118 if (ANDIF (GEDI (tmp_tmp1, MAKEDI (16383, 0x80000000)), LEDI (tmp_tmp1, MAKEDI (8388607, 0xffffffff)))) {
2119 tmp_tmp1 = MAKEDI (16383, 0x80000000);
2120 } else {
2121 if (ANDIF (GEDI (tmp_tmp1, MAKEDI (8388608, 0)), LEDI (tmp_tmp1, MAKEDI (16760832, 0)))) {
2122 tmp_tmp1 = MAKEDI (16760832, 0);
2123 } else {
2124 tmp_tmp1 = ANDDI (ADDDI (m32r_h_accum_get (current_cpu), MAKEDI (0, 1073741824)), MAKEDI (0xffffffff, 0x80000000));
2125 }
2126 }
2127 tmp_tmp1 = SLLDI (tmp_tmp1, 1);
2128 m32r_h_accum_set (current_cpu, SRADI (SLLDI (tmp_tmp1, 7), 7));
2129 TRACE_RESULT (current_cpu, "accum", 'D', m32r_h_accum_get (current_cpu));
2130 } while (0);
2131
2132 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2133
2134 #if WITH_PROFILE_MODEL_P
2135 if (PROFILE_MODEL_P (current_cpu))
2136 {
2137 m32r_model_profile_insn (current_cpu, abuf);
2138 }
2139 #endif
2140
2141 return new_pc;
2142 #undef FLD
2143 }
2144
2145 /* rte: rte. */
2146
2147 CIA
2148 SEM_FN_NAME (m32r,rte) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2149 {
2150 #define FLD(f) abuf->fields.fmt_rte.f
2151 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2152 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
2153 int taken_p = 0;
2154
2155 do {
2156 CPU (h_sm) = CPU (h_bsm);
2157 TRACE_RESULT (current_cpu, "sm-0", 'x', CPU (h_sm));
2158 CPU (h_ie) = CPU (h_bie);
2159 TRACE_RESULT (current_cpu, "ie-0", 'x', CPU (h_ie));
2160 CPU (h_cond) = CPU (h_bcond);
2161 TRACE_RESULT (current_cpu, "condbit", 'x', CPU (h_cond));
2162 BRANCH_NEW_PC (new_pc, SEM_BRANCH_VIA_ADDR (sem_arg, ANDSI (CPU (h_bpc), -4)));
2163 taken_p = 1;
2164 TRACE_RESULT (current_cpu, "pc", 'x', new_pc);
2165 } while (0);
2166
2167 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2168
2169 #if WITH_PROFILE_MODEL_P
2170 if (PROFILE_MODEL_P (current_cpu))
2171 {
2172 m32r_model_profile_cti_insn (current_cpu, abuf, taken_p);
2173 }
2174 #endif
2175
2176 return new_pc;
2177 #undef FLD
2178 }
2179
2180 /* seth: seth $dr,$hash$hi16. */
2181
2182 CIA
2183 SEM_FN_NAME (m32r,seth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2184 {
2185 #define FLD(f) abuf->fields.fmt_seth.f
2186 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2187 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
2188
2189 * FLD (f_r1) = SLLSI (FLD (f_hi16), 16);
2190 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
2191
2192 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2193
2194 #if WITH_PROFILE_MODEL_P
2195 if (PROFILE_MODEL_P (current_cpu))
2196 {
2197 m32r_model_mark_set_h_gr (current_cpu, abuf);
2198 m32r_model_profile_insn (current_cpu, abuf);
2199 }
2200 #endif
2201
2202 return new_pc;
2203 #undef FLD
2204 }
2205
2206 /* sll: sll $dr,$sr. */
2207
2208 CIA
2209 SEM_FN_NAME (m32r,sll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2210 {
2211 #define FLD(f) abuf->fields.fmt_add.f
2212 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2213 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
2214
2215 * FLD (f_r1) = SLLSI (* FLD (f_r1), ANDSI (* FLD (f_r2), 31));
2216 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
2217
2218 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2219
2220 #if WITH_PROFILE_MODEL_P
2221 if (PROFILE_MODEL_P (current_cpu))
2222 {
2223 m32r_model_mark_get_h_gr (current_cpu, abuf);
2224 m32r_model_mark_set_h_gr (current_cpu, abuf);
2225 m32r_model_profile_insn (current_cpu, abuf);
2226 }
2227 #endif
2228
2229 return new_pc;
2230 #undef FLD
2231 }
2232
2233 /* sll3: sll3 $dr,$sr,$simm16. */
2234
2235 CIA
2236 SEM_FN_NAME (m32r,sll3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2237 {
2238 #define FLD(f) abuf->fields.fmt_sll3.f
2239 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2240 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
2241
2242 * FLD (f_r1) = SLLSI (* FLD (f_r2), ANDSI (FLD (f_simm16), 31));
2243 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
2244
2245 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2246
2247 #if WITH_PROFILE_MODEL_P
2248 if (PROFILE_MODEL_P (current_cpu))
2249 {
2250 m32r_model_mark_get_h_gr (current_cpu, abuf);
2251 m32r_model_mark_set_h_gr (current_cpu, abuf);
2252 m32r_model_profile_insn (current_cpu, abuf);
2253 }
2254 #endif
2255
2256 return new_pc;
2257 #undef FLD
2258 }
2259
2260 /* slli: slli $dr,$uimm5. */
2261
2262 CIA
2263 SEM_FN_NAME (m32r,slli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2264 {
2265 #define FLD(f) abuf->fields.fmt_slli.f
2266 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2267 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
2268
2269 * FLD (f_r1) = SLLSI (* FLD (f_r1), FLD (f_uimm5));
2270 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
2271
2272 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2273
2274 #if WITH_PROFILE_MODEL_P
2275 if (PROFILE_MODEL_P (current_cpu))
2276 {
2277 m32r_model_mark_get_h_gr (current_cpu, abuf);
2278 m32r_model_mark_set_h_gr (current_cpu, abuf);
2279 m32r_model_profile_insn (current_cpu, abuf);
2280 }
2281 #endif
2282
2283 return new_pc;
2284 #undef FLD
2285 }
2286
2287 /* sra: sra $dr,$sr. */
2288
2289 CIA
2290 SEM_FN_NAME (m32r,sra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2291 {
2292 #define FLD(f) abuf->fields.fmt_add.f
2293 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2294 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
2295
2296 * FLD (f_r1) = SRASI (* FLD (f_r1), ANDSI (* FLD (f_r2), 31));
2297 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
2298
2299 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2300
2301 #if WITH_PROFILE_MODEL_P
2302 if (PROFILE_MODEL_P (current_cpu))
2303 {
2304 m32r_model_mark_get_h_gr (current_cpu, abuf);
2305 m32r_model_mark_set_h_gr (current_cpu, abuf);
2306 m32r_model_profile_insn (current_cpu, abuf);
2307 }
2308 #endif
2309
2310 return new_pc;
2311 #undef FLD
2312 }
2313
2314 /* sra3: sra3 $dr,$sr,$simm16. */
2315
2316 CIA
2317 SEM_FN_NAME (m32r,sra3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2318 {
2319 #define FLD(f) abuf->fields.fmt_sll3.f
2320 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2321 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
2322
2323 * FLD (f_r1) = SRASI (* FLD (f_r2), ANDSI (FLD (f_simm16), 31));
2324 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
2325
2326 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2327
2328 #if WITH_PROFILE_MODEL_P
2329 if (PROFILE_MODEL_P (current_cpu))
2330 {
2331 m32r_model_mark_get_h_gr (current_cpu, abuf);
2332 m32r_model_mark_set_h_gr (current_cpu, abuf);
2333 m32r_model_profile_insn (current_cpu, abuf);
2334 }
2335 #endif
2336
2337 return new_pc;
2338 #undef FLD
2339 }
2340
2341 /* srai: srai $dr,$uimm5. */
2342
2343 CIA
2344 SEM_FN_NAME (m32r,srai) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2345 {
2346 #define FLD(f) abuf->fields.fmt_slli.f
2347 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2348 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
2349
2350 * FLD (f_r1) = SRASI (* FLD (f_r1), FLD (f_uimm5));
2351 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
2352
2353 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2354
2355 #if WITH_PROFILE_MODEL_P
2356 if (PROFILE_MODEL_P (current_cpu))
2357 {
2358 m32r_model_mark_get_h_gr (current_cpu, abuf);
2359 m32r_model_mark_set_h_gr (current_cpu, abuf);
2360 m32r_model_profile_insn (current_cpu, abuf);
2361 }
2362 #endif
2363
2364 return new_pc;
2365 #undef FLD
2366 }
2367
2368 /* srl: srl $dr,$sr. */
2369
2370 CIA
2371 SEM_FN_NAME (m32r,srl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2372 {
2373 #define FLD(f) abuf->fields.fmt_add.f
2374 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2375 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
2376
2377 * FLD (f_r1) = SRLSI (* FLD (f_r1), ANDSI (* FLD (f_r2), 31));
2378 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
2379
2380 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2381
2382 #if WITH_PROFILE_MODEL_P
2383 if (PROFILE_MODEL_P (current_cpu))
2384 {
2385 m32r_model_mark_get_h_gr (current_cpu, abuf);
2386 m32r_model_mark_set_h_gr (current_cpu, abuf);
2387 m32r_model_profile_insn (current_cpu, abuf);
2388 }
2389 #endif
2390
2391 return new_pc;
2392 #undef FLD
2393 }
2394
2395 /* srl3: srl3 $dr,$sr,$simm16. */
2396
2397 CIA
2398 SEM_FN_NAME (m32r,srl3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2399 {
2400 #define FLD(f) abuf->fields.fmt_sll3.f
2401 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2402 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
2403
2404 * FLD (f_r1) = SRLSI (* FLD (f_r2), ANDSI (FLD (f_simm16), 31));
2405 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
2406
2407 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2408
2409 #if WITH_PROFILE_MODEL_P
2410 if (PROFILE_MODEL_P (current_cpu))
2411 {
2412 m32r_model_mark_get_h_gr (current_cpu, abuf);
2413 m32r_model_mark_set_h_gr (current_cpu, abuf);
2414 m32r_model_profile_insn (current_cpu, abuf);
2415 }
2416 #endif
2417
2418 return new_pc;
2419 #undef FLD
2420 }
2421
2422 /* srli: srli $dr,$uimm5. */
2423
2424 CIA
2425 SEM_FN_NAME (m32r,srli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2426 {
2427 #define FLD(f) abuf->fields.fmt_slli.f
2428 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2429 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
2430
2431 * FLD (f_r1) = SRLSI (* FLD (f_r1), FLD (f_uimm5));
2432 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
2433
2434 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2435
2436 #if WITH_PROFILE_MODEL_P
2437 if (PROFILE_MODEL_P (current_cpu))
2438 {
2439 m32r_model_mark_get_h_gr (current_cpu, abuf);
2440 m32r_model_mark_set_h_gr (current_cpu, abuf);
2441 m32r_model_profile_insn (current_cpu, abuf);
2442 }
2443 #endif
2444
2445 return new_pc;
2446 #undef FLD
2447 }
2448
2449 /* st: st $src1,@$src2. */
2450
2451 CIA
2452 SEM_FN_NAME (m32r,st) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2453 {
2454 #define FLD(f) abuf->fields.fmt_st.f
2455 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2456 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
2457
2458 SETMEMSI (current_cpu, * FLD (f_r2), * FLD (f_r1));
2459 TRACE_RESULT (current_cpu, "memory", 'x', GETMEMSI (current_cpu, * FLD (f_r2)));
2460
2461 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2462
2463 #if WITH_PROFILE_MODEL_P
2464 if (PROFILE_MODEL_P (current_cpu))
2465 {
2466 m32r_model_mark_get_h_gr (current_cpu, abuf);
2467 m32r_model_profile_insn (current_cpu, abuf);
2468 }
2469 #endif
2470
2471 return new_pc;
2472 #undef FLD
2473 }
2474
2475 /* st-d: st $src1,@($slo16,$src2). */
2476
2477 CIA
2478 SEM_FN_NAME (m32r,st_d) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2479 {
2480 #define FLD(f) abuf->fields.fmt_st_d.f
2481 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2482 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
2483
2484 SETMEMSI (current_cpu, ADDSI (* FLD (f_r2), FLD (f_simm16)), * FLD (f_r1));
2485 TRACE_RESULT (current_cpu, "memory", 'x', GETMEMSI (current_cpu, ADDSI (* FLD (f_r2), FLD (f_simm16))));
2486
2487 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2488
2489 #if WITH_PROFILE_MODEL_P
2490 if (PROFILE_MODEL_P (current_cpu))
2491 {
2492 m32r_model_mark_get_h_gr (current_cpu, abuf);
2493 m32r_model_profile_insn (current_cpu, abuf);
2494 }
2495 #endif
2496
2497 return new_pc;
2498 #undef FLD
2499 }
2500
2501 /* stb: stb $src1,@$src2. */
2502
2503 CIA
2504 SEM_FN_NAME (m32r,stb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2505 {
2506 #define FLD(f) abuf->fields.fmt_stb.f
2507 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2508 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
2509
2510 SETMEMQI (current_cpu, * FLD (f_r2), * FLD (f_r1));
2511 TRACE_RESULT (current_cpu, "memory", 'x', GETMEMQI (current_cpu, * FLD (f_r2)));
2512
2513 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2514
2515 #if WITH_PROFILE_MODEL_P
2516 if (PROFILE_MODEL_P (current_cpu))
2517 {
2518 m32r_model_mark_get_h_gr (current_cpu, abuf);
2519 m32r_model_profile_insn (current_cpu, abuf);
2520 }
2521 #endif
2522
2523 return new_pc;
2524 #undef FLD
2525 }
2526
2527 /* stb-d: stb $src1,@($slo16,$src2). */
2528
2529 CIA
2530 SEM_FN_NAME (m32r,stb_d) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2531 {
2532 #define FLD(f) abuf->fields.fmt_stb_d.f
2533 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2534 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
2535
2536 SETMEMQI (current_cpu, ADDSI (* FLD (f_r2), FLD (f_simm16)), * FLD (f_r1));
2537 TRACE_RESULT (current_cpu, "memory", 'x', GETMEMQI (current_cpu, ADDSI (* FLD (f_r2), FLD (f_simm16))));
2538
2539 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2540
2541 #if WITH_PROFILE_MODEL_P
2542 if (PROFILE_MODEL_P (current_cpu))
2543 {
2544 m32r_model_mark_get_h_gr (current_cpu, abuf);
2545 m32r_model_profile_insn (current_cpu, abuf);
2546 }
2547 #endif
2548
2549 return new_pc;
2550 #undef FLD
2551 }
2552
2553 /* sth: sth $src1,@$src2. */
2554
2555 CIA
2556 SEM_FN_NAME (m32r,sth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2557 {
2558 #define FLD(f) abuf->fields.fmt_sth.f
2559 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2560 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
2561
2562 SETMEMHI (current_cpu, * FLD (f_r2), * FLD (f_r1));
2563 TRACE_RESULT (current_cpu, "memory", 'x', GETMEMHI (current_cpu, * FLD (f_r2)));
2564
2565 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2566
2567 #if WITH_PROFILE_MODEL_P
2568 if (PROFILE_MODEL_P (current_cpu))
2569 {
2570 m32r_model_mark_get_h_gr (current_cpu, abuf);
2571 m32r_model_profile_insn (current_cpu, abuf);
2572 }
2573 #endif
2574
2575 return new_pc;
2576 #undef FLD
2577 }
2578
2579 /* sth-d: sth $src1,@($slo16,$src2). */
2580
2581 CIA
2582 SEM_FN_NAME (m32r,sth_d) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2583 {
2584 #define FLD(f) abuf->fields.fmt_sth_d.f
2585 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2586 CIA new_pc = SEM_NEXT_PC (sem_arg, 4);
2587
2588 SETMEMHI (current_cpu, ADDSI (* FLD (f_r2), FLD (f_simm16)), * FLD (f_r1));
2589 TRACE_RESULT (current_cpu, "memory", 'x', GETMEMHI (current_cpu, ADDSI (* FLD (f_r2), FLD (f_simm16))));
2590
2591 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2592
2593 #if WITH_PROFILE_MODEL_P
2594 if (PROFILE_MODEL_P (current_cpu))
2595 {
2596 m32r_model_mark_get_h_gr (current_cpu, abuf);
2597 m32r_model_profile_insn (current_cpu, abuf);
2598 }
2599 #endif
2600
2601 return new_pc;
2602 #undef FLD
2603 }
2604
2605 /* st-plus: st $src1,@+$src2. */
2606
2607 CIA
2608 SEM_FN_NAME (m32r,st_plus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2609 {
2610 #define FLD(f) abuf->fields.fmt_st_plus.f
2611 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2612 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
2613
2614 do {
2615 SI tmp_new_src2;
2616 tmp_new_src2 = ADDSI (* FLD (f_r2), 4);
2617 SETMEMSI (current_cpu, tmp_new_src2, * FLD (f_r1));
2618 TRACE_RESULT (current_cpu, "memory", 'x', GETMEMSI (current_cpu, tmp_new_src2));
2619 * FLD (f_r2) = tmp_new_src2;
2620 TRACE_RESULT (current_cpu, "src2", 'x', * FLD (f_r2));
2621 } while (0);
2622
2623 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2624
2625 #if WITH_PROFILE_MODEL_P
2626 if (PROFILE_MODEL_P (current_cpu))
2627 {
2628 m32r_model_mark_get_h_gr (current_cpu, abuf);
2629 m32r_model_mark_set_h_gr (current_cpu, abuf);
2630 m32r_model_profile_insn (current_cpu, abuf);
2631 }
2632 #endif
2633
2634 return new_pc;
2635 #undef FLD
2636 }
2637
2638 /* st-minus: st $src1,@-$src2. */
2639
2640 CIA
2641 SEM_FN_NAME (m32r,st_minus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2642 {
2643 #define FLD(f) abuf->fields.fmt_st_plus.f
2644 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2645 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
2646
2647 do {
2648 SI tmp_new_src2;
2649 tmp_new_src2 = SUBSI (* FLD (f_r2), 4);
2650 SETMEMSI (current_cpu, tmp_new_src2, * FLD (f_r1));
2651 TRACE_RESULT (current_cpu, "memory", 'x', GETMEMSI (current_cpu, tmp_new_src2));
2652 * FLD (f_r2) = tmp_new_src2;
2653 TRACE_RESULT (current_cpu, "src2", 'x', * FLD (f_r2));
2654 } while (0);
2655
2656 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2657
2658 #if WITH_PROFILE_MODEL_P
2659 if (PROFILE_MODEL_P (current_cpu))
2660 {
2661 m32r_model_mark_get_h_gr (current_cpu, abuf);
2662 m32r_model_mark_set_h_gr (current_cpu, abuf);
2663 m32r_model_profile_insn (current_cpu, abuf);
2664 }
2665 #endif
2666
2667 return new_pc;
2668 #undef FLD
2669 }
2670
2671 /* sub: sub $dr,$sr. */
2672
2673 CIA
2674 SEM_FN_NAME (m32r,sub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2675 {
2676 #define FLD(f) abuf->fields.fmt_add.f
2677 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2678 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
2679
2680 * FLD (f_r1) = SUBSI (* FLD (f_r1), * FLD (f_r2));
2681 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
2682
2683 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2684
2685 #if WITH_PROFILE_MODEL_P
2686 if (PROFILE_MODEL_P (current_cpu))
2687 {
2688 m32r_model_mark_get_h_gr (current_cpu, abuf);
2689 m32r_model_mark_set_h_gr (current_cpu, abuf);
2690 m32r_model_profile_insn (current_cpu, abuf);
2691 }
2692 #endif
2693
2694 return new_pc;
2695 #undef FLD
2696 }
2697
2698 /* subv: subv $dr,$sr. */
2699
2700 CIA
2701 SEM_FN_NAME (m32r,subv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2702 {
2703 #define FLD(f) abuf->fields.fmt_addv.f
2704 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2705 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
2706
2707 do {
2708 UBI temp1;SI temp0;
2709 temp0 = SUBSI (* FLD (f_r1), * FLD (f_r2));
2710 temp1 = SUBOFSI (* FLD (f_r1), * FLD (f_r2), 0);
2711 * FLD (f_r1) = temp0;
2712 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
2713 CPU (h_cond) = temp1;
2714 TRACE_RESULT (current_cpu, "condbit", 'x', CPU (h_cond));
2715 } while (0);
2716
2717 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2718
2719 #if WITH_PROFILE_MODEL_P
2720 if (PROFILE_MODEL_P (current_cpu))
2721 {
2722 m32r_model_mark_get_h_gr (current_cpu, abuf);
2723 m32r_model_mark_set_h_gr (current_cpu, abuf);
2724 m32r_model_profile_insn (current_cpu, abuf);
2725 }
2726 #endif
2727
2728 return new_pc;
2729 #undef FLD
2730 }
2731
2732 /* subx: subx $dr,$sr. */
2733
2734 CIA
2735 SEM_FN_NAME (m32r,subx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2736 {
2737 #define FLD(f) abuf->fields.fmt_addx.f
2738 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2739 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
2740
2741 do {
2742 UBI temp1;SI temp0;
2743 temp0 = SUBCSI (* FLD (f_r1), * FLD (f_r2), CPU (h_cond));
2744 temp1 = SUBCFSI (* FLD (f_r1), * FLD (f_r2), CPU (h_cond));
2745 * FLD (f_r1) = temp0;
2746 TRACE_RESULT (current_cpu, "dr", 'x', * FLD (f_r1));
2747 CPU (h_cond) = temp1;
2748 TRACE_RESULT (current_cpu, "condbit", 'x', CPU (h_cond));
2749 } while (0);
2750
2751 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2752
2753 #if WITH_PROFILE_MODEL_P
2754 if (PROFILE_MODEL_P (current_cpu))
2755 {
2756 m32r_model_mark_get_h_gr (current_cpu, abuf);
2757 m32r_model_mark_set_h_gr (current_cpu, abuf);
2758 m32r_model_profile_insn (current_cpu, abuf);
2759 }
2760 #endif
2761
2762 return new_pc;
2763 #undef FLD
2764 }
2765
2766 /* trap: trap $uimm4. */
2767
2768 CIA
2769 SEM_FN_NAME (m32r,trap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2770 {
2771 #define FLD(f) abuf->fields.fmt_trap.f
2772 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2773 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
2774 int taken_p = 0;
2775
2776 do {
2777 m32r_h_cr_set (current_cpu, 6, ADDSI (CPU (h_pc), 4));
2778 TRACE_RESULT (current_cpu, "cr-6", 'x', m32r_h_cr_get (current_cpu, 6));
2779 m32r_h_cr_set (current_cpu, 0, ANDSI (SLLSI (m32r_h_cr_get (current_cpu, 0), 8), 65408));
2780 TRACE_RESULT (current_cpu, "cr-0", 'x', m32r_h_cr_get (current_cpu, 0));
2781 BRANCH_NEW_PC (new_pc, SEM_BRANCH_VIA_ADDR (sem_arg, a_m32r_trap (current_cpu, FLD (f_uimm4))));
2782 taken_p = 1;
2783 TRACE_RESULT (current_cpu, "pc", 'x', new_pc);
2784 } while (0);
2785
2786 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2787
2788 #if WITH_PROFILE_MODEL_P
2789 if (PROFILE_MODEL_P (current_cpu))
2790 {
2791 m32r_model_profile_cti_insn (current_cpu, abuf, taken_p);
2792 }
2793 #endif
2794
2795 return new_pc;
2796 #undef FLD
2797 }
2798
2799 /* unlock: unlock $src1,@$src2. */
2800
2801 CIA
2802 SEM_FN_NAME (m32r,unlock) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2803 {
2804 #define FLD(f) abuf->fields.fmt_unlock.f
2805 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2806 CIA new_pc = SEM_NEXT_PC (sem_arg, 2);
2807
2808 do {
2809 if (CPU (h_lock)) {
2810 SETMEMSI (current_cpu, * FLD (f_r2), * FLD (f_r1));
2811 TRACE_RESULT (current_cpu, "memory", 'x', GETMEMSI (current_cpu, * FLD (f_r2)));
2812 }
2813 CPU (h_lock) = 0;
2814 TRACE_RESULT (current_cpu, "lock-0", 'x', CPU (h_lock));
2815 } while (0);
2816
2817 PROFILE_COUNT_INSN (current_cpu, 0, abuf->idesc->num);
2818
2819 #if WITH_PROFILE_MODEL_P
2820 if (PROFILE_MODEL_P (current_cpu))
2821 {
2822 m32r_model_mark_get_h_gr (current_cpu, abuf);
2823 m32r_model_profile_insn (current_cpu, abuf);
2824 }
2825 #endif
2826
2827 return new_pc;
2828 #undef FLD
2829 }
2830
2831 CIA
2832 SEM_FN_NAME (m32r,illegal) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2833 {
2834 sim_engine_illegal_insn (current_cpu, NULL_CIA /*FIXME*/);
2835 return 0;
2836 }
2837
2838 #endif /* WANT_CPU */