1 /* Simulator instruction semantics for fr30bf.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
7 This file is part of the GNU Simulators.
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.
25 #define WANT_CPU fr30bf
26 #define WANT_CPU_FR30BF
33 #define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
35 /* This is used so that we can compile two copies of the semantic code,
36 one with full feature support and one without that runs fast(er).
37 FAST_P, when desired, is defined on the command line, -DFAST_P=1. */
39 #define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_semf_,fn)
41 #define TRACE_RESULT(cpu, abuf, name, type, val)
43 #define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_sem_,fn)
46 /* x-invalid: --invalid-- */
49 SEM_FN_NAME (fr30bf,x_invalid) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
51 #define FLD(f) abuf->fields.fmt_empty.f
52 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
53 int UNUSED written = 0;
54 IADDR UNUSED pc = abuf->addr;
55 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
59 /* Update the recorded pc in the cpu state struct. */
62 sim_engine_invalid_insn (current_cpu, pc);
63 sim_io_error (CPU_STATE (current_cpu), "invalid insn not handled\n");
71 /* x-after: --after-- */
74 SEM_FN_NAME (fr30bf,x_after) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
76 #define FLD(f) abuf->fields.fmt_empty.f
77 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
78 int UNUSED written = 0;
79 IADDR UNUSED pc = abuf->addr;
80 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
83 #if WITH_SCACHE_PBB_FR30BF
84 fr30bf_pbb_after (current_cpu, sem_arg);
92 /* x-before: --before-- */
95 SEM_FN_NAME (fr30bf,x_before) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
97 #define FLD(f) abuf->fields.fmt_empty.f
98 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
99 int UNUSED written = 0;
100 IADDR UNUSED pc = abuf->addr;
101 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
104 #if WITH_SCACHE_PBB_FR30BF
105 fr30bf_pbb_before (current_cpu, sem_arg);
113 /* x-cti-chain: --cti-chain-- */
116 SEM_FN_NAME (fr30bf,x_cti_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
118 #define FLD(f) abuf->fields.fmt_empty.f
119 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
120 int UNUSED written = 0;
121 IADDR UNUSED pc = abuf->addr;
122 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
125 #if WITH_SCACHE_PBB_FR30BF
127 vpc = fr30bf_pbb_cti_chain (current_cpu, sem_arg,
128 pbb_br_type, pbb_br_npc);
131 /* FIXME: Allow provision of explicit ifmt spec in insn spec. */
132 vpc = fr30bf_pbb_cti_chain (current_cpu, sem_arg,
133 CPU_PBB_BR_TYPE (current_cpu),
134 CPU_PBB_BR_NPC (current_cpu));
143 /* x-chain: --chain-- */
146 SEM_FN_NAME (fr30bf,x_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
148 #define FLD(f) abuf->fields.fmt_empty.f
149 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
150 int UNUSED written = 0;
151 IADDR UNUSED pc = abuf->addr;
152 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
155 #if WITH_SCACHE_PBB_FR30BF
156 vpc = fr30bf_pbb_chain (current_cpu, sem_arg);
167 /* x-begin: --begin-- */
170 SEM_FN_NAME (fr30bf,x_begin) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
172 #define FLD(f) abuf->fields.fmt_empty.f
173 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
174 int UNUSED written = 0;
175 IADDR UNUSED pc = abuf->addr;
176 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
179 #if WITH_SCACHE_PBB_FR30BF
181 /* In the switch case FAST_P is a constant, allowing several optimizations
182 in any called inline functions. */
183 vpc = fr30bf_pbb_begin (current_cpu, FAST_P);
185 vpc = fr30bf_pbb_begin (current_cpu, STATE_RUN_FAST_P (CPU_STATE (current_cpu)));
194 /* add: add $Rj,$Ri */
197 SEM_FN_NAME (fr30bf,add) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
199 #define FLD(f) abuf->fields.sfmt_add.f
200 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
201 int UNUSED written = 0;
202 IADDR UNUSED pc = abuf->addr;
203 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
207 BI opval = ADDOFSI (* FLD (i_Ri), * FLD (i_Rj), 0);
208 CPU (h_vbit) = opval;
209 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
212 BI opval = ADDCFSI (* FLD (i_Ri), * FLD (i_Rj), 0);
213 CPU (h_cbit) = opval;
214 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
217 SI opval = ADDSI (* FLD (i_Ri), * FLD (i_Rj));
218 * FLD (i_Ri) = opval;
219 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
223 BI opval = EQSI (* FLD (i_Ri), 0);
224 CPU (h_zbit) = opval;
225 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
228 BI opval = LTSI (* FLD (i_Ri), 0);
229 CPU (h_nbit) = opval;
230 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
239 /* addi: add $u4,$Ri */
242 SEM_FN_NAME (fr30bf,addi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
244 #define FLD(f) abuf->fields.sfmt_addi.f
245 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
246 int UNUSED written = 0;
247 IADDR UNUSED pc = abuf->addr;
248 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
252 BI opval = ADDOFSI (* FLD (i_Ri), FLD (f_u4), 0);
253 CPU (h_vbit) = opval;
254 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
257 BI opval = ADDCFSI (* FLD (i_Ri), FLD (f_u4), 0);
258 CPU (h_cbit) = opval;
259 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
262 SI opval = ADDSI (* FLD (i_Ri), FLD (f_u4));
263 * FLD (i_Ri) = opval;
264 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
268 BI opval = EQSI (* FLD (i_Ri), 0);
269 CPU (h_zbit) = opval;
270 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
273 BI opval = LTSI (* FLD (i_Ri), 0);
274 CPU (h_nbit) = opval;
275 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
284 /* add2: add2 $m4,$Ri */
287 SEM_FN_NAME (fr30bf,add2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
289 #define FLD(f) abuf->fields.sfmt_add2.f
290 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
291 int UNUSED written = 0;
292 IADDR UNUSED pc = abuf->addr;
293 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
297 BI opval = ADDOFSI (* FLD (i_Ri), FLD (f_m4), 0);
298 CPU (h_vbit) = opval;
299 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
302 BI opval = ADDCFSI (* FLD (i_Ri), FLD (f_m4), 0);
303 CPU (h_cbit) = opval;
304 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
307 SI opval = ADDSI (* FLD (i_Ri), FLD (f_m4));
308 * FLD (i_Ri) = opval;
309 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
313 BI opval = EQSI (* FLD (i_Ri), 0);
314 CPU (h_zbit) = opval;
315 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
318 BI opval = LTSI (* FLD (i_Ri), 0);
319 CPU (h_nbit) = opval;
320 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
329 /* addc: addc $Rj,$Ri */
332 SEM_FN_NAME (fr30bf,addc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
334 #define FLD(f) abuf->fields.sfmt_add.f
335 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
336 int UNUSED written = 0;
337 IADDR UNUSED pc = abuf->addr;
338 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
342 tmp_tmp = ADDCSI (* FLD (i_Ri), * FLD (i_Rj), CPU (h_cbit));
344 BI opval = ADDOFSI (* FLD (i_Ri), * FLD (i_Rj), CPU (h_cbit));
345 CPU (h_vbit) = opval;
346 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
349 BI opval = ADDCFSI (* FLD (i_Ri), * FLD (i_Rj), CPU (h_cbit));
350 CPU (h_cbit) = opval;
351 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
355 * FLD (i_Ri) = opval;
356 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
360 BI opval = EQSI (* FLD (i_Ri), 0);
361 CPU (h_zbit) = opval;
362 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
365 BI opval = LTSI (* FLD (i_Ri), 0);
366 CPU (h_nbit) = opval;
367 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
376 /* addn: addn $Rj,$Ri */
379 SEM_FN_NAME (fr30bf,addn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
381 #define FLD(f) abuf->fields.sfmt_add.f
382 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
383 int UNUSED written = 0;
384 IADDR UNUSED pc = abuf->addr;
385 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
388 SI opval = ADDSI (* FLD (i_Ri), * FLD (i_Rj));
389 * FLD (i_Ri) = opval;
390 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
397 /* addni: addn $u4,$Ri */
400 SEM_FN_NAME (fr30bf,addni) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
402 #define FLD(f) abuf->fields.sfmt_addi.f
403 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
404 int UNUSED written = 0;
405 IADDR UNUSED pc = abuf->addr;
406 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
409 SI opval = ADDSI (* FLD (i_Ri), FLD (f_u4));
410 * FLD (i_Ri) = opval;
411 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
418 /* addn2: addn2 $m4,$Ri */
421 SEM_FN_NAME (fr30bf,addn2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
423 #define FLD(f) abuf->fields.sfmt_add2.f
424 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
425 int UNUSED written = 0;
426 IADDR UNUSED pc = abuf->addr;
427 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
430 SI opval = ADDSI (* FLD (i_Ri), FLD (f_m4));
431 * FLD (i_Ri) = opval;
432 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
439 /* sub: sub $Rj,$Ri */
442 SEM_FN_NAME (fr30bf,sub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
444 #define FLD(f) abuf->fields.sfmt_add.f
445 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
446 int UNUSED written = 0;
447 IADDR UNUSED pc = abuf->addr;
448 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
452 BI opval = SUBOFSI (* FLD (i_Ri), * FLD (i_Rj), 0);
453 CPU (h_vbit) = opval;
454 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
457 BI opval = SUBCFSI (* FLD (i_Ri), * FLD (i_Rj), 0);
458 CPU (h_cbit) = opval;
459 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
462 SI opval = SUBSI (* FLD (i_Ri), * FLD (i_Rj));
463 * FLD (i_Ri) = opval;
464 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
468 BI opval = EQSI (* FLD (i_Ri), 0);
469 CPU (h_zbit) = opval;
470 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
473 BI opval = LTSI (* FLD (i_Ri), 0);
474 CPU (h_nbit) = opval;
475 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
484 /* subc: subc $Rj,$Ri */
487 SEM_FN_NAME (fr30bf,subc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
489 #define FLD(f) abuf->fields.sfmt_add.f
490 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
491 int UNUSED written = 0;
492 IADDR UNUSED pc = abuf->addr;
493 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
497 tmp_tmp = SUBCSI (* FLD (i_Ri), * FLD (i_Rj), CPU (h_cbit));
499 BI opval = SUBOFSI (* FLD (i_Ri), * FLD (i_Rj), CPU (h_cbit));
500 CPU (h_vbit) = opval;
501 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
504 BI opval = SUBCFSI (* FLD (i_Ri), * FLD (i_Rj), CPU (h_cbit));
505 CPU (h_cbit) = opval;
506 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
510 * FLD (i_Ri) = opval;
511 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
515 BI opval = EQSI (* FLD (i_Ri), 0);
516 CPU (h_zbit) = opval;
517 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
520 BI opval = LTSI (* FLD (i_Ri), 0);
521 CPU (h_nbit) = opval;
522 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
531 /* subn: subn $Rj,$Ri */
534 SEM_FN_NAME (fr30bf,subn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
536 #define FLD(f) abuf->fields.sfmt_add.f
537 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
538 int UNUSED written = 0;
539 IADDR UNUSED pc = abuf->addr;
540 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
543 SI opval = SUBSI (* FLD (i_Ri), * FLD (i_Rj));
544 * FLD (i_Ri) = opval;
545 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
552 /* cmp: cmp $Rj,$Ri */
555 SEM_FN_NAME (fr30bf,cmp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
557 #define FLD(f) abuf->fields.sfmt_str13.f
558 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
559 int UNUSED written = 0;
560 IADDR UNUSED pc = abuf->addr;
561 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
566 BI opval = SUBOFSI (* FLD (i_Ri), * FLD (i_Rj), 0);
567 CPU (h_vbit) = opval;
568 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
571 BI opval = SUBCFSI (* FLD (i_Ri), * FLD (i_Rj), 0);
572 CPU (h_cbit) = opval;
573 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
575 tmp_tmp1 = SUBSI (* FLD (i_Ri), * FLD (i_Rj));
578 BI opval = EQSI (tmp_tmp1, 0);
579 CPU (h_zbit) = opval;
580 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
583 BI opval = LTSI (tmp_tmp1, 0);
584 CPU (h_nbit) = opval;
585 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
594 /* cmpi: cmp $u4,$Ri */
597 SEM_FN_NAME (fr30bf,cmpi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
599 #define FLD(f) abuf->fields.sfmt_addi.f
600 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
601 int UNUSED written = 0;
602 IADDR UNUSED pc = abuf->addr;
603 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
608 BI opval = SUBOFSI (* FLD (i_Ri), FLD (f_u4), 0);
609 CPU (h_vbit) = opval;
610 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
613 BI opval = SUBCFSI (* FLD (i_Ri), FLD (f_u4), 0);
614 CPU (h_cbit) = opval;
615 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
617 tmp_tmp1 = SUBSI (* FLD (i_Ri), FLD (f_u4));
620 BI opval = EQSI (tmp_tmp1, 0);
621 CPU (h_zbit) = opval;
622 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
625 BI opval = LTSI (tmp_tmp1, 0);
626 CPU (h_nbit) = opval;
627 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
636 /* cmp2: cmp2 $m4,$Ri */
639 SEM_FN_NAME (fr30bf,cmp2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
641 #define FLD(f) abuf->fields.sfmt_add2.f
642 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
643 int UNUSED written = 0;
644 IADDR UNUSED pc = abuf->addr;
645 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
650 BI opval = SUBOFSI (* FLD (i_Ri), FLD (f_m4), 0);
651 CPU (h_vbit) = opval;
652 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
655 BI opval = SUBCFSI (* FLD (i_Ri), FLD (f_m4), 0);
656 CPU (h_cbit) = opval;
657 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
659 tmp_tmp1 = SUBSI (* FLD (i_Ri), FLD (f_m4));
662 BI opval = EQSI (tmp_tmp1, 0);
663 CPU (h_zbit) = opval;
664 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
667 BI opval = LTSI (tmp_tmp1, 0);
668 CPU (h_nbit) = opval;
669 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
678 /* and: and $Rj,$Ri */
681 SEM_FN_NAME (fr30bf,and) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
683 #define FLD(f) abuf->fields.sfmt_add.f
684 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
685 int UNUSED written = 0;
686 IADDR UNUSED pc = abuf->addr;
687 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
691 SI opval = ANDSI (* FLD (i_Ri), * FLD (i_Rj));
692 * FLD (i_Ri) = opval;
693 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
697 BI opval = EQSI (* FLD (i_Ri), 0);
698 CPU (h_zbit) = opval;
699 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
702 BI opval = LTSI (* FLD (i_Ri), 0);
703 CPU (h_nbit) = opval;
704 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
716 SEM_FN_NAME (fr30bf,or) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
718 #define FLD(f) abuf->fields.sfmt_add.f
719 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
720 int UNUSED written = 0;
721 IADDR UNUSED pc = abuf->addr;
722 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
726 SI opval = ORSI (* FLD (i_Ri), * FLD (i_Rj));
727 * FLD (i_Ri) = opval;
728 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
732 BI opval = EQSI (* FLD (i_Ri), 0);
733 CPU (h_zbit) = opval;
734 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
737 BI opval = LTSI (* FLD (i_Ri), 0);
738 CPU (h_nbit) = opval;
739 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
748 /* eor: eor $Rj,$Ri */
751 SEM_FN_NAME (fr30bf,eor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
753 #define FLD(f) abuf->fields.sfmt_add.f
754 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
755 int UNUSED written = 0;
756 IADDR UNUSED pc = abuf->addr;
757 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
761 SI opval = XORSI (* FLD (i_Ri), * FLD (i_Rj));
762 * FLD (i_Ri) = opval;
763 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
767 BI opval = EQSI (* FLD (i_Ri), 0);
768 CPU (h_zbit) = opval;
769 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
772 BI opval = LTSI (* FLD (i_Ri), 0);
773 CPU (h_nbit) = opval;
774 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
783 /* andm: and $Rj,@$Ri */
786 SEM_FN_NAME (fr30bf,andm) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
788 #define FLD(f) abuf->fields.sfmt_str13.f
789 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
790 int UNUSED written = 0;
791 IADDR UNUSED pc = abuf->addr;
792 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
796 tmp_tmp = ANDSI (GETMEMSI (current_cpu, pc, * FLD (i_Ri)), * FLD (i_Rj));
799 BI opval = EQSI (tmp_tmp, 0);
800 CPU (h_zbit) = opval;
801 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
804 BI opval = LTSI (tmp_tmp, 0);
805 CPU (h_nbit) = opval;
806 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
811 SETMEMSI (current_cpu, pc, * FLD (i_Ri), opval);
812 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
820 /* andh: andh $Rj,@$Ri */
823 SEM_FN_NAME (fr30bf,andh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
825 #define FLD(f) abuf->fields.sfmt_str13.f
826 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
827 int UNUSED written = 0;
828 IADDR UNUSED pc = abuf->addr;
829 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
833 tmp_tmp = ANDHI (GETMEMHI (current_cpu, pc, * FLD (i_Ri)), * FLD (i_Rj));
836 BI opval = EQHI (tmp_tmp, 0);
837 CPU (h_zbit) = opval;
838 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
841 BI opval = LTHI (tmp_tmp, 0);
842 CPU (h_nbit) = opval;
843 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
848 SETMEMHI (current_cpu, pc, * FLD (i_Ri), opval);
849 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
857 /* andb: andb $Rj,@$Ri */
860 SEM_FN_NAME (fr30bf,andb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
862 #define FLD(f) abuf->fields.sfmt_str13.f
863 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
864 int UNUSED written = 0;
865 IADDR UNUSED pc = abuf->addr;
866 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
870 tmp_tmp = ANDQI (GETMEMQI (current_cpu, pc, * FLD (i_Ri)), * FLD (i_Rj));
873 BI opval = EQQI (tmp_tmp, 0);
874 CPU (h_zbit) = opval;
875 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
878 BI opval = LTQI (tmp_tmp, 0);
879 CPU (h_nbit) = opval;
880 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
885 SETMEMQI (current_cpu, pc, * FLD (i_Ri), opval);
886 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
894 /* orm: or $Rj,@$Ri */
897 SEM_FN_NAME (fr30bf,orm) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
899 #define FLD(f) abuf->fields.sfmt_str13.f
900 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
901 int UNUSED written = 0;
902 IADDR UNUSED pc = abuf->addr;
903 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
907 tmp_tmp = ORSI (GETMEMSI (current_cpu, pc, * FLD (i_Ri)), * FLD (i_Rj));
910 BI opval = EQSI (tmp_tmp, 0);
911 CPU (h_zbit) = opval;
912 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
915 BI opval = LTSI (tmp_tmp, 0);
916 CPU (h_nbit) = opval;
917 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
922 SETMEMSI (current_cpu, pc, * FLD (i_Ri), opval);
923 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
931 /* orh: orh $Rj,@$Ri */
934 SEM_FN_NAME (fr30bf,orh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
936 #define FLD(f) abuf->fields.sfmt_str13.f
937 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
938 int UNUSED written = 0;
939 IADDR UNUSED pc = abuf->addr;
940 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
944 tmp_tmp = ORHI (GETMEMHI (current_cpu, pc, * FLD (i_Ri)), * FLD (i_Rj));
947 BI opval = EQHI (tmp_tmp, 0);
948 CPU (h_zbit) = opval;
949 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
952 BI opval = LTHI (tmp_tmp, 0);
953 CPU (h_nbit) = opval;
954 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
959 SETMEMHI (current_cpu, pc, * FLD (i_Ri), opval);
960 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
968 /* orb: orb $Rj,@$Ri */
971 SEM_FN_NAME (fr30bf,orb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
973 #define FLD(f) abuf->fields.sfmt_str13.f
974 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
975 int UNUSED written = 0;
976 IADDR UNUSED pc = abuf->addr;
977 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
981 tmp_tmp = ORQI (GETMEMQI (current_cpu, pc, * FLD (i_Ri)), * FLD (i_Rj));
984 BI opval = EQQI (tmp_tmp, 0);
985 CPU (h_zbit) = opval;
986 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
989 BI opval = LTQI (tmp_tmp, 0);
990 CPU (h_nbit) = opval;
991 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
996 SETMEMQI (current_cpu, pc, * FLD (i_Ri), opval);
997 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1005 /* eorm: eor $Rj,@$Ri */
1008 SEM_FN_NAME (fr30bf,eorm) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1010 #define FLD(f) abuf->fields.sfmt_str13.f
1011 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1012 int UNUSED written = 0;
1013 IADDR UNUSED pc = abuf->addr;
1014 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1018 tmp_tmp = XORSI (GETMEMSI (current_cpu, pc, * FLD (i_Ri)), * FLD (i_Rj));
1021 BI opval = EQSI (tmp_tmp, 0);
1022 CPU (h_zbit) = opval;
1023 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1026 BI opval = LTSI (tmp_tmp, 0);
1027 CPU (h_nbit) = opval;
1028 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1033 SETMEMSI (current_cpu, pc, * FLD (i_Ri), opval);
1034 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1042 /* eorh: eorh $Rj,@$Ri */
1045 SEM_FN_NAME (fr30bf,eorh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1047 #define FLD(f) abuf->fields.sfmt_str13.f
1048 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1049 int UNUSED written = 0;
1050 IADDR UNUSED pc = abuf->addr;
1051 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1055 tmp_tmp = XORHI (GETMEMHI (current_cpu, pc, * FLD (i_Ri)), * FLD (i_Rj));
1058 BI opval = EQHI (tmp_tmp, 0);
1059 CPU (h_zbit) = opval;
1060 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1063 BI opval = LTHI (tmp_tmp, 0);
1064 CPU (h_nbit) = opval;
1065 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1070 SETMEMHI (current_cpu, pc, * FLD (i_Ri), opval);
1071 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1079 /* eorb: eorb $Rj,@$Ri */
1082 SEM_FN_NAME (fr30bf,eorb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1084 #define FLD(f) abuf->fields.sfmt_str13.f
1085 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1086 int UNUSED written = 0;
1087 IADDR UNUSED pc = abuf->addr;
1088 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1092 tmp_tmp = XORQI (GETMEMQI (current_cpu, pc, * FLD (i_Ri)), * FLD (i_Rj));
1095 BI opval = EQQI (tmp_tmp, 0);
1096 CPU (h_zbit) = opval;
1097 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1100 BI opval = LTQI (tmp_tmp, 0);
1101 CPU (h_nbit) = opval;
1102 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1107 SETMEMQI (current_cpu, pc, * FLD (i_Ri), opval);
1108 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1116 /* bandl: bandl $u4,@$Ri */
1119 SEM_FN_NAME (fr30bf,bandl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1121 #define FLD(f) abuf->fields.sfmt_addi.f
1122 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1123 int UNUSED written = 0;
1124 IADDR UNUSED pc = abuf->addr;
1125 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1128 QI opval = ANDQI (ORQI (FLD (f_u4), 240), GETMEMQI (current_cpu, pc, * FLD (i_Ri)));
1129 SETMEMQI (current_cpu, pc, * FLD (i_Ri), opval);
1130 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1137 /* borl: borl $u4,@$Ri */
1140 SEM_FN_NAME (fr30bf,borl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1142 #define FLD(f) abuf->fields.sfmt_addi.f
1143 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1144 int UNUSED written = 0;
1145 IADDR UNUSED pc = abuf->addr;
1146 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1149 QI opval = ORQI (FLD (f_u4), GETMEMQI (current_cpu, pc, * FLD (i_Ri)));
1150 SETMEMQI (current_cpu, pc, * FLD (i_Ri), opval);
1151 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1158 /* beorl: beorl $u4,@$Ri */
1161 SEM_FN_NAME (fr30bf,beorl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1163 #define FLD(f) abuf->fields.sfmt_addi.f
1164 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1165 int UNUSED written = 0;
1166 IADDR UNUSED pc = abuf->addr;
1167 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1170 QI opval = XORQI (FLD (f_u4), GETMEMQI (current_cpu, pc, * FLD (i_Ri)));
1171 SETMEMQI (current_cpu, pc, * FLD (i_Ri), opval);
1172 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1179 /* bandh: bandh $u4,@$Ri */
1182 SEM_FN_NAME (fr30bf,bandh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1184 #define FLD(f) abuf->fields.sfmt_addi.f
1185 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1186 int UNUSED written = 0;
1187 IADDR UNUSED pc = abuf->addr;
1188 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1191 QI opval = ANDQI (ORQI (SLLQI (FLD (f_u4), 4), 15), GETMEMQI (current_cpu, pc, * FLD (i_Ri)));
1192 SETMEMQI (current_cpu, pc, * FLD (i_Ri), opval);
1193 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1200 /* borh: borh $u4,@$Ri */
1203 SEM_FN_NAME (fr30bf,borh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1205 #define FLD(f) abuf->fields.sfmt_addi.f
1206 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1207 int UNUSED written = 0;
1208 IADDR UNUSED pc = abuf->addr;
1209 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1212 QI opval = ORQI (SLLQI (FLD (f_u4), 4), GETMEMQI (current_cpu, pc, * FLD (i_Ri)));
1213 SETMEMQI (current_cpu, pc, * FLD (i_Ri), opval);
1214 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1221 /* beorh: beorh $u4,@$Ri */
1224 SEM_FN_NAME (fr30bf,beorh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1226 #define FLD(f) abuf->fields.sfmt_addi.f
1227 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1228 int UNUSED written = 0;
1229 IADDR UNUSED pc = abuf->addr;
1230 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1233 QI opval = XORQI (SLLQI (FLD (f_u4), 4), GETMEMQI (current_cpu, pc, * FLD (i_Ri)));
1234 SETMEMQI (current_cpu, pc, * FLD (i_Ri), opval);
1235 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
1242 /* btstl: btstl $u4,@$Ri */
1245 SEM_FN_NAME (fr30bf,btstl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1247 #define FLD(f) abuf->fields.sfmt_addi.f
1248 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1249 int UNUSED written = 0;
1250 IADDR UNUSED pc = abuf->addr;
1251 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1255 tmp_tmp = ANDQI (FLD (f_u4), GETMEMQI (current_cpu, pc, * FLD (i_Ri)));
1257 BI opval = EQQI (tmp_tmp, 0);
1258 CPU (h_zbit) = opval;
1259 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1263 CPU (h_nbit) = opval;
1264 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1272 /* btsth: btsth $u4,@$Ri */
1275 SEM_FN_NAME (fr30bf,btsth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1277 #define FLD(f) abuf->fields.sfmt_addi.f
1278 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1279 int UNUSED written = 0;
1280 IADDR UNUSED pc = abuf->addr;
1281 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1285 tmp_tmp = ANDQI (SLLQI (FLD (f_u4), 4), GETMEMQI (current_cpu, pc, * FLD (i_Ri)));
1287 BI opval = EQQI (tmp_tmp, 0);
1288 CPU (h_zbit) = opval;
1289 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1292 BI opval = LTQI (tmp_tmp, 0);
1293 CPU (h_nbit) = opval;
1294 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1302 /* mul: mul $Rj,$Ri */
1305 SEM_FN_NAME (fr30bf,mul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1307 #define FLD(f) abuf->fields.sfmt_str13.f
1308 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1309 int UNUSED written = 0;
1310 IADDR UNUSED pc = abuf->addr;
1311 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1315 tmp_tmp = MULDI (EXTSIDI (* FLD (i_Rj)), EXTSIDI (* FLD (i_Ri)));
1317 SI opval = TRUNCDISI (tmp_tmp);
1318 SET_H_DR (((UINT) 5), opval);
1319 TRACE_RESULT (current_cpu, abuf, "dr-5", 'x', opval);
1322 SI opval = TRUNCDISI (SRLDI (tmp_tmp, 32));
1323 SET_H_DR (((UINT) 4), opval);
1324 TRACE_RESULT (current_cpu, abuf, "dr-4", 'x', opval);
1327 BI opval = LTSI (GET_H_DR (((UINT) 5)), 0);
1328 CPU (h_nbit) = opval;
1329 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1332 BI opval = EQDI (tmp_tmp, MAKEDI (0, 0));
1333 CPU (h_zbit) = opval;
1334 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1337 BI opval = ORIF (GTDI (tmp_tmp, MAKEDI (0, 2147483647)), LTDI (tmp_tmp, NEGDI (MAKEDI (0, 0x80000000))));
1338 CPU (h_vbit) = opval;
1339 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1347 /* mulu: mulu $Rj,$Ri */
1350 SEM_FN_NAME (fr30bf,mulu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1352 #define FLD(f) abuf->fields.sfmt_str13.f
1353 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1354 int UNUSED written = 0;
1355 IADDR UNUSED pc = abuf->addr;
1356 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1360 tmp_tmp = MULDI (ZEXTSIDI (* FLD (i_Rj)), ZEXTSIDI (* FLD (i_Ri)));
1362 SI opval = TRUNCDISI (tmp_tmp);
1363 SET_H_DR (((UINT) 5), opval);
1364 TRACE_RESULT (current_cpu, abuf, "dr-5", 'x', opval);
1367 SI opval = TRUNCDISI (SRLDI (tmp_tmp, 32));
1368 SET_H_DR (((UINT) 4), opval);
1369 TRACE_RESULT (current_cpu, abuf, "dr-4", 'x', opval);
1372 BI opval = LTSI (GET_H_DR (((UINT) 4)), 0);
1373 CPU (h_nbit) = opval;
1374 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1377 BI opval = EQSI (GET_H_DR (((UINT) 5)), 0);
1378 CPU (h_zbit) = opval;
1379 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1382 BI opval = NESI (GET_H_DR (((UINT) 4)), 0);
1383 CPU (h_vbit) = opval;
1384 TRACE_RESULT (current_cpu, abuf, "vbit", 'x', opval);
1392 /* mulh: mulh $Rj,$Ri */
1395 SEM_FN_NAME (fr30bf,mulh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1397 #define FLD(f) abuf->fields.sfmt_str13.f
1398 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1399 int UNUSED written = 0;
1400 IADDR UNUSED pc = abuf->addr;
1401 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1405 SI opval = MULHI (TRUNCSIHI (* FLD (i_Rj)), TRUNCSIHI (* FLD (i_Ri)));
1406 SET_H_DR (((UINT) 5), opval);
1407 TRACE_RESULT (current_cpu, abuf, "dr-5", 'x', opval);
1410 BI opval = LTSI (GET_H_DR (((UINT) 5)), 0);
1411 CPU (h_nbit) = opval;
1412 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1415 BI opval = GESI (GET_H_DR (((UINT) 5)), 0);
1416 CPU (h_zbit) = opval;
1417 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1425 /* muluh: muluh $Rj,$Ri */
1428 SEM_FN_NAME (fr30bf,muluh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1430 #define FLD(f) abuf->fields.sfmt_str13.f
1431 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1432 int UNUSED written = 0;
1433 IADDR UNUSED pc = abuf->addr;
1434 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1438 SI opval = MULSI (ANDSI (* FLD (i_Rj), 65535), ANDSI (* FLD (i_Ri), 65535));
1439 SET_H_DR (((UINT) 5), opval);
1440 TRACE_RESULT (current_cpu, abuf, "dr-5", 'x', opval);
1443 BI opval = LTSI (GET_H_DR (((UINT) 5)), 0);
1444 CPU (h_nbit) = opval;
1445 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1448 BI opval = GESI (GET_H_DR (((UINT) 5)), 0);
1449 CPU (h_zbit) = opval;
1450 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1458 /* div0s: div0s $Ri */
1461 SEM_FN_NAME (fr30bf,div0s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1463 #define FLD(f) abuf->fields.sfmt_mov2dr.f
1464 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1465 int UNUSED written = 0;
1466 IADDR UNUSED pc = abuf->addr;
1467 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1471 BI opval = LTSI (GET_H_DR (((UINT) 5)), 0);
1472 CPU (h_d0bit) = opval;
1473 TRACE_RESULT (current_cpu, abuf, "d0bit", 'x', opval);
1476 BI opval = XORBI (CPU (h_d0bit), LTSI (* FLD (i_Ri), 0));
1477 CPU (h_d1bit) = opval;
1478 TRACE_RESULT (current_cpu, abuf, "d1bit", 'x', opval);
1480 if (NEBI (CPU (h_d0bit), 0)) {
1482 SI opval = 0xffffffff;
1483 SET_H_DR (((UINT) 4), opval);
1484 written |= (1 << 5);
1485 TRACE_RESULT (current_cpu, abuf, "dr-4", 'x', opval);
1490 SET_H_DR (((UINT) 4), opval);
1491 written |= (1 << 5);
1492 TRACE_RESULT (current_cpu, abuf, "dr-4", 'x', opval);
1497 abuf->written = written;
1502 /* div0u: div0u $Ri */
1505 SEM_FN_NAME (fr30bf,div0u) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1507 #define FLD(f) abuf->fields.fmt_empty.f
1508 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1509 int UNUSED written = 0;
1510 IADDR UNUSED pc = abuf->addr;
1511 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1516 CPU (h_d0bit) = opval;
1517 TRACE_RESULT (current_cpu, abuf, "d0bit", 'x', opval);
1521 CPU (h_d1bit) = opval;
1522 TRACE_RESULT (current_cpu, abuf, "d1bit", 'x', opval);
1526 SET_H_DR (((UINT) 4), opval);
1527 TRACE_RESULT (current_cpu, abuf, "dr-4", 'x', opval);
1535 /* div1: div1 $Ri */
1538 SEM_FN_NAME (fr30bf,div1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1540 #define FLD(f) abuf->fields.sfmt_mov2dr.f
1541 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1542 int UNUSED written = 0;
1543 IADDR UNUSED pc = abuf->addr;
1544 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1549 SI opval = SLLSI (GET_H_DR (((UINT) 4)), 1);
1550 SET_H_DR (((UINT) 4), opval);
1551 TRACE_RESULT (current_cpu, abuf, "dr-4", 'x', opval);
1553 if (LTSI (GET_H_DR (((UINT) 5)), 0)) {
1555 SI opval = ADDSI (GET_H_DR (((UINT) 4)), 1);
1556 SET_H_DR (((UINT) 4), opval);
1557 TRACE_RESULT (current_cpu, abuf, "dr-4", 'x', opval);
1561 SI opval = SLLSI (GET_H_DR (((UINT) 5)), 1);
1562 SET_H_DR (((UINT) 5), opval);
1563 TRACE_RESULT (current_cpu, abuf, "dr-5", 'x', opval);
1565 if (EQBI (CPU (h_d1bit), 1)) {
1567 tmp_tmp = ADDSI (GET_H_DR (((UINT) 4)), * FLD (i_Ri));
1569 BI opval = ADDCFSI (GET_H_DR (((UINT) 4)), * FLD (i_Ri), 0);
1570 CPU (h_cbit) = opval;
1571 written |= (1 << 6);
1572 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1577 tmp_tmp = SUBSI (GET_H_DR (((UINT) 4)), * FLD (i_Ri));
1579 BI opval = SUBCFSI (GET_H_DR (((UINT) 4)), * FLD (i_Ri), 0);
1580 CPU (h_cbit) = opval;
1581 written |= (1 << 6);
1582 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1586 if (NOTBI (XORBI (XORBI (CPU (h_d0bit), CPU (h_d1bit)), CPU (h_cbit)))) {
1590 SET_H_DR (((UINT) 4), opval);
1591 TRACE_RESULT (current_cpu, abuf, "dr-4", 'x', opval);
1594 SI opval = ORSI (GET_H_DR (((UINT) 5)), 1);
1595 SET_H_DR (((UINT) 5), opval);
1596 TRACE_RESULT (current_cpu, abuf, "dr-5", 'x', opval);
1601 BI opval = EQSI (GET_H_DR (((UINT) 4)), 0);
1602 CPU (h_zbit) = opval;
1603 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1607 abuf->written = written;
1612 /* div2: div2 $Ri */
1615 SEM_FN_NAME (fr30bf,div2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1617 #define FLD(f) abuf->fields.sfmt_mov2dr.f
1618 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1619 int UNUSED written = 0;
1620 IADDR UNUSED pc = abuf->addr;
1621 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1625 if (EQBI (CPU (h_d1bit), 1)) {
1627 tmp_tmp = ADDSI (GET_H_DR (((UINT) 4)), * FLD (i_Ri));
1629 BI opval = ADDCFSI (GET_H_DR (((UINT) 4)), * FLD (i_Ri), 0);
1630 CPU (h_cbit) = opval;
1631 written |= (1 << 3);
1632 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1637 tmp_tmp = SUBSI (GET_H_DR (((UINT) 4)), * FLD (i_Ri));
1639 BI opval = SUBCFSI (GET_H_DR (((UINT) 4)), * FLD (i_Ri), 0);
1640 CPU (h_cbit) = opval;
1641 written |= (1 << 3);
1642 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1646 if (EQSI (tmp_tmp, 0)) {
1650 CPU (h_zbit) = opval;
1651 written |= (1 << 5);
1652 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1656 SET_H_DR (((UINT) 4), opval);
1657 written |= (1 << 4);
1658 TRACE_RESULT (current_cpu, abuf, "dr-4", 'x', opval);
1664 CPU (h_zbit) = opval;
1665 written |= (1 << 5);
1666 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1671 abuf->written = written;
1679 SEM_FN_NAME (fr30bf,div3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1681 #define FLD(f) abuf->fields.fmt_empty.f
1682 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1683 int UNUSED written = 0;
1684 IADDR UNUSED pc = abuf->addr;
1685 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1687 if (EQBI (CPU (h_zbit), 1)) {
1689 SI opval = ADDSI (GET_H_DR (((UINT) 5)), 1);
1690 SET_H_DR (((UINT) 5), opval);
1691 written |= (1 << 2);
1692 TRACE_RESULT (current_cpu, abuf, "dr-5", 'x', opval);
1696 abuf->written = written;
1704 SEM_FN_NAME (fr30bf,div4s) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1706 #define FLD(f) abuf->fields.fmt_empty.f
1707 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1708 int UNUSED written = 0;
1709 IADDR UNUSED pc = abuf->addr;
1710 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1712 if (EQBI (CPU (h_d1bit), 1)) {
1714 SI opval = NEGSI (GET_H_DR (((UINT) 5)));
1715 SET_H_DR (((UINT) 5), opval);
1716 written |= (1 << 2);
1717 TRACE_RESULT (current_cpu, abuf, "dr-5", 'x', opval);
1721 abuf->written = written;
1726 /* lsl: lsl $Rj,$Ri */
1729 SEM_FN_NAME (fr30bf,lsl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1731 #define FLD(f) abuf->fields.sfmt_add.f
1732 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1733 int UNUSED written = 0;
1734 IADDR UNUSED pc = abuf->addr;
1735 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1739 tmp_shift = ANDSI (* FLD (i_Rj), 31);
1740 if (NESI (tmp_shift, 0)) {
1743 BI opval = NESI (ANDSI (* FLD (i_Ri), SLLSI (1, SUBSI (32, tmp_shift))), 0);
1744 CPU (h_cbit) = opval;
1745 written |= (1 << 3);
1746 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1749 SI opval = SLLSI (* FLD (i_Ri), tmp_shift);
1750 * FLD (i_Ri) = opval;
1751 written |= (1 << 2);
1752 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
1758 CPU (h_cbit) = opval;
1759 written |= (1 << 3);
1760 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1764 BI opval = LTSI (* FLD (i_Ri), 0);
1765 CPU (h_nbit) = opval;
1766 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1769 BI opval = EQSI (* FLD (i_Ri), 0);
1770 CPU (h_zbit) = opval;
1771 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1775 abuf->written = written;
1780 /* lsli: lsl $u4,$Ri */
1783 SEM_FN_NAME (fr30bf,lsli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1785 #define FLD(f) abuf->fields.sfmt_addi.f
1786 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1787 int UNUSED written = 0;
1788 IADDR UNUSED pc = abuf->addr;
1789 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1793 tmp_shift = FLD (f_u4);
1794 if (NESI (tmp_shift, 0)) {
1797 BI opval = NESI (ANDSI (* FLD (i_Ri), SLLSI (1, SUBSI (32, tmp_shift))), 0);
1798 CPU (h_cbit) = opval;
1799 written |= (1 << 3);
1800 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1803 SI opval = SLLSI (* FLD (i_Ri), tmp_shift);
1804 * FLD (i_Ri) = opval;
1805 written |= (1 << 2);
1806 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
1812 CPU (h_cbit) = opval;
1813 written |= (1 << 3);
1814 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1818 BI opval = LTSI (* FLD (i_Ri), 0);
1819 CPU (h_nbit) = opval;
1820 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1823 BI opval = EQSI (* FLD (i_Ri), 0);
1824 CPU (h_zbit) = opval;
1825 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1829 abuf->written = written;
1834 /* lsl2: lsl2 $u4,$Ri */
1837 SEM_FN_NAME (fr30bf,lsl2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1839 #define FLD(f) abuf->fields.sfmt_addi.f
1840 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1841 int UNUSED written = 0;
1842 IADDR UNUSED pc = abuf->addr;
1843 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1847 tmp_shift = ADDSI (FLD (f_u4), 16);
1848 if (NESI (tmp_shift, 0)) {
1851 BI opval = NESI (ANDSI (* FLD (i_Ri), SLLSI (1, SUBSI (32, tmp_shift))), 0);
1852 CPU (h_cbit) = opval;
1853 written |= (1 << 3);
1854 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1857 SI opval = SLLSI (* FLD (i_Ri), tmp_shift);
1858 * FLD (i_Ri) = opval;
1859 written |= (1 << 2);
1860 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
1866 CPU (h_cbit) = opval;
1867 written |= (1 << 3);
1868 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1872 BI opval = LTSI (* FLD (i_Ri), 0);
1873 CPU (h_nbit) = opval;
1874 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1877 BI opval = EQSI (* FLD (i_Ri), 0);
1878 CPU (h_zbit) = opval;
1879 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1883 abuf->written = written;
1888 /* lsr: lsr $Rj,$Ri */
1891 SEM_FN_NAME (fr30bf,lsr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1893 #define FLD(f) abuf->fields.sfmt_add.f
1894 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1895 int UNUSED written = 0;
1896 IADDR UNUSED pc = abuf->addr;
1897 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1901 tmp_shift = ANDSI (* FLD (i_Rj), 31);
1902 if (NESI (tmp_shift, 0)) {
1905 BI opval = NESI (ANDSI (* FLD (i_Ri), SLLSI (1, SUBSI (tmp_shift, 1))), 0);
1906 CPU (h_cbit) = opval;
1907 written |= (1 << 3);
1908 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1911 SI opval = SRLSI (* FLD (i_Ri), tmp_shift);
1912 * FLD (i_Ri) = opval;
1913 written |= (1 << 2);
1914 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
1920 CPU (h_cbit) = opval;
1921 written |= (1 << 3);
1922 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1926 BI opval = LTSI (* FLD (i_Ri), 0);
1927 CPU (h_nbit) = opval;
1928 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1931 BI opval = EQSI (* FLD (i_Ri), 0);
1932 CPU (h_zbit) = opval;
1933 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1937 abuf->written = written;
1942 /* lsri: lsr $u4,$Ri */
1945 SEM_FN_NAME (fr30bf,lsri) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1947 #define FLD(f) abuf->fields.sfmt_addi.f
1948 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1949 int UNUSED written = 0;
1950 IADDR UNUSED pc = abuf->addr;
1951 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
1955 tmp_shift = FLD (f_u4);
1956 if (NESI (tmp_shift, 0)) {
1959 BI opval = NESI (ANDSI (* FLD (i_Ri), SLLSI (1, SUBSI (tmp_shift, 1))), 0);
1960 CPU (h_cbit) = opval;
1961 written |= (1 << 3);
1962 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1965 SI opval = SRLSI (* FLD (i_Ri), tmp_shift);
1966 * FLD (i_Ri) = opval;
1967 written |= (1 << 2);
1968 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
1974 CPU (h_cbit) = opval;
1975 written |= (1 << 3);
1976 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
1980 BI opval = LTSI (* FLD (i_Ri), 0);
1981 CPU (h_nbit) = opval;
1982 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
1985 BI opval = EQSI (* FLD (i_Ri), 0);
1986 CPU (h_zbit) = opval;
1987 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
1991 abuf->written = written;
1996 /* lsr2: lsr2 $u4,$Ri */
1999 SEM_FN_NAME (fr30bf,lsr2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2001 #define FLD(f) abuf->fields.sfmt_addi.f
2002 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2003 int UNUSED written = 0;
2004 IADDR UNUSED pc = abuf->addr;
2005 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2009 tmp_shift = ADDSI (FLD (f_u4), 16);
2010 if (NESI (tmp_shift, 0)) {
2013 BI opval = NESI (ANDSI (* FLD (i_Ri), SLLSI (1, SUBSI (tmp_shift, 1))), 0);
2014 CPU (h_cbit) = opval;
2015 written |= (1 << 3);
2016 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2019 SI opval = SRLSI (* FLD (i_Ri), tmp_shift);
2020 * FLD (i_Ri) = opval;
2021 written |= (1 << 2);
2022 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2028 CPU (h_cbit) = opval;
2029 written |= (1 << 3);
2030 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2034 BI opval = LTSI (* FLD (i_Ri), 0);
2035 CPU (h_nbit) = opval;
2036 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2039 BI opval = EQSI (* FLD (i_Ri), 0);
2040 CPU (h_zbit) = opval;
2041 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2045 abuf->written = written;
2050 /* asr: asr $Rj,$Ri */
2053 SEM_FN_NAME (fr30bf,asr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2055 #define FLD(f) abuf->fields.sfmt_add.f
2056 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2057 int UNUSED written = 0;
2058 IADDR UNUSED pc = abuf->addr;
2059 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2063 tmp_shift = ANDSI (* FLD (i_Rj), 31);
2064 if (NESI (tmp_shift, 0)) {
2067 BI opval = NESI (ANDSI (* FLD (i_Ri), SLLSI (1, SUBSI (tmp_shift, 1))), 0);
2068 CPU (h_cbit) = opval;
2069 written |= (1 << 3);
2070 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2073 SI opval = SRASI (* FLD (i_Ri), tmp_shift);
2074 * FLD (i_Ri) = opval;
2075 written |= (1 << 2);
2076 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2082 CPU (h_cbit) = opval;
2083 written |= (1 << 3);
2084 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2088 BI opval = LTSI (* FLD (i_Ri), 0);
2089 CPU (h_nbit) = opval;
2090 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2093 BI opval = EQSI (* FLD (i_Ri), 0);
2094 CPU (h_zbit) = opval;
2095 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2099 abuf->written = written;
2104 /* asri: asr $u4,$Ri */
2107 SEM_FN_NAME (fr30bf,asri) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2109 #define FLD(f) abuf->fields.sfmt_addi.f
2110 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2111 int UNUSED written = 0;
2112 IADDR UNUSED pc = abuf->addr;
2113 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2117 tmp_shift = FLD (f_u4);
2118 if (NESI (tmp_shift, 0)) {
2121 BI opval = NESI (ANDSI (* FLD (i_Ri), SLLSI (1, SUBSI (tmp_shift, 1))), 0);
2122 CPU (h_cbit) = opval;
2123 written |= (1 << 3);
2124 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2127 SI opval = SRASI (* FLD (i_Ri), tmp_shift);
2128 * FLD (i_Ri) = opval;
2129 written |= (1 << 2);
2130 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2136 CPU (h_cbit) = opval;
2137 written |= (1 << 3);
2138 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2142 BI opval = LTSI (* FLD (i_Ri), 0);
2143 CPU (h_nbit) = opval;
2144 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2147 BI opval = EQSI (* FLD (i_Ri), 0);
2148 CPU (h_zbit) = opval;
2149 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2153 abuf->written = written;
2158 /* asr2: asr2 $u4,$Ri */
2161 SEM_FN_NAME (fr30bf,asr2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2163 #define FLD(f) abuf->fields.sfmt_addi.f
2164 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2165 int UNUSED written = 0;
2166 IADDR UNUSED pc = abuf->addr;
2167 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2171 tmp_shift = ADDSI (FLD (f_u4), 16);
2172 if (NESI (tmp_shift, 0)) {
2175 BI opval = NESI (ANDSI (* FLD (i_Ri), SLLSI (1, SUBSI (tmp_shift, 1))), 0);
2176 CPU (h_cbit) = opval;
2177 written |= (1 << 3);
2178 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2181 SI opval = SRASI (* FLD (i_Ri), tmp_shift);
2182 * FLD (i_Ri) = opval;
2183 written |= (1 << 2);
2184 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2190 CPU (h_cbit) = opval;
2191 written |= (1 << 3);
2192 TRACE_RESULT (current_cpu, abuf, "cbit", 'x', opval);
2196 BI opval = LTSI (* FLD (i_Ri), 0);
2197 CPU (h_nbit) = opval;
2198 TRACE_RESULT (current_cpu, abuf, "nbit", 'x', opval);
2201 BI opval = EQSI (* FLD (i_Ri), 0);
2202 CPU (h_zbit) = opval;
2203 TRACE_RESULT (current_cpu, abuf, "zbit", 'x', opval);
2207 abuf->written = written;
2212 /* ldi8: ldi:8 $i8,$Ri */
2215 SEM_FN_NAME (fr30bf,ldi8) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2217 #define FLD(f) abuf->fields.sfmt_ldi8.f
2218 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2219 int UNUSED written = 0;
2220 IADDR UNUSED pc = abuf->addr;
2221 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2224 SI opval = FLD (f_i8);
2225 * FLD (i_Ri) = opval;
2226 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2233 /* ldi20: ldi:20 $i20,$Ri */
2236 SEM_FN_NAME (fr30bf,ldi20) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2238 #define FLD(f) abuf->fields.sfmt_ldi20.f
2239 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2240 int UNUSED written = 0;
2241 IADDR UNUSED pc = abuf->addr;
2242 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2245 SI opval = FLD (f_i20);
2246 * FLD (i_Ri) = opval;
2247 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2254 /* ldi32: ldi:32 $i32,$Ri */
2257 SEM_FN_NAME (fr30bf,ldi32) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2259 #define FLD(f) abuf->fields.sfmt_ldi32.f
2260 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2261 int UNUSED written = 0;
2262 IADDR UNUSED pc = abuf->addr;
2263 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 6);
2266 SI opval = FLD (f_i32);
2267 * FLD (i_Ri) = opval;
2268 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2275 /* ld: ld @$Rj,$Ri */
2278 SEM_FN_NAME (fr30bf,ld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2280 #define FLD(f) abuf->fields.sfmt_ldr13.f
2281 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2282 int UNUSED written = 0;
2283 IADDR UNUSED pc = abuf->addr;
2284 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2287 SI opval = GETMEMSI (current_cpu, pc, * FLD (i_Rj));
2288 * FLD (i_Ri) = opval;
2289 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2296 /* lduh: lduh @$Rj,$Ri */
2299 SEM_FN_NAME (fr30bf,lduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2301 #define FLD(f) abuf->fields.sfmt_ldr13.f
2302 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2303 int UNUSED written = 0;
2304 IADDR UNUSED pc = abuf->addr;
2305 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2308 SI opval = GETMEMUHI (current_cpu, pc, * FLD (i_Rj));
2309 * FLD (i_Ri) = opval;
2310 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2317 /* ldub: ldub @$Rj,$Ri */
2320 SEM_FN_NAME (fr30bf,ldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2322 #define FLD(f) abuf->fields.sfmt_ldr13.f
2323 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2324 int UNUSED written = 0;
2325 IADDR UNUSED pc = abuf->addr;
2326 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2329 SI opval = GETMEMUQI (current_cpu, pc, * FLD (i_Rj));
2330 * FLD (i_Ri) = opval;
2331 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2338 /* ldr13: ld @($R13,$Rj),$Ri */
2341 SEM_FN_NAME (fr30bf,ldr13) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2343 #define FLD(f) abuf->fields.sfmt_ldr13.f
2344 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2345 int UNUSED written = 0;
2346 IADDR UNUSED pc = abuf->addr;
2347 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2350 SI opval = GETMEMSI (current_cpu, pc, ADDSI (* FLD (i_Rj), CPU (h_gr[((UINT) 13)])));
2351 * FLD (i_Ri) = opval;
2352 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2359 /* ldr13uh: lduh @($R13,$Rj),$Ri */
2362 SEM_FN_NAME (fr30bf,ldr13uh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2364 #define FLD(f) abuf->fields.sfmt_ldr13.f
2365 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2366 int UNUSED written = 0;
2367 IADDR UNUSED pc = abuf->addr;
2368 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2371 SI opval = GETMEMUHI (current_cpu, pc, ADDSI (* FLD (i_Rj), CPU (h_gr[((UINT) 13)])));
2372 * FLD (i_Ri) = opval;
2373 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2380 /* ldr13ub: ldub @($R13,$Rj),$Ri */
2383 SEM_FN_NAME (fr30bf,ldr13ub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2385 #define FLD(f) abuf->fields.sfmt_ldr13.f
2386 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2387 int UNUSED written = 0;
2388 IADDR UNUSED pc = abuf->addr;
2389 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2392 SI opval = GETMEMUQI (current_cpu, pc, ADDSI (* FLD (i_Rj), CPU (h_gr[((UINT) 13)])));
2393 * FLD (i_Ri) = opval;
2394 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2401 /* ldr14: ld @($R14,$disp10),$Ri */
2404 SEM_FN_NAME (fr30bf,ldr14) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2406 #define FLD(f) abuf->fields.sfmt_ldr14.f
2407 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2408 int UNUSED written = 0;
2409 IADDR UNUSED pc = abuf->addr;
2410 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2413 SI opval = GETMEMSI (current_cpu, pc, ADDSI (FLD (f_disp10), CPU (h_gr[((UINT) 14)])));
2414 * FLD (i_Ri) = opval;
2415 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2422 /* ldr14uh: lduh @($R14,$disp9),$Ri */
2425 SEM_FN_NAME (fr30bf,ldr14uh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2427 #define FLD(f) abuf->fields.sfmt_ldr14uh.f
2428 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2429 int UNUSED written = 0;
2430 IADDR UNUSED pc = abuf->addr;
2431 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2434 SI opval = GETMEMUHI (current_cpu, pc, ADDSI (FLD (f_disp9), CPU (h_gr[((UINT) 14)])));
2435 * FLD (i_Ri) = opval;
2436 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2443 /* ldr14ub: ldub @($R14,$disp8),$Ri */
2446 SEM_FN_NAME (fr30bf,ldr14ub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2448 #define FLD(f) abuf->fields.sfmt_ldr14ub.f
2449 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2450 int UNUSED written = 0;
2451 IADDR UNUSED pc = abuf->addr;
2452 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2455 SI opval = GETMEMUQI (current_cpu, pc, ADDSI (FLD (f_disp8), CPU (h_gr[((UINT) 14)])));
2456 * FLD (i_Ri) = opval;
2457 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2464 /* ldr15: ld @($R15,$udisp6),$Ri */
2467 SEM_FN_NAME (fr30bf,ldr15) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2469 #define FLD(f) abuf->fields.sfmt_ldr15.f
2470 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2471 int UNUSED written = 0;
2472 IADDR UNUSED pc = abuf->addr;
2473 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2476 SI opval = GETMEMSI (current_cpu, pc, ADDSI (FLD (f_udisp6), CPU (h_gr[((UINT) 15)])));
2477 * FLD (i_Ri) = opval;
2478 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2485 /* ldr15gr: ld @$R15+,$Ri */
2488 SEM_FN_NAME (fr30bf,ldr15gr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2490 #define FLD(f) abuf->fields.sfmt_ldr15gr.f
2491 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2492 int UNUSED written = 0;
2493 IADDR UNUSED pc = abuf->addr;
2494 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2498 SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
2499 * FLD (i_Ri) = opval;
2500 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2502 if (NESI (FLD (f_Ri), 15)) {
2504 SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
2505 CPU (h_gr[((UINT) 15)]) = opval;
2506 written |= (1 << 4);
2507 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
2512 abuf->written = written;
2517 /* ldr15dr: ld @$R15+,$Rs2 */
2520 SEM_FN_NAME (fr30bf,ldr15dr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2522 #define FLD(f) abuf->fields.sfmt_ldr15dr.f
2523 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2524 int UNUSED written = 0;
2525 IADDR UNUSED pc = abuf->addr;
2526 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2530 tmp_tmp = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
2532 SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
2533 CPU (h_gr[((UINT) 15)]) = opval;
2534 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
2538 SET_H_DR (FLD (f_Rs2), opval);
2539 TRACE_RESULT (current_cpu, abuf, "Rs2", 'x', opval);
2547 /* ldr15ps: ld @$R15+,$ps */
2550 SEM_FN_NAME (fr30bf,ldr15ps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2552 #define FLD(f) abuf->fields.sfmt_addsp.f
2553 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2554 int UNUSED written = 0;
2555 IADDR UNUSED pc = abuf->addr;
2556 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2560 USI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
2562 TRACE_RESULT (current_cpu, abuf, "ps", 'x', opval);
2565 SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
2566 CPU (h_gr[((UINT) 15)]) = opval;
2567 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
2575 /* st: st $Ri,@$Rj */
2578 SEM_FN_NAME (fr30bf,st) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2580 #define FLD(f) abuf->fields.sfmt_str13.f
2581 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2582 int UNUSED written = 0;
2583 IADDR UNUSED pc = abuf->addr;
2584 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2587 SI opval = * FLD (i_Ri);
2588 SETMEMSI (current_cpu, pc, * FLD (i_Rj), opval);
2589 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2596 /* sth: sth $Ri,@$Rj */
2599 SEM_FN_NAME (fr30bf,sth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2601 #define FLD(f) abuf->fields.sfmt_str13.f
2602 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2603 int UNUSED written = 0;
2604 IADDR UNUSED pc = abuf->addr;
2605 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2608 HI opval = * FLD (i_Ri);
2609 SETMEMHI (current_cpu, pc, * FLD (i_Rj), opval);
2610 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2617 /* stb: stb $Ri,@$Rj */
2620 SEM_FN_NAME (fr30bf,stb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2622 #define FLD(f) abuf->fields.sfmt_str13.f
2623 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2624 int UNUSED written = 0;
2625 IADDR UNUSED pc = abuf->addr;
2626 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2629 QI opval = * FLD (i_Ri);
2630 SETMEMQI (current_cpu, pc, * FLD (i_Rj), opval);
2631 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2638 /* str13: st $Ri,@($R13,$Rj) */
2641 SEM_FN_NAME (fr30bf,str13) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2643 #define FLD(f) abuf->fields.sfmt_str13.f
2644 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2645 int UNUSED written = 0;
2646 IADDR UNUSED pc = abuf->addr;
2647 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2650 SI opval = * FLD (i_Ri);
2651 SETMEMSI (current_cpu, pc, ADDSI (* FLD (i_Rj), CPU (h_gr[((UINT) 13)])), opval);
2652 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2659 /* str13h: sth $Ri,@($R13,$Rj) */
2662 SEM_FN_NAME (fr30bf,str13h) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2664 #define FLD(f) abuf->fields.sfmt_str13.f
2665 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2666 int UNUSED written = 0;
2667 IADDR UNUSED pc = abuf->addr;
2668 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2671 HI opval = * FLD (i_Ri);
2672 SETMEMHI (current_cpu, pc, ADDSI (* FLD (i_Rj), CPU (h_gr[((UINT) 13)])), opval);
2673 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2680 /* str13b: stb $Ri,@($R13,$Rj) */
2683 SEM_FN_NAME (fr30bf,str13b) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2685 #define FLD(f) abuf->fields.sfmt_str13.f
2686 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2687 int UNUSED written = 0;
2688 IADDR UNUSED pc = abuf->addr;
2689 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2692 QI opval = * FLD (i_Ri);
2693 SETMEMQI (current_cpu, pc, ADDSI (* FLD (i_Rj), CPU (h_gr[((UINT) 13)])), opval);
2694 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2701 /* str14: st $Ri,@($R14,$disp10) */
2704 SEM_FN_NAME (fr30bf,str14) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2706 #define FLD(f) abuf->fields.sfmt_str14.f
2707 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2708 int UNUSED written = 0;
2709 IADDR UNUSED pc = abuf->addr;
2710 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2713 SI opval = * FLD (i_Ri);
2714 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_disp10), CPU (h_gr[((UINT) 14)])), opval);
2715 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2722 /* str14h: sth $Ri,@($R14,$disp9) */
2725 SEM_FN_NAME (fr30bf,str14h) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2727 #define FLD(f) abuf->fields.sfmt_str14h.f
2728 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2729 int UNUSED written = 0;
2730 IADDR UNUSED pc = abuf->addr;
2731 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2734 HI opval = * FLD (i_Ri);
2735 SETMEMHI (current_cpu, pc, ADDSI (FLD (f_disp9), CPU (h_gr[((UINT) 14)])), opval);
2736 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2743 /* str14b: stb $Ri,@($R14,$disp8) */
2746 SEM_FN_NAME (fr30bf,str14b) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2748 #define FLD(f) abuf->fields.sfmt_str14b.f
2749 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2750 int UNUSED written = 0;
2751 IADDR UNUSED pc = abuf->addr;
2752 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2755 QI opval = * FLD (i_Ri);
2756 SETMEMQI (current_cpu, pc, ADDSI (FLD (f_disp8), CPU (h_gr[((UINT) 14)])), opval);
2757 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2764 /* str15: st $Ri,@($R15,$udisp6) */
2767 SEM_FN_NAME (fr30bf,str15) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2769 #define FLD(f) abuf->fields.sfmt_str15.f
2770 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2771 int UNUSED written = 0;
2772 IADDR UNUSED pc = abuf->addr;
2773 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2776 SI opval = * FLD (i_Ri);
2777 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 15)]), FLD (f_udisp6)), opval);
2778 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2785 /* str15gr: st $Ri,@-$R15 */
2788 SEM_FN_NAME (fr30bf,str15gr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2790 #define FLD(f) abuf->fields.sfmt_str15gr.f
2791 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2792 int UNUSED written = 0;
2793 IADDR UNUSED pc = abuf->addr;
2794 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2798 tmp_tmp = * FLD (i_Ri);
2800 SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
2801 CPU (h_gr[((UINT) 15)]) = opval;
2802 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
2806 SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
2807 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2815 /* str15dr: st $Rs2,@-$R15 */
2818 SEM_FN_NAME (fr30bf,str15dr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2820 #define FLD(f) abuf->fields.sfmt_ldr15dr.f
2821 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2822 int UNUSED written = 0;
2823 IADDR UNUSED pc = abuf->addr;
2824 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2828 tmp_tmp = GET_H_DR (FLD (f_Rs2));
2830 SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
2831 CPU (h_gr[((UINT) 15)]) = opval;
2832 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
2836 SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
2837 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2845 /* str15ps: st $ps,@-$R15 */
2848 SEM_FN_NAME (fr30bf,str15ps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2850 #define FLD(f) abuf->fields.sfmt_addsp.f
2851 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2852 int UNUSED written = 0;
2853 IADDR UNUSED pc = abuf->addr;
2854 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2858 SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
2859 CPU (h_gr[((UINT) 15)]) = opval;
2860 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
2863 SI opval = GET_H_PS ();
2864 SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
2865 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
2873 /* mov: mov $Rj,$Ri */
2876 SEM_FN_NAME (fr30bf,mov) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2878 #define FLD(f) abuf->fields.sfmt_ldr13.f
2879 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2880 int UNUSED written = 0;
2881 IADDR UNUSED pc = abuf->addr;
2882 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2885 SI opval = * FLD (i_Rj);
2886 * FLD (i_Ri) = opval;
2887 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2894 /* movdr: mov $Rs1,$Ri */
2897 SEM_FN_NAME (fr30bf,movdr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2899 #define FLD(f) abuf->fields.sfmt_movdr.f
2900 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2901 int UNUSED written = 0;
2902 IADDR UNUSED pc = abuf->addr;
2903 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2906 SI opval = GET_H_DR (FLD (f_Rs1));
2907 * FLD (i_Ri) = opval;
2908 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2915 /* movps: mov $ps,$Ri */
2918 SEM_FN_NAME (fr30bf,movps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2920 #define FLD(f) abuf->fields.sfmt_movdr.f
2921 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2922 int UNUSED written = 0;
2923 IADDR UNUSED pc = abuf->addr;
2924 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2927 SI opval = GET_H_PS ();
2928 * FLD (i_Ri) = opval;
2929 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
2936 /* mov2dr: mov $Ri,$Rs1 */
2939 SEM_FN_NAME (fr30bf,mov2dr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2941 #define FLD(f) abuf->fields.sfmt_mov2dr.f
2942 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2943 int UNUSED written = 0;
2944 IADDR UNUSED pc = abuf->addr;
2945 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2948 SI opval = * FLD (i_Ri);
2949 SET_H_DR (FLD (f_Rs1), opval);
2950 TRACE_RESULT (current_cpu, abuf, "Rs1", 'x', opval);
2957 /* mov2ps: mov $Ri,$ps */
2960 SEM_FN_NAME (fr30bf,mov2ps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2962 #define FLD(f) abuf->fields.sfmt_mov2dr.f
2963 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2964 int UNUSED written = 0;
2965 IADDR UNUSED pc = abuf->addr;
2966 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2969 USI opval = * FLD (i_Ri);
2971 TRACE_RESULT (current_cpu, abuf, "ps", 'x', opval);
2981 SEM_FN_NAME (fr30bf,jmp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2983 #define FLD(f) abuf->fields.sfmt_mov2dr.f
2984 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2985 int UNUSED written = 0;
2986 IADDR UNUSED pc = abuf->addr;
2988 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
2991 USI opval = * FLD (i_Ri);
2992 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
2993 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
2996 SEM_BRANCH_FINI (vpc);
3001 /* jmpd: jmp:d @$Ri */
3004 SEM_FN_NAME (fr30bf,jmpd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3006 #define FLD(f) abuf->fields.sfmt_mov2dr.f
3007 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3008 int UNUSED written = 0;
3009 IADDR UNUSED pc = abuf->addr;
3011 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3015 USI opval = * FLD (i_Ri);
3016 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
3017 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3021 SEM_BRANCH_FINI (vpc);
3026 /* callr: call @$Ri */
3029 SEM_FN_NAME (fr30bf,callr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3031 #define FLD(f) abuf->fields.sfmt_mov2dr.f
3032 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3033 int UNUSED written = 0;
3034 IADDR UNUSED pc = abuf->addr;
3036 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3040 SI opval = ADDSI (pc, 2);
3041 SET_H_DR (((UINT) 1), opval);
3042 TRACE_RESULT (current_cpu, abuf, "dr-1", 'x', opval);
3045 USI opval = * FLD (i_Ri);
3046 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
3047 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3051 SEM_BRANCH_FINI (vpc);
3056 /* callrd: call:d @$Ri */
3059 SEM_FN_NAME (fr30bf,callrd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3061 #define FLD(f) abuf->fields.sfmt_mov2dr.f
3062 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3063 int UNUSED written = 0;
3064 IADDR UNUSED pc = abuf->addr;
3066 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3071 SI opval = ADDSI (pc, 4);
3072 SET_H_DR (((UINT) 1), opval);
3073 TRACE_RESULT (current_cpu, abuf, "dr-1", 'x', opval);
3076 USI opval = * FLD (i_Ri);
3077 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
3078 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3083 SEM_BRANCH_FINI (vpc);
3088 /* call: call $label12 */
3091 SEM_FN_NAME (fr30bf,call) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3093 #define FLD(f) abuf->fields.sfmt_call.f
3094 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3095 int UNUSED written = 0;
3096 IADDR UNUSED pc = abuf->addr;
3098 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3102 SI opval = ADDSI (pc, 2);
3103 SET_H_DR (((UINT) 1), opval);
3104 TRACE_RESULT (current_cpu, abuf, "dr-1", 'x', opval);
3107 USI opval = FLD (i_label12);
3108 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3109 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3113 SEM_BRANCH_FINI (vpc);
3118 /* calld: call:d $label12 */
3121 SEM_FN_NAME (fr30bf,calld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3123 #define FLD(f) abuf->fields.sfmt_call.f
3124 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3125 int UNUSED written = 0;
3126 IADDR UNUSED pc = abuf->addr;
3128 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3133 SI opval = ADDSI (pc, 4);
3134 SET_H_DR (((UINT) 1), opval);
3135 TRACE_RESULT (current_cpu, abuf, "dr-1", 'x', opval);
3138 USI opval = FLD (i_label12);
3139 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3140 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3145 SEM_BRANCH_FINI (vpc);
3153 SEM_FN_NAME (fr30bf,ret) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3155 #define FLD(f) abuf->fields.fmt_empty.f
3156 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3157 int UNUSED written = 0;
3158 IADDR UNUSED pc = abuf->addr;
3160 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3163 USI opval = GET_H_DR (((UINT) 1));
3164 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
3165 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3168 SEM_BRANCH_FINI (vpc);
3176 SEM_FN_NAME (fr30bf,ret_d) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3178 #define FLD(f) abuf->fields.fmt_empty.f
3179 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3180 int UNUSED written = 0;
3181 IADDR UNUSED pc = abuf->addr;
3183 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3187 USI opval = GET_H_DR (((UINT) 1));
3188 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
3189 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3193 SEM_BRANCH_FINI (vpc);
3201 SEM_FN_NAME (fr30bf,int) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3203 #define FLD(f) abuf->fields.sfmt_int.f
3204 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3205 int UNUSED written = 0;
3206 IADDR UNUSED pc = abuf->addr;
3208 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3215 SI opval = fr30_int (current_cpu, pc, FLD (f_u8));
3216 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
3217 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3221 SEM_BRANCH_FINI (vpc);
3229 SEM_FN_NAME (fr30bf,inte) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3231 #define FLD(f) abuf->fields.fmt_empty.f
3232 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3233 int UNUSED written = 0;
3234 IADDR UNUSED pc = abuf->addr;
3236 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3243 SI opval = fr30_inte (current_cpu, pc);
3244 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
3245 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3249 SEM_BRANCH_FINI (vpc);
3257 SEM_FN_NAME (fr30bf,reti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3259 #define FLD(f) abuf->fields.fmt_empty.f
3260 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3261 int UNUSED written = 0;
3262 IADDR UNUSED pc = abuf->addr;
3264 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3266 if (EQBI (GET_H_SBIT (), 0)) {
3269 SI opval = GETMEMSI (current_cpu, pc, GET_H_DR (((UINT) 2)));
3270 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
3271 written |= (1 << 7);
3272 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3275 SI opval = ADDSI (GET_H_DR (((UINT) 2)), 4);
3276 SET_H_DR (((UINT) 2), opval);
3277 written |= (1 << 5);
3278 TRACE_RESULT (current_cpu, abuf, "dr-2", 'x', opval);
3281 SI opval = GETMEMSI (current_cpu, pc, GET_H_DR (((UINT) 2)));
3283 written |= (1 << 8);
3284 TRACE_RESULT (current_cpu, abuf, "ps", 'x', opval);
3287 SI opval = ADDSI (GET_H_DR (((UINT) 2)), 4);
3288 SET_H_DR (((UINT) 2), opval);
3289 written |= (1 << 5);
3290 TRACE_RESULT (current_cpu, abuf, "dr-2", 'x', opval);
3296 SI opval = GETMEMSI (current_cpu, pc, GET_H_DR (((UINT) 3)));
3297 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
3298 written |= (1 << 7);
3299 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3302 SI opval = ADDSI (GET_H_DR (((UINT) 3)), 4);
3303 SET_H_DR (((UINT) 3), opval);
3304 written |= (1 << 6);
3305 TRACE_RESULT (current_cpu, abuf, "dr-3", 'x', opval);
3308 SI opval = GETMEMSI (current_cpu, pc, GET_H_DR (((UINT) 3)));
3310 written |= (1 << 8);
3311 TRACE_RESULT (current_cpu, abuf, "ps", 'x', opval);
3314 SI opval = ADDSI (GET_H_DR (((UINT) 3)), 4);
3315 SET_H_DR (((UINT) 3), opval);
3316 written |= (1 << 6);
3317 TRACE_RESULT (current_cpu, abuf, "dr-3", 'x', opval);
3322 abuf->written = written;
3323 SEM_BRANCH_FINI (vpc);
3328 /* brad: bra:d $label9 */
3331 SEM_FN_NAME (fr30bf,brad) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3333 #define FLD(f) abuf->fields.sfmt_brad.f
3334 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3335 int UNUSED written = 0;
3336 IADDR UNUSED pc = abuf->addr;
3338 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3342 USI opval = FLD (i_label9);
3343 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3344 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3348 SEM_BRANCH_FINI (vpc);
3353 /* bra: bra $label9 */
3356 SEM_FN_NAME (fr30bf,bra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3358 #define FLD(f) abuf->fields.sfmt_brad.f
3359 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3360 int UNUSED written = 0;
3361 IADDR UNUSED pc = abuf->addr;
3363 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3366 USI opval = FLD (i_label9);
3367 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3368 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3371 SEM_BRANCH_FINI (vpc);
3376 /* bnod: bno:d $label9 */
3379 SEM_FN_NAME (fr30bf,bnod) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3381 #define FLD(f) abuf->fields.fmt_empty.f
3382 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3383 int UNUSED written = 0;
3384 IADDR UNUSED pc = abuf->addr;
3385 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3388 do { } while (0); /*nop*/
3395 /* bno: bno $label9 */
3398 SEM_FN_NAME (fr30bf,bno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3400 #define FLD(f) abuf->fields.fmt_empty.f
3401 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3402 int UNUSED written = 0;
3403 IADDR UNUSED pc = abuf->addr;
3404 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3406 do { } while (0); /*nop*/
3412 /* beqd: beq:d $label9 */
3415 SEM_FN_NAME (fr30bf,beqd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3417 #define FLD(f) abuf->fields.sfmt_brad.f
3418 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3419 int UNUSED written = 0;
3420 IADDR UNUSED pc = abuf->addr;
3422 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3427 USI opval = FLD (i_label9);
3428 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3429 written |= (1 << 2);
3430 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3435 abuf->written = written;
3436 SEM_BRANCH_FINI (vpc);
3441 /* beq: beq $label9 */
3444 SEM_FN_NAME (fr30bf,beq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3446 #define FLD(f) abuf->fields.sfmt_brad.f
3447 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3448 int UNUSED written = 0;
3449 IADDR UNUSED pc = abuf->addr;
3451 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3455 USI opval = FLD (i_label9);
3456 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3457 written |= (1 << 2);
3458 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3462 abuf->written = written;
3463 SEM_BRANCH_FINI (vpc);
3468 /* bned: bne:d $label9 */
3471 SEM_FN_NAME (fr30bf,bned) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3473 #define FLD(f) abuf->fields.sfmt_brad.f
3474 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3475 int UNUSED written = 0;
3476 IADDR UNUSED pc = abuf->addr;
3478 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3481 if (NOTBI (CPU (h_zbit))) {
3483 USI opval = FLD (i_label9);
3484 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3485 written |= (1 << 2);
3486 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3491 abuf->written = written;
3492 SEM_BRANCH_FINI (vpc);
3497 /* bne: bne $label9 */
3500 SEM_FN_NAME (fr30bf,bne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3502 #define FLD(f) abuf->fields.sfmt_brad.f
3503 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3504 int UNUSED written = 0;
3505 IADDR UNUSED pc = abuf->addr;
3507 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3509 if (NOTBI (CPU (h_zbit))) {
3511 USI opval = FLD (i_label9);
3512 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3513 written |= (1 << 2);
3514 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3518 abuf->written = written;
3519 SEM_BRANCH_FINI (vpc);
3524 /* bcd: bc:d $label9 */
3527 SEM_FN_NAME (fr30bf,bcd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3529 #define FLD(f) abuf->fields.sfmt_brad.f
3530 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3531 int UNUSED written = 0;
3532 IADDR UNUSED pc = abuf->addr;
3534 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3539 USI opval = FLD (i_label9);
3540 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3541 written |= (1 << 2);
3542 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3547 abuf->written = written;
3548 SEM_BRANCH_FINI (vpc);
3553 /* bc: bc $label9 */
3556 SEM_FN_NAME (fr30bf,bc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3558 #define FLD(f) abuf->fields.sfmt_brad.f
3559 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3560 int UNUSED written = 0;
3561 IADDR UNUSED pc = abuf->addr;
3563 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3567 USI opval = FLD (i_label9);
3568 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3569 written |= (1 << 2);
3570 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3574 abuf->written = written;
3575 SEM_BRANCH_FINI (vpc);
3580 /* bncd: bnc:d $label9 */
3583 SEM_FN_NAME (fr30bf,bncd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3585 #define FLD(f) abuf->fields.sfmt_brad.f
3586 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3587 int UNUSED written = 0;
3588 IADDR UNUSED pc = abuf->addr;
3590 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3593 if (NOTBI (CPU (h_cbit))) {
3595 USI opval = FLD (i_label9);
3596 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3597 written |= (1 << 2);
3598 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3603 abuf->written = written;
3604 SEM_BRANCH_FINI (vpc);
3609 /* bnc: bnc $label9 */
3612 SEM_FN_NAME (fr30bf,bnc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3614 #define FLD(f) abuf->fields.sfmt_brad.f
3615 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3616 int UNUSED written = 0;
3617 IADDR UNUSED pc = abuf->addr;
3619 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3621 if (NOTBI (CPU (h_cbit))) {
3623 USI opval = FLD (i_label9);
3624 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3625 written |= (1 << 2);
3626 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3630 abuf->written = written;
3631 SEM_BRANCH_FINI (vpc);
3636 /* bnd: bn:d $label9 */
3639 SEM_FN_NAME (fr30bf,bnd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3641 #define FLD(f) abuf->fields.sfmt_brad.f
3642 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3643 int UNUSED written = 0;
3644 IADDR UNUSED pc = abuf->addr;
3646 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3651 USI opval = FLD (i_label9);
3652 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3653 written |= (1 << 2);
3654 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3659 abuf->written = written;
3660 SEM_BRANCH_FINI (vpc);
3665 /* bn: bn $label9 */
3668 SEM_FN_NAME (fr30bf,bn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3670 #define FLD(f) abuf->fields.sfmt_brad.f
3671 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3672 int UNUSED written = 0;
3673 IADDR UNUSED pc = abuf->addr;
3675 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3679 USI opval = FLD (i_label9);
3680 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3681 written |= (1 << 2);
3682 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3686 abuf->written = written;
3687 SEM_BRANCH_FINI (vpc);
3692 /* bpd: bp:d $label9 */
3695 SEM_FN_NAME (fr30bf,bpd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3697 #define FLD(f) abuf->fields.sfmt_brad.f
3698 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3699 int UNUSED written = 0;
3700 IADDR UNUSED pc = abuf->addr;
3702 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3705 if (NOTBI (CPU (h_nbit))) {
3707 USI opval = FLD (i_label9);
3708 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3709 written |= (1 << 2);
3710 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3715 abuf->written = written;
3716 SEM_BRANCH_FINI (vpc);
3721 /* bp: bp $label9 */
3724 SEM_FN_NAME (fr30bf,bp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3726 #define FLD(f) abuf->fields.sfmt_brad.f
3727 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3728 int UNUSED written = 0;
3729 IADDR UNUSED pc = abuf->addr;
3731 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3733 if (NOTBI (CPU (h_nbit))) {
3735 USI opval = FLD (i_label9);
3736 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3737 written |= (1 << 2);
3738 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3742 abuf->written = written;
3743 SEM_BRANCH_FINI (vpc);
3748 /* bvd: bv:d $label9 */
3751 SEM_FN_NAME (fr30bf,bvd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3753 #define FLD(f) abuf->fields.sfmt_brad.f
3754 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3755 int UNUSED written = 0;
3756 IADDR UNUSED pc = abuf->addr;
3758 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3763 USI opval = FLD (i_label9);
3764 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3765 written |= (1 << 2);
3766 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3771 abuf->written = written;
3772 SEM_BRANCH_FINI (vpc);
3777 /* bv: bv $label9 */
3780 SEM_FN_NAME (fr30bf,bv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3782 #define FLD(f) abuf->fields.sfmt_brad.f
3783 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3784 int UNUSED written = 0;
3785 IADDR UNUSED pc = abuf->addr;
3787 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3791 USI opval = FLD (i_label9);
3792 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3793 written |= (1 << 2);
3794 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3798 abuf->written = written;
3799 SEM_BRANCH_FINI (vpc);
3804 /* bnvd: bnv:d $label9 */
3807 SEM_FN_NAME (fr30bf,bnvd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3809 #define FLD(f) abuf->fields.sfmt_brad.f
3810 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3811 int UNUSED written = 0;
3812 IADDR UNUSED pc = abuf->addr;
3814 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3817 if (NOTBI (CPU (h_vbit))) {
3819 USI opval = FLD (i_label9);
3820 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3821 written |= (1 << 2);
3822 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3827 abuf->written = written;
3828 SEM_BRANCH_FINI (vpc);
3833 /* bnv: bnv $label9 */
3836 SEM_FN_NAME (fr30bf,bnv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3838 #define FLD(f) abuf->fields.sfmt_brad.f
3839 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3840 int UNUSED written = 0;
3841 IADDR UNUSED pc = abuf->addr;
3843 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3845 if (NOTBI (CPU (h_vbit))) {
3847 USI opval = FLD (i_label9);
3848 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3849 written |= (1 << 2);
3850 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3854 abuf->written = written;
3855 SEM_BRANCH_FINI (vpc);
3860 /* bltd: blt:d $label9 */
3863 SEM_FN_NAME (fr30bf,bltd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3865 #define FLD(f) abuf->fields.sfmt_brad.f
3866 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3867 int UNUSED written = 0;
3868 IADDR UNUSED pc = abuf->addr;
3870 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3873 if (XORBI (CPU (h_vbit), CPU (h_nbit))) {
3875 USI opval = FLD (i_label9);
3876 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3877 written |= (1 << 3);
3878 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3883 abuf->written = written;
3884 SEM_BRANCH_FINI (vpc);
3889 /* blt: blt $label9 */
3892 SEM_FN_NAME (fr30bf,blt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3894 #define FLD(f) abuf->fields.sfmt_brad.f
3895 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3896 int UNUSED written = 0;
3897 IADDR UNUSED pc = abuf->addr;
3899 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3901 if (XORBI (CPU (h_vbit), CPU (h_nbit))) {
3903 USI opval = FLD (i_label9);
3904 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3905 written |= (1 << 3);
3906 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3910 abuf->written = written;
3911 SEM_BRANCH_FINI (vpc);
3916 /* bged: bge:d $label9 */
3919 SEM_FN_NAME (fr30bf,bged) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3921 #define FLD(f) abuf->fields.sfmt_brad.f
3922 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3923 int UNUSED written = 0;
3924 IADDR UNUSED pc = abuf->addr;
3926 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3929 if (NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit)))) {
3931 USI opval = FLD (i_label9);
3932 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3933 written |= (1 << 3);
3934 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3939 abuf->written = written;
3940 SEM_BRANCH_FINI (vpc);
3945 /* bge: bge $label9 */
3948 SEM_FN_NAME (fr30bf,bge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3950 #define FLD(f) abuf->fields.sfmt_brad.f
3951 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3952 int UNUSED written = 0;
3953 IADDR UNUSED pc = abuf->addr;
3955 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3957 if (NOTBI (XORBI (CPU (h_vbit), CPU (h_nbit)))) {
3959 USI opval = FLD (i_label9);
3960 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3961 written |= (1 << 3);
3962 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3966 abuf->written = written;
3967 SEM_BRANCH_FINI (vpc);
3972 /* bled: ble:d $label9 */
3975 SEM_FN_NAME (fr30bf,bled) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3977 #define FLD(f) abuf->fields.sfmt_brad.f
3978 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3979 int UNUSED written = 0;
3980 IADDR UNUSED pc = abuf->addr;
3982 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
3985 if (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit))) {
3987 USI opval = FLD (i_label9);
3988 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
3989 written |= (1 << 4);
3990 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
3995 abuf->written = written;
3996 SEM_BRANCH_FINI (vpc);
4001 /* ble: ble $label9 */
4004 SEM_FN_NAME (fr30bf,ble) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4006 #define FLD(f) abuf->fields.sfmt_brad.f
4007 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4008 int UNUSED written = 0;
4009 IADDR UNUSED pc = abuf->addr;
4011 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4013 if (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit))) {
4015 USI opval = FLD (i_label9);
4016 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
4017 written |= (1 << 4);
4018 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
4022 abuf->written = written;
4023 SEM_BRANCH_FINI (vpc);
4028 /* bgtd: bgt:d $label9 */
4031 SEM_FN_NAME (fr30bf,bgtd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4033 #define FLD(f) abuf->fields.sfmt_brad.f
4034 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4035 int UNUSED written = 0;
4036 IADDR UNUSED pc = abuf->addr;
4038 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4041 if (NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)))) {
4043 USI opval = FLD (i_label9);
4044 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
4045 written |= (1 << 4);
4046 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
4051 abuf->written = written;
4052 SEM_BRANCH_FINI (vpc);
4057 /* bgt: bgt $label9 */
4060 SEM_FN_NAME (fr30bf,bgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4062 #define FLD(f) abuf->fields.sfmt_brad.f
4063 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4064 int UNUSED written = 0;
4065 IADDR UNUSED pc = abuf->addr;
4067 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4069 if (NOTBI (ORBI (XORBI (CPU (h_vbit), CPU (h_nbit)), CPU (h_zbit)))) {
4071 USI opval = FLD (i_label9);
4072 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
4073 written |= (1 << 4);
4074 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
4078 abuf->written = written;
4079 SEM_BRANCH_FINI (vpc);
4084 /* blsd: bls:d $label9 */
4087 SEM_FN_NAME (fr30bf,blsd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4089 #define FLD(f) abuf->fields.sfmt_brad.f
4090 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4091 int UNUSED written = 0;
4092 IADDR UNUSED pc = abuf->addr;
4094 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4097 if (ORBI (CPU (h_cbit), CPU (h_zbit))) {
4099 USI opval = FLD (i_label9);
4100 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
4101 written |= (1 << 3);
4102 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
4107 abuf->written = written;
4108 SEM_BRANCH_FINI (vpc);
4113 /* bls: bls $label9 */
4116 SEM_FN_NAME (fr30bf,bls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4118 #define FLD(f) abuf->fields.sfmt_brad.f
4119 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4120 int UNUSED written = 0;
4121 IADDR UNUSED pc = abuf->addr;
4123 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4125 if (ORBI (CPU (h_cbit), CPU (h_zbit))) {
4127 USI opval = FLD (i_label9);
4128 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
4129 written |= (1 << 3);
4130 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
4134 abuf->written = written;
4135 SEM_BRANCH_FINI (vpc);
4140 /* bhid: bhi:d $label9 */
4143 SEM_FN_NAME (fr30bf,bhid) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4145 #define FLD(f) abuf->fields.sfmt_brad.f
4146 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4147 int UNUSED written = 0;
4148 IADDR UNUSED pc = abuf->addr;
4150 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4153 if (NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit)))) {
4155 USI opval = FLD (i_label9);
4156 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
4157 written |= (1 << 3);
4158 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
4163 abuf->written = written;
4164 SEM_BRANCH_FINI (vpc);
4169 /* bhi: bhi $label9 */
4172 SEM_FN_NAME (fr30bf,bhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4174 #define FLD(f) abuf->fields.sfmt_brad.f
4175 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4176 int UNUSED written = 0;
4177 IADDR UNUSED pc = abuf->addr;
4179 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4181 if (NOTBI (ORBI (CPU (h_cbit), CPU (h_zbit)))) {
4183 USI opval = FLD (i_label9);
4184 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc);
4185 written |= (1 << 3);
4186 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
4190 abuf->written = written;
4191 SEM_BRANCH_FINI (vpc);
4196 /* dmovr13: dmov $R13,@$dir10 */
4199 SEM_FN_NAME (fr30bf,dmovr13) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4201 #define FLD(f) abuf->fields.sfmt_dmovr13pi.f
4202 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4203 int UNUSED written = 0;
4204 IADDR UNUSED pc = abuf->addr;
4205 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4208 SI opval = CPU (h_gr[((UINT) 13)]);
4209 SETMEMSI (current_cpu, pc, FLD (f_dir10), opval);
4210 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4217 /* dmovr13h: dmovh $R13,@$dir9 */
4220 SEM_FN_NAME (fr30bf,dmovr13h) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4222 #define FLD(f) abuf->fields.sfmt_dmovr13pih.f
4223 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4224 int UNUSED written = 0;
4225 IADDR UNUSED pc = abuf->addr;
4226 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4229 HI opval = CPU (h_gr[((UINT) 13)]);
4230 SETMEMHI (current_cpu, pc, FLD (f_dir9), opval);
4231 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4238 /* dmovr13b: dmovb $R13,@$dir8 */
4241 SEM_FN_NAME (fr30bf,dmovr13b) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4243 #define FLD(f) abuf->fields.sfmt_dmovr13pib.f
4244 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4245 int UNUSED written = 0;
4246 IADDR UNUSED pc = abuf->addr;
4247 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4250 QI opval = CPU (h_gr[((UINT) 13)]);
4251 SETMEMQI (current_cpu, pc, FLD (f_dir8), opval);
4252 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4259 /* dmovr13pi: dmov @$R13+,@$dir10 */
4262 SEM_FN_NAME (fr30bf,dmovr13pi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4264 #define FLD(f) abuf->fields.sfmt_dmovr13pi.f
4265 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4266 int UNUSED written = 0;
4267 IADDR UNUSED pc = abuf->addr;
4268 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4272 SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 13)]));
4273 SETMEMSI (current_cpu, pc, FLD (f_dir10), opval);
4274 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4277 SI opval = ADDSI (CPU (h_gr[((UINT) 13)]), 4);
4278 CPU (h_gr[((UINT) 13)]) = opval;
4279 TRACE_RESULT (current_cpu, abuf, "gr-13", 'x', opval);
4287 /* dmovr13pih: dmovh @$R13+,@$dir9 */
4290 SEM_FN_NAME (fr30bf,dmovr13pih) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4292 #define FLD(f) abuf->fields.sfmt_dmovr13pih.f
4293 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4294 int UNUSED written = 0;
4295 IADDR UNUSED pc = abuf->addr;
4296 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4300 HI opval = GETMEMHI (current_cpu, pc, CPU (h_gr[((UINT) 13)]));
4301 SETMEMHI (current_cpu, pc, FLD (f_dir9), opval);
4302 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4305 SI opval = ADDSI (CPU (h_gr[((UINT) 13)]), 2);
4306 CPU (h_gr[((UINT) 13)]) = opval;
4307 TRACE_RESULT (current_cpu, abuf, "gr-13", 'x', opval);
4315 /* dmovr13pib: dmovb @$R13+,@$dir8 */
4318 SEM_FN_NAME (fr30bf,dmovr13pib) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4320 #define FLD(f) abuf->fields.sfmt_dmovr13pib.f
4321 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4322 int UNUSED written = 0;
4323 IADDR UNUSED pc = abuf->addr;
4324 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4328 QI opval = GETMEMQI (current_cpu, pc, CPU (h_gr[((UINT) 13)]));
4329 SETMEMQI (current_cpu, pc, FLD (f_dir8), opval);
4330 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4333 SI opval = ADDSI (CPU (h_gr[((UINT) 13)]), 1);
4334 CPU (h_gr[((UINT) 13)]) = opval;
4335 TRACE_RESULT (current_cpu, abuf, "gr-13", 'x', opval);
4343 /* dmovr15pi: dmov @$R15+,@$dir10 */
4346 SEM_FN_NAME (fr30bf,dmovr15pi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4348 #define FLD(f) abuf->fields.sfmt_dmovr15pi.f
4349 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4350 int UNUSED written = 0;
4351 IADDR UNUSED pc = abuf->addr;
4352 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4356 SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4357 SETMEMSI (current_cpu, pc, FLD (f_dir10), opval);
4358 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4361 SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4362 CPU (h_gr[((UINT) 15)]) = opval;
4363 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4371 /* dmov2r13: dmov @$dir10,$R13 */
4374 SEM_FN_NAME (fr30bf,dmov2r13) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4376 #define FLD(f) abuf->fields.sfmt_dmovr13pi.f
4377 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4378 int UNUSED written = 0;
4379 IADDR UNUSED pc = abuf->addr;
4380 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4383 SI opval = GETMEMSI (current_cpu, pc, FLD (f_dir10));
4384 CPU (h_gr[((UINT) 13)]) = opval;
4385 TRACE_RESULT (current_cpu, abuf, "gr-13", 'x', opval);
4392 /* dmov2r13h: dmovh @$dir9,$R13 */
4395 SEM_FN_NAME (fr30bf,dmov2r13h) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4397 #define FLD(f) abuf->fields.sfmt_dmovr13pih.f
4398 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4399 int UNUSED written = 0;
4400 IADDR UNUSED pc = abuf->addr;
4401 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4404 SI opval = GETMEMHI (current_cpu, pc, FLD (f_dir9));
4405 CPU (h_gr[((UINT) 13)]) = opval;
4406 TRACE_RESULT (current_cpu, abuf, "gr-13", 'x', opval);
4413 /* dmov2r13b: dmovb @$dir8,$R13 */
4416 SEM_FN_NAME (fr30bf,dmov2r13b) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4418 #define FLD(f) abuf->fields.sfmt_dmovr13pib.f
4419 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4420 int UNUSED written = 0;
4421 IADDR UNUSED pc = abuf->addr;
4422 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4425 SI opval = GETMEMQI (current_cpu, pc, FLD (f_dir8));
4426 CPU (h_gr[((UINT) 13)]) = opval;
4427 TRACE_RESULT (current_cpu, abuf, "gr-13", 'x', opval);
4434 /* dmov2r13pi: dmov @$dir10,@$R13+ */
4437 SEM_FN_NAME (fr30bf,dmov2r13pi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4439 #define FLD(f) abuf->fields.sfmt_dmovr13pi.f
4440 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4441 int UNUSED written = 0;
4442 IADDR UNUSED pc = abuf->addr;
4443 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4447 SI opval = GETMEMSI (current_cpu, pc, FLD (f_dir10));
4448 SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 13)]), opval);
4449 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4452 SI opval = ADDSI (CPU (h_gr[((UINT) 13)]), 4);
4453 CPU (h_gr[((UINT) 13)]) = opval;
4454 TRACE_RESULT (current_cpu, abuf, "gr-13", 'x', opval);
4462 /* dmov2r13pih: dmovh @$dir9,@$R13+ */
4465 SEM_FN_NAME (fr30bf,dmov2r13pih) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4467 #define FLD(f) abuf->fields.sfmt_dmovr13pih.f
4468 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4469 int UNUSED written = 0;
4470 IADDR UNUSED pc = abuf->addr;
4471 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4475 HI opval = GETMEMHI (current_cpu, pc, FLD (f_dir9));
4476 SETMEMHI (current_cpu, pc, CPU (h_gr[((UINT) 13)]), opval);
4477 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4480 SI opval = ADDSI (CPU (h_gr[((UINT) 13)]), 2);
4481 CPU (h_gr[((UINT) 13)]) = opval;
4482 TRACE_RESULT (current_cpu, abuf, "gr-13", 'x', opval);
4490 /* dmov2r13pib: dmovb @$dir8,@$R13+ */
4493 SEM_FN_NAME (fr30bf,dmov2r13pib) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4495 #define FLD(f) abuf->fields.sfmt_dmovr13pib.f
4496 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4497 int UNUSED written = 0;
4498 IADDR UNUSED pc = abuf->addr;
4499 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4503 QI opval = GETMEMQI (current_cpu, pc, FLD (f_dir8));
4504 SETMEMQI (current_cpu, pc, CPU (h_gr[((UINT) 13)]), opval);
4505 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4508 SI opval = ADDSI (CPU (h_gr[((UINT) 13)]), 1);
4509 CPU (h_gr[((UINT) 13)]) = opval;
4510 TRACE_RESULT (current_cpu, abuf, "gr-13", 'x', opval);
4518 /* dmov2r15pd: dmov @$dir10,@-$R15 */
4521 SEM_FN_NAME (fr30bf,dmov2r15pd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4523 #define FLD(f) abuf->fields.sfmt_dmovr15pi.f
4524 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4525 int UNUSED written = 0;
4526 IADDR UNUSED pc = abuf->addr;
4527 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4531 SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
4532 CPU (h_gr[((UINT) 15)]) = opval;
4533 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4536 SI opval = GETMEMSI (current_cpu, pc, FLD (f_dir10));
4537 SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
4538 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4546 /* ldres: ldres @$Ri+,$u4 */
4549 SEM_FN_NAME (fr30bf,ldres) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4551 #define FLD(f) abuf->fields.sfmt_add2.f
4552 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4553 int UNUSED written = 0;
4554 IADDR UNUSED pc = abuf->addr;
4555 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4558 SI opval = ADDSI (* FLD (i_Ri), 4);
4559 * FLD (i_Ri) = opval;
4560 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
4567 /* stres: stres $u4,@$Ri+ */
4570 SEM_FN_NAME (fr30bf,stres) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4572 #define FLD(f) abuf->fields.sfmt_add2.f
4573 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4574 int UNUSED written = 0;
4575 IADDR UNUSED pc = abuf->addr;
4576 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4579 SI opval = ADDSI (* FLD (i_Ri), 4);
4580 * FLD (i_Ri) = opval;
4581 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
4588 /* copop: copop $u4c,$ccc,$CRj,$CRi */
4591 SEM_FN_NAME (fr30bf,copop) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4593 #define FLD(f) abuf->fields.fmt_empty.f
4594 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4595 int UNUSED written = 0;
4596 IADDR UNUSED pc = abuf->addr;
4597 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4599 do { } while (0); /*nop*/
4605 /* copld: copld $u4c,$ccc,$Rjc,$CRi */
4608 SEM_FN_NAME (fr30bf,copld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4610 #define FLD(f) abuf->fields.fmt_empty.f
4611 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4612 int UNUSED written = 0;
4613 IADDR UNUSED pc = abuf->addr;
4614 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4616 do { } while (0); /*nop*/
4622 /* copst: copst $u4c,$ccc,$CRj,$Ric */
4625 SEM_FN_NAME (fr30bf,copst) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4627 #define FLD(f) abuf->fields.fmt_empty.f
4628 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4629 int UNUSED written = 0;
4630 IADDR UNUSED pc = abuf->addr;
4631 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4633 do { } while (0); /*nop*/
4639 /* copsv: copsv $u4c,$ccc,$CRj,$Ric */
4642 SEM_FN_NAME (fr30bf,copsv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4644 #define FLD(f) abuf->fields.fmt_empty.f
4645 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4646 int UNUSED written = 0;
4647 IADDR UNUSED pc = abuf->addr;
4648 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4650 do { } while (0); /*nop*/
4659 SEM_FN_NAME (fr30bf,nop) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4661 #define FLD(f) abuf->fields.fmt_empty.f
4662 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4663 int UNUSED written = 0;
4664 IADDR UNUSED pc = abuf->addr;
4665 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4667 do { } while (0); /*nop*/
4673 /* andccr: andccr $u8 */
4676 SEM_FN_NAME (fr30bf,andccr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4678 #define FLD(f) abuf->fields.sfmt_int.f
4679 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4680 int UNUSED written = 0;
4681 IADDR UNUSED pc = abuf->addr;
4682 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4685 UQI opval = ANDQI (GET_H_CCR (), FLD (f_u8));
4687 TRACE_RESULT (current_cpu, abuf, "ccr", 'x', opval);
4694 /* orccr: orccr $u8 */
4697 SEM_FN_NAME (fr30bf,orccr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4699 #define FLD(f) abuf->fields.sfmt_int.f
4700 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4701 int UNUSED written = 0;
4702 IADDR UNUSED pc = abuf->addr;
4703 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4706 UQI opval = ORQI (GET_H_CCR (), FLD (f_u8));
4708 TRACE_RESULT (current_cpu, abuf, "ccr", 'x', opval);
4715 /* stilm: stilm $u8 */
4718 SEM_FN_NAME (fr30bf,stilm) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4720 #define FLD(f) abuf->fields.sfmt_int.f
4721 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4722 int UNUSED written = 0;
4723 IADDR UNUSED pc = abuf->addr;
4724 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4727 UQI opval = ANDSI (FLD (f_u8), 31);
4729 TRACE_RESULT (current_cpu, abuf, "ilm", 'x', opval);
4736 /* addsp: addsp $s10 */
4739 SEM_FN_NAME (fr30bf,addsp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4741 #define FLD(f) abuf->fields.sfmt_addsp.f
4742 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4743 int UNUSED written = 0;
4744 IADDR UNUSED pc = abuf->addr;
4745 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4748 SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), FLD (f_s10));
4749 CPU (h_gr[((UINT) 15)]) = opval;
4750 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4757 /* extsb: extsb $Ri */
4760 SEM_FN_NAME (fr30bf,extsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4762 #define FLD(f) abuf->fields.sfmt_add2.f
4763 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4764 int UNUSED written = 0;
4765 IADDR UNUSED pc = abuf->addr;
4766 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4769 SI opval = EXTQISI (ANDQI (* FLD (i_Ri), 255));
4770 * FLD (i_Ri) = opval;
4771 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
4778 /* extub: extub $Ri */
4781 SEM_FN_NAME (fr30bf,extub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4783 #define FLD(f) abuf->fields.sfmt_add2.f
4784 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4785 int UNUSED written = 0;
4786 IADDR UNUSED pc = abuf->addr;
4787 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4790 SI opval = ZEXTQISI (ANDQI (* FLD (i_Ri), 255));
4791 * FLD (i_Ri) = opval;
4792 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
4799 /* extsh: extsh $Ri */
4802 SEM_FN_NAME (fr30bf,extsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4804 #define FLD(f) abuf->fields.sfmt_add2.f
4805 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4806 int UNUSED written = 0;
4807 IADDR UNUSED pc = abuf->addr;
4808 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4811 SI opval = EXTHISI (ANDHI (* FLD (i_Ri), 65535));
4812 * FLD (i_Ri) = opval;
4813 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
4820 /* extuh: extuh $Ri */
4823 SEM_FN_NAME (fr30bf,extuh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4825 #define FLD(f) abuf->fields.sfmt_add2.f
4826 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4827 int UNUSED written = 0;
4828 IADDR UNUSED pc = abuf->addr;
4829 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4832 SI opval = ZEXTHISI (ANDHI (* FLD (i_Ri), 65535));
4833 * FLD (i_Ri) = opval;
4834 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
4841 /* ldm0: ldm0 ($reglist_low_ld) */
4844 SEM_FN_NAME (fr30bf,ldm0) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4846 #define FLD(f) abuf->fields.sfmt_ldm0.f
4847 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4848 int UNUSED written = 0;
4849 IADDR UNUSED pc = abuf->addr;
4850 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
4853 if (ANDSI (FLD (f_reglist_low_ld), 1)) {
4856 SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4857 CPU (h_gr[((UINT) 0)]) = opval;
4858 written |= (1 << 3);
4859 TRACE_RESULT (current_cpu, abuf, "gr-0", 'x', opval);
4862 SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4863 CPU (h_gr[((UINT) 15)]) = opval;
4864 written |= (1 << 5);
4865 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4869 if (ANDSI (FLD (f_reglist_low_ld), 2)) {
4872 SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4873 CPU (h_gr[((UINT) 1)]) = opval;
4874 written |= (1 << 4);
4875 TRACE_RESULT (current_cpu, abuf, "gr-1", 'x', opval);
4878 SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4879 CPU (h_gr[((UINT) 15)]) = opval;
4880 written |= (1 << 5);
4881 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4885 if (ANDSI (FLD (f_reglist_low_ld), 4)) {
4888 SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4889 CPU (h_gr[((UINT) 2)]) = opval;
4890 written |= (1 << 6);
4891 TRACE_RESULT (current_cpu, abuf, "gr-2", 'x', opval);
4894 SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4895 CPU (h_gr[((UINT) 15)]) = opval;
4896 written |= (1 << 5);
4897 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4901 if (ANDSI (FLD (f_reglist_low_ld), 8)) {
4904 SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4905 CPU (h_gr[((UINT) 3)]) = opval;
4906 written |= (1 << 7);
4907 TRACE_RESULT (current_cpu, abuf, "gr-3", 'x', opval);
4910 SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4911 CPU (h_gr[((UINT) 15)]) = opval;
4912 written |= (1 << 5);
4913 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4917 if (ANDSI (FLD (f_reglist_low_ld), 16)) {
4920 SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4921 CPU (h_gr[((UINT) 4)]) = opval;
4922 written |= (1 << 8);
4923 TRACE_RESULT (current_cpu, abuf, "gr-4", 'x', opval);
4926 SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4927 CPU (h_gr[((UINT) 15)]) = opval;
4928 written |= (1 << 5);
4929 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4933 if (ANDSI (FLD (f_reglist_low_ld), 32)) {
4936 SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4937 CPU (h_gr[((UINT) 5)]) = opval;
4938 written |= (1 << 9);
4939 TRACE_RESULT (current_cpu, abuf, "gr-5", 'x', opval);
4942 SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4943 CPU (h_gr[((UINT) 15)]) = opval;
4944 written |= (1 << 5);
4945 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4949 if (ANDSI (FLD (f_reglist_low_ld), 64)) {
4952 SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4953 CPU (h_gr[((UINT) 6)]) = opval;
4954 written |= (1 << 10);
4955 TRACE_RESULT (current_cpu, abuf, "gr-6", 'x', opval);
4958 SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4959 CPU (h_gr[((UINT) 15)]) = opval;
4960 written |= (1 << 5);
4961 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4965 if (ANDSI (FLD (f_reglist_low_ld), 128)) {
4968 SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
4969 CPU (h_gr[((UINT) 7)]) = opval;
4970 written |= (1 << 11);
4971 TRACE_RESULT (current_cpu, abuf, "gr-7", 'x', opval);
4974 SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
4975 CPU (h_gr[((UINT) 15)]) = opval;
4976 written |= (1 << 5);
4977 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
4983 abuf->written = written;
4988 /* ldm1: ldm1 ($reglist_hi_ld) */
4991 SEM_FN_NAME (fr30bf,ldm1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4993 #define FLD(f) abuf->fields.sfmt_ldm1.f
4994 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4995 int UNUSED written = 0;
4996 IADDR UNUSED pc = abuf->addr;
4997 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5000 if (ANDSI (FLD (f_reglist_hi_ld), 1)) {
5003 SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
5004 CPU (h_gr[((UINT) 8)]) = opval;
5005 written |= (1 << 9);
5006 TRACE_RESULT (current_cpu, abuf, "gr-8", 'x', opval);
5009 SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
5010 CPU (h_gr[((UINT) 15)]) = opval;
5011 written |= (1 << 8);
5012 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5016 if (ANDSI (FLD (f_reglist_hi_ld), 2)) {
5019 SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
5020 CPU (h_gr[((UINT) 9)]) = opval;
5021 written |= (1 << 10);
5022 TRACE_RESULT (current_cpu, abuf, "gr-9", 'x', opval);
5025 SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
5026 CPU (h_gr[((UINT) 15)]) = opval;
5027 written |= (1 << 8);
5028 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5032 if (ANDSI (FLD (f_reglist_hi_ld), 4)) {
5035 SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
5036 CPU (h_gr[((UINT) 10)]) = opval;
5037 written |= (1 << 3);
5038 TRACE_RESULT (current_cpu, abuf, "gr-10", 'x', opval);
5041 SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
5042 CPU (h_gr[((UINT) 15)]) = opval;
5043 written |= (1 << 8);
5044 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5048 if (ANDSI (FLD (f_reglist_hi_ld), 8)) {
5051 SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
5052 CPU (h_gr[((UINT) 11)]) = opval;
5053 written |= (1 << 4);
5054 TRACE_RESULT (current_cpu, abuf, "gr-11", 'x', opval);
5057 SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
5058 CPU (h_gr[((UINT) 15)]) = opval;
5059 written |= (1 << 8);
5060 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5064 if (ANDSI (FLD (f_reglist_hi_ld), 16)) {
5067 SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
5068 CPU (h_gr[((UINT) 12)]) = opval;
5069 written |= (1 << 5);
5070 TRACE_RESULT (current_cpu, abuf, "gr-12", 'x', opval);
5073 SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
5074 CPU (h_gr[((UINT) 15)]) = opval;
5075 written |= (1 << 8);
5076 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5080 if (ANDSI (FLD (f_reglist_hi_ld), 32)) {
5083 SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
5084 CPU (h_gr[((UINT) 13)]) = opval;
5085 written |= (1 << 6);
5086 TRACE_RESULT (current_cpu, abuf, "gr-13", 'x', opval);
5089 SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
5090 CPU (h_gr[((UINT) 15)]) = opval;
5091 written |= (1 << 8);
5092 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5096 if (ANDSI (FLD (f_reglist_hi_ld), 64)) {
5099 SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
5100 CPU (h_gr[((UINT) 14)]) = opval;
5101 written |= (1 << 7);
5102 TRACE_RESULT (current_cpu, abuf, "gr-14", 'x', opval);
5105 SI opval = ADDSI (CPU (h_gr[((UINT) 15)]), 4);
5106 CPU (h_gr[((UINT) 15)]) = opval;
5107 written |= (1 << 8);
5108 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5112 if (ANDSI (FLD (f_reglist_hi_ld), 128)) {
5114 SI opval = GETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]));
5115 CPU (h_gr[((UINT) 15)]) = opval;
5116 written |= (1 << 8);
5117 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5122 abuf->written = written;
5127 /* stm0: stm0 ($reglist_low_st) */
5130 SEM_FN_NAME (fr30bf,stm0) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5132 #define FLD(f) abuf->fields.sfmt_stm0.f
5133 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5134 int UNUSED written = 0;
5135 IADDR UNUSED pc = abuf->addr;
5136 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5139 if (ANDSI (FLD (f_reglist_low_st), 1)) {
5142 SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5143 CPU (h_gr[((UINT) 15)]) = opval;
5144 written |= (1 << 10);
5145 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5148 SI opval = CPU (h_gr[((UINT) 7)]);
5149 SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5150 written |= (1 << 11);
5151 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5155 if (ANDSI (FLD (f_reglist_low_st), 2)) {
5158 SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5159 CPU (h_gr[((UINT) 15)]) = opval;
5160 written |= (1 << 10);
5161 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5164 SI opval = CPU (h_gr[((UINT) 6)]);
5165 SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5166 written |= (1 << 11);
5167 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5171 if (ANDSI (FLD (f_reglist_low_st), 4)) {
5174 SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5175 CPU (h_gr[((UINT) 15)]) = opval;
5176 written |= (1 << 10);
5177 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5180 SI opval = CPU (h_gr[((UINT) 5)]);
5181 SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5182 written |= (1 << 11);
5183 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5187 if (ANDSI (FLD (f_reglist_low_st), 8)) {
5190 SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5191 CPU (h_gr[((UINT) 15)]) = opval;
5192 written |= (1 << 10);
5193 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5196 SI opval = CPU (h_gr[((UINT) 4)]);
5197 SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5198 written |= (1 << 11);
5199 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5203 if (ANDSI (FLD (f_reglist_low_st), 16)) {
5206 SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5207 CPU (h_gr[((UINT) 15)]) = opval;
5208 written |= (1 << 10);
5209 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5212 SI opval = CPU (h_gr[((UINT) 3)]);
5213 SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5214 written |= (1 << 11);
5215 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5219 if (ANDSI (FLD (f_reglist_low_st), 32)) {
5222 SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5223 CPU (h_gr[((UINT) 15)]) = opval;
5224 written |= (1 << 10);
5225 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5228 SI opval = CPU (h_gr[((UINT) 2)]);
5229 SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5230 written |= (1 << 11);
5231 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5235 if (ANDSI (FLD (f_reglist_low_st), 64)) {
5238 SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5239 CPU (h_gr[((UINT) 15)]) = opval;
5240 written |= (1 << 10);
5241 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5244 SI opval = CPU (h_gr[((UINT) 1)]);
5245 SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5246 written |= (1 << 11);
5247 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5251 if (ANDSI (FLD (f_reglist_low_st), 128)) {
5254 SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5255 CPU (h_gr[((UINT) 15)]) = opval;
5256 written |= (1 << 10);
5257 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5260 SI opval = CPU (h_gr[((UINT) 0)]);
5261 SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5262 written |= (1 << 11);
5263 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5269 abuf->written = written;
5274 /* stm1: stm1 ($reglist_hi_st) */
5277 SEM_FN_NAME (fr30bf,stm1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5279 #define FLD(f) abuf->fields.sfmt_stm1.f
5280 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5281 int UNUSED written = 0;
5282 IADDR UNUSED pc = abuf->addr;
5283 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5286 if (ANDSI (FLD (f_reglist_hi_st), 1)) {
5289 tmp_save_r15 = CPU (h_gr[((UINT) 15)]);
5291 SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5292 CPU (h_gr[((UINT) 15)]) = opval;
5293 written |= (1 << 9);
5294 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5297 SI opval = tmp_save_r15;
5298 SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5299 written |= (1 << 10);
5300 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5304 if (ANDSI (FLD (f_reglist_hi_st), 2)) {
5307 SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5308 CPU (h_gr[((UINT) 15)]) = opval;
5309 written |= (1 << 9);
5310 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5313 SI opval = CPU (h_gr[((UINT) 14)]);
5314 SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5315 written |= (1 << 10);
5316 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5320 if (ANDSI (FLD (f_reglist_hi_st), 4)) {
5323 SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5324 CPU (h_gr[((UINT) 15)]) = opval;
5325 written |= (1 << 9);
5326 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5329 SI opval = CPU (h_gr[((UINT) 13)]);
5330 SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5331 written |= (1 << 10);
5332 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5336 if (ANDSI (FLD (f_reglist_hi_st), 8)) {
5339 SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5340 CPU (h_gr[((UINT) 15)]) = opval;
5341 written |= (1 << 9);
5342 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5345 SI opval = CPU (h_gr[((UINT) 12)]);
5346 SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5347 written |= (1 << 10);
5348 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5352 if (ANDSI (FLD (f_reglist_hi_st), 16)) {
5355 SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5356 CPU (h_gr[((UINT) 15)]) = opval;
5357 written |= (1 << 9);
5358 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5361 SI opval = CPU (h_gr[((UINT) 11)]);
5362 SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5363 written |= (1 << 10);
5364 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5368 if (ANDSI (FLD (f_reglist_hi_st), 32)) {
5371 SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5372 CPU (h_gr[((UINT) 15)]) = opval;
5373 written |= (1 << 9);
5374 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5377 SI opval = CPU (h_gr[((UINT) 10)]);
5378 SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5379 written |= (1 << 10);
5380 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5384 if (ANDSI (FLD (f_reglist_hi_st), 64)) {
5387 SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5388 CPU (h_gr[((UINT) 15)]) = opval;
5389 written |= (1 << 9);
5390 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5393 SI opval = CPU (h_gr[((UINT) 9)]);
5394 SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5395 written |= (1 << 10);
5396 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5400 if (ANDSI (FLD (f_reglist_hi_st), 128)) {
5403 SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5404 CPU (h_gr[((UINT) 15)]) = opval;
5405 written |= (1 << 9);
5406 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5409 SI opval = CPU (h_gr[((UINT) 8)]);
5410 SETMEMSI (current_cpu, pc, CPU (h_gr[((UINT) 15)]), opval);
5411 written |= (1 << 10);
5412 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5418 abuf->written = written;
5423 /* enter: enter $u10 */
5426 SEM_FN_NAME (fr30bf,enter) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5428 #define FLD(f) abuf->fields.sfmt_enter.f
5429 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5430 int UNUSED written = 0;
5431 IADDR UNUSED pc = abuf->addr;
5432 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5436 tmp_tmp = SUBSI (CPU (h_gr[((UINT) 15)]), 4);
5438 SI opval = CPU (h_gr[((UINT) 14)]);
5439 SETMEMSI (current_cpu, pc, tmp_tmp, opval);
5440 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5444 CPU (h_gr[((UINT) 14)]) = opval;
5445 TRACE_RESULT (current_cpu, abuf, "gr-14", 'x', opval);
5448 SI opval = SUBSI (CPU (h_gr[((UINT) 15)]), FLD (f_u10));
5449 CPU (h_gr[((UINT) 15)]) = opval;
5450 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5461 SEM_FN_NAME (fr30bf,leave) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5463 #define FLD(f) abuf->fields.sfmt_enter.f
5464 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5465 int UNUSED written = 0;
5466 IADDR UNUSED pc = abuf->addr;
5467 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5471 SI opval = ADDSI (CPU (h_gr[((UINT) 14)]), 4);
5472 CPU (h_gr[((UINT) 15)]) = opval;
5473 TRACE_RESULT (current_cpu, abuf, "gr-15", 'x', opval);
5476 SI opval = GETMEMSI (current_cpu, pc, SUBSI (CPU (h_gr[((UINT) 15)]), 4));
5477 CPU (h_gr[((UINT) 14)]) = opval;
5478 TRACE_RESULT (current_cpu, abuf, "gr-14", 'x', opval);
5486 /* xchb: xchb @$Rj,$Ri */
5489 SEM_FN_NAME (fr30bf,xchb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5491 #define FLD(f) abuf->fields.sfmt_add.f
5492 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5493 int UNUSED written = 0;
5494 IADDR UNUSED pc = abuf->addr;
5495 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 2);
5499 tmp_tmp = * FLD (i_Ri);
5501 SI opval = GETMEMUQI (current_cpu, pc, * FLD (i_Rj));
5502 * FLD (i_Ri) = opval;
5503 TRACE_RESULT (current_cpu, abuf, "Ri", 'x', opval);
5506 UQI opval = tmp_tmp;
5507 SETMEMUQI (current_cpu, pc, * FLD (i_Rj), opval);
5508 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5516 /* Table of all semantic fns. */
5518 static const struct sem_fn_desc sem_fns[] = {
5519 { FR30BF_INSN_X_INVALID, SEM_FN_NAME (fr30bf,x_invalid) },
5520 { FR30BF_INSN_X_AFTER, SEM_FN_NAME (fr30bf,x_after) },
5521 { FR30BF_INSN_X_BEFORE, SEM_FN_NAME (fr30bf,x_before) },
5522 { FR30BF_INSN_X_CTI_CHAIN, SEM_FN_NAME (fr30bf,x_cti_chain) },
5523 { FR30BF_INSN_X_CHAIN, SEM_FN_NAME (fr30bf,x_chain) },
5524 { FR30BF_INSN_X_BEGIN, SEM_FN_NAME (fr30bf,x_begin) },
5525 { FR30BF_INSN_ADD, SEM_FN_NAME (fr30bf,add) },
5526 { FR30BF_INSN_ADDI, SEM_FN_NAME (fr30bf,addi) },
5527 { FR30BF_INSN_ADD2, SEM_FN_NAME (fr30bf,add2) },
5528 { FR30BF_INSN_ADDC, SEM_FN_NAME (fr30bf,addc) },
5529 { FR30BF_INSN_ADDN, SEM_FN_NAME (fr30bf,addn) },
5530 { FR30BF_INSN_ADDNI, SEM_FN_NAME (fr30bf,addni) },
5531 { FR30BF_INSN_ADDN2, SEM_FN_NAME (fr30bf,addn2) },
5532 { FR30BF_INSN_SUB, SEM_FN_NAME (fr30bf,sub) },
5533 { FR30BF_INSN_SUBC, SEM_FN_NAME (fr30bf,subc) },
5534 { FR30BF_INSN_SUBN, SEM_FN_NAME (fr30bf,subn) },
5535 { FR30BF_INSN_CMP, SEM_FN_NAME (fr30bf,cmp) },
5536 { FR30BF_INSN_CMPI, SEM_FN_NAME (fr30bf,cmpi) },
5537 { FR30BF_INSN_CMP2, SEM_FN_NAME (fr30bf,cmp2) },
5538 { FR30BF_INSN_AND, SEM_FN_NAME (fr30bf,and) },
5539 { FR30BF_INSN_OR, SEM_FN_NAME (fr30bf,or) },
5540 { FR30BF_INSN_EOR, SEM_FN_NAME (fr30bf,eor) },
5541 { FR30BF_INSN_ANDM, SEM_FN_NAME (fr30bf,andm) },
5542 { FR30BF_INSN_ANDH, SEM_FN_NAME (fr30bf,andh) },
5543 { FR30BF_INSN_ANDB, SEM_FN_NAME (fr30bf,andb) },
5544 { FR30BF_INSN_ORM, SEM_FN_NAME (fr30bf,orm) },
5545 { FR30BF_INSN_ORH, SEM_FN_NAME (fr30bf,orh) },
5546 { FR30BF_INSN_ORB, SEM_FN_NAME (fr30bf,orb) },
5547 { FR30BF_INSN_EORM, SEM_FN_NAME (fr30bf,eorm) },
5548 { FR30BF_INSN_EORH, SEM_FN_NAME (fr30bf,eorh) },
5549 { FR30BF_INSN_EORB, SEM_FN_NAME (fr30bf,eorb) },
5550 { FR30BF_INSN_BANDL, SEM_FN_NAME (fr30bf,bandl) },
5551 { FR30BF_INSN_BORL, SEM_FN_NAME (fr30bf,borl) },
5552 { FR30BF_INSN_BEORL, SEM_FN_NAME (fr30bf,beorl) },
5553 { FR30BF_INSN_BANDH, SEM_FN_NAME (fr30bf,bandh) },
5554 { FR30BF_INSN_BORH, SEM_FN_NAME (fr30bf,borh) },
5555 { FR30BF_INSN_BEORH, SEM_FN_NAME (fr30bf,beorh) },
5556 { FR30BF_INSN_BTSTL, SEM_FN_NAME (fr30bf,btstl) },
5557 { FR30BF_INSN_BTSTH, SEM_FN_NAME (fr30bf,btsth) },
5558 { FR30BF_INSN_MUL, SEM_FN_NAME (fr30bf,mul) },
5559 { FR30BF_INSN_MULU, SEM_FN_NAME (fr30bf,mulu) },
5560 { FR30BF_INSN_MULH, SEM_FN_NAME (fr30bf,mulh) },
5561 { FR30BF_INSN_MULUH, SEM_FN_NAME (fr30bf,muluh) },
5562 { FR30BF_INSN_DIV0S, SEM_FN_NAME (fr30bf,div0s) },
5563 { FR30BF_INSN_DIV0U, SEM_FN_NAME (fr30bf,div0u) },
5564 { FR30BF_INSN_DIV1, SEM_FN_NAME (fr30bf,div1) },
5565 { FR30BF_INSN_DIV2, SEM_FN_NAME (fr30bf,div2) },
5566 { FR30BF_INSN_DIV3, SEM_FN_NAME (fr30bf,div3) },
5567 { FR30BF_INSN_DIV4S, SEM_FN_NAME (fr30bf,div4s) },
5568 { FR30BF_INSN_LSL, SEM_FN_NAME (fr30bf,lsl) },
5569 { FR30BF_INSN_LSLI, SEM_FN_NAME (fr30bf,lsli) },
5570 { FR30BF_INSN_LSL2, SEM_FN_NAME (fr30bf,lsl2) },
5571 { FR30BF_INSN_LSR, SEM_FN_NAME (fr30bf,lsr) },
5572 { FR30BF_INSN_LSRI, SEM_FN_NAME (fr30bf,lsri) },
5573 { FR30BF_INSN_LSR2, SEM_FN_NAME (fr30bf,lsr2) },
5574 { FR30BF_INSN_ASR, SEM_FN_NAME (fr30bf,asr) },
5575 { FR30BF_INSN_ASRI, SEM_FN_NAME (fr30bf,asri) },
5576 { FR30BF_INSN_ASR2, SEM_FN_NAME (fr30bf,asr2) },
5577 { FR30BF_INSN_LDI8, SEM_FN_NAME (fr30bf,ldi8) },
5578 { FR30BF_INSN_LDI20, SEM_FN_NAME (fr30bf,ldi20) },
5579 { FR30BF_INSN_LDI32, SEM_FN_NAME (fr30bf,ldi32) },
5580 { FR30BF_INSN_LD, SEM_FN_NAME (fr30bf,ld) },
5581 { FR30BF_INSN_LDUH, SEM_FN_NAME (fr30bf,lduh) },
5582 { FR30BF_INSN_LDUB, SEM_FN_NAME (fr30bf,ldub) },
5583 { FR30BF_INSN_LDR13, SEM_FN_NAME (fr30bf,ldr13) },
5584 { FR30BF_INSN_LDR13UH, SEM_FN_NAME (fr30bf,ldr13uh) },
5585 { FR30BF_INSN_LDR13UB, SEM_FN_NAME (fr30bf,ldr13ub) },
5586 { FR30BF_INSN_LDR14, SEM_FN_NAME (fr30bf,ldr14) },
5587 { FR30BF_INSN_LDR14UH, SEM_FN_NAME (fr30bf,ldr14uh) },
5588 { FR30BF_INSN_LDR14UB, SEM_FN_NAME (fr30bf,ldr14ub) },
5589 { FR30BF_INSN_LDR15, SEM_FN_NAME (fr30bf,ldr15) },
5590 { FR30BF_INSN_LDR15GR, SEM_FN_NAME (fr30bf,ldr15gr) },
5591 { FR30BF_INSN_LDR15DR, SEM_FN_NAME (fr30bf,ldr15dr) },
5592 { FR30BF_INSN_LDR15PS, SEM_FN_NAME (fr30bf,ldr15ps) },
5593 { FR30BF_INSN_ST, SEM_FN_NAME (fr30bf,st) },
5594 { FR30BF_INSN_STH, SEM_FN_NAME (fr30bf,sth) },
5595 { FR30BF_INSN_STB, SEM_FN_NAME (fr30bf,stb) },
5596 { FR30BF_INSN_STR13, SEM_FN_NAME (fr30bf,str13) },
5597 { FR30BF_INSN_STR13H, SEM_FN_NAME (fr30bf,str13h) },
5598 { FR30BF_INSN_STR13B, SEM_FN_NAME (fr30bf,str13b) },
5599 { FR30BF_INSN_STR14, SEM_FN_NAME (fr30bf,str14) },
5600 { FR30BF_INSN_STR14H, SEM_FN_NAME (fr30bf,str14h) },
5601 { FR30BF_INSN_STR14B, SEM_FN_NAME (fr30bf,str14b) },
5602 { FR30BF_INSN_STR15, SEM_FN_NAME (fr30bf,str15) },
5603 { FR30BF_INSN_STR15GR, SEM_FN_NAME (fr30bf,str15gr) },
5604 { FR30BF_INSN_STR15DR, SEM_FN_NAME (fr30bf,str15dr) },
5605 { FR30BF_INSN_STR15PS, SEM_FN_NAME (fr30bf,str15ps) },
5606 { FR30BF_INSN_MOV, SEM_FN_NAME (fr30bf,mov) },
5607 { FR30BF_INSN_MOVDR, SEM_FN_NAME (fr30bf,movdr) },
5608 { FR30BF_INSN_MOVPS, SEM_FN_NAME (fr30bf,movps) },
5609 { FR30BF_INSN_MOV2DR, SEM_FN_NAME (fr30bf,mov2dr) },
5610 { FR30BF_INSN_MOV2PS, SEM_FN_NAME (fr30bf,mov2ps) },
5611 { FR30BF_INSN_JMP, SEM_FN_NAME (fr30bf,jmp) },
5612 { FR30BF_INSN_JMPD, SEM_FN_NAME (fr30bf,jmpd) },
5613 { FR30BF_INSN_CALLR, SEM_FN_NAME (fr30bf,callr) },
5614 { FR30BF_INSN_CALLRD, SEM_FN_NAME (fr30bf,callrd) },
5615 { FR30BF_INSN_CALL, SEM_FN_NAME (fr30bf,call) },
5616 { FR30BF_INSN_CALLD, SEM_FN_NAME (fr30bf,calld) },
5617 { FR30BF_INSN_RET, SEM_FN_NAME (fr30bf,ret) },
5618 { FR30BF_INSN_RET_D, SEM_FN_NAME (fr30bf,ret_d) },
5619 { FR30BF_INSN_INT, SEM_FN_NAME (fr30bf,int) },
5620 { FR30BF_INSN_INTE, SEM_FN_NAME (fr30bf,inte) },
5621 { FR30BF_INSN_RETI, SEM_FN_NAME (fr30bf,reti) },
5622 { FR30BF_INSN_BRAD, SEM_FN_NAME (fr30bf,brad) },
5623 { FR30BF_INSN_BRA, SEM_FN_NAME (fr30bf,bra) },
5624 { FR30BF_INSN_BNOD, SEM_FN_NAME (fr30bf,bnod) },
5625 { FR30BF_INSN_BNO, SEM_FN_NAME (fr30bf,bno) },
5626 { FR30BF_INSN_BEQD, SEM_FN_NAME (fr30bf,beqd) },
5627 { FR30BF_INSN_BEQ, SEM_FN_NAME (fr30bf,beq) },
5628 { FR30BF_INSN_BNED, SEM_FN_NAME (fr30bf,bned) },
5629 { FR30BF_INSN_BNE, SEM_FN_NAME (fr30bf,bne) },
5630 { FR30BF_INSN_BCD, SEM_FN_NAME (fr30bf,bcd) },
5631 { FR30BF_INSN_BC, SEM_FN_NAME (fr30bf,bc) },
5632 { FR30BF_INSN_BNCD, SEM_FN_NAME (fr30bf,bncd) },
5633 { FR30BF_INSN_BNC, SEM_FN_NAME (fr30bf,bnc) },
5634 { FR30BF_INSN_BND, SEM_FN_NAME (fr30bf,bnd) },
5635 { FR30BF_INSN_BN, SEM_FN_NAME (fr30bf,bn) },
5636 { FR30BF_INSN_BPD, SEM_FN_NAME (fr30bf,bpd) },
5637 { FR30BF_INSN_BP, SEM_FN_NAME (fr30bf,bp) },
5638 { FR30BF_INSN_BVD, SEM_FN_NAME (fr30bf,bvd) },
5639 { FR30BF_INSN_BV, SEM_FN_NAME (fr30bf,bv) },
5640 { FR30BF_INSN_BNVD, SEM_FN_NAME (fr30bf,bnvd) },
5641 { FR30BF_INSN_BNV, SEM_FN_NAME (fr30bf,bnv) },
5642 { FR30BF_INSN_BLTD, SEM_FN_NAME (fr30bf,bltd) },
5643 { FR30BF_INSN_BLT, SEM_FN_NAME (fr30bf,blt) },
5644 { FR30BF_INSN_BGED, SEM_FN_NAME (fr30bf,bged) },
5645 { FR30BF_INSN_BGE, SEM_FN_NAME (fr30bf,bge) },
5646 { FR30BF_INSN_BLED, SEM_FN_NAME (fr30bf,bled) },
5647 { FR30BF_INSN_BLE, SEM_FN_NAME (fr30bf,ble) },
5648 { FR30BF_INSN_BGTD, SEM_FN_NAME (fr30bf,bgtd) },
5649 { FR30BF_INSN_BGT, SEM_FN_NAME (fr30bf,bgt) },
5650 { FR30BF_INSN_BLSD, SEM_FN_NAME (fr30bf,blsd) },
5651 { FR30BF_INSN_BLS, SEM_FN_NAME (fr30bf,bls) },
5652 { FR30BF_INSN_BHID, SEM_FN_NAME (fr30bf,bhid) },
5653 { FR30BF_INSN_BHI, SEM_FN_NAME (fr30bf,bhi) },
5654 { FR30BF_INSN_DMOVR13, SEM_FN_NAME (fr30bf,dmovr13) },
5655 { FR30BF_INSN_DMOVR13H, SEM_FN_NAME (fr30bf,dmovr13h) },
5656 { FR30BF_INSN_DMOVR13B, SEM_FN_NAME (fr30bf,dmovr13b) },
5657 { FR30BF_INSN_DMOVR13PI, SEM_FN_NAME (fr30bf,dmovr13pi) },
5658 { FR30BF_INSN_DMOVR13PIH, SEM_FN_NAME (fr30bf,dmovr13pih) },
5659 { FR30BF_INSN_DMOVR13PIB, SEM_FN_NAME (fr30bf,dmovr13pib) },
5660 { FR30BF_INSN_DMOVR15PI, SEM_FN_NAME (fr30bf,dmovr15pi) },
5661 { FR30BF_INSN_DMOV2R13, SEM_FN_NAME (fr30bf,dmov2r13) },
5662 { FR30BF_INSN_DMOV2R13H, SEM_FN_NAME (fr30bf,dmov2r13h) },
5663 { FR30BF_INSN_DMOV2R13B, SEM_FN_NAME (fr30bf,dmov2r13b) },
5664 { FR30BF_INSN_DMOV2R13PI, SEM_FN_NAME (fr30bf,dmov2r13pi) },
5665 { FR30BF_INSN_DMOV2R13PIH, SEM_FN_NAME (fr30bf,dmov2r13pih) },
5666 { FR30BF_INSN_DMOV2R13PIB, SEM_FN_NAME (fr30bf,dmov2r13pib) },
5667 { FR30BF_INSN_DMOV2R15PD, SEM_FN_NAME (fr30bf,dmov2r15pd) },
5668 { FR30BF_INSN_LDRES, SEM_FN_NAME (fr30bf,ldres) },
5669 { FR30BF_INSN_STRES, SEM_FN_NAME (fr30bf,stres) },
5670 { FR30BF_INSN_COPOP, SEM_FN_NAME (fr30bf,copop) },
5671 { FR30BF_INSN_COPLD, SEM_FN_NAME (fr30bf,copld) },
5672 { FR30BF_INSN_COPST, SEM_FN_NAME (fr30bf,copst) },
5673 { FR30BF_INSN_COPSV, SEM_FN_NAME (fr30bf,copsv) },
5674 { FR30BF_INSN_NOP, SEM_FN_NAME (fr30bf,nop) },
5675 { FR30BF_INSN_ANDCCR, SEM_FN_NAME (fr30bf,andccr) },
5676 { FR30BF_INSN_ORCCR, SEM_FN_NAME (fr30bf,orccr) },
5677 { FR30BF_INSN_STILM, SEM_FN_NAME (fr30bf,stilm) },
5678 { FR30BF_INSN_ADDSP, SEM_FN_NAME (fr30bf,addsp) },
5679 { FR30BF_INSN_EXTSB, SEM_FN_NAME (fr30bf,extsb) },
5680 { FR30BF_INSN_EXTUB, SEM_FN_NAME (fr30bf,extub) },
5681 { FR30BF_INSN_EXTSH, SEM_FN_NAME (fr30bf,extsh) },
5682 { FR30BF_INSN_EXTUH, SEM_FN_NAME (fr30bf,extuh) },
5683 { FR30BF_INSN_LDM0, SEM_FN_NAME (fr30bf,ldm0) },
5684 { FR30BF_INSN_LDM1, SEM_FN_NAME (fr30bf,ldm1) },
5685 { FR30BF_INSN_STM0, SEM_FN_NAME (fr30bf,stm0) },
5686 { FR30BF_INSN_STM1, SEM_FN_NAME (fr30bf,stm1) },
5687 { FR30BF_INSN_ENTER, SEM_FN_NAME (fr30bf,enter) },
5688 { FR30BF_INSN_LEAVE, SEM_FN_NAME (fr30bf,leave) },
5689 { FR30BF_INSN_XCHB, SEM_FN_NAME (fr30bf,xchb) },
5693 /* Add the semantic fns to IDESC_TABLE. */
5696 SEM_FN_NAME (fr30bf,init_idesc_table) (SIM_CPU *current_cpu)
5698 IDESC *idesc_table = CPU_IDESC (current_cpu);
5699 const struct sem_fn_desc *sf;
5701 for (sf = &sem_fns[0]; sf->fn != 0; ++sf)
5704 idesc_table[sf->index].sem_fast = sf->fn;
5706 idesc_table[sf->index].sem_full = sf->fn;