1 /* Simulator instruction semantics for m32r.
3 This file is machine generated.
5 Copyright (C) 1996, 1997 Free Software Foundation, Inc.
7 This file is part of the GNU Binutils and/or GDB, the GNU debugger.
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)
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.
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.
31 /* Perform add: add $dr,$sr. */
33 SEM_FN_NAME (add
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
35 #define FLD(f) abuf->fields.fmt_0.f
36 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
37 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
38 * FLD (f_r1
) = ADDSI (* FLD (f_r1
), * FLD (f_r2
));
39 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
40 #if WITH_PROFILE_MODEL_P
41 if (PROFILE_MODEL_P (current_cpu
))
43 model_mark_get_h_gr (current_cpu
, abuf
);
44 model_mark_set_h_gr (current_cpu
, abuf
);
45 model_profile_insn (current_cpu
, abuf
);
52 /* Perform add3: add3 $dr,$sr,$slo16. */
54 SEM_FN_NAME (add3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
56 #define FLD(f) abuf->fields.fmt_1.f
57 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
58 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
59 * FLD (f_r1
) = ADDSI (* FLD (f_r2
), FLD (f_simm16
));
60 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
61 #if WITH_PROFILE_MODEL_P
62 if (PROFILE_MODEL_P (current_cpu
))
64 model_mark_get_h_gr (current_cpu
, abuf
);
65 model_mark_set_h_gr (current_cpu
, abuf
);
66 model_profile_insn (current_cpu
, abuf
);
73 /* Perform and: and $dr,$sr. */
75 SEM_FN_NAME (and) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
77 #define FLD(f) abuf->fields.fmt_0.f
78 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
79 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
80 * FLD (f_r1
) = ANDSI (* FLD (f_r1
), * FLD (f_r2
));
81 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
82 #if WITH_PROFILE_MODEL_P
83 if (PROFILE_MODEL_P (current_cpu
))
85 model_mark_get_h_gr (current_cpu
, abuf
);
86 model_mark_set_h_gr (current_cpu
, abuf
);
87 model_profile_insn (current_cpu
, abuf
);
94 /* Perform and3: and3 $dr,$sr,$uimm16. */
96 SEM_FN_NAME (and3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
98 #define FLD(f) abuf->fields.fmt_2.f
99 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
100 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
101 * FLD (f_r1
) = ANDSI (* FLD (f_r2
), FLD (f_uimm16
));
102 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
103 #if WITH_PROFILE_MODEL_P
104 if (PROFILE_MODEL_P (current_cpu
))
106 model_mark_get_h_gr (current_cpu
, abuf
);
107 model_mark_set_h_gr (current_cpu
, abuf
);
108 model_profile_insn (current_cpu
, abuf
);
115 /* Perform or: or $dr,$sr. */
117 SEM_FN_NAME (or) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
119 #define FLD(f) abuf->fields.fmt_0.f
120 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
121 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
122 * FLD (f_r1
) = ORSI (* FLD (f_r1
), * FLD (f_r2
));
123 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
124 #if WITH_PROFILE_MODEL_P
125 if (PROFILE_MODEL_P (current_cpu
))
127 model_mark_get_h_gr (current_cpu
, abuf
);
128 model_mark_set_h_gr (current_cpu
, abuf
);
129 model_profile_insn (current_cpu
, abuf
);
136 /* Perform or3: or3 $dr,$sr,$ulo16. */
138 SEM_FN_NAME (or3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
140 #define FLD(f) abuf->fields.fmt_3.f
141 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
142 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
143 * FLD (f_r1
) = ORSI (* FLD (f_r2
), FLD (f_uimm16
));
144 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
145 #if WITH_PROFILE_MODEL_P
146 if (PROFILE_MODEL_P (current_cpu
))
148 model_mark_get_h_gr (current_cpu
, abuf
);
149 model_mark_set_h_gr (current_cpu
, abuf
);
150 model_profile_insn (current_cpu
, abuf
);
157 /* Perform xor: xor $dr,$sr. */
159 SEM_FN_NAME (xor) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
161 #define FLD(f) abuf->fields.fmt_0.f
162 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
163 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
164 * FLD (f_r1
) = XORSI (* FLD (f_r1
), * FLD (f_r2
));
165 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
166 #if WITH_PROFILE_MODEL_P
167 if (PROFILE_MODEL_P (current_cpu
))
169 model_mark_get_h_gr (current_cpu
, abuf
);
170 model_mark_set_h_gr (current_cpu
, abuf
);
171 model_profile_insn (current_cpu
, abuf
);
178 /* Perform xor3: xor3 $dr,$sr,$uimm16. */
180 SEM_FN_NAME (xor3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
182 #define FLD(f) abuf->fields.fmt_2.f
183 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
184 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
185 * FLD (f_r1
) = XORSI (* FLD (f_r2
), FLD (f_uimm16
));
186 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
187 #if WITH_PROFILE_MODEL_P
188 if (PROFILE_MODEL_P (current_cpu
))
190 model_mark_get_h_gr (current_cpu
, abuf
);
191 model_mark_set_h_gr (current_cpu
, abuf
);
192 model_profile_insn (current_cpu
, abuf
);
199 /* Perform addi: addi $dr,$simm8. */
201 SEM_FN_NAME (addi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
203 #define FLD(f) abuf->fields.fmt_4.f
204 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
205 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
206 * FLD (f_r1
) = ADDSI (* FLD (f_r1
), FLD (f_simm8
));
207 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
208 #if WITH_PROFILE_MODEL_P
209 if (PROFILE_MODEL_P (current_cpu
))
211 model_mark_get_h_gr (current_cpu
, abuf
);
212 model_mark_set_h_gr (current_cpu
, abuf
);
213 model_profile_insn (current_cpu
, abuf
);
220 /* Perform addv: addv $dr,$sr. */
222 SEM_FN_NAME (addv
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
224 #define FLD(f) abuf->fields.fmt_0.f
225 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
226 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
229 temp0
= ADDSI (* FLD (f_r1
), * FLD (f_r2
));
230 temp1
= ADDOFSI (* FLD (f_r1
), * FLD (f_r2
), 0);
231 * FLD (f_r1
) = temp0
;
232 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
233 CPU (h_cond
) = temp1
;
234 TRACE_RESULT (current_cpu
, "h_cond", 'x', temp1
);
236 #if WITH_PROFILE_MODEL_P
237 if (PROFILE_MODEL_P (current_cpu
))
239 model_mark_get_h_gr (current_cpu
, abuf
);
240 model_mark_set_h_gr (current_cpu
, abuf
);
241 model_profile_insn (current_cpu
, abuf
);
248 /* Perform addv3: addv3 $dr,$sr,$simm16. */
250 SEM_FN_NAME (addv3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
252 #define FLD(f) abuf->fields.fmt_5.f
253 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
254 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
257 temp0
= ADDSI (* FLD (f_r2
), FLD (f_simm16
));
258 temp1
= ADDOFSI (* FLD (f_r2
), FLD (f_simm16
), 0);
259 * FLD (f_r1
) = temp0
;
260 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
261 CPU (h_cond
) = temp1
;
262 TRACE_RESULT (current_cpu
, "h_cond", 'x', temp1
);
264 #if WITH_PROFILE_MODEL_P
265 if (PROFILE_MODEL_P (current_cpu
))
267 model_mark_get_h_gr (current_cpu
, abuf
);
268 model_mark_set_h_gr (current_cpu
, abuf
);
269 model_profile_insn (current_cpu
, abuf
);
276 /* Perform addx: addx $dr,$sr. */
278 SEM_FN_NAME (addx
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
280 #define FLD(f) abuf->fields.fmt_0.f
281 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
282 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
285 temp0
= ADDCSI (* FLD (f_r1
), * FLD (f_r2
), CPU (h_cond
));
286 temp1
= ADDCFSI (* FLD (f_r1
), * FLD (f_r2
), CPU (h_cond
));
287 * FLD (f_r1
) = temp0
;
288 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
289 CPU (h_cond
) = temp1
;
290 TRACE_RESULT (current_cpu
, "h_cond", 'x', temp1
);
292 #if WITH_PROFILE_MODEL_P
293 if (PROFILE_MODEL_P (current_cpu
))
295 model_mark_get_h_gr (current_cpu
, abuf
);
296 model_mark_set_h_gr (current_cpu
, abuf
);
297 model_profile_insn (current_cpu
, abuf
);
304 /* Perform bc8: bc $disp8. */
306 SEM_FN_NAME (bc8
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
308 #define FLD(f) abuf->fields.fmt_6.f
309 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
310 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
314 new_pc
= SEM_BRANCH_VIA_CACHE (sem_arg
, FLD (f_disp8
));
315 TRACE_RESULT (current_cpu
, "new_pc", 'x', SEM_NEW_PC_ADDR (new_pc
));
318 #if WITH_PROFILE_MODEL_P
319 if (PROFILE_MODEL_P (current_cpu
))
321 model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
328 /* Perform bc24: bc $disp24. */
330 SEM_FN_NAME (bc24
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
332 #define FLD(f) abuf->fields.fmt_7.f
333 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
334 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
338 new_pc
= SEM_BRANCH_VIA_CACHE (sem_arg
, FLD (f_disp24
));
339 TRACE_RESULT (current_cpu
, "new_pc", 'x', SEM_NEW_PC_ADDR (new_pc
));
342 #if WITH_PROFILE_MODEL_P
343 if (PROFILE_MODEL_P (current_cpu
))
345 model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
352 /* Perform beq: beq $src1,$src2,$disp16. */
354 SEM_FN_NAME (beq
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
356 #define FLD(f) abuf->fields.fmt_8.f
357 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
358 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
360 if (EQSI (* FLD (f_r1
), * FLD (f_r2
)))
362 new_pc
= SEM_BRANCH_VIA_CACHE (sem_arg
, FLD (f_disp16
));
363 TRACE_RESULT (current_cpu
, "new_pc", 'x', SEM_NEW_PC_ADDR (new_pc
));
366 #if WITH_PROFILE_MODEL_P
367 if (PROFILE_MODEL_P (current_cpu
))
369 model_mark_get_h_gr (current_cpu
, abuf
);
370 model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
377 /* Perform beqz: beqz $src2,$disp16. */
379 SEM_FN_NAME (beqz
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
381 #define FLD(f) abuf->fields.fmt_9.f
382 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
383 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
385 if (EQSI (* FLD (f_r2
), 0))
387 new_pc
= SEM_BRANCH_VIA_CACHE (sem_arg
, FLD (f_disp16
));
388 TRACE_RESULT (current_cpu
, "new_pc", 'x', SEM_NEW_PC_ADDR (new_pc
));
391 #if WITH_PROFILE_MODEL_P
392 if (PROFILE_MODEL_P (current_cpu
))
394 model_mark_get_h_gr (current_cpu
, abuf
);
395 model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
402 /* Perform bgez: bgez $src2,$disp16. */
404 SEM_FN_NAME (bgez
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
406 #define FLD(f) abuf->fields.fmt_9.f
407 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
408 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
410 if (GESI (* FLD (f_r2
), 0))
412 new_pc
= SEM_BRANCH_VIA_CACHE (sem_arg
, FLD (f_disp16
));
413 TRACE_RESULT (current_cpu
, "new_pc", 'x', SEM_NEW_PC_ADDR (new_pc
));
416 #if WITH_PROFILE_MODEL_P
417 if (PROFILE_MODEL_P (current_cpu
))
419 model_mark_get_h_gr (current_cpu
, abuf
);
420 model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
427 /* Perform bgtz: bgtz $src2,$disp16. */
429 SEM_FN_NAME (bgtz
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
431 #define FLD(f) abuf->fields.fmt_9.f
432 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
433 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
435 if (GTSI (* FLD (f_r2
), 0))
437 new_pc
= SEM_BRANCH_VIA_CACHE (sem_arg
, FLD (f_disp16
));
438 TRACE_RESULT (current_cpu
, "new_pc", 'x', SEM_NEW_PC_ADDR (new_pc
));
441 #if WITH_PROFILE_MODEL_P
442 if (PROFILE_MODEL_P (current_cpu
))
444 model_mark_get_h_gr (current_cpu
, abuf
);
445 model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
452 /* Perform blez: blez $src2,$disp16. */
454 SEM_FN_NAME (blez
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
456 #define FLD(f) abuf->fields.fmt_9.f
457 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
458 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
460 if (LESI (* FLD (f_r2
), 0))
462 new_pc
= SEM_BRANCH_VIA_CACHE (sem_arg
, FLD (f_disp16
));
463 TRACE_RESULT (current_cpu
, "new_pc", 'x', SEM_NEW_PC_ADDR (new_pc
));
466 #if WITH_PROFILE_MODEL_P
467 if (PROFILE_MODEL_P (current_cpu
))
469 model_mark_get_h_gr (current_cpu
, abuf
);
470 model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
477 /* Perform bltz: bltz $src2,$disp16. */
479 SEM_FN_NAME (bltz
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
481 #define FLD(f) abuf->fields.fmt_9.f
482 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
483 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
485 if (LTSI (* FLD (f_r2
), 0))
487 new_pc
= SEM_BRANCH_VIA_CACHE (sem_arg
, FLD (f_disp16
));
488 TRACE_RESULT (current_cpu
, "new_pc", 'x', SEM_NEW_PC_ADDR (new_pc
));
491 #if WITH_PROFILE_MODEL_P
492 if (PROFILE_MODEL_P (current_cpu
))
494 model_mark_get_h_gr (current_cpu
, abuf
);
495 model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
502 /* Perform bnez: bnez $src2,$disp16. */
504 SEM_FN_NAME (bnez
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
506 #define FLD(f) abuf->fields.fmt_9.f
507 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
508 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
510 if (NESI (* FLD (f_r2
), 0))
512 new_pc
= SEM_BRANCH_VIA_CACHE (sem_arg
, FLD (f_disp16
));
513 TRACE_RESULT (current_cpu
, "new_pc", 'x', SEM_NEW_PC_ADDR (new_pc
));
516 #if WITH_PROFILE_MODEL_P
517 if (PROFILE_MODEL_P (current_cpu
))
519 model_mark_get_h_gr (current_cpu
, abuf
);
520 model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
527 /* Perform bl8: bl $disp8. */
529 SEM_FN_NAME (bl8
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
531 #define FLD(f) abuf->fields.fmt_6.f
532 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
533 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
536 CPU (h_gr
[14]) = ADDSI (ANDSI (CPU (pc
), -4), 4);
537 TRACE_RESULT (current_cpu
, "h_gr[14]", 'x', ADDSI (ANDSI (CPU (pc
), -4), 4));
538 new_pc
= SEM_BRANCH_VIA_CACHE (sem_arg
, FLD (f_disp8
));
539 TRACE_RESULT (current_cpu
, "new_pc", 'x', SEM_NEW_PC_ADDR (new_pc
));
542 #if WITH_PROFILE_MODEL_P
543 if (PROFILE_MODEL_P (current_cpu
))
545 model_mark_set_h_gr (current_cpu
, abuf
);
546 model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
553 /* Perform bl24: bl $disp24. */
555 SEM_FN_NAME (bl24
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
557 #define FLD(f) abuf->fields.fmt_7.f
558 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
559 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
562 CPU (h_gr
[14]) = ADDSI (CPU (pc
), 4);
563 TRACE_RESULT (current_cpu
, "h_gr[14]", 'x', ADDSI (CPU (pc
), 4));
564 new_pc
= SEM_BRANCH_VIA_CACHE (sem_arg
, FLD (f_disp24
));
565 TRACE_RESULT (current_cpu
, "new_pc", 'x', SEM_NEW_PC_ADDR (new_pc
));
568 #if WITH_PROFILE_MODEL_P
569 if (PROFILE_MODEL_P (current_cpu
))
571 model_mark_set_h_gr (current_cpu
, abuf
);
572 model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
579 /* Perform bnc8: bnc $disp8. */
581 SEM_FN_NAME (bnc8
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
583 #define FLD(f) abuf->fields.fmt_6.f
584 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
585 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
587 if (NOTBI (CPU (h_cond
)))
589 new_pc
= SEM_BRANCH_VIA_CACHE (sem_arg
, FLD (f_disp8
));
590 TRACE_RESULT (current_cpu
, "new_pc", 'x', SEM_NEW_PC_ADDR (new_pc
));
593 #if WITH_PROFILE_MODEL_P
594 if (PROFILE_MODEL_P (current_cpu
))
596 model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
603 /* Perform bnc24: bnc $disp24. */
605 SEM_FN_NAME (bnc24
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
607 #define FLD(f) abuf->fields.fmt_7.f
608 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
609 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
611 if (NOTBI (CPU (h_cond
)))
613 new_pc
= SEM_BRANCH_VIA_CACHE (sem_arg
, FLD (f_disp24
));
614 TRACE_RESULT (current_cpu
, "new_pc", 'x', SEM_NEW_PC_ADDR (new_pc
));
617 #if WITH_PROFILE_MODEL_P
618 if (PROFILE_MODEL_P (current_cpu
))
620 model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
627 /* Perform bne: bne $src1,$src2,$disp16. */
629 SEM_FN_NAME (bne
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
631 #define FLD(f) abuf->fields.fmt_8.f
632 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
633 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
635 if (NESI (* FLD (f_r1
), * FLD (f_r2
)))
637 new_pc
= SEM_BRANCH_VIA_CACHE (sem_arg
, FLD (f_disp16
));
638 TRACE_RESULT (current_cpu
, "new_pc", 'x', SEM_NEW_PC_ADDR (new_pc
));
641 #if WITH_PROFILE_MODEL_P
642 if (PROFILE_MODEL_P (current_cpu
))
644 model_mark_get_h_gr (current_cpu
, abuf
);
645 model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
652 /* Perform bra8: bra $disp8. */
654 SEM_FN_NAME (bra8
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
656 #define FLD(f) abuf->fields.fmt_6.f
657 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
658 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
660 new_pc
= SEM_BRANCH_VIA_CACHE (sem_arg
, FLD (f_disp8
));
661 TRACE_RESULT (current_cpu
, "new_pc", 'x', SEM_NEW_PC_ADDR (new_pc
));
663 #if WITH_PROFILE_MODEL_P
664 if (PROFILE_MODEL_P (current_cpu
))
666 model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
673 /* Perform bra24: bra $disp24. */
675 SEM_FN_NAME (bra24
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
677 #define FLD(f) abuf->fields.fmt_7.f
678 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
679 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
681 new_pc
= SEM_BRANCH_VIA_CACHE (sem_arg
, FLD (f_disp24
));
682 TRACE_RESULT (current_cpu
, "new_pc", 'x', SEM_NEW_PC_ADDR (new_pc
));
684 #if WITH_PROFILE_MODEL_P
685 if (PROFILE_MODEL_P (current_cpu
))
687 model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
694 /* Perform cmp: cmp $src1,$src2. */
696 SEM_FN_NAME (cmp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
698 #define FLD(f) abuf->fields.fmt_10.f
699 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
700 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
701 CPU (h_cond
) = LTSI (* FLD (f_r1
), * FLD (f_r2
));
702 TRACE_RESULT (current_cpu
, "h_cond", 'x', LTSI (* FLD (f_r1
), * FLD (f_r2
)));
703 #if WITH_PROFILE_MODEL_P
704 if (PROFILE_MODEL_P (current_cpu
))
706 model_mark_get_h_gr (current_cpu
, abuf
);
707 model_profile_insn (current_cpu
, abuf
);
714 /* Perform cmpi: cmpi $src2,$simm16. */
716 SEM_FN_NAME (cmpi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
718 #define FLD(f) abuf->fields.fmt_11.f
719 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
720 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
721 CPU (h_cond
) = LTSI (* FLD (f_r2
), FLD (f_simm16
));
722 TRACE_RESULT (current_cpu
, "h_cond", 'x', LTSI (* FLD (f_r2
), FLD (f_simm16
)));
723 #if WITH_PROFILE_MODEL_P
724 if (PROFILE_MODEL_P (current_cpu
))
726 model_mark_get_h_gr (current_cpu
, abuf
);
727 model_profile_insn (current_cpu
, abuf
);
734 /* Perform cmpu: cmpu $src1,$src2. */
736 SEM_FN_NAME (cmpu
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
738 #define FLD(f) abuf->fields.fmt_10.f
739 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
740 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
741 CPU (h_cond
) = LTUSI (* FLD (f_r1
), * FLD (f_r2
));
742 TRACE_RESULT (current_cpu
, "h_cond", 'x', LTUSI (* FLD (f_r1
), * FLD (f_r2
)));
743 #if WITH_PROFILE_MODEL_P
744 if (PROFILE_MODEL_P (current_cpu
))
746 model_mark_get_h_gr (current_cpu
, abuf
);
747 model_profile_insn (current_cpu
, abuf
);
754 /* Perform cmpui: cmpui $src2,$uimm16. */
756 SEM_FN_NAME (cmpui
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
758 #define FLD(f) abuf->fields.fmt_12.f
759 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
760 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
761 CPU (h_cond
) = LTUSI (* FLD (f_r2
), FLD (f_uimm16
));
762 TRACE_RESULT (current_cpu
, "h_cond", 'x', LTUSI (* FLD (f_r2
), FLD (f_uimm16
)));
763 #if WITH_PROFILE_MODEL_P
764 if (PROFILE_MODEL_P (current_cpu
))
766 model_mark_get_h_gr (current_cpu
, abuf
);
767 model_profile_insn (current_cpu
, abuf
);
774 /* Perform div: div $dr,$sr. */
776 SEM_FN_NAME (div
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
778 #define FLD(f) abuf->fields.fmt_13.f
779 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
780 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
781 if (NESI (* FLD (f_r2
), 0))
783 * FLD (f_r1
) = DIVSI (* FLD (f_r1
), * FLD (f_r2
));
784 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
786 #if WITH_PROFILE_MODEL_P
787 if (PROFILE_MODEL_P (current_cpu
))
789 model_mark_get_h_gr (current_cpu
, abuf
);
790 model_mark_set_h_gr (current_cpu
, abuf
);
791 model_profile_insn (current_cpu
, abuf
);
798 /* Perform divu: divu $dr,$sr. */
800 SEM_FN_NAME (divu
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
802 #define FLD(f) abuf->fields.fmt_13.f
803 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
804 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
805 if (NESI (* FLD (f_r2
), 0))
807 * FLD (f_r1
) = UDIVSI (* FLD (f_r1
), * FLD (f_r2
));
808 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
810 #if WITH_PROFILE_MODEL_P
811 if (PROFILE_MODEL_P (current_cpu
))
813 model_mark_get_h_gr (current_cpu
, abuf
);
814 model_mark_set_h_gr (current_cpu
, abuf
);
815 model_profile_insn (current_cpu
, abuf
);
822 /* Perform rem: rem $dr,$sr. */
824 SEM_FN_NAME (rem
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
826 #define FLD(f) abuf->fields.fmt_13.f
827 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
828 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
829 if (NESI (* FLD (f_r2
), 0))
831 * FLD (f_r1
) = MODSI (* FLD (f_r1
), * FLD (f_r2
));
832 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
834 #if WITH_PROFILE_MODEL_P
835 if (PROFILE_MODEL_P (current_cpu
))
837 model_mark_get_h_gr (current_cpu
, abuf
);
838 model_mark_set_h_gr (current_cpu
, abuf
);
839 model_profile_insn (current_cpu
, abuf
);
846 /* Perform remu: remu $dr,$sr. */
848 SEM_FN_NAME (remu
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
850 #define FLD(f) abuf->fields.fmt_13.f
851 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
852 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
853 if (NESI (* FLD (f_r2
), 0))
855 * FLD (f_r1
) = UMODSI (* FLD (f_r1
), * FLD (f_r2
));
856 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
858 #if WITH_PROFILE_MODEL_P
859 if (PROFILE_MODEL_P (current_cpu
))
861 model_mark_get_h_gr (current_cpu
, abuf
);
862 model_mark_set_h_gr (current_cpu
, abuf
);
863 model_profile_insn (current_cpu
, abuf
);
870 /* Perform jl: jl $sr. */
872 SEM_FN_NAME (jl
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
874 #define FLD(f) abuf->fields.fmt_14.f
875 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
876 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
880 temp0
= ADDSI (ANDSI (CPU (pc
), -4), 4);
881 temp1
= * FLD (f_r2
);
882 CPU (h_gr
[14]) = temp0
;
883 TRACE_RESULT (current_cpu
, "h_gr[14]", 'x', temp0
);
884 new_pc
= SEM_BRANCH_VIA_ADDR (sem_arg
, temp1
);
885 TRACE_RESULT (current_cpu
, "new_pc", 'x', SEM_NEW_PC_ADDR (new_pc
));
888 #if WITH_PROFILE_MODEL_P
889 if (PROFILE_MODEL_P (current_cpu
))
891 model_mark_get_h_gr (current_cpu
, abuf
);
892 model_mark_set_h_gr (current_cpu
, abuf
);
893 model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
900 /* Perform jmp: jmp $sr. */
902 SEM_FN_NAME (jmp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
904 #define FLD(f) abuf->fields.fmt_14.f
905 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
906 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
908 new_pc
= SEM_BRANCH_VIA_ADDR (sem_arg
, * FLD (f_r2
));
909 TRACE_RESULT (current_cpu
, "new_pc", 'x', SEM_NEW_PC_ADDR (new_pc
));
911 #if WITH_PROFILE_MODEL_P
912 if (PROFILE_MODEL_P (current_cpu
))
914 model_mark_get_h_gr (current_cpu
, abuf
);
915 model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
922 /* Perform ld: ld $dr,@$sr. */
924 SEM_FN_NAME (ld
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
926 #define FLD(f) abuf->fields.fmt_0.f
927 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
928 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
929 * FLD (f_r1
) = GETMEMSI (current_cpu
, * FLD (f_r2
));
930 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
931 #if WITH_PROFILE_MODEL_P
932 if (PROFILE_MODEL_P (current_cpu
))
934 model_mark_get_h_gr (current_cpu
, abuf
);
935 model_mark_set_h_gr (current_cpu
, abuf
);
936 model_profile_insn (current_cpu
, abuf
);
943 /* Perform ld-d: ld $dr,@($slo16,$sr). */
945 SEM_FN_NAME (ld_d
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
947 #define FLD(f) abuf->fields.fmt_1.f
948 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
949 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
950 * FLD (f_r1
) = GETMEMSI (current_cpu
, ADDSI (* FLD (f_r2
), FLD (f_simm16
)));
951 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
952 #if WITH_PROFILE_MODEL_P
953 if (PROFILE_MODEL_P (current_cpu
))
955 model_mark_get_h_gr (current_cpu
, abuf
);
956 model_mark_set_h_gr (current_cpu
, abuf
);
957 model_profile_insn (current_cpu
, abuf
);
964 /* Perform ldb: ldb $dr,@$sr. */
966 SEM_FN_NAME (ldb
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
968 #define FLD(f) abuf->fields.fmt_0.f
969 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
970 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
971 * FLD (f_r1
) = EXTQISI (GETMEMQI (current_cpu
, * FLD (f_r2
)));
972 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
973 #if WITH_PROFILE_MODEL_P
974 if (PROFILE_MODEL_P (current_cpu
))
976 model_mark_get_h_gr (current_cpu
, abuf
);
977 model_mark_set_h_gr (current_cpu
, abuf
);
978 model_profile_insn (current_cpu
, abuf
);
985 /* Perform ldb-d: ldb $dr,@($slo16,$sr). */
987 SEM_FN_NAME (ldb_d
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
989 #define FLD(f) abuf->fields.fmt_1.f
990 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
991 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
992 * FLD (f_r1
) = EXTQISI (GETMEMQI (current_cpu
, ADDSI (* FLD (f_r2
), FLD (f_simm16
))));
993 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
994 #if WITH_PROFILE_MODEL_P
995 if (PROFILE_MODEL_P (current_cpu
))
997 model_mark_get_h_gr (current_cpu
, abuf
);
998 model_mark_set_h_gr (current_cpu
, abuf
);
999 model_profile_insn (current_cpu
, abuf
);
1006 /* Perform ldh: ldh $dr,@$sr. */
1008 SEM_FN_NAME (ldh
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1010 #define FLD(f) abuf->fields.fmt_0.f
1011 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1012 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1013 * FLD (f_r1
) = EXTHISI (GETMEMHI (current_cpu
, * FLD (f_r2
)));
1014 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1015 #if WITH_PROFILE_MODEL_P
1016 if (PROFILE_MODEL_P (current_cpu
))
1018 model_mark_get_h_gr (current_cpu
, abuf
);
1019 model_mark_set_h_gr (current_cpu
, abuf
);
1020 model_profile_insn (current_cpu
, abuf
);
1027 /* Perform ldh-d: ldh $dr,@($slo16,$sr). */
1029 SEM_FN_NAME (ldh_d
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1031 #define FLD(f) abuf->fields.fmt_1.f
1032 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1033 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1034 * FLD (f_r1
) = EXTHISI (GETMEMHI (current_cpu
, ADDSI (* FLD (f_r2
), FLD (f_simm16
))));
1035 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1036 #if WITH_PROFILE_MODEL_P
1037 if (PROFILE_MODEL_P (current_cpu
))
1039 model_mark_get_h_gr (current_cpu
, abuf
);
1040 model_mark_set_h_gr (current_cpu
, abuf
);
1041 model_profile_insn (current_cpu
, abuf
);
1048 /* Perform ldub: ldub $dr,@$sr. */
1050 SEM_FN_NAME (ldub
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1052 #define FLD(f) abuf->fields.fmt_0.f
1053 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1054 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1055 * FLD (f_r1
) = ZEXTQISI (GETMEMQI (current_cpu
, * FLD (f_r2
)));
1056 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1057 #if WITH_PROFILE_MODEL_P
1058 if (PROFILE_MODEL_P (current_cpu
))
1060 model_mark_get_h_gr (current_cpu
, abuf
);
1061 model_mark_set_h_gr (current_cpu
, abuf
);
1062 model_profile_insn (current_cpu
, abuf
);
1069 /* Perform ldub-d: ldub $dr,@($slo16,$sr). */
1071 SEM_FN_NAME (ldub_d
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1073 #define FLD(f) abuf->fields.fmt_1.f
1074 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1075 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1076 * FLD (f_r1
) = ZEXTQISI (GETMEMQI (current_cpu
, ADDSI (* FLD (f_r2
), FLD (f_simm16
))));
1077 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1078 #if WITH_PROFILE_MODEL_P
1079 if (PROFILE_MODEL_P (current_cpu
))
1081 model_mark_get_h_gr (current_cpu
, abuf
);
1082 model_mark_set_h_gr (current_cpu
, abuf
);
1083 model_profile_insn (current_cpu
, abuf
);
1090 /* Perform lduh: lduh $dr,@$sr. */
1092 SEM_FN_NAME (lduh
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1094 #define FLD(f) abuf->fields.fmt_0.f
1095 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1096 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1097 * FLD (f_r1
) = ZEXTHISI (GETMEMHI (current_cpu
, * FLD (f_r2
)));
1098 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1099 #if WITH_PROFILE_MODEL_P
1100 if (PROFILE_MODEL_P (current_cpu
))
1102 model_mark_get_h_gr (current_cpu
, abuf
);
1103 model_mark_set_h_gr (current_cpu
, abuf
);
1104 model_profile_insn (current_cpu
, abuf
);
1111 /* Perform lduh-d: lduh $dr,@($slo16,$sr). */
1113 SEM_FN_NAME (lduh_d
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1115 #define FLD(f) abuf->fields.fmt_1.f
1116 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1117 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1118 * FLD (f_r1
) = ZEXTHISI (GETMEMHI (current_cpu
, ADDSI (* FLD (f_r2
), FLD (f_simm16
))));
1119 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1120 #if WITH_PROFILE_MODEL_P
1121 if (PROFILE_MODEL_P (current_cpu
))
1123 model_mark_get_h_gr (current_cpu
, abuf
);
1124 model_mark_set_h_gr (current_cpu
, abuf
);
1125 model_profile_insn (current_cpu
, abuf
);
1132 /* Perform ld-plus: ld $dr,@$sr+. */
1134 SEM_FN_NAME (ld_plus
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1136 #define FLD(f) abuf->fields.fmt_0.f
1137 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1138 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1141 temp0
= GETMEMSI (current_cpu
, * FLD (f_r2
));
1142 temp1
= ADDSI (* FLD (f_r2
), 4);
1143 * FLD (f_r1
) = temp0
;
1144 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1145 * FLD (f_r2
) = temp1
;
1146 TRACE_RESULT (current_cpu
, "sr", 'x', * FLD (f_r2
));
1148 #if WITH_PROFILE_MODEL_P
1149 if (PROFILE_MODEL_P (current_cpu
))
1151 model_mark_get_h_gr (current_cpu
, abuf
);
1152 model_mark_set_h_gr (current_cpu
, abuf
);
1153 model_profile_insn (current_cpu
, abuf
);
1160 /* Perform ld24: ld24 $dr,$uimm24. */
1162 SEM_FN_NAME (ld24
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1164 #define FLD(f) abuf->fields.fmt_15.f
1165 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1166 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1167 * FLD (f_r1
) = FLD (f_uimm24
);
1168 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1169 #if WITH_PROFILE_MODEL_P
1170 if (PROFILE_MODEL_P (current_cpu
))
1172 model_mark_set_h_gr (current_cpu
, abuf
);
1173 model_profile_insn (current_cpu
, abuf
);
1180 /* Perform ldi8: ldi $dr,$simm8. */
1182 SEM_FN_NAME (ldi8
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1184 #define FLD(f) abuf->fields.fmt_4.f
1185 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1186 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1187 * FLD (f_r1
) = FLD (f_simm8
);
1188 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1189 #if WITH_PROFILE_MODEL_P
1190 if (PROFILE_MODEL_P (current_cpu
))
1192 model_mark_set_h_gr (current_cpu
, abuf
);
1193 model_profile_insn (current_cpu
, abuf
);
1200 /* Perform ldi16: ldi $dr,$slo16. */
1202 SEM_FN_NAME (ldi16
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1204 #define FLD(f) abuf->fields.fmt_16.f
1205 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1206 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1207 * FLD (f_r1
) = FLD (f_simm16
);
1208 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1209 #if WITH_PROFILE_MODEL_P
1210 if (PROFILE_MODEL_P (current_cpu
))
1212 model_mark_set_h_gr (current_cpu
, abuf
);
1213 model_profile_insn (current_cpu
, abuf
);
1220 /* Perform lock: lock $dr,@$sr. */
1222 SEM_FN_NAME (lock
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1224 #define FLD(f) abuf->fields.fmt_0.f
1225 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1226 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1227 do_lock (current_cpu
, * FLD (f_r1
), * FLD (f_r2
));
1228 #if WITH_PROFILE_MODEL_P
1229 if (PROFILE_MODEL_P (current_cpu
))
1231 model_mark_get_h_gr (current_cpu
, abuf
);
1232 model_profile_insn (current_cpu
, abuf
);
1239 /* Perform machi: machi $src1,$src2. */
1241 SEM_FN_NAME (machi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1243 #define FLD(f) abuf->fields.fmt_10.f
1244 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1245 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1246 CPU (h_accum
) = SRADI (SHLDI (ADDDI (CPU (h_accum
), MULDI (EXTSIDI (ANDSI (* FLD (f_r1
), 0xffff0000)), EXTHIDI (TRUNCSIHI (SRASI (* FLD (f_r2
), 16))))), 8), 8);
1247 TRACE_RESULT (current_cpu
, "h_accum", 'D', SRADI (SHLDI (ADDDI (CPU (h_accum
), MULDI (EXTSIDI (ANDSI (* FLD (f_r1
), 0xffff0000)), EXTHIDI (TRUNCSIHI (SRASI (* FLD (f_r2
), 16))))), 8), 8));
1248 #if WITH_PROFILE_MODEL_P
1249 if (PROFILE_MODEL_P (current_cpu
))
1251 model_mark_get_h_gr (current_cpu
, abuf
);
1252 model_profile_insn (current_cpu
, abuf
);
1259 /* Perform maclo: maclo $src1,$src2. */
1261 SEM_FN_NAME (maclo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1263 #define FLD(f) abuf->fields.fmt_10.f
1264 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1265 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1266 CPU (h_accum
) = SRADI (SHLDI (ADDDI (CPU (h_accum
), MULDI (EXTSIDI (SHLSI (* FLD (f_r1
), 16)), EXTHIDI (TRUNCSIHI (* FLD (f_r2
))))), 8), 8);
1267 TRACE_RESULT (current_cpu
, "h_accum", 'D', SRADI (SHLDI (ADDDI (CPU (h_accum
), MULDI (EXTSIDI (SHLSI (* FLD (f_r1
), 16)), EXTHIDI (TRUNCSIHI (* FLD (f_r2
))))), 8), 8));
1268 #if WITH_PROFILE_MODEL_P
1269 if (PROFILE_MODEL_P (current_cpu
))
1271 model_mark_get_h_gr (current_cpu
, abuf
);
1272 model_profile_insn (current_cpu
, abuf
);
1279 /* Perform macwhi: macwhi $src1,$src2. */
1281 SEM_FN_NAME (macwhi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1283 #define FLD(f) abuf->fields.fmt_10.f
1284 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1285 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1286 CPU (h_accum
) = SRADI (SHLDI (ADDDI (CPU (h_accum
), MULDI (EXTSIDI (* FLD (f_r1
)), EXTHIDI (TRUNCSIHI (SRASI (* FLD (f_r2
), 16))))), 8), 8);
1287 TRACE_RESULT (current_cpu
, "h_accum", 'D', SRADI (SHLDI (ADDDI (CPU (h_accum
), MULDI (EXTSIDI (* FLD (f_r1
)), EXTHIDI (TRUNCSIHI (SRASI (* FLD (f_r2
), 16))))), 8), 8));
1288 #if WITH_PROFILE_MODEL_P
1289 if (PROFILE_MODEL_P (current_cpu
))
1291 model_mark_get_h_gr (current_cpu
, abuf
);
1292 model_profile_insn (current_cpu
, abuf
);
1299 /* Perform macwlo: macwlo $src1,$src2. */
1301 SEM_FN_NAME (macwlo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1303 #define FLD(f) abuf->fields.fmt_10.f
1304 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1305 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1306 CPU (h_accum
) = SRADI (SHLDI (ADDDI (CPU (h_accum
), MULDI (EXTSIDI (* FLD (f_r1
)), EXTHIDI (TRUNCSIHI (* FLD (f_r2
))))), 8), 8);
1307 TRACE_RESULT (current_cpu
, "h_accum", 'D', SRADI (SHLDI (ADDDI (CPU (h_accum
), MULDI (EXTSIDI (* FLD (f_r1
)), EXTHIDI (TRUNCSIHI (* FLD (f_r2
))))), 8), 8));
1308 #if WITH_PROFILE_MODEL_P
1309 if (PROFILE_MODEL_P (current_cpu
))
1311 model_mark_get_h_gr (current_cpu
, abuf
);
1312 model_profile_insn (current_cpu
, abuf
);
1319 /* Perform mul: mul $dr,$sr. */
1321 SEM_FN_NAME (mul
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1323 #define FLD(f) abuf->fields.fmt_0.f
1324 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1325 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1326 * FLD (f_r1
) = MULSI (* FLD (f_r1
), * FLD (f_r2
));
1327 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1328 #if WITH_PROFILE_MODEL_P
1329 if (PROFILE_MODEL_P (current_cpu
))
1331 model_mark_get_h_gr (current_cpu
, abuf
);
1332 model_mark_set_h_gr (current_cpu
, abuf
);
1333 model_profile_insn (current_cpu
, abuf
);
1340 /* Perform mulhi: mulhi $src1,$src2. */
1342 SEM_FN_NAME (mulhi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1344 #define FLD(f) abuf->fields.fmt_10.f
1345 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1346 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1347 CPU (h_accum
) = SRADI (SHLDI (MULDI (EXTSIDI (ANDSI (* FLD (f_r1
), 0xffff0000)), EXTHIDI (TRUNCSIHI (SRASI (* FLD (f_r2
), 16)))), 16), 16);
1348 TRACE_RESULT (current_cpu
, "h_accum", 'D', SRADI (SHLDI (MULDI (EXTSIDI (ANDSI (* FLD (f_r1
), 0xffff0000)), EXTHIDI (TRUNCSIHI (SRASI (* FLD (f_r2
), 16)))), 16), 16));
1349 #if WITH_PROFILE_MODEL_P
1350 if (PROFILE_MODEL_P (current_cpu
))
1352 model_mark_get_h_gr (current_cpu
, abuf
);
1353 model_profile_insn (current_cpu
, abuf
);
1360 /* Perform mullo: mullo $src1,$src2. */
1362 SEM_FN_NAME (mullo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1364 #define FLD(f) abuf->fields.fmt_10.f
1365 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1366 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1367 CPU (h_accum
) = SRADI (SHLDI (MULDI (EXTSIDI (SHLSI (* FLD (f_r1
), 16)), EXTHIDI (TRUNCSIHI (* FLD (f_r2
)))), 16), 16);
1368 TRACE_RESULT (current_cpu
, "h_accum", 'D', SRADI (SHLDI (MULDI (EXTSIDI (SHLSI (* FLD (f_r1
), 16)), EXTHIDI (TRUNCSIHI (* FLD (f_r2
)))), 16), 16));
1369 #if WITH_PROFILE_MODEL_P
1370 if (PROFILE_MODEL_P (current_cpu
))
1372 model_mark_get_h_gr (current_cpu
, abuf
);
1373 model_profile_insn (current_cpu
, abuf
);
1380 /* Perform mulwhi: mulwhi $src1,$src2. */
1382 SEM_FN_NAME (mulwhi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1384 #define FLD(f) abuf->fields.fmt_10.f
1385 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1386 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1387 CPU (h_accum
) = SRADI (SHLDI (MULDI (EXTSIDI (* FLD (f_r1
)), EXTHIDI (TRUNCSIHI (SRASI (* FLD (f_r2
), 16)))), 8), 8);
1388 TRACE_RESULT (current_cpu
, "h_accum", 'D', SRADI (SHLDI (MULDI (EXTSIDI (* FLD (f_r1
)), EXTHIDI (TRUNCSIHI (SRASI (* FLD (f_r2
), 16)))), 8), 8));
1389 #if WITH_PROFILE_MODEL_P
1390 if (PROFILE_MODEL_P (current_cpu
))
1392 model_mark_get_h_gr (current_cpu
, abuf
);
1393 model_profile_insn (current_cpu
, abuf
);
1400 /* Perform mulwlo: mulwlo $src1,$src2. */
1402 SEM_FN_NAME (mulwlo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1404 #define FLD(f) abuf->fields.fmt_10.f
1405 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1406 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1407 CPU (h_accum
) = SRADI (SHLDI (MULDI (EXTSIDI (* FLD (f_r1
)), EXTHIDI (TRUNCSIHI (* FLD (f_r2
)))), 8), 8);
1408 TRACE_RESULT (current_cpu
, "h_accum", 'D', SRADI (SHLDI (MULDI (EXTSIDI (* FLD (f_r1
)), EXTHIDI (TRUNCSIHI (* FLD (f_r2
)))), 8), 8));
1409 #if WITH_PROFILE_MODEL_P
1410 if (PROFILE_MODEL_P (current_cpu
))
1412 model_mark_get_h_gr (current_cpu
, abuf
);
1413 model_profile_insn (current_cpu
, abuf
);
1420 /* Perform mv: mv $dr,$sr. */
1422 SEM_FN_NAME (mv
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1424 #define FLD(f) abuf->fields.fmt_0.f
1425 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1426 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1427 * FLD (f_r1
) = * FLD (f_r2
);
1428 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1429 #if WITH_PROFILE_MODEL_P
1430 if (PROFILE_MODEL_P (current_cpu
))
1432 model_mark_get_h_gr (current_cpu
, abuf
);
1433 model_mark_set_h_gr (current_cpu
, abuf
);
1434 model_profile_insn (current_cpu
, abuf
);
1441 /* Perform mvfachi: mvfachi $dr. */
1443 SEM_FN_NAME (mvfachi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1445 #define FLD(f) abuf->fields.fmt_17.f
1446 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1447 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1448 * FLD (f_r1
) = TRUNCDISI (SRADI (CPU (h_accum
), 32));
1449 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1450 #if WITH_PROFILE_MODEL_P
1451 if (PROFILE_MODEL_P (current_cpu
))
1453 model_mark_set_h_gr (current_cpu
, abuf
);
1454 model_profile_insn (current_cpu
, abuf
);
1461 /* Perform mvfaclo: mvfaclo $dr. */
1463 SEM_FN_NAME (mvfaclo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1465 #define FLD(f) abuf->fields.fmt_17.f
1466 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1467 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1468 * FLD (f_r1
) = TRUNCDISI (CPU (h_accum
));
1469 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1470 #if WITH_PROFILE_MODEL_P
1471 if (PROFILE_MODEL_P (current_cpu
))
1473 model_mark_set_h_gr (current_cpu
, abuf
);
1474 model_profile_insn (current_cpu
, abuf
);
1481 /* Perform mvfacmi: mvfacmi $dr. */
1483 SEM_FN_NAME (mvfacmi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1485 #define FLD(f) abuf->fields.fmt_17.f
1486 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1487 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1488 * FLD (f_r1
) = TRUNCDISI (SRADI (CPU (h_accum
), 16));
1489 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1490 #if WITH_PROFILE_MODEL_P
1491 if (PROFILE_MODEL_P (current_cpu
))
1493 model_mark_set_h_gr (current_cpu
, abuf
);
1494 model_profile_insn (current_cpu
, abuf
);
1501 /* Perform mvfc: mvfc $dr,$scr. */
1503 SEM_FN_NAME (mvfc
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1505 #define FLD(f) abuf->fields.fmt_18.f
1506 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1507 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1508 * FLD (f_r1
) = h_cr_get (FLD (f_r2
));
1509 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1510 #if WITH_PROFILE_MODEL_P
1511 if (PROFILE_MODEL_P (current_cpu
))
1513 model_mark_set_h_gr (current_cpu
, abuf
);
1514 model_profile_insn (current_cpu
, abuf
);
1521 /* Perform mvtachi: mvtachi $src1. */
1523 SEM_FN_NAME (mvtachi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1525 #define FLD(f) abuf->fields.fmt_19.f
1526 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1527 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1528 CPU (h_accum
) = ORDI (ANDDI (CPU (h_accum
), MAKEDI (0, 0xffffffff)), SHLDI (EXTSIDI (* FLD (f_r1
)), 32));
1529 TRACE_RESULT (current_cpu
, "h_accum", 'D', ORDI (ANDDI (CPU (h_accum
), MAKEDI (0, 0xffffffff)), SHLDI (EXTSIDI (* FLD (f_r1
)), 32)));
1530 #if WITH_PROFILE_MODEL_P
1531 if (PROFILE_MODEL_P (current_cpu
))
1533 model_mark_get_h_gr (current_cpu
, abuf
);
1534 model_profile_insn (current_cpu
, abuf
);
1541 /* Perform mvtaclo: mvtaclo $src1. */
1543 SEM_FN_NAME (mvtaclo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1545 #define FLD(f) abuf->fields.fmt_19.f
1546 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1547 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1548 CPU (h_accum
) = ORDI (ANDDI (CPU (h_accum
), MAKEDI (0xffffffff, 0)), EXTSIDI (* FLD (f_r1
)));
1549 TRACE_RESULT (current_cpu
, "h_accum", 'D', ORDI (ANDDI (CPU (h_accum
), MAKEDI (0xffffffff, 0)), EXTSIDI (* FLD (f_r1
))));
1550 #if WITH_PROFILE_MODEL_P
1551 if (PROFILE_MODEL_P (current_cpu
))
1553 model_mark_get_h_gr (current_cpu
, abuf
);
1554 model_profile_insn (current_cpu
, abuf
);
1561 /* Perform mvtc: mvtc $sr,$dcr. */
1563 SEM_FN_NAME (mvtc
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1565 #define FLD(f) abuf->fields.fmt_20.f
1566 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1567 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1568 h_cr_set (FLD (f_r1
), * FLD (f_r2
));
1569 TRACE_RESULT (current_cpu
, "dcr", 'x', h_cr_get (FLD (f_r1
)));
1570 #if WITH_PROFILE_MODEL_P
1571 if (PROFILE_MODEL_P (current_cpu
))
1573 model_mark_get_h_gr (current_cpu
, abuf
);
1574 model_profile_insn (current_cpu
, abuf
);
1581 /* Perform neg: neg $dr,$sr. */
1583 SEM_FN_NAME (neg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1585 #define FLD(f) abuf->fields.fmt_0.f
1586 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1587 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1588 * FLD (f_r1
) = NEGSI (* FLD (f_r2
));
1589 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1590 #if WITH_PROFILE_MODEL_P
1591 if (PROFILE_MODEL_P (current_cpu
))
1593 model_mark_get_h_gr (current_cpu
, abuf
);
1594 model_mark_set_h_gr (current_cpu
, abuf
);
1595 model_profile_insn (current_cpu
, abuf
);
1602 /* Perform nop: nop. */
1604 SEM_FN_NAME (nop
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1606 #define FLD(f) abuf->fields.fmt_21.f
1607 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1608 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1609 PROFILE_COUNT_FILLNOPS (current_cpu
, abuf
->addr
);
1610 #if WITH_PROFILE_MODEL_P
1611 if (PROFILE_MODEL_P (current_cpu
))
1613 model_profile_insn (current_cpu
, abuf
);
1620 /* Perform not: not $dr,$sr. */
1622 SEM_FN_NAME (not) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1624 #define FLD(f) abuf->fields.fmt_0.f
1625 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1626 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1627 * FLD (f_r1
) = INVSI (* FLD (f_r2
));
1628 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1629 #if WITH_PROFILE_MODEL_P
1630 if (PROFILE_MODEL_P (current_cpu
))
1632 model_mark_get_h_gr (current_cpu
, abuf
);
1633 model_mark_set_h_gr (current_cpu
, abuf
);
1634 model_profile_insn (current_cpu
, abuf
);
1641 /* Perform rac: rac. */
1643 SEM_FN_NAME (rac
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1645 #define FLD(f) abuf->fields.fmt_21.f
1646 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1647 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1650 tmp_tmp1
= ANDDI (CPU (h_accum
), MAKEDI (16777215, 0xffffffff));
1651 if (ANDIFSI (GEDI (tmp_tmp1
, MAKEDI (16383, 0xffff8000)), LEDI (tmp_tmp1
, MAKEDI (8388607, 0xffffffff))))
1653 tmp_tmp1
= MAKEDI (16383, 0xffff8000);
1655 if (ANDIFSI (GEDI (tmp_tmp1
, MAKEDI (8388608, 0)), LEDI (tmp_tmp1
, MAKEDI (16760832, 0))))
1657 tmp_tmp1
= MAKEDI (16760832, 0);
1659 tmp_tmp1
= ANDDI (ADDDI (CPU (h_accum
), MAKEDI (0, 16384)), MAKEDI (16777215, 0xffff8000));
1662 tmp_tmp1
= SHLDI (tmp_tmp1
, 1);
1663 CPU (h_accum
) = SRADI (SHLDI (tmp_tmp1
, 7), 7);
1664 TRACE_RESULT (current_cpu
, "h_accum", 'D', SRADI (SHLDI (tmp_tmp1
, 7), 7));
1666 #if WITH_PROFILE_MODEL_P
1667 if (PROFILE_MODEL_P (current_cpu
))
1669 model_profile_insn (current_cpu
, abuf
);
1676 /* Perform rach: rach. */
1678 SEM_FN_NAME (rach
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1680 #define FLD(f) abuf->fields.fmt_21.f
1681 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1682 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1685 tmp_tmp1
= ANDDI (CPU (h_accum
), MAKEDI (16777215, 0xffffffff));
1686 if (ANDIFSI (GEDI (tmp_tmp1
, MAKEDI (16383, 0x80000000)), LEDI (tmp_tmp1
, MAKEDI (8388607, 0xffffffff))))
1688 tmp_tmp1
= MAKEDI (16383, 0x80000000);
1690 if (ANDIFSI (GEDI (tmp_tmp1
, MAKEDI (8388608, 0)), LEDI (tmp_tmp1
, MAKEDI (16760832, 0))))
1692 tmp_tmp1
= MAKEDI (16760832, 0);
1694 tmp_tmp1
= ANDDI (ADDDI (CPU (h_accum
), MAKEDI (0, 1073741824)), MAKEDI (0xffffffff, 0x80000000));
1697 tmp_tmp1
= SHLDI (tmp_tmp1
, 1);
1698 CPU (h_accum
) = SRADI (SHLDI (tmp_tmp1
, 7), 7);
1699 TRACE_RESULT (current_cpu
, "h_accum", 'D', SRADI (SHLDI (tmp_tmp1
, 7), 7));
1701 #if WITH_PROFILE_MODEL_P
1702 if (PROFILE_MODEL_P (current_cpu
))
1704 model_profile_insn (current_cpu
, abuf
);
1711 /* Perform rte: rte. */
1713 SEM_FN_NAME (rte
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1715 #define FLD(f) abuf->fields.fmt_21.f
1716 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1717 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1720 CPU (h_sm
) = CPU (h_bsm
);
1721 TRACE_RESULT (current_cpu
, "h_sm", 'x', CPU (h_bsm
));
1722 CPU (h_ie
) = CPU (h_bie
);
1723 TRACE_RESULT (current_cpu
, "h_ie", 'x', CPU (h_bie
));
1724 CPU (h_cond
) = CPU (h_bcond
);
1725 TRACE_RESULT (current_cpu
, "h_cond", 'x', CPU (h_bcond
));
1726 new_pc
= SEM_BRANCH_VIA_ADDR (sem_arg
, CPU (h_bpc
));
1727 TRACE_RESULT (current_cpu
, "new_pc", 'x', SEM_NEW_PC_ADDR (new_pc
));
1730 #if WITH_PROFILE_MODEL_P
1731 if (PROFILE_MODEL_P (current_cpu
))
1733 model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
1740 /* Perform seth: seth $dr,$hi16. */
1742 SEM_FN_NAME (seth
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1744 #define FLD(f) abuf->fields.fmt_22.f
1745 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1746 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1747 * FLD (f_r1
) = SHLSI (FLD (f_hi16
), 16);
1748 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1749 #if WITH_PROFILE_MODEL_P
1750 if (PROFILE_MODEL_P (current_cpu
))
1752 model_mark_set_h_gr (current_cpu
, abuf
);
1753 model_profile_insn (current_cpu
, abuf
);
1760 /* Perform sll: sll $dr,$sr. */
1762 SEM_FN_NAME (sll
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1764 #define FLD(f) abuf->fields.fmt_0.f
1765 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1766 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1767 * FLD (f_r1
) = SHLSI (* FLD (f_r1
), ANDSI (* FLD (f_r2
), 31));
1768 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1769 #if WITH_PROFILE_MODEL_P
1770 if (PROFILE_MODEL_P (current_cpu
))
1772 model_mark_get_h_gr (current_cpu
, abuf
);
1773 model_mark_set_h_gr (current_cpu
, abuf
);
1774 model_profile_insn (current_cpu
, abuf
);
1781 /* Perform sll3: sll3 $dr,$sr,$simm16. */
1783 SEM_FN_NAME (sll3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1785 #define FLD(f) abuf->fields.fmt_5.f
1786 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1787 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1788 * FLD (f_r1
) = SHLSI (* FLD (f_r2
), ANDSI (FLD (f_simm16
), 31));
1789 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1790 #if WITH_PROFILE_MODEL_P
1791 if (PROFILE_MODEL_P (current_cpu
))
1793 model_mark_get_h_gr (current_cpu
, abuf
);
1794 model_mark_set_h_gr (current_cpu
, abuf
);
1795 model_profile_insn (current_cpu
, abuf
);
1802 /* Perform slli: slli $dr,$uimm5. */
1804 SEM_FN_NAME (slli
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1806 #define FLD(f) abuf->fields.fmt_23.f
1807 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1808 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1809 * FLD (f_r1
) = SHLSI (* FLD (f_r1
), FLD (f_uimm5
));
1810 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1811 #if WITH_PROFILE_MODEL_P
1812 if (PROFILE_MODEL_P (current_cpu
))
1814 model_mark_get_h_gr (current_cpu
, abuf
);
1815 model_mark_set_h_gr (current_cpu
, abuf
);
1816 model_profile_insn (current_cpu
, abuf
);
1823 /* Perform sra: sra $dr,$sr. */
1825 SEM_FN_NAME (sra
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1827 #define FLD(f) abuf->fields.fmt_0.f
1828 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1829 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1830 * FLD (f_r1
) = SRASI (* FLD (f_r1
), ANDSI (* FLD (f_r2
), 31));
1831 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1832 #if WITH_PROFILE_MODEL_P
1833 if (PROFILE_MODEL_P (current_cpu
))
1835 model_mark_get_h_gr (current_cpu
, abuf
);
1836 model_mark_set_h_gr (current_cpu
, abuf
);
1837 model_profile_insn (current_cpu
, abuf
);
1844 /* Perform sra3: sra3 $dr,$sr,$simm16. */
1846 SEM_FN_NAME (sra3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1848 #define FLD(f) abuf->fields.fmt_5.f
1849 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1850 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1851 * FLD (f_r1
) = SRASI (* FLD (f_r2
), ANDSI (FLD (f_simm16
), 31));
1852 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1853 #if WITH_PROFILE_MODEL_P
1854 if (PROFILE_MODEL_P (current_cpu
))
1856 model_mark_get_h_gr (current_cpu
, abuf
);
1857 model_mark_set_h_gr (current_cpu
, abuf
);
1858 model_profile_insn (current_cpu
, abuf
);
1865 /* Perform srai: srai $dr,$uimm5. */
1867 SEM_FN_NAME (srai
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1869 #define FLD(f) abuf->fields.fmt_23.f
1870 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1871 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1872 * FLD (f_r1
) = SRASI (* FLD (f_r1
), FLD (f_uimm5
));
1873 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1874 #if WITH_PROFILE_MODEL_P
1875 if (PROFILE_MODEL_P (current_cpu
))
1877 model_mark_get_h_gr (current_cpu
, abuf
);
1878 model_mark_set_h_gr (current_cpu
, abuf
);
1879 model_profile_insn (current_cpu
, abuf
);
1886 /* Perform srl: srl $dr,$sr. */
1888 SEM_FN_NAME (srl
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1890 #define FLD(f) abuf->fields.fmt_0.f
1891 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1892 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1893 * FLD (f_r1
) = SRLSI (* FLD (f_r1
), ANDSI (* FLD (f_r2
), 31));
1894 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1895 #if WITH_PROFILE_MODEL_P
1896 if (PROFILE_MODEL_P (current_cpu
))
1898 model_mark_get_h_gr (current_cpu
, abuf
);
1899 model_mark_set_h_gr (current_cpu
, abuf
);
1900 model_profile_insn (current_cpu
, abuf
);
1907 /* Perform srl3: srl3 $dr,$sr,$simm16. */
1909 SEM_FN_NAME (srl3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1911 #define FLD(f) abuf->fields.fmt_5.f
1912 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1913 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1914 * FLD (f_r1
) = SRLSI (* FLD (f_r2
), ANDSI (FLD (f_simm16
), 31));
1915 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1916 #if WITH_PROFILE_MODEL_P
1917 if (PROFILE_MODEL_P (current_cpu
))
1919 model_mark_get_h_gr (current_cpu
, abuf
);
1920 model_mark_set_h_gr (current_cpu
, abuf
);
1921 model_profile_insn (current_cpu
, abuf
);
1928 /* Perform srli: srli $dr,$uimm5. */
1930 SEM_FN_NAME (srli
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1932 #define FLD(f) abuf->fields.fmt_23.f
1933 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1934 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1935 * FLD (f_r1
) = SRLSI (* FLD (f_r1
), FLD (f_uimm5
));
1936 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
1937 #if WITH_PROFILE_MODEL_P
1938 if (PROFILE_MODEL_P (current_cpu
))
1940 model_mark_get_h_gr (current_cpu
, abuf
);
1941 model_mark_set_h_gr (current_cpu
, abuf
);
1942 model_profile_insn (current_cpu
, abuf
);
1949 /* Perform st: st $src1,@$src2. */
1951 SEM_FN_NAME (st
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1953 #define FLD(f) abuf->fields.fmt_10.f
1954 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1955 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1956 SETMEMSI (current_cpu
, * FLD (f_r2
), * FLD (f_r1
));
1957 TRACE_RESULT (current_cpu
, "memory", 'x', * FLD (f_r1
));
1958 #if WITH_PROFILE_MODEL_P
1959 if (PROFILE_MODEL_P (current_cpu
))
1961 model_mark_get_h_gr (current_cpu
, abuf
);
1962 model_profile_insn (current_cpu
, abuf
);
1969 /* Perform st-d: st $src1,@($slo16,$src2). */
1971 SEM_FN_NAME (st_d
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1973 #define FLD(f) abuf->fields.fmt_24.f
1974 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1975 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1976 SETMEMSI (current_cpu
, ADDSI (* FLD (f_r2
), FLD (f_simm16
)), * FLD (f_r1
));
1977 TRACE_RESULT (current_cpu
, "memory", 'x', * FLD (f_r1
));
1978 #if WITH_PROFILE_MODEL_P
1979 if (PROFILE_MODEL_P (current_cpu
))
1981 model_mark_get_h_gr (current_cpu
, abuf
);
1982 model_profile_insn (current_cpu
, abuf
);
1989 /* Perform stb: stb $src1,@$src2. */
1991 SEM_FN_NAME (stb
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1993 #define FLD(f) abuf->fields.fmt_10.f
1994 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1995 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1996 SETMEMQI (current_cpu
, * FLD (f_r2
), * FLD (f_r1
));
1997 TRACE_RESULT (current_cpu
, "memory", 'x', * FLD (f_r1
));
1998 #if WITH_PROFILE_MODEL_P
1999 if (PROFILE_MODEL_P (current_cpu
))
2001 model_mark_get_h_gr (current_cpu
, abuf
);
2002 model_profile_insn (current_cpu
, abuf
);
2009 /* Perform stb-d: stb $src1,@($slo16,$src2). */
2011 SEM_FN_NAME (stb_d
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2013 #define FLD(f) abuf->fields.fmt_24.f
2014 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2015 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2016 SETMEMQI (current_cpu
, ADDSI (* FLD (f_r2
), FLD (f_simm16
)), * FLD (f_r1
));
2017 TRACE_RESULT (current_cpu
, "memory", 'x', * FLD (f_r1
));
2018 #if WITH_PROFILE_MODEL_P
2019 if (PROFILE_MODEL_P (current_cpu
))
2021 model_mark_get_h_gr (current_cpu
, abuf
);
2022 model_profile_insn (current_cpu
, abuf
);
2029 /* Perform sth: sth $src1,@$src2. */
2031 SEM_FN_NAME (sth
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2033 #define FLD(f) abuf->fields.fmt_10.f
2034 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2035 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2036 SETMEMHI (current_cpu
, * FLD (f_r2
), * FLD (f_r1
));
2037 TRACE_RESULT (current_cpu
, "memory", 'x', * FLD (f_r1
));
2038 #if WITH_PROFILE_MODEL_P
2039 if (PROFILE_MODEL_P (current_cpu
))
2041 model_mark_get_h_gr (current_cpu
, abuf
);
2042 model_profile_insn (current_cpu
, abuf
);
2049 /* Perform sth-d: sth $src1,@($slo16,$src2). */
2051 SEM_FN_NAME (sth_d
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2053 #define FLD(f) abuf->fields.fmt_24.f
2054 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2055 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2056 SETMEMHI (current_cpu
, ADDSI (* FLD (f_r2
), FLD (f_simm16
)), * FLD (f_r1
));
2057 TRACE_RESULT (current_cpu
, "memory", 'x', * FLD (f_r1
));
2058 #if WITH_PROFILE_MODEL_P
2059 if (PROFILE_MODEL_P (current_cpu
))
2061 model_mark_get_h_gr (current_cpu
, abuf
);
2062 model_profile_insn (current_cpu
, abuf
);
2069 /* Perform st-plus: st $src1,@+$src2. */
2071 SEM_FN_NAME (st_plus
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2073 #define FLD(f) abuf->fields.fmt_10.f
2074 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2075 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2077 * FLD (f_r2
) = ADDSI (* FLD (f_r2
), 4);
2078 TRACE_RESULT (current_cpu
, "src2", 'x', * FLD (f_r2
));
2079 SETMEMSI (current_cpu
, * FLD (f_r2
), * FLD (f_r1
));
2080 TRACE_RESULT (current_cpu
, "memory", 'x', * FLD (f_r1
));
2082 #if WITH_PROFILE_MODEL_P
2083 if (PROFILE_MODEL_P (current_cpu
))
2085 model_mark_get_h_gr (current_cpu
, abuf
);
2086 model_mark_set_h_gr (current_cpu
, abuf
);
2087 model_profile_insn (current_cpu
, abuf
);
2094 /* Perform st-minus: st $src1,@-$src2. */
2096 SEM_FN_NAME (st_minus
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2098 #define FLD(f) abuf->fields.fmt_10.f
2099 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2100 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2102 * FLD (f_r2
) = SUBSI (* FLD (f_r2
), 4);
2103 TRACE_RESULT (current_cpu
, "src2", 'x', * FLD (f_r2
));
2104 SETMEMSI (current_cpu
, * FLD (f_r2
), * FLD (f_r1
));
2105 TRACE_RESULT (current_cpu
, "memory", 'x', * FLD (f_r1
));
2107 #if WITH_PROFILE_MODEL_P
2108 if (PROFILE_MODEL_P (current_cpu
))
2110 model_mark_get_h_gr (current_cpu
, abuf
);
2111 model_mark_set_h_gr (current_cpu
, abuf
);
2112 model_profile_insn (current_cpu
, abuf
);
2119 /* Perform sub: sub $dr,$sr. */
2121 SEM_FN_NAME (sub
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2123 #define FLD(f) abuf->fields.fmt_0.f
2124 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2125 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2126 * FLD (f_r1
) = SUBSI (* FLD (f_r1
), * FLD (f_r2
));
2127 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
2128 #if WITH_PROFILE_MODEL_P
2129 if (PROFILE_MODEL_P (current_cpu
))
2131 model_mark_get_h_gr (current_cpu
, abuf
);
2132 model_mark_set_h_gr (current_cpu
, abuf
);
2133 model_profile_insn (current_cpu
, abuf
);
2140 /* Perform subv: subv $dr,$sr. */
2142 SEM_FN_NAME (subv
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2144 #define FLD(f) abuf->fields.fmt_0.f
2145 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2146 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2149 temp0
= SUBSI (* FLD (f_r1
), * FLD (f_r2
));
2150 temp1
= SUBOFSI (* FLD (f_r1
), * FLD (f_r2
), 0);
2151 * FLD (f_r1
) = temp0
;
2152 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
2153 CPU (h_cond
) = temp1
;
2154 TRACE_RESULT (current_cpu
, "h_cond", 'x', temp1
);
2156 #if WITH_PROFILE_MODEL_P
2157 if (PROFILE_MODEL_P (current_cpu
))
2159 model_mark_get_h_gr (current_cpu
, abuf
);
2160 model_mark_set_h_gr (current_cpu
, abuf
);
2161 model_profile_insn (current_cpu
, abuf
);
2168 /* Perform subx: subx $dr,$sr. */
2170 SEM_FN_NAME (subx
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2172 #define FLD(f) abuf->fields.fmt_0.f
2173 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2174 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2177 temp0
= SUBCSI (* FLD (f_r1
), * FLD (f_r2
), CPU (h_cond
));
2178 temp1
= SUBCFSI (* FLD (f_r1
), * FLD (f_r2
), CPU (h_cond
));
2179 * FLD (f_r1
) = temp0
;
2180 TRACE_RESULT (current_cpu
, "dr", 'x', * FLD (f_r1
));
2181 CPU (h_cond
) = temp1
;
2182 TRACE_RESULT (current_cpu
, "h_cond", 'x', temp1
);
2184 #if WITH_PROFILE_MODEL_P
2185 if (PROFILE_MODEL_P (current_cpu
))
2187 model_mark_get_h_gr (current_cpu
, abuf
);
2188 model_mark_set_h_gr (current_cpu
, abuf
);
2189 model_profile_insn (current_cpu
, abuf
);
2196 /* Perform trap: trap $uimm4. */
2198 SEM_FN_NAME (trap
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2200 #define FLD(f) abuf->fields.fmt_25.f
2201 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2202 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2204 do_trap (current_cpu
, FLD (f_uimm4
));
2205 #if WITH_PROFILE_MODEL_P
2206 if (PROFILE_MODEL_P (current_cpu
))
2208 model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
2215 /* Perform unlock: unlock $src1,@$src2. */
2217 SEM_FN_NAME (unlock
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2219 #define FLD(f) abuf->fields.fmt_10.f
2220 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2221 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2222 do_unlock (current_cpu
, * FLD (f_r1
), * FLD (f_r2
));
2223 #if WITH_PROFILE_MODEL_P
2224 if (PROFILE_MODEL_P (current_cpu
))
2226 model_mark_get_h_gr (current_cpu
, abuf
);
2227 model_profile_insn (current_cpu
, abuf
);
This page took 0.126404 seconds and 4 git commands to generate.