1 /* Simulator instruction semantics for i960base.
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 i960base
26 #define WANT_CPU_I960BASE
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 (i960base
,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 (i960base
,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_I960BASE
84 i960base_pbb_after (current_cpu
, sem_arg
);
92 /* x-before: --before-- */
95 SEM_FN_NAME (i960base
,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_I960BASE
105 i960base_pbb_before (current_cpu
, sem_arg
);
113 /* x-cti-chain: --cti-chain-- */
116 SEM_FN_NAME (i960base
,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_I960BASE
127 vpc
= i960base_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
= i960base_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 (i960base
,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_I960BASE
156 vpc
= i960base_pbb_chain (current_cpu
, sem_arg
);
167 /* x-begin: --begin-- */
170 SEM_FN_NAME (i960base
,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_I960BASE
181 /* In the switch case FAST_P is a constant, allowing several optimizations
182 in any called inline functions. */
183 vpc
= i960base_pbb_begin (current_cpu
, FAST_P
);
185 vpc
= i960base_pbb_begin (current_cpu
, STATE_RUN_FAST_P (CPU_STATE (current_cpu
)));
194 /* mulo: mulo $src1, $src2, $dst */
197 SEM_FN_NAME (i960base
,mulo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
199 #define FLD(f) abuf->fields.sfmt_emul.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
, 4);
206 SI opval
= MULSI (* FLD (i_src1
), * FLD (i_src2
));
207 * FLD (i_dst
) = opval
;
208 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
215 /* mulo1: mulo $lit1, $src2, $dst */
218 SEM_FN_NAME (i960base
,mulo1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
220 #define FLD(f) abuf->fields.sfmt_emul1.f
221 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
222 int UNUSED written
= 0;
223 IADDR UNUSED pc
= abuf
->addr
;
224 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
227 SI opval
= MULSI (FLD (f_src1
), * FLD (i_src2
));
228 * FLD (i_dst
) = opval
;
229 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
236 /* mulo2: mulo $src1, $lit2, $dst */
239 SEM_FN_NAME (i960base
,mulo2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
241 #define FLD(f) abuf->fields.sfmt_emul2.f
242 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
243 int UNUSED written
= 0;
244 IADDR UNUSED pc
= abuf
->addr
;
245 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
248 SI opval
= MULSI (* FLD (i_src1
), FLD (f_src2
));
249 * FLD (i_dst
) = opval
;
250 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
257 /* mulo3: mulo $lit1, $lit2, $dst */
260 SEM_FN_NAME (i960base
,mulo3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
262 #define FLD(f) abuf->fields.sfmt_emul3.f
263 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
264 int UNUSED written
= 0;
265 IADDR UNUSED pc
= abuf
->addr
;
266 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
269 SI opval
= MULSI (FLD (f_src1
), FLD (f_src2
));
270 * FLD (i_dst
) = opval
;
271 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
278 /* remo: remo $src1, $src2, $dst */
281 SEM_FN_NAME (i960base
,remo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
283 #define FLD(f) abuf->fields.sfmt_emul.f
284 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
285 int UNUSED written
= 0;
286 IADDR UNUSED pc
= abuf
->addr
;
287 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
290 SI opval
= UMODSI (* FLD (i_src2
), * FLD (i_src1
));
291 * FLD (i_dst
) = opval
;
292 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
299 /* remo1: remo $lit1, $src2, $dst */
302 SEM_FN_NAME (i960base
,remo1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
304 #define FLD(f) abuf->fields.sfmt_emul1.f
305 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
306 int UNUSED written
= 0;
307 IADDR UNUSED pc
= abuf
->addr
;
308 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
311 SI opval
= UMODSI (* FLD (i_src2
), FLD (f_src1
));
312 * FLD (i_dst
) = opval
;
313 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
320 /* remo2: remo $src1, $lit2, $dst */
323 SEM_FN_NAME (i960base
,remo2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
325 #define FLD(f) abuf->fields.sfmt_emul2.f
326 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
327 int UNUSED written
= 0;
328 IADDR UNUSED pc
= abuf
->addr
;
329 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
332 SI opval
= UMODSI (FLD (f_src2
), * FLD (i_src1
));
333 * FLD (i_dst
) = opval
;
334 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
341 /* remo3: remo $lit1, $lit2, $dst */
344 SEM_FN_NAME (i960base
,remo3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
346 #define FLD(f) abuf->fields.sfmt_emul3.f
347 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
348 int UNUSED written
= 0;
349 IADDR UNUSED pc
= abuf
->addr
;
350 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
353 SI opval
= UMODSI (FLD (f_src2
), FLD (f_src1
));
354 * FLD (i_dst
) = opval
;
355 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
362 /* divo: divo $src1, $src2, $dst */
365 SEM_FN_NAME (i960base
,divo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
367 #define FLD(f) abuf->fields.sfmt_emul.f
368 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
369 int UNUSED written
= 0;
370 IADDR UNUSED pc
= abuf
->addr
;
371 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
374 SI opval
= UDIVSI (* FLD (i_src2
), * FLD (i_src1
));
375 * FLD (i_dst
) = opval
;
376 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
383 /* divo1: divo $lit1, $src2, $dst */
386 SEM_FN_NAME (i960base
,divo1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
388 #define FLD(f) abuf->fields.sfmt_emul1.f
389 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
390 int UNUSED written
= 0;
391 IADDR UNUSED pc
= abuf
->addr
;
392 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
395 SI opval
= UDIVSI (* FLD (i_src2
), FLD (f_src1
));
396 * FLD (i_dst
) = opval
;
397 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
404 /* divo2: divo $src1, $lit2, $dst */
407 SEM_FN_NAME (i960base
,divo2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
409 #define FLD(f) abuf->fields.sfmt_emul2.f
410 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
411 int UNUSED written
= 0;
412 IADDR UNUSED pc
= abuf
->addr
;
413 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
416 SI opval
= UDIVSI (FLD (f_src2
), * FLD (i_src1
));
417 * FLD (i_dst
) = opval
;
418 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
425 /* divo3: divo $lit1, $lit2, $dst */
428 SEM_FN_NAME (i960base
,divo3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
430 #define FLD(f) abuf->fields.sfmt_emul3.f
431 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
432 int UNUSED written
= 0;
433 IADDR UNUSED pc
= abuf
->addr
;
434 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
437 SI opval
= UDIVSI (FLD (f_src2
), FLD (f_src1
));
438 * FLD (i_dst
) = opval
;
439 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
446 /* remi: remi $src1, $src2, $dst */
449 SEM_FN_NAME (i960base
,remi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
451 #define FLD(f) abuf->fields.sfmt_emul.f
452 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
453 int UNUSED written
= 0;
454 IADDR UNUSED pc
= abuf
->addr
;
455 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
458 SI opval
= MODSI (* FLD (i_src2
), * FLD (i_src1
));
459 * FLD (i_dst
) = opval
;
460 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
467 /* remi1: remi $lit1, $src2, $dst */
470 SEM_FN_NAME (i960base
,remi1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
472 #define FLD(f) abuf->fields.sfmt_emul1.f
473 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
474 int UNUSED written
= 0;
475 IADDR UNUSED pc
= abuf
->addr
;
476 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
479 SI opval
= MODSI (* FLD (i_src2
), FLD (f_src1
));
480 * FLD (i_dst
) = opval
;
481 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
488 /* remi2: remi $src1, $lit2, $dst */
491 SEM_FN_NAME (i960base
,remi2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
493 #define FLD(f) abuf->fields.sfmt_emul2.f
494 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
495 int UNUSED written
= 0;
496 IADDR UNUSED pc
= abuf
->addr
;
497 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
500 SI opval
= MODSI (FLD (f_src2
), * FLD (i_src1
));
501 * FLD (i_dst
) = opval
;
502 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
509 /* remi3: remi $lit1, $lit2, $dst */
512 SEM_FN_NAME (i960base
,remi3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
514 #define FLD(f) abuf->fields.sfmt_emul3.f
515 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
516 int UNUSED written
= 0;
517 IADDR UNUSED pc
= abuf
->addr
;
518 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
521 SI opval
= MODSI (FLD (f_src2
), FLD (f_src1
));
522 * FLD (i_dst
) = opval
;
523 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
530 /* divi: divi $src1, $src2, $dst */
533 SEM_FN_NAME (i960base
,divi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
535 #define FLD(f) abuf->fields.sfmt_emul.f
536 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
537 int UNUSED written
= 0;
538 IADDR UNUSED pc
= abuf
->addr
;
539 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
542 SI opval
= DIVSI (* FLD (i_src2
), * FLD (i_src1
));
543 * FLD (i_dst
) = opval
;
544 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
551 /* divi1: divi $lit1, $src2, $dst */
554 SEM_FN_NAME (i960base
,divi1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
556 #define FLD(f) abuf->fields.sfmt_emul1.f
557 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
558 int UNUSED written
= 0;
559 IADDR UNUSED pc
= abuf
->addr
;
560 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
563 SI opval
= DIVSI (* FLD (i_src2
), FLD (f_src1
));
564 * FLD (i_dst
) = opval
;
565 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
572 /* divi2: divi $src1, $lit2, $dst */
575 SEM_FN_NAME (i960base
,divi2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
577 #define FLD(f) abuf->fields.sfmt_emul2.f
578 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
579 int UNUSED written
= 0;
580 IADDR UNUSED pc
= abuf
->addr
;
581 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
584 SI opval
= DIVSI (FLD (f_src2
), * FLD (i_src1
));
585 * FLD (i_dst
) = opval
;
586 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
593 /* divi3: divi $lit1, $lit2, $dst */
596 SEM_FN_NAME (i960base
,divi3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
598 #define FLD(f) abuf->fields.sfmt_emul3.f
599 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
600 int UNUSED written
= 0;
601 IADDR UNUSED pc
= abuf
->addr
;
602 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
605 SI opval
= DIVSI (FLD (f_src2
), FLD (f_src1
));
606 * FLD (i_dst
) = opval
;
607 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
614 /* addo: addo $src1, $src2, $dst */
617 SEM_FN_NAME (i960base
,addo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
619 #define FLD(f) abuf->fields.sfmt_emul.f
620 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
621 int UNUSED written
= 0;
622 IADDR UNUSED pc
= abuf
->addr
;
623 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
626 SI opval
= ADDSI (* FLD (i_src1
), * FLD (i_src2
));
627 * FLD (i_dst
) = opval
;
628 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
635 /* addo1: addo $lit1, $src2, $dst */
638 SEM_FN_NAME (i960base
,addo1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
640 #define FLD(f) abuf->fields.sfmt_emul1.f
641 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
642 int UNUSED written
= 0;
643 IADDR UNUSED pc
= abuf
->addr
;
644 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
647 SI opval
= ADDSI (FLD (f_src1
), * FLD (i_src2
));
648 * FLD (i_dst
) = opval
;
649 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
656 /* addo2: addo $src1, $lit2, $dst */
659 SEM_FN_NAME (i960base
,addo2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
661 #define FLD(f) abuf->fields.sfmt_emul2.f
662 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
663 int UNUSED written
= 0;
664 IADDR UNUSED pc
= abuf
->addr
;
665 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
668 SI opval
= ADDSI (* FLD (i_src1
), FLD (f_src2
));
669 * FLD (i_dst
) = opval
;
670 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
677 /* addo3: addo $lit1, $lit2, $dst */
680 SEM_FN_NAME (i960base
,addo3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
682 #define FLD(f) abuf->fields.sfmt_emul3.f
683 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
684 int UNUSED written
= 0;
685 IADDR UNUSED pc
= abuf
->addr
;
686 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
689 SI opval
= ADDSI (FLD (f_src1
), FLD (f_src2
));
690 * FLD (i_dst
) = opval
;
691 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
698 /* subo: subo $src1, $src2, $dst */
701 SEM_FN_NAME (i960base
,subo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
703 #define FLD(f) abuf->fields.sfmt_emul.f
704 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
705 int UNUSED written
= 0;
706 IADDR UNUSED pc
= abuf
->addr
;
707 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
710 SI opval
= SUBSI (* FLD (i_src2
), * FLD (i_src1
));
711 * FLD (i_dst
) = opval
;
712 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
719 /* subo1: subo $lit1, $src2, $dst */
722 SEM_FN_NAME (i960base
,subo1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
724 #define FLD(f) abuf->fields.sfmt_emul1.f
725 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
726 int UNUSED written
= 0;
727 IADDR UNUSED pc
= abuf
->addr
;
728 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
731 SI opval
= SUBSI (* FLD (i_src2
), FLD (f_src1
));
732 * FLD (i_dst
) = opval
;
733 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
740 /* subo2: subo $src1, $lit2, $dst */
743 SEM_FN_NAME (i960base
,subo2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
745 #define FLD(f) abuf->fields.sfmt_emul2.f
746 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
747 int UNUSED written
= 0;
748 IADDR UNUSED pc
= abuf
->addr
;
749 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
752 SI opval
= SUBSI (FLD (f_src2
), * FLD (i_src1
));
753 * FLD (i_dst
) = opval
;
754 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
761 /* subo3: subo $lit1, $lit2, $dst */
764 SEM_FN_NAME (i960base
,subo3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
766 #define FLD(f) abuf->fields.sfmt_emul3.f
767 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
768 int UNUSED written
= 0;
769 IADDR UNUSED pc
= abuf
->addr
;
770 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
773 SI opval
= SUBSI (FLD (f_src2
), FLD (f_src1
));
774 * FLD (i_dst
) = opval
;
775 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
782 /* notbit: notbit $src1, $src2, $dst */
785 SEM_FN_NAME (i960base
,notbit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
787 #define FLD(f) abuf->fields.sfmt_emul.f
788 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
789 int UNUSED written
= 0;
790 IADDR UNUSED pc
= abuf
->addr
;
791 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
794 SI opval
= XORSI (SLLSI (1, * FLD (i_src1
)), * FLD (i_src2
));
795 * FLD (i_dst
) = opval
;
796 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
803 /* notbit1: notbit $lit1, $src2, $dst */
806 SEM_FN_NAME (i960base
,notbit1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
808 #define FLD(f) abuf->fields.sfmt_emul1.f
809 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
810 int UNUSED written
= 0;
811 IADDR UNUSED pc
= abuf
->addr
;
812 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
815 SI opval
= XORSI (SLLSI (1, FLD (f_src1
)), * FLD (i_src2
));
816 * FLD (i_dst
) = opval
;
817 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
824 /* notbit2: notbit $src1, $lit2, $dst */
827 SEM_FN_NAME (i960base
,notbit2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
829 #define FLD(f) abuf->fields.sfmt_emul2.f
830 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
831 int UNUSED written
= 0;
832 IADDR UNUSED pc
= abuf
->addr
;
833 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
836 SI opval
= XORSI (SLLSI (1, * FLD (i_src1
)), FLD (f_src2
));
837 * FLD (i_dst
) = opval
;
838 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
845 /* notbit3: notbit $lit1, $lit2, $dst */
848 SEM_FN_NAME (i960base
,notbit3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
850 #define FLD(f) abuf->fields.sfmt_emul3.f
851 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
852 int UNUSED written
= 0;
853 IADDR UNUSED pc
= abuf
->addr
;
854 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
857 SI opval
= XORSI (SLLSI (1, FLD (f_src1
)), FLD (f_src2
));
858 * FLD (i_dst
) = opval
;
859 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
866 /* and: and $src1, $src2, $dst */
869 SEM_FN_NAME (i960base
,and) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
871 #define FLD(f) abuf->fields.sfmt_emul.f
872 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
873 int UNUSED written
= 0;
874 IADDR UNUSED pc
= abuf
->addr
;
875 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
878 SI opval
= ANDSI (* FLD (i_src1
), * FLD (i_src2
));
879 * FLD (i_dst
) = opval
;
880 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
887 /* and1: and $lit1, $src2, $dst */
890 SEM_FN_NAME (i960base
,and1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
892 #define FLD(f) abuf->fields.sfmt_emul1.f
893 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
894 int UNUSED written
= 0;
895 IADDR UNUSED pc
= abuf
->addr
;
896 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
899 SI opval
= ANDSI (FLD (f_src1
), * FLD (i_src2
));
900 * FLD (i_dst
) = opval
;
901 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
908 /* and2: and $src1, $lit2, $dst */
911 SEM_FN_NAME (i960base
,and2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
913 #define FLD(f) abuf->fields.sfmt_emul2.f
914 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
915 int UNUSED written
= 0;
916 IADDR UNUSED pc
= abuf
->addr
;
917 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
920 SI opval
= ANDSI (* FLD (i_src1
), FLD (f_src2
));
921 * FLD (i_dst
) = opval
;
922 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
929 /* and3: and $lit1, $lit2, $dst */
932 SEM_FN_NAME (i960base
,and3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
934 #define FLD(f) abuf->fields.sfmt_emul3.f
935 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
936 int UNUSED written
= 0;
937 IADDR UNUSED pc
= abuf
->addr
;
938 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
941 SI opval
= ANDSI (FLD (f_src1
), FLD (f_src2
));
942 * FLD (i_dst
) = opval
;
943 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
950 /* andnot: andnot $src1, $src2, $dst */
953 SEM_FN_NAME (i960base
,andnot
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
955 #define FLD(f) abuf->fields.sfmt_emul.f
956 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
957 int UNUSED written
= 0;
958 IADDR UNUSED pc
= abuf
->addr
;
959 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
962 SI opval
= ANDSI (* FLD (i_src2
), INVSI (* FLD (i_src1
)));
963 * FLD (i_dst
) = opval
;
964 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
971 /* andnot1: andnot $lit1, $src2, $dst */
974 SEM_FN_NAME (i960base
,andnot1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
976 #define FLD(f) abuf->fields.sfmt_emul1.f
977 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
978 int UNUSED written
= 0;
979 IADDR UNUSED pc
= abuf
->addr
;
980 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
983 SI opval
= ANDSI (* FLD (i_src2
), INVSI (FLD (f_src1
)));
984 * FLD (i_dst
) = opval
;
985 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
992 /* andnot2: andnot $src1, $lit2, $dst */
995 SEM_FN_NAME (i960base
,andnot2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
997 #define FLD(f) abuf->fields.sfmt_emul2.f
998 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
999 int UNUSED written
= 0;
1000 IADDR UNUSED pc
= abuf
->addr
;
1001 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1004 SI opval
= ANDSI (FLD (f_src2
), INVSI (* FLD (i_src1
)));
1005 * FLD (i_dst
) = opval
;
1006 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1013 /* andnot3: andnot $lit1, $lit2, $dst */
1016 SEM_FN_NAME (i960base
,andnot3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1018 #define FLD(f) abuf->fields.sfmt_emul3.f
1019 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1020 int UNUSED written
= 0;
1021 IADDR UNUSED pc
= abuf
->addr
;
1022 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1025 SI opval
= ANDSI (FLD (f_src2
), INVSI (FLD (f_src1
)));
1026 * FLD (i_dst
) = opval
;
1027 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1034 /* setbit: setbit $src1, $src2, $dst */
1037 SEM_FN_NAME (i960base
,setbit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1039 #define FLD(f) abuf->fields.sfmt_emul.f
1040 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1041 int UNUSED written
= 0;
1042 IADDR UNUSED pc
= abuf
->addr
;
1043 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1046 SI opval
= ORSI (SLLSI (1, * FLD (i_src1
)), * FLD (i_src2
));
1047 * FLD (i_dst
) = opval
;
1048 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1055 /* setbit1: setbit $lit1, $src2, $dst */
1058 SEM_FN_NAME (i960base
,setbit1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1060 #define FLD(f) abuf->fields.sfmt_emul1.f
1061 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1062 int UNUSED written
= 0;
1063 IADDR UNUSED pc
= abuf
->addr
;
1064 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1067 SI opval
= ORSI (SLLSI (1, FLD (f_src1
)), * FLD (i_src2
));
1068 * FLD (i_dst
) = opval
;
1069 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1076 /* setbit2: setbit $src1, $lit2, $dst */
1079 SEM_FN_NAME (i960base
,setbit2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1081 #define FLD(f) abuf->fields.sfmt_emul2.f
1082 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1083 int UNUSED written
= 0;
1084 IADDR UNUSED pc
= abuf
->addr
;
1085 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1088 SI opval
= ORSI (SLLSI (1, * FLD (i_src1
)), FLD (f_src2
));
1089 * FLD (i_dst
) = opval
;
1090 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1097 /* setbit3: setbit $lit1, $lit2, $dst */
1100 SEM_FN_NAME (i960base
,setbit3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1102 #define FLD(f) abuf->fields.sfmt_emul3.f
1103 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1104 int UNUSED written
= 0;
1105 IADDR UNUSED pc
= abuf
->addr
;
1106 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1109 SI opval
= ORSI (SLLSI (1, FLD (f_src1
)), FLD (f_src2
));
1110 * FLD (i_dst
) = opval
;
1111 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1118 /* notand: notand $src1, $src2, $dst */
1121 SEM_FN_NAME (i960base
,notand
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1123 #define FLD(f) abuf->fields.sfmt_emul.f
1124 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1125 int UNUSED written
= 0;
1126 IADDR UNUSED pc
= abuf
->addr
;
1127 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1130 SI opval
= ANDSI (INVSI (* FLD (i_src2
)), * FLD (i_src1
));
1131 * FLD (i_dst
) = opval
;
1132 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1139 /* notand1: notand $lit1, $src2, $dst */
1142 SEM_FN_NAME (i960base
,notand1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1144 #define FLD(f) abuf->fields.sfmt_emul1.f
1145 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1146 int UNUSED written
= 0;
1147 IADDR UNUSED pc
= abuf
->addr
;
1148 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1151 SI opval
= ANDSI (INVSI (* FLD (i_src2
)), FLD (f_src1
));
1152 * FLD (i_dst
) = opval
;
1153 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1160 /* notand2: notand $src1, $lit2, $dst */
1163 SEM_FN_NAME (i960base
,notand2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1165 #define FLD(f) abuf->fields.sfmt_emul2.f
1166 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1167 int UNUSED written
= 0;
1168 IADDR UNUSED pc
= abuf
->addr
;
1169 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1172 SI opval
= ANDSI (INVSI (FLD (f_src2
)), * FLD (i_src1
));
1173 * FLD (i_dst
) = opval
;
1174 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1181 /* notand3: notand $lit1, $lit2, $dst */
1184 SEM_FN_NAME (i960base
,notand3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1186 #define FLD(f) abuf->fields.sfmt_emul3.f
1187 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1188 int UNUSED written
= 0;
1189 IADDR UNUSED pc
= abuf
->addr
;
1190 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1193 SI opval
= ANDSI (INVSI (FLD (f_src2
)), FLD (f_src1
));
1194 * FLD (i_dst
) = opval
;
1195 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1202 /* xor: xor $src1, $src2, $dst */
1205 SEM_FN_NAME (i960base
,xor) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1207 #define FLD(f) abuf->fields.sfmt_emul.f
1208 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1209 int UNUSED written
= 0;
1210 IADDR UNUSED pc
= abuf
->addr
;
1211 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1214 SI opval
= XORSI (* FLD (i_src1
), * FLD (i_src2
));
1215 * FLD (i_dst
) = opval
;
1216 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1223 /* xor1: xor $lit1, $src2, $dst */
1226 SEM_FN_NAME (i960base
,xor1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1228 #define FLD(f) abuf->fields.sfmt_emul1.f
1229 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1230 int UNUSED written
= 0;
1231 IADDR UNUSED pc
= abuf
->addr
;
1232 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1235 SI opval
= XORSI (FLD (f_src1
), * FLD (i_src2
));
1236 * FLD (i_dst
) = opval
;
1237 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1244 /* xor2: xor $src1, $lit2, $dst */
1247 SEM_FN_NAME (i960base
,xor2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1249 #define FLD(f) abuf->fields.sfmt_emul2.f
1250 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1251 int UNUSED written
= 0;
1252 IADDR UNUSED pc
= abuf
->addr
;
1253 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1256 SI opval
= XORSI (* FLD (i_src1
), FLD (f_src2
));
1257 * FLD (i_dst
) = opval
;
1258 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1265 /* xor3: xor $lit1, $lit2, $dst */
1268 SEM_FN_NAME (i960base
,xor3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1270 #define FLD(f) abuf->fields.sfmt_emul3.f
1271 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1272 int UNUSED written
= 0;
1273 IADDR UNUSED pc
= abuf
->addr
;
1274 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1277 SI opval
= XORSI (FLD (f_src1
), FLD (f_src2
));
1278 * FLD (i_dst
) = opval
;
1279 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1286 /* or: or $src1, $src2, $dst */
1289 SEM_FN_NAME (i960base
,or) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1291 #define FLD(f) abuf->fields.sfmt_emul.f
1292 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1293 int UNUSED written
= 0;
1294 IADDR UNUSED pc
= abuf
->addr
;
1295 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1298 SI opval
= ORSI (* FLD (i_src1
), * FLD (i_src2
));
1299 * FLD (i_dst
) = opval
;
1300 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1307 /* or1: or $lit1, $src2, $dst */
1310 SEM_FN_NAME (i960base
,or1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1312 #define FLD(f) abuf->fields.sfmt_emul1.f
1313 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1314 int UNUSED written
= 0;
1315 IADDR UNUSED pc
= abuf
->addr
;
1316 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1319 SI opval
= ORSI (FLD (f_src1
), * FLD (i_src2
));
1320 * FLD (i_dst
) = opval
;
1321 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1328 /* or2: or $src1, $lit2, $dst */
1331 SEM_FN_NAME (i960base
,or2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1333 #define FLD(f) abuf->fields.sfmt_emul2.f
1334 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1335 int UNUSED written
= 0;
1336 IADDR UNUSED pc
= abuf
->addr
;
1337 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1340 SI opval
= ORSI (* FLD (i_src1
), FLD (f_src2
));
1341 * FLD (i_dst
) = opval
;
1342 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1349 /* or3: or $lit1, $lit2, $dst */
1352 SEM_FN_NAME (i960base
,or3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1354 #define FLD(f) abuf->fields.sfmt_emul3.f
1355 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1356 int UNUSED written
= 0;
1357 IADDR UNUSED pc
= abuf
->addr
;
1358 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1361 SI opval
= ORSI (FLD (f_src1
), FLD (f_src2
));
1362 * FLD (i_dst
) = opval
;
1363 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1370 /* nor: nor $src1, $src2, $dst */
1373 SEM_FN_NAME (i960base
,nor
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1375 #define FLD(f) abuf->fields.sfmt_emul.f
1376 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1377 int UNUSED written
= 0;
1378 IADDR UNUSED pc
= abuf
->addr
;
1379 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1382 SI opval
= ANDSI (INVSI (* FLD (i_src2
)), INVSI (* FLD (i_src1
)));
1383 * FLD (i_dst
) = opval
;
1384 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1391 /* nor1: nor $lit1, $src2, $dst */
1394 SEM_FN_NAME (i960base
,nor1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1396 #define FLD(f) abuf->fields.sfmt_emul1.f
1397 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1398 int UNUSED written
= 0;
1399 IADDR UNUSED pc
= abuf
->addr
;
1400 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1403 SI opval
= ANDSI (INVSI (* FLD (i_src2
)), INVSI (FLD (f_src1
)));
1404 * FLD (i_dst
) = opval
;
1405 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1412 /* nor2: nor $src1, $lit2, $dst */
1415 SEM_FN_NAME (i960base
,nor2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1417 #define FLD(f) abuf->fields.sfmt_emul2.f
1418 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1419 int UNUSED written
= 0;
1420 IADDR UNUSED pc
= abuf
->addr
;
1421 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1424 SI opval
= ANDSI (INVSI (FLD (f_src2
)), INVSI (* FLD (i_src1
)));
1425 * FLD (i_dst
) = opval
;
1426 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1433 /* nor3: nor $lit1, $lit2, $dst */
1436 SEM_FN_NAME (i960base
,nor3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1438 #define FLD(f) abuf->fields.sfmt_emul3.f
1439 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1440 int UNUSED written
= 0;
1441 IADDR UNUSED pc
= abuf
->addr
;
1442 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1445 SI opval
= ANDSI (INVSI (FLD (f_src2
)), INVSI (FLD (f_src1
)));
1446 * FLD (i_dst
) = opval
;
1447 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1454 /* xnor: xnor $src1, $src2, $dst */
1457 SEM_FN_NAME (i960base
,xnor
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1459 #define FLD(f) abuf->fields.sfmt_emul.f
1460 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1461 int UNUSED written
= 0;
1462 IADDR UNUSED pc
= abuf
->addr
;
1463 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1466 SI opval
= INVSI (XORSI (* FLD (i_src1
), * FLD (i_src2
)));
1467 * FLD (i_dst
) = opval
;
1468 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1475 /* xnor1: xnor $lit1, $src2, $dst */
1478 SEM_FN_NAME (i960base
,xnor1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1480 #define FLD(f) abuf->fields.sfmt_emul1.f
1481 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1482 int UNUSED written
= 0;
1483 IADDR UNUSED pc
= abuf
->addr
;
1484 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1487 SI opval
= INVSI (XORSI (FLD (f_src1
), * FLD (i_src2
)));
1488 * FLD (i_dst
) = opval
;
1489 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1496 /* xnor2: xnor $src1, $lit2, $dst */
1499 SEM_FN_NAME (i960base
,xnor2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1501 #define FLD(f) abuf->fields.sfmt_emul2.f
1502 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1503 int UNUSED written
= 0;
1504 IADDR UNUSED pc
= abuf
->addr
;
1505 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1508 SI opval
= INVSI (XORSI (* FLD (i_src1
), FLD (f_src2
)));
1509 * FLD (i_dst
) = opval
;
1510 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1517 /* xnor3: xnor $lit1, $lit2, $dst */
1520 SEM_FN_NAME (i960base
,xnor3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1522 #define FLD(f) abuf->fields.sfmt_emul3.f
1523 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1524 int UNUSED written
= 0;
1525 IADDR UNUSED pc
= abuf
->addr
;
1526 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1529 SI opval
= INVSI (XORSI (FLD (f_src1
), FLD (f_src2
)));
1530 * FLD (i_dst
) = opval
;
1531 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1538 /* not: not $src1, $src2, $dst */
1541 SEM_FN_NAME (i960base
,not) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1543 #define FLD(f) abuf->fields.sfmt_emul2.f
1544 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1545 int UNUSED written
= 0;
1546 IADDR UNUSED pc
= abuf
->addr
;
1547 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1550 SI opval
= INVSI (* FLD (i_src1
));
1551 * FLD (i_dst
) = opval
;
1552 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1559 /* not1: not $lit1, $src2, $dst */
1562 SEM_FN_NAME (i960base
,not1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1564 #define FLD(f) abuf->fields.sfmt_emul3.f
1565 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1566 int UNUSED written
= 0;
1567 IADDR UNUSED pc
= abuf
->addr
;
1568 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1571 SI opval
= INVSI (FLD (f_src1
));
1572 * FLD (i_dst
) = opval
;
1573 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1580 /* not2: not $src1, $lit2, $dst */
1583 SEM_FN_NAME (i960base
,not2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1585 #define FLD(f) abuf->fields.sfmt_emul2.f
1586 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1587 int UNUSED written
= 0;
1588 IADDR UNUSED pc
= abuf
->addr
;
1589 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1592 SI opval
= INVSI (* FLD (i_src1
));
1593 * FLD (i_dst
) = opval
;
1594 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1601 /* not3: not $lit1, $lit2, $dst */
1604 SEM_FN_NAME (i960base
,not3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1606 #define FLD(f) abuf->fields.sfmt_emul3.f
1607 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1608 int UNUSED written
= 0;
1609 IADDR UNUSED pc
= abuf
->addr
;
1610 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1613 SI opval
= INVSI (FLD (f_src1
));
1614 * FLD (i_dst
) = opval
;
1615 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1622 /* ornot: ornot $src1, $src2, $dst */
1625 SEM_FN_NAME (i960base
,ornot
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1627 #define FLD(f) abuf->fields.sfmt_emul.f
1628 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1629 int UNUSED written
= 0;
1630 IADDR UNUSED pc
= abuf
->addr
;
1631 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1634 SI opval
= ORSI (* FLD (i_src2
), INVSI (* FLD (i_src1
)));
1635 * FLD (i_dst
) = opval
;
1636 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1643 /* ornot1: ornot $lit1, $src2, $dst */
1646 SEM_FN_NAME (i960base
,ornot1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1648 #define FLD(f) abuf->fields.sfmt_emul1.f
1649 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1650 int UNUSED written
= 0;
1651 IADDR UNUSED pc
= abuf
->addr
;
1652 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1655 SI opval
= ORSI (* FLD (i_src2
), INVSI (FLD (f_src1
)));
1656 * FLD (i_dst
) = opval
;
1657 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1664 /* ornot2: ornot $src1, $lit2, $dst */
1667 SEM_FN_NAME (i960base
,ornot2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1669 #define FLD(f) abuf->fields.sfmt_emul2.f
1670 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1671 int UNUSED written
= 0;
1672 IADDR UNUSED pc
= abuf
->addr
;
1673 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1676 SI opval
= ORSI (FLD (f_src2
), INVSI (* FLD (i_src1
)));
1677 * FLD (i_dst
) = opval
;
1678 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1685 /* ornot3: ornot $lit1, $lit2, $dst */
1688 SEM_FN_NAME (i960base
,ornot3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1690 #define FLD(f) abuf->fields.sfmt_emul3.f
1691 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1692 int UNUSED written
= 0;
1693 IADDR UNUSED pc
= abuf
->addr
;
1694 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1697 SI opval
= ORSI (FLD (f_src2
), INVSI (FLD (f_src1
)));
1698 * FLD (i_dst
) = opval
;
1699 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1706 /* clrbit: clrbit $src1, $src2, $dst */
1709 SEM_FN_NAME (i960base
,clrbit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1711 #define FLD(f) abuf->fields.sfmt_emul.f
1712 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1713 int UNUSED written
= 0;
1714 IADDR UNUSED pc
= abuf
->addr
;
1715 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1718 SI opval
= ANDSI (INVSI (SLLSI (1, * FLD (i_src1
))), * FLD (i_src2
));
1719 * FLD (i_dst
) = opval
;
1720 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1727 /* clrbit1: clrbit $lit1, $src2, $dst */
1730 SEM_FN_NAME (i960base
,clrbit1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1732 #define FLD(f) abuf->fields.sfmt_emul1.f
1733 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1734 int UNUSED written
= 0;
1735 IADDR UNUSED pc
= abuf
->addr
;
1736 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1739 SI opval
= ANDSI (INVSI (SLLSI (1, FLD (f_src1
))), * FLD (i_src2
));
1740 * FLD (i_dst
) = opval
;
1741 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1748 /* clrbit2: clrbit $src1, $lit2, $dst */
1751 SEM_FN_NAME (i960base
,clrbit2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1753 #define FLD(f) abuf->fields.sfmt_emul2.f
1754 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1755 int UNUSED written
= 0;
1756 IADDR UNUSED pc
= abuf
->addr
;
1757 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1760 SI opval
= ANDSI (INVSI (SLLSI (1, * FLD (i_src1
))), FLD (f_src2
));
1761 * FLD (i_dst
) = opval
;
1762 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1769 /* clrbit3: clrbit $lit1, $lit2, $dst */
1772 SEM_FN_NAME (i960base
,clrbit3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1774 #define FLD(f) abuf->fields.sfmt_emul3.f
1775 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1776 int UNUSED written
= 0;
1777 IADDR UNUSED pc
= abuf
->addr
;
1778 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1781 SI opval
= ANDSI (INVSI (SLLSI (1, FLD (f_src1
))), FLD (f_src2
));
1782 * FLD (i_dst
) = opval
;
1783 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1790 /* shlo: shlo $src1, $src2, $dst */
1793 SEM_FN_NAME (i960base
,shlo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1795 #define FLD(f) abuf->fields.sfmt_emul.f
1796 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1797 int UNUSED written
= 0;
1798 IADDR UNUSED pc
= abuf
->addr
;
1799 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1802 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SLLSI (* FLD (i_src2
), * FLD (i_src1
)));
1803 * FLD (i_dst
) = opval
;
1804 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1811 /* shlo1: shlo $lit1, $src2, $dst */
1814 SEM_FN_NAME (i960base
,shlo1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1816 #define FLD(f) abuf->fields.sfmt_emul1.f
1817 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1818 int UNUSED written
= 0;
1819 IADDR UNUSED pc
= abuf
->addr
;
1820 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1823 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SLLSI (* FLD (i_src2
), FLD (f_src1
)));
1824 * FLD (i_dst
) = opval
;
1825 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1832 /* shlo2: shlo $src1, $lit2, $dst */
1835 SEM_FN_NAME (i960base
,shlo2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1837 #define FLD(f) abuf->fields.sfmt_emul2.f
1838 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1839 int UNUSED written
= 0;
1840 IADDR UNUSED pc
= abuf
->addr
;
1841 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1844 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SLLSI (FLD (f_src2
), * FLD (i_src1
)));
1845 * FLD (i_dst
) = opval
;
1846 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1853 /* shlo3: shlo $lit1, $lit2, $dst */
1856 SEM_FN_NAME (i960base
,shlo3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1858 #define FLD(f) abuf->fields.sfmt_emul3.f
1859 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1860 int UNUSED written
= 0;
1861 IADDR UNUSED pc
= abuf
->addr
;
1862 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1865 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SLLSI (FLD (f_src2
), FLD (f_src1
)));
1866 * FLD (i_dst
) = opval
;
1867 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1874 /* shro: shro $src1, $src2, $dst */
1877 SEM_FN_NAME (i960base
,shro
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1879 #define FLD(f) abuf->fields.sfmt_emul.f
1880 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1881 int UNUSED written
= 0;
1882 IADDR UNUSED pc
= abuf
->addr
;
1883 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1886 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SRLSI (* FLD (i_src2
), * FLD (i_src1
)));
1887 * FLD (i_dst
) = opval
;
1888 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1895 /* shro1: shro $lit1, $src2, $dst */
1898 SEM_FN_NAME (i960base
,shro1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1900 #define FLD(f) abuf->fields.sfmt_emul1.f
1901 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1902 int UNUSED written
= 0;
1903 IADDR UNUSED pc
= abuf
->addr
;
1904 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1907 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SRLSI (* FLD (i_src2
), FLD (f_src1
)));
1908 * FLD (i_dst
) = opval
;
1909 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1916 /* shro2: shro $src1, $lit2, $dst */
1919 SEM_FN_NAME (i960base
,shro2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1921 #define FLD(f) abuf->fields.sfmt_emul2.f
1922 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1923 int UNUSED written
= 0;
1924 IADDR UNUSED pc
= abuf
->addr
;
1925 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1928 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SRLSI (FLD (f_src2
), * FLD (i_src1
)));
1929 * FLD (i_dst
) = opval
;
1930 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1937 /* shro3: shro $lit1, $lit2, $dst */
1940 SEM_FN_NAME (i960base
,shro3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1942 #define FLD(f) abuf->fields.sfmt_emul3.f
1943 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1944 int UNUSED written
= 0;
1945 IADDR UNUSED pc
= abuf
->addr
;
1946 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1949 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SRLSI (FLD (f_src2
), FLD (f_src1
)));
1950 * FLD (i_dst
) = opval
;
1951 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1958 /* shli: shli $src1, $src2, $dst */
1961 SEM_FN_NAME (i960base
,shli
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1963 #define FLD(f) abuf->fields.sfmt_emul.f
1964 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1965 int UNUSED written
= 0;
1966 IADDR UNUSED pc
= abuf
->addr
;
1967 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1970 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SLLSI (* FLD (i_src2
), * FLD (i_src1
)));
1971 * FLD (i_dst
) = opval
;
1972 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1979 /* shli1: shli $lit1, $src2, $dst */
1982 SEM_FN_NAME (i960base
,shli1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1984 #define FLD(f) abuf->fields.sfmt_emul1.f
1985 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1986 int UNUSED written
= 0;
1987 IADDR UNUSED pc
= abuf
->addr
;
1988 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1991 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SLLSI (* FLD (i_src2
), FLD (f_src1
)));
1992 * FLD (i_dst
) = opval
;
1993 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2000 /* shli2: shli $src1, $lit2, $dst */
2003 SEM_FN_NAME (i960base
,shli2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2005 #define FLD(f) abuf->fields.sfmt_emul2.f
2006 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2007 int UNUSED written
= 0;
2008 IADDR UNUSED pc
= abuf
->addr
;
2009 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2012 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SLLSI (FLD (f_src2
), * FLD (i_src1
)));
2013 * FLD (i_dst
) = opval
;
2014 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2021 /* shli3: shli $lit1, $lit2, $dst */
2024 SEM_FN_NAME (i960base
,shli3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2026 #define FLD(f) abuf->fields.sfmt_emul3.f
2027 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2028 int UNUSED written
= 0;
2029 IADDR UNUSED pc
= abuf
->addr
;
2030 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2033 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SLLSI (FLD (f_src2
), FLD (f_src1
)));
2034 * FLD (i_dst
) = opval
;
2035 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2042 /* shri: shri $src1, $src2, $dst */
2045 SEM_FN_NAME (i960base
,shri
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2047 #define FLD(f) abuf->fields.sfmt_emul.f
2048 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2049 int UNUSED written
= 0;
2050 IADDR UNUSED pc
= abuf
->addr
;
2051 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2054 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (SRASI (* FLD (i_src2
), 31)) : (SRASI (* FLD (i_src2
), * FLD (i_src1
)));
2055 * FLD (i_dst
) = opval
;
2056 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2063 /* shri1: shri $lit1, $src2, $dst */
2066 SEM_FN_NAME (i960base
,shri1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2068 #define FLD(f) abuf->fields.sfmt_emul1.f
2069 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2070 int UNUSED written
= 0;
2071 IADDR UNUSED pc
= abuf
->addr
;
2072 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2075 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (SRASI (* FLD (i_src2
), 31)) : (SRASI (* FLD (i_src2
), FLD (f_src1
)));
2076 * FLD (i_dst
) = opval
;
2077 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2084 /* shri2: shri $src1, $lit2, $dst */
2087 SEM_FN_NAME (i960base
,shri2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2089 #define FLD(f) abuf->fields.sfmt_emul2.f
2090 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2091 int UNUSED written
= 0;
2092 IADDR UNUSED pc
= abuf
->addr
;
2093 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2096 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (SRASI (FLD (f_src2
), 31)) : (SRASI (FLD (f_src2
), * FLD (i_src1
)));
2097 * FLD (i_dst
) = opval
;
2098 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2105 /* shri3: shri $lit1, $lit2, $dst */
2108 SEM_FN_NAME (i960base
,shri3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2110 #define FLD(f) abuf->fields.sfmt_emul3.f
2111 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2112 int UNUSED written
= 0;
2113 IADDR UNUSED pc
= abuf
->addr
;
2114 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2117 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (SRASI (FLD (f_src2
), 31)) : (SRASI (FLD (f_src2
), FLD (f_src1
)));
2118 * FLD (i_dst
) = opval
;
2119 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2126 /* emul: emul $src1, $src2, $dst */
2129 SEM_FN_NAME (i960base
,emul
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2131 #define FLD(f) abuf->fields.sfmt_emul.f
2132 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2133 int UNUSED written
= 0;
2134 IADDR UNUSED pc
= abuf
->addr
;
2135 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2140 tmp_temp
= MULDI (ZEXTSIDI (* FLD (i_src1
)), ZEXTSIDI (* FLD (i_src2
)));
2141 tmp_dregno
= FLD (f_srcdst
);
2143 SI opval
= TRUNCDISI (tmp_temp
);
2144 * FLD (i_dst
) = opval
;
2145 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2148 SI opval
= TRUNCDISI (SRLDI (tmp_temp
, 32));
2149 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2150 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
2158 /* emul1: emul $lit1, $src2, $dst */
2161 SEM_FN_NAME (i960base
,emul1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2163 #define FLD(f) abuf->fields.sfmt_emul1.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
, 4);
2172 tmp_temp
= MULDI (ZEXTSIDI (FLD (f_src1
)), ZEXTSIDI (* FLD (i_src2
)));
2173 tmp_dregno
= FLD (f_srcdst
);
2175 SI opval
= TRUNCDISI (tmp_temp
);
2176 * FLD (i_dst
) = opval
;
2177 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2180 SI opval
= TRUNCDISI (SRLDI (tmp_temp
, 32));
2181 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2182 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
2190 /* emul2: emul $src1, $lit2, $dst */
2193 SEM_FN_NAME (i960base
,emul2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2195 #define FLD(f) abuf->fields.sfmt_emul2.f
2196 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2197 int UNUSED written
= 0;
2198 IADDR UNUSED pc
= abuf
->addr
;
2199 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2204 tmp_temp
= MULDI (ZEXTSIDI (* FLD (i_src1
)), ZEXTSIDI (FLD (f_src2
)));
2205 tmp_dregno
= FLD (f_srcdst
);
2207 SI opval
= TRUNCDISI (tmp_temp
);
2208 * FLD (i_dst
) = opval
;
2209 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2212 SI opval
= TRUNCDISI (SRLDI (tmp_temp
, 32));
2213 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2214 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
2222 /* emul3: emul $lit1, $lit2, $dst */
2225 SEM_FN_NAME (i960base
,emul3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2227 #define FLD(f) abuf->fields.sfmt_emul3.f
2228 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2229 int UNUSED written
= 0;
2230 IADDR UNUSED pc
= abuf
->addr
;
2231 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2236 tmp_temp
= MULDI (ZEXTSIDI (FLD (f_src1
)), ZEXTSIDI (FLD (f_src2
)));
2237 tmp_dregno
= FLD (f_srcdst
);
2239 SI opval
= TRUNCDISI (tmp_temp
);
2240 * FLD (i_dst
) = opval
;
2241 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2244 SI opval
= TRUNCDISI (SRLDI (tmp_temp
, 32));
2245 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2246 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
2254 /* mov: mov $src1, $dst */
2257 SEM_FN_NAME (i960base
,mov
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2259 #define FLD(f) abuf->fields.sfmt_emul2.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
, 4);
2266 SI opval
= * FLD (i_src1
);
2267 * FLD (i_dst
) = opval
;
2268 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2275 /* mov1: mov $lit1, $dst */
2278 SEM_FN_NAME (i960base
,mov1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2280 #define FLD(f) abuf->fields.sfmt_emul3.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
, 4);
2287 SI opval
= FLD (f_src1
);
2288 * FLD (i_dst
) = opval
;
2289 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2296 /* movl: movl $src1, $dst */
2299 SEM_FN_NAME (i960base
,movl
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2301 #define FLD(f) abuf->fields.sfmt_movq.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
, 4);
2310 tmp_dregno
= FLD (f_srcdst
);
2311 tmp_sregno
= FLD (f_src1
);
2313 SI opval
= * FLD (i_src1
);
2314 * FLD (i_dst
) = opval
;
2315 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2318 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (1))]);
2319 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2320 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
2328 /* movl1: movl $lit1, $dst */
2331 SEM_FN_NAME (i960base
,movl1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2333 #define FLD(f) abuf->fields.sfmt_emul3.f
2334 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2335 int UNUSED written
= 0;
2336 IADDR UNUSED pc
= abuf
->addr
;
2337 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2341 tmp_dregno
= FLD (f_srcdst
);
2343 SI opval
= FLD (f_src1
);
2344 * FLD (i_dst
) = opval
;
2345 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2349 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2350 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
2358 /* movt: movt $src1, $dst */
2361 SEM_FN_NAME (i960base
,movt
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2363 #define FLD(f) abuf->fields.sfmt_movq.f
2364 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2365 int UNUSED written
= 0;
2366 IADDR UNUSED pc
= abuf
->addr
;
2367 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2372 tmp_dregno
= FLD (f_srcdst
);
2373 tmp_sregno
= FLD (f_src1
);
2375 SI opval
= * FLD (i_src1
);
2376 * FLD (i_dst
) = opval
;
2377 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2380 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (1))]);
2381 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2382 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
2385 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (2))]);
2386 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
2387 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
2395 /* movt1: movt $lit1, $dst */
2398 SEM_FN_NAME (i960base
,movt1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2400 #define FLD(f) abuf->fields.sfmt_movq.f
2401 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2402 int UNUSED written
= 0;
2403 IADDR UNUSED pc
= abuf
->addr
;
2404 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2408 tmp_dregno
= FLD (f_srcdst
);
2410 SI opval
= FLD (f_src1
);
2411 * FLD (i_dst
) = opval
;
2412 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2416 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2417 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
2421 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
2422 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
2430 /* movq: movq $src1, $dst */
2433 SEM_FN_NAME (i960base
,movq
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2435 #define FLD(f) abuf->fields.sfmt_movq.f
2436 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2437 int UNUSED written
= 0;
2438 IADDR UNUSED pc
= abuf
->addr
;
2439 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2444 tmp_dregno
= FLD (f_srcdst
);
2445 tmp_sregno
= FLD (f_src1
);
2447 SI opval
= * FLD (i_src1
);
2448 * FLD (i_dst
) = opval
;
2449 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2452 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (1))]);
2453 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2454 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
2457 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (2))]);
2458 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
2459 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
2462 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (3))]);
2463 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
2464 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-3", 'x', opval
);
2472 /* movq1: movq $lit1, $dst */
2475 SEM_FN_NAME (i960base
,movq1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2477 #define FLD(f) abuf->fields.sfmt_movq.f
2478 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2479 int UNUSED written
= 0;
2480 IADDR UNUSED pc
= abuf
->addr
;
2481 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2485 tmp_dregno
= FLD (f_srcdst
);
2487 SI opval
= FLD (f_src1
);
2488 * FLD (i_dst
) = opval
;
2489 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2493 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2494 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
2498 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
2499 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
2503 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
2504 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-3", 'x', opval
);
2512 /* modpc: modpc $src1, $src2, $dst */
2515 SEM_FN_NAME (i960base
,modpc
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2517 #define FLD(f) abuf->fields.sfmt_emul1.f
2518 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2519 int UNUSED written
= 0;
2520 IADDR UNUSED pc
= abuf
->addr
;
2521 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2524 SI opval
= * FLD (i_src2
);
2525 * FLD (i_dst
) = opval
;
2526 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2533 /* modac: modac $src1, $src2, $dst */
2536 SEM_FN_NAME (i960base
,modac
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2538 #define FLD(f) abuf->fields.sfmt_emul1.f
2539 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2540 int UNUSED written
= 0;
2541 IADDR UNUSED pc
= abuf
->addr
;
2542 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2545 SI opval
= * FLD (i_src2
);
2546 * FLD (i_dst
) = opval
;
2547 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2554 /* lda-offset: lda $offset, $dst */
2557 SEM_FN_NAME (i960base
,lda_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2559 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
2560 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2561 int UNUSED written
= 0;
2562 IADDR UNUSED pc
= abuf
->addr
;
2563 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2566 SI opval
= FLD (f_offset
);
2567 * FLD (i_dst
) = opval
;
2568 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2575 /* lda-indirect-offset: lda $offset($abase), $dst */
2578 SEM_FN_NAME (i960base
,lda_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2580 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.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
, 4);
2587 SI opval
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
2588 * FLD (i_dst
) = opval
;
2589 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2596 /* lda-indirect: lda ($abase), $dst */
2599 SEM_FN_NAME (i960base
,lda_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2601 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.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
, 4);
2608 SI opval
= * FLD (i_abase
);
2609 * FLD (i_dst
) = opval
;
2610 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2617 /* lda-indirect-index: lda ($abase)[$index*S$scale], $dst */
2620 SEM_FN_NAME (i960base
,lda_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2622 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.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
, 4);
2629 SI opval
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
2630 * FLD (i_dst
) = opval
;
2631 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2638 /* lda-disp: lda $optdisp, $dst */
2641 SEM_FN_NAME (i960base
,lda_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2643 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.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
, 8);
2650 SI opval
= FLD (f_optdisp
);
2651 * FLD (i_dst
) = opval
;
2652 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2659 /* lda-indirect-disp: lda $optdisp($abase), $dst */
2662 SEM_FN_NAME (i960base
,lda_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2664 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.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
, 8);
2671 SI opval
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
2672 * FLD (i_dst
) = opval
;
2673 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2680 /* lda-index-disp: lda $optdisp[$index*S$scale], $dst */
2683 SEM_FN_NAME (i960base
,lda_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2685 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.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
, 8);
2692 SI opval
= ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
2693 * FLD (i_dst
) = opval
;
2694 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2701 /* lda-indirect-index-disp: lda $optdisp($abase)[$index*S$scale], $dst */
2704 SEM_FN_NAME (i960base
,lda_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2706 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.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
, 8);
2713 SI opval
= ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
2714 * FLD (i_dst
) = opval
;
2715 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2722 /* ld-offset: ld $offset, $dst */
2725 SEM_FN_NAME (i960base
,ld_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2727 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.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
, 4);
2734 SI opval
= GETMEMSI (current_cpu
, pc
, FLD (f_offset
));
2735 * FLD (i_dst
) = opval
;
2736 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2743 /* ld-indirect-offset: ld $offset($abase), $dst */
2746 SEM_FN_NAME (i960base
,ld_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2748 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.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
, 4);
2755 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
2756 * FLD (i_dst
) = opval
;
2757 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2764 /* ld-indirect: ld ($abase), $dst */
2767 SEM_FN_NAME (i960base
,ld_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2769 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.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
, 4);
2776 SI opval
= GETMEMSI (current_cpu
, pc
, * FLD (i_abase
));
2777 * FLD (i_dst
) = opval
;
2778 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2785 /* ld-indirect-index: ld ($abase)[$index*S$scale], $dst */
2788 SEM_FN_NAME (i960base
,ld_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2790 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.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
, 4);
2797 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
2798 * FLD (i_dst
) = opval
;
2799 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2806 /* ld-disp: ld $optdisp, $dst */
2809 SEM_FN_NAME (i960base
,ld_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2811 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2812 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2813 int UNUSED written
= 0;
2814 IADDR UNUSED pc
= abuf
->addr
;
2815 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2818 SI opval
= GETMEMSI (current_cpu
, pc
, FLD (f_optdisp
));
2819 * FLD (i_dst
) = opval
;
2820 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2827 /* ld-indirect-disp: ld $optdisp($abase), $dst */
2830 SEM_FN_NAME (i960base
,ld_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2832 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2833 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2834 int UNUSED written
= 0;
2835 IADDR UNUSED pc
= abuf
->addr
;
2836 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2839 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
2840 * FLD (i_dst
) = opval
;
2841 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2848 /* ld-index-disp: ld $optdisp[$index*S$scale], $dst */
2851 SEM_FN_NAME (i960base
,ld_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2853 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2854 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2855 int UNUSED written
= 0;
2856 IADDR UNUSED pc
= abuf
->addr
;
2857 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2860 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
2861 * FLD (i_dst
) = opval
;
2862 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2869 /* ld-indirect-index-disp: ld $optdisp($abase)[$index*S$scale], $dst */
2872 SEM_FN_NAME (i960base
,ld_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2874 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2875 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2876 int UNUSED written
= 0;
2877 IADDR UNUSED pc
= abuf
->addr
;
2878 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2881 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
2882 * FLD (i_dst
) = opval
;
2883 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2890 /* ldob-offset: ldob $offset, $dst */
2893 SEM_FN_NAME (i960base
,ldob_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2895 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
2896 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2897 int UNUSED written
= 0;
2898 IADDR UNUSED pc
= abuf
->addr
;
2899 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2902 SI opval
= GETMEMUQI (current_cpu
, pc
, FLD (f_offset
));
2903 * FLD (i_dst
) = opval
;
2904 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2911 /* ldob-indirect-offset: ldob $offset($abase), $dst */
2914 SEM_FN_NAME (i960base
,ldob_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2916 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
2917 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2918 int UNUSED written
= 0;
2919 IADDR UNUSED pc
= abuf
->addr
;
2920 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2923 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
2924 * FLD (i_dst
) = opval
;
2925 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2932 /* ldob-indirect: ldob ($abase), $dst */
2935 SEM_FN_NAME (i960base
,ldob_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2937 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
2938 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2939 int UNUSED written
= 0;
2940 IADDR UNUSED pc
= abuf
->addr
;
2941 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2944 SI opval
= GETMEMUQI (current_cpu
, pc
, * FLD (i_abase
));
2945 * FLD (i_dst
) = opval
;
2946 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2953 /* ldob-indirect-index: ldob ($abase)[$index*S$scale], $dst */
2956 SEM_FN_NAME (i960base
,ldob_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2958 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2959 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2960 int UNUSED written
= 0;
2961 IADDR UNUSED pc
= abuf
->addr
;
2962 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2965 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
2966 * FLD (i_dst
) = opval
;
2967 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2974 /* ldob-disp: ldob $optdisp, $dst */
2977 SEM_FN_NAME (i960base
,ldob_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2979 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2980 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2981 int UNUSED written
= 0;
2982 IADDR UNUSED pc
= abuf
->addr
;
2983 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2986 SI opval
= GETMEMUQI (current_cpu
, pc
, FLD (f_optdisp
));
2987 * FLD (i_dst
) = opval
;
2988 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2995 /* ldob-indirect-disp: ldob $optdisp($abase), $dst */
2998 SEM_FN_NAME (i960base
,ldob_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3000 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3001 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3002 int UNUSED written
= 0;
3003 IADDR UNUSED pc
= abuf
->addr
;
3004 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3007 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
3008 * FLD (i_dst
) = opval
;
3009 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3016 /* ldob-index-disp: ldob $optdisp[$index*S$scale], $dst */
3019 SEM_FN_NAME (i960base
,ldob_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3021 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3022 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3023 int UNUSED written
= 0;
3024 IADDR UNUSED pc
= abuf
->addr
;
3025 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3028 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3029 * FLD (i_dst
) = opval
;
3030 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3037 /* ldob-indirect-index-disp: ldob $optdisp($abase)[$index*S$scale], $dst */
3040 SEM_FN_NAME (i960base
,ldob_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3042 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3043 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3044 int UNUSED written
= 0;
3045 IADDR UNUSED pc
= abuf
->addr
;
3046 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3049 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
3050 * FLD (i_dst
) = opval
;
3051 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3058 /* ldos-offset: ldos $offset, $dst */
3061 SEM_FN_NAME (i960base
,ldos_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3063 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3064 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3065 int UNUSED written
= 0;
3066 IADDR UNUSED pc
= abuf
->addr
;
3067 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3070 SI opval
= GETMEMUHI (current_cpu
, pc
, FLD (f_offset
));
3071 * FLD (i_dst
) = opval
;
3072 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3079 /* ldos-indirect-offset: ldos $offset($abase), $dst */
3082 SEM_FN_NAME (i960base
,ldos_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3084 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3085 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3086 int UNUSED written
= 0;
3087 IADDR UNUSED pc
= abuf
->addr
;
3088 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3091 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
3092 * FLD (i_dst
) = opval
;
3093 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3100 /* ldos-indirect: ldos ($abase), $dst */
3103 SEM_FN_NAME (i960base
,ldos_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3105 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3106 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3107 int UNUSED written
= 0;
3108 IADDR UNUSED pc
= abuf
->addr
;
3109 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3112 SI opval
= GETMEMUHI (current_cpu
, pc
, * FLD (i_abase
));
3113 * FLD (i_dst
) = opval
;
3114 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3121 /* ldos-indirect-index: ldos ($abase)[$index*S$scale], $dst */
3124 SEM_FN_NAME (i960base
,ldos_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3126 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3127 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3128 int UNUSED written
= 0;
3129 IADDR UNUSED pc
= abuf
->addr
;
3130 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3133 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3134 * FLD (i_dst
) = opval
;
3135 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3142 /* ldos-disp: ldos $optdisp, $dst */
3145 SEM_FN_NAME (i960base
,ldos_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3147 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3148 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3149 int UNUSED written
= 0;
3150 IADDR UNUSED pc
= abuf
->addr
;
3151 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3154 SI opval
= GETMEMUHI (current_cpu
, pc
, FLD (f_optdisp
));
3155 * FLD (i_dst
) = opval
;
3156 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3163 /* ldos-indirect-disp: ldos $optdisp($abase), $dst */
3166 SEM_FN_NAME (i960base
,ldos_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3168 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3169 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3170 int UNUSED written
= 0;
3171 IADDR UNUSED pc
= abuf
->addr
;
3172 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3175 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
3176 * FLD (i_dst
) = opval
;
3177 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3184 /* ldos-index-disp: ldos $optdisp[$index*S$scale], $dst */
3187 SEM_FN_NAME (i960base
,ldos_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3189 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3190 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3191 int UNUSED written
= 0;
3192 IADDR UNUSED pc
= abuf
->addr
;
3193 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3196 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3197 * FLD (i_dst
) = opval
;
3198 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3205 /* ldos-indirect-index-disp: ldos $optdisp($abase)[$index*S$scale], $dst */
3208 SEM_FN_NAME (i960base
,ldos_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3210 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3211 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3212 int UNUSED written
= 0;
3213 IADDR UNUSED pc
= abuf
->addr
;
3214 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3217 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
3218 * FLD (i_dst
) = opval
;
3219 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3226 /* ldib-offset: ldib $offset, $dst */
3229 SEM_FN_NAME (i960base
,ldib_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3231 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3232 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3233 int UNUSED written
= 0;
3234 IADDR UNUSED pc
= abuf
->addr
;
3235 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3238 SI opval
= GETMEMQI (current_cpu
, pc
, FLD (f_offset
));
3239 * FLD (i_dst
) = opval
;
3240 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3247 /* ldib-indirect-offset: ldib $offset($abase), $dst */
3250 SEM_FN_NAME (i960base
,ldib_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3252 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3253 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3254 int UNUSED written
= 0;
3255 IADDR UNUSED pc
= abuf
->addr
;
3256 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3259 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
3260 * FLD (i_dst
) = opval
;
3261 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3268 /* ldib-indirect: ldib ($abase), $dst */
3271 SEM_FN_NAME (i960base
,ldib_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3273 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3274 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3275 int UNUSED written
= 0;
3276 IADDR UNUSED pc
= abuf
->addr
;
3277 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3280 SI opval
= GETMEMQI (current_cpu
, pc
, * FLD (i_abase
));
3281 * FLD (i_dst
) = opval
;
3282 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3289 /* ldib-indirect-index: ldib ($abase)[$index*S$scale], $dst */
3292 SEM_FN_NAME (i960base
,ldib_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3294 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3295 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3296 int UNUSED written
= 0;
3297 IADDR UNUSED pc
= abuf
->addr
;
3298 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3301 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3302 * FLD (i_dst
) = opval
;
3303 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3310 /* ldib-disp: ldib $optdisp, $dst */
3313 SEM_FN_NAME (i960base
,ldib_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3315 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3316 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3317 int UNUSED written
= 0;
3318 IADDR UNUSED pc
= abuf
->addr
;
3319 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3322 SI opval
= GETMEMQI (current_cpu
, pc
, FLD (f_optdisp
));
3323 * FLD (i_dst
) = opval
;
3324 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3331 /* ldib-indirect-disp: ldib $optdisp($abase), $dst */
3334 SEM_FN_NAME (i960base
,ldib_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3336 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3337 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3338 int UNUSED written
= 0;
3339 IADDR UNUSED pc
= abuf
->addr
;
3340 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3343 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
3344 * FLD (i_dst
) = opval
;
3345 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3352 /* ldib-index-disp: ldib $optdisp[$index*S$scale], $dst */
3355 SEM_FN_NAME (i960base
,ldib_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3357 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3358 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3359 int UNUSED written
= 0;
3360 IADDR UNUSED pc
= abuf
->addr
;
3361 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3364 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3365 * FLD (i_dst
) = opval
;
3366 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3373 /* ldib-indirect-index-disp: ldib $optdisp($abase)[$index*S$scale], $dst */
3376 SEM_FN_NAME (i960base
,ldib_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3378 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3379 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3380 int UNUSED written
= 0;
3381 IADDR UNUSED pc
= abuf
->addr
;
3382 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3385 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
3386 * FLD (i_dst
) = opval
;
3387 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3394 /* ldis-offset: ldis $offset, $dst */
3397 SEM_FN_NAME (i960base
,ldis_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3399 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3400 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3401 int UNUSED written
= 0;
3402 IADDR UNUSED pc
= abuf
->addr
;
3403 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3406 SI opval
= GETMEMHI (current_cpu
, pc
, FLD (f_offset
));
3407 * FLD (i_dst
) = opval
;
3408 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3415 /* ldis-indirect-offset: ldis $offset($abase), $dst */
3418 SEM_FN_NAME (i960base
,ldis_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3420 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3421 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3422 int UNUSED written
= 0;
3423 IADDR UNUSED pc
= abuf
->addr
;
3424 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3427 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
3428 * FLD (i_dst
) = opval
;
3429 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3436 /* ldis-indirect: ldis ($abase), $dst */
3439 SEM_FN_NAME (i960base
,ldis_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3441 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3442 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3443 int UNUSED written
= 0;
3444 IADDR UNUSED pc
= abuf
->addr
;
3445 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3448 SI opval
= GETMEMHI (current_cpu
, pc
, * FLD (i_abase
));
3449 * FLD (i_dst
) = opval
;
3450 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3457 /* ldis-indirect-index: ldis ($abase)[$index*S$scale], $dst */
3460 SEM_FN_NAME (i960base
,ldis_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3462 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3463 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3464 int UNUSED written
= 0;
3465 IADDR UNUSED pc
= abuf
->addr
;
3466 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3469 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3470 * FLD (i_dst
) = opval
;
3471 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3478 /* ldis-disp: ldis $optdisp, $dst */
3481 SEM_FN_NAME (i960base
,ldis_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3483 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3484 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3485 int UNUSED written
= 0;
3486 IADDR UNUSED pc
= abuf
->addr
;
3487 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3490 SI opval
= GETMEMHI (current_cpu
, pc
, FLD (f_optdisp
));
3491 * FLD (i_dst
) = opval
;
3492 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3499 /* ldis-indirect-disp: ldis $optdisp($abase), $dst */
3502 SEM_FN_NAME (i960base
,ldis_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3504 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3505 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3506 int UNUSED written
= 0;
3507 IADDR UNUSED pc
= abuf
->addr
;
3508 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3511 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
3512 * FLD (i_dst
) = opval
;
3513 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3520 /* ldis-index-disp: ldis $optdisp[$index*S$scale], $dst */
3523 SEM_FN_NAME (i960base
,ldis_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3525 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3526 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3527 int UNUSED written
= 0;
3528 IADDR UNUSED pc
= abuf
->addr
;
3529 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3532 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3533 * FLD (i_dst
) = opval
;
3534 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3541 /* ldis-indirect-index-disp: ldis $optdisp($abase)[$index*S$scale], $dst */
3544 SEM_FN_NAME (i960base
,ldis_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3546 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3547 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3548 int UNUSED written
= 0;
3549 IADDR UNUSED pc
= abuf
->addr
;
3550 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3553 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
3554 * FLD (i_dst
) = opval
;
3555 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3562 /* ldl-offset: ldl $offset, $dst */
3565 SEM_FN_NAME (i960base
,ldl_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3567 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3568 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3569 int UNUSED written
= 0;
3570 IADDR UNUSED pc
= abuf
->addr
;
3571 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3576 tmp_dregno
= FLD (f_srcdst
);
3577 tmp_temp
= FLD (f_offset
);
3579 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3580 * FLD (i_dst
) = opval
;
3581 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3584 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3585 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3586 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3594 /* ldl-indirect-offset: ldl $offset($abase), $dst */
3597 SEM_FN_NAME (i960base
,ldl_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3599 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3600 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3601 int UNUSED written
= 0;
3602 IADDR UNUSED pc
= abuf
->addr
;
3603 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3608 tmp_dregno
= FLD (f_srcdst
);
3609 tmp_temp
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
3611 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3612 * FLD (i_dst
) = opval
;
3613 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3616 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3617 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3618 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3626 /* ldl-indirect: ldl ($abase), $dst */
3629 SEM_FN_NAME (i960base
,ldl_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3631 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3632 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3633 int UNUSED written
= 0;
3634 IADDR UNUSED pc
= abuf
->addr
;
3635 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3640 tmp_dregno
= FLD (f_srcdst
);
3641 tmp_temp
= * FLD (i_abase
);
3643 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3644 * FLD (i_dst
) = opval
;
3645 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3648 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3649 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3650 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3658 /* ldl-indirect-index: ldl ($abase)[$index*S$scale], $dst */
3661 SEM_FN_NAME (i960base
,ldl_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3663 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3664 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3665 int UNUSED written
= 0;
3666 IADDR UNUSED pc
= abuf
->addr
;
3667 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3672 tmp_dregno
= FLD (f_srcdst
);
3673 tmp_temp
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
3675 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3676 * FLD (i_dst
) = opval
;
3677 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3680 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3681 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3682 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3690 /* ldl-disp: ldl $optdisp, $dst */
3693 SEM_FN_NAME (i960base
,ldl_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3695 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3696 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3697 int UNUSED written
= 0;
3698 IADDR UNUSED pc
= abuf
->addr
;
3699 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3704 tmp_dregno
= FLD (f_srcdst
);
3705 tmp_temp
= FLD (f_optdisp
);
3707 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3708 * FLD (i_dst
) = opval
;
3709 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3712 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3713 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3714 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3722 /* ldl-indirect-disp: ldl $optdisp($abase), $dst */
3725 SEM_FN_NAME (i960base
,ldl_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3727 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3728 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3729 int UNUSED written
= 0;
3730 IADDR UNUSED pc
= abuf
->addr
;
3731 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3736 tmp_dregno
= FLD (f_srcdst
);
3737 tmp_temp
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
3739 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3740 * FLD (i_dst
) = opval
;
3741 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3744 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3745 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3746 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3754 /* ldl-index-disp: ldl $optdisp[$index*S$scale], $dst */
3757 SEM_FN_NAME (i960base
,ldl_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3759 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3760 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3761 int UNUSED written
= 0;
3762 IADDR UNUSED pc
= abuf
->addr
;
3763 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3768 tmp_dregno
= FLD (f_srcdst
);
3769 tmp_temp
= ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
3771 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3772 * FLD (i_dst
) = opval
;
3773 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3776 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3777 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3778 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3786 /* ldl-indirect-index-disp: ldl $optdisp($abase)[$index*S$scale], $dst */
3789 SEM_FN_NAME (i960base
,ldl_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3791 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3792 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3793 int UNUSED written
= 0;
3794 IADDR UNUSED pc
= abuf
->addr
;
3795 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3800 tmp_dregno
= FLD (f_srcdst
);
3801 tmp_temp
= ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3803 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3804 * FLD (i_dst
) = opval
;
3805 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3808 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3809 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3810 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3818 /* ldt-offset: ldt $offset, $dst */
3821 SEM_FN_NAME (i960base
,ldt_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3823 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3824 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3825 int UNUSED written
= 0;
3826 IADDR UNUSED pc
= abuf
->addr
;
3827 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3832 tmp_dregno
= FLD (f_srcdst
);
3833 tmp_temp
= FLD (f_offset
);
3835 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3836 * FLD (i_dst
) = opval
;
3837 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3840 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3841 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3842 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3845 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3846 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3847 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
3855 /* ldt-indirect-offset: ldt $offset($abase), $dst */
3858 SEM_FN_NAME (i960base
,ldt_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3860 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3861 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3862 int UNUSED written
= 0;
3863 IADDR UNUSED pc
= abuf
->addr
;
3864 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3869 tmp_dregno
= FLD (f_srcdst
);
3870 tmp_temp
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
3872 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3873 * FLD (i_dst
) = opval
;
3874 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3877 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3878 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3879 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3882 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3883 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3884 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
3892 /* ldt-indirect: ldt ($abase), $dst */
3895 SEM_FN_NAME (i960base
,ldt_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3897 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3898 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3899 int UNUSED written
= 0;
3900 IADDR UNUSED pc
= abuf
->addr
;
3901 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3906 tmp_dregno
= FLD (f_srcdst
);
3907 tmp_temp
= * FLD (i_abase
);
3909 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3910 * FLD (i_dst
) = opval
;
3911 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3914 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3915 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3916 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3919 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3920 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3921 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
3929 /* ldt-indirect-index: ldt ($abase)[$index*S$scale], $dst */
3932 SEM_FN_NAME (i960base
,ldt_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3934 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3935 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3936 int UNUSED written
= 0;
3937 IADDR UNUSED pc
= abuf
->addr
;
3938 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3943 tmp_dregno
= FLD (f_srcdst
);
3944 tmp_temp
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
3946 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3947 * FLD (i_dst
) = opval
;
3948 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3951 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3952 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3953 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3956 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3957 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3958 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
3966 /* ldt-disp: ldt $optdisp, $dst */
3969 SEM_FN_NAME (i960base
,ldt_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3971 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3972 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3973 int UNUSED written
= 0;
3974 IADDR UNUSED pc
= abuf
->addr
;
3975 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3980 tmp_dregno
= FLD (f_srcdst
);
3981 tmp_temp
= FLD (f_optdisp
);
3983 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3984 * FLD (i_dst
) = opval
;
3985 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3988 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3989 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3990 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3993 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3994 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3995 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4003 /* ldt-indirect-disp: ldt $optdisp($abase), $dst */
4006 SEM_FN_NAME (i960base
,ldt_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4008 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4009 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4010 int UNUSED written
= 0;
4011 IADDR UNUSED pc
= abuf
->addr
;
4012 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4017 tmp_dregno
= FLD (f_srcdst
);
4018 tmp_temp
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
4020 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4021 * FLD (i_dst
) = opval
;
4022 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4025 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4026 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4027 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
4030 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4031 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4032 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4040 /* ldt-index-disp: ldt $optdisp[$index*S$scale], $dst */
4043 SEM_FN_NAME (i960base
,ldt_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4045 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4046 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4047 int UNUSED written
= 0;
4048 IADDR UNUSED pc
= abuf
->addr
;
4049 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4054 tmp_dregno
= FLD (f_srcdst
);
4055 tmp_temp
= ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
4057 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4058 * FLD (i_dst
) = opval
;
4059 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4062 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4063 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4064 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
4067 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4068 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4069 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4077 /* ldt-indirect-index-disp: ldt $optdisp($abase)[$index*S$scale], $dst */
4080 SEM_FN_NAME (i960base
,ldt_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4082 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4083 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4084 int UNUSED written
= 0;
4085 IADDR UNUSED pc
= abuf
->addr
;
4086 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4091 tmp_dregno
= FLD (f_srcdst
);
4092 tmp_temp
= ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
4094 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4095 * FLD (i_dst
) = opval
;
4096 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4099 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4100 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4101 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
4104 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4105 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4106 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4114 /* ldq-offset: ldq $offset, $dst */
4117 SEM_FN_NAME (i960base
,ldq_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4119 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
4120 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4121 int UNUSED written
= 0;
4122 IADDR UNUSED pc
= abuf
->addr
;
4123 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4128 tmp_dregno
= FLD (f_srcdst
);
4129 tmp_temp
= FLD (f_offset
);
4131 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4132 * FLD (i_dst
) = opval
;
4133 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4136 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4137 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4138 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
4141 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4142 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4143 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4146 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4147 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4148 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-3", 'x', opval
);
4156 /* ldq-indirect-offset: ldq $offset($abase), $dst */
4159 SEM_FN_NAME (i960base
,ldq_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4161 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
4162 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4163 int UNUSED written
= 0;
4164 IADDR UNUSED pc
= abuf
->addr
;
4165 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4170 tmp_dregno
= FLD (f_srcdst
);
4171 tmp_temp
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
4173 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4174 * FLD (i_dst
) = opval
;
4175 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4178 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4179 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4180 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
4183 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4184 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4185 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4188 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4189 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4190 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-3", 'x', opval
);
4198 /* ldq-indirect: ldq ($abase), $dst */
4201 SEM_FN_NAME (i960base
,ldq_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4203 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
4204 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4205 int UNUSED written
= 0;
4206 IADDR UNUSED pc
= abuf
->addr
;
4207 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4212 tmp_dregno
= FLD (f_srcdst
);
4213 tmp_temp
= * FLD (i_abase
);
4215 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4216 * FLD (i_dst
) = opval
;
4217 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4220 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4221 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4222 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
4225 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4226 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4227 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4230 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4231 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4232 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-3", 'x', opval
);
4240 /* ldq-indirect-index: ldq ($abase)[$index*S$scale], $dst */
4243 SEM_FN_NAME (i960base
,ldq_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4245 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4246 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4247 int UNUSED written
= 0;
4248 IADDR UNUSED pc
= abuf
->addr
;
4249 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4254 tmp_dregno
= FLD (f_srcdst
);
4255 tmp_temp
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
4257 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4258 * FLD (i_dst
) = opval
;
4259 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4262 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4263 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4264 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
4267 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4268 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4269 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4272 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4273 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4274 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-3", 'x', opval
);
4282 /* ldq-disp: ldq $optdisp, $dst */
4285 SEM_FN_NAME (i960base
,ldq_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4287 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4288 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4289 int UNUSED written
= 0;
4290 IADDR UNUSED pc
= abuf
->addr
;
4291 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4296 tmp_dregno
= FLD (f_srcdst
);
4297 tmp_temp
= FLD (f_optdisp
);
4299 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4300 * FLD (i_dst
) = opval
;
4301 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4304 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4305 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4306 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
4309 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4310 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4311 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4314 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4315 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4316 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-3", 'x', opval
);
4324 /* ldq-indirect-disp: ldq $optdisp($abase), $dst */
4327 SEM_FN_NAME (i960base
,ldq_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4329 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4330 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4331 int UNUSED written
= 0;
4332 IADDR UNUSED pc
= abuf
->addr
;
4333 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4338 tmp_dregno
= FLD (f_srcdst
);
4339 tmp_temp
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
4341 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4342 * FLD (i_dst
) = opval
;
4343 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4346 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4347 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4348 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
4351 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4352 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4353 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4356 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4357 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4358 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-3", 'x', opval
);
4366 /* ldq-index-disp: ldq $optdisp[$index*S$scale], $dst */
4369 SEM_FN_NAME (i960base
,ldq_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4371 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4372 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4373 int UNUSED written
= 0;
4374 IADDR UNUSED pc
= abuf
->addr
;
4375 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4380 tmp_dregno
= FLD (f_srcdst
);
4381 tmp_temp
= ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
4383 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4384 * FLD (i_dst
) = opval
;
4385 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4388 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4389 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4390 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
4393 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4394 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4395 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4398 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4399 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4400 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-3", 'x', opval
);
4408 /* ldq-indirect-index-disp: ldq $optdisp($abase)[$index*S$scale], $dst */
4411 SEM_FN_NAME (i960base
,ldq_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4413 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4414 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4415 int UNUSED written
= 0;
4416 IADDR UNUSED pc
= abuf
->addr
;
4417 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4422 tmp_dregno
= FLD (f_srcdst
);
4423 tmp_temp
= ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
4425 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4426 * FLD (i_dst
) = opval
;
4427 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4430 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4431 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4432 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
4435 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4436 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4437 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4440 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4441 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4442 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-3", 'x', opval
);
4450 /* st-offset: st $st_src, $offset */
4453 SEM_FN_NAME (i960base
,st_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4455 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4456 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4457 int UNUSED written
= 0;
4458 IADDR UNUSED pc
= abuf
->addr
;
4459 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4462 SI opval
= * FLD (i_st_src
);
4463 SETMEMSI (current_cpu
, pc
, FLD (f_offset
), opval
);
4464 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4471 /* st-indirect-offset: st $st_src, $offset($abase) */
4474 SEM_FN_NAME (i960base
,st_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4476 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4477 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4478 int UNUSED written
= 0;
4479 IADDR UNUSED pc
= abuf
->addr
;
4480 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4483 SI opval
= * FLD (i_st_src
);
4484 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
4485 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4492 /* st-indirect: st $st_src, ($abase) */
4495 SEM_FN_NAME (i960base
,st_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4497 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4498 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4499 int UNUSED written
= 0;
4500 IADDR UNUSED pc
= abuf
->addr
;
4501 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4504 SI opval
= * FLD (i_st_src
);
4505 SETMEMSI (current_cpu
, pc
, * FLD (i_abase
), opval
);
4506 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4513 /* st-indirect-index: st $st_src, ($abase)[$index*S$scale] */
4516 SEM_FN_NAME (i960base
,st_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4518 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4519 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4520 int UNUSED written
= 0;
4521 IADDR UNUSED pc
= abuf
->addr
;
4522 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4525 SI opval
= * FLD (i_st_src
);
4526 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4527 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4534 /* st-disp: st $st_src, $optdisp */
4537 SEM_FN_NAME (i960base
,st_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4539 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4540 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4541 int UNUSED written
= 0;
4542 IADDR UNUSED pc
= abuf
->addr
;
4543 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4546 SI opval
= * FLD (i_st_src
);
4547 SETMEMSI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
4548 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4555 /* st-indirect-disp: st $st_src, $optdisp($abase) */
4558 SEM_FN_NAME (i960base
,st_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4560 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4561 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4562 int UNUSED written
= 0;
4563 IADDR UNUSED pc
= abuf
->addr
;
4564 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4567 SI opval
= * FLD (i_st_src
);
4568 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
4569 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4576 /* st-index-disp: st $st_src, $optdisp[$index*S$scale */
4579 SEM_FN_NAME (i960base
,st_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4581 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4582 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4583 int UNUSED written
= 0;
4584 IADDR UNUSED pc
= abuf
->addr
;
4585 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4588 SI opval
= * FLD (i_st_src
);
4589 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4590 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4597 /* st-indirect-index-disp: st $st_src, $optdisp($abase)[$index*S$scale] */
4600 SEM_FN_NAME (i960base
,st_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4602 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4603 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4604 int UNUSED written
= 0;
4605 IADDR UNUSED pc
= abuf
->addr
;
4606 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4609 SI opval
= * FLD (i_st_src
);
4610 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
4611 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4618 /* stob-offset: stob $st_src, $offset */
4621 SEM_FN_NAME (i960base
,stob_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4623 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4624 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4625 int UNUSED written
= 0;
4626 IADDR UNUSED pc
= abuf
->addr
;
4627 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4630 QI opval
= * FLD (i_st_src
);
4631 SETMEMQI (current_cpu
, pc
, FLD (f_offset
), opval
);
4632 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4639 /* stob-indirect-offset: stob $st_src, $offset($abase) */
4642 SEM_FN_NAME (i960base
,stob_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4644 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.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);
4651 QI opval
= * FLD (i_st_src
);
4652 SETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
4653 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4660 /* stob-indirect: stob $st_src, ($abase) */
4663 SEM_FN_NAME (i960base
,stob_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4665 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4666 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4667 int UNUSED written
= 0;
4668 IADDR UNUSED pc
= abuf
->addr
;
4669 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4672 QI opval
= * FLD (i_st_src
);
4673 SETMEMQI (current_cpu
, pc
, * FLD (i_abase
), opval
);
4674 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4681 /* stob-indirect-index: stob $st_src, ($abase)[$index*S$scale] */
4684 SEM_FN_NAME (i960base
,stob_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4686 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4687 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4688 int UNUSED written
= 0;
4689 IADDR UNUSED pc
= abuf
->addr
;
4690 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4693 QI opval
= * FLD (i_st_src
);
4694 SETMEMQI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4695 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4702 /* stob-disp: stob $st_src, $optdisp */
4705 SEM_FN_NAME (i960base
,stob_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4707 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4708 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4709 int UNUSED written
= 0;
4710 IADDR UNUSED pc
= abuf
->addr
;
4711 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4714 QI opval
= * FLD (i_st_src
);
4715 SETMEMQI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
4716 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4723 /* stob-indirect-disp: stob $st_src, $optdisp($abase) */
4726 SEM_FN_NAME (i960base
,stob_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4728 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4729 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4730 int UNUSED written
= 0;
4731 IADDR UNUSED pc
= abuf
->addr
;
4732 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4735 QI opval
= * FLD (i_st_src
);
4736 SETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
4737 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4744 /* stob-index-disp: stob $st_src, $optdisp[$index*S$scale */
4747 SEM_FN_NAME (i960base
,stob_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4749 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4750 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4751 int UNUSED written
= 0;
4752 IADDR UNUSED pc
= abuf
->addr
;
4753 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4756 QI opval
= * FLD (i_st_src
);
4757 SETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4758 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4765 /* stob-indirect-index-disp: stob $st_src, $optdisp($abase)[$index*S$scale] */
4768 SEM_FN_NAME (i960base
,stob_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4770 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4771 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4772 int UNUSED written
= 0;
4773 IADDR UNUSED pc
= abuf
->addr
;
4774 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4777 QI opval
= * FLD (i_st_src
);
4778 SETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
4779 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4786 /* stos-offset: stos $st_src, $offset */
4789 SEM_FN_NAME (i960base
,stos_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4791 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4792 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4793 int UNUSED written
= 0;
4794 IADDR UNUSED pc
= abuf
->addr
;
4795 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4798 HI opval
= * FLD (i_st_src
);
4799 SETMEMHI (current_cpu
, pc
, FLD (f_offset
), opval
);
4800 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4807 /* stos-indirect-offset: stos $st_src, $offset($abase) */
4810 SEM_FN_NAME (i960base
,stos_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4812 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4813 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4814 int UNUSED written
= 0;
4815 IADDR UNUSED pc
= abuf
->addr
;
4816 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4819 HI opval
= * FLD (i_st_src
);
4820 SETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
4821 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4828 /* stos-indirect: stos $st_src, ($abase) */
4831 SEM_FN_NAME (i960base
,stos_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4833 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4834 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4835 int UNUSED written
= 0;
4836 IADDR UNUSED pc
= abuf
->addr
;
4837 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4840 HI opval
= * FLD (i_st_src
);
4841 SETMEMHI (current_cpu
, pc
, * FLD (i_abase
), opval
);
4842 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4849 /* stos-indirect-index: stos $st_src, ($abase)[$index*S$scale] */
4852 SEM_FN_NAME (i960base
,stos_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4854 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4855 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4856 int UNUSED written
= 0;
4857 IADDR UNUSED pc
= abuf
->addr
;
4858 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4861 HI opval
= * FLD (i_st_src
);
4862 SETMEMHI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4863 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4870 /* stos-disp: stos $st_src, $optdisp */
4873 SEM_FN_NAME (i960base
,stos_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4875 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4876 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4877 int UNUSED written
= 0;
4878 IADDR UNUSED pc
= abuf
->addr
;
4879 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4882 HI opval
= * FLD (i_st_src
);
4883 SETMEMHI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
4884 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4891 /* stos-indirect-disp: stos $st_src, $optdisp($abase) */
4894 SEM_FN_NAME (i960base
,stos_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4896 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4897 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4898 int UNUSED written
= 0;
4899 IADDR UNUSED pc
= abuf
->addr
;
4900 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4903 HI opval
= * FLD (i_st_src
);
4904 SETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
4905 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4912 /* stos-index-disp: stos $st_src, $optdisp[$index*S$scale */
4915 SEM_FN_NAME (i960base
,stos_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4917 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4918 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4919 int UNUSED written
= 0;
4920 IADDR UNUSED pc
= abuf
->addr
;
4921 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4924 HI opval
= * FLD (i_st_src
);
4925 SETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4926 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4933 /* stos-indirect-index-disp: stos $st_src, $optdisp($abase)[$index*S$scale] */
4936 SEM_FN_NAME (i960base
,stos_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4938 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4939 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4940 int UNUSED written
= 0;
4941 IADDR UNUSED pc
= abuf
->addr
;
4942 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4945 HI opval
= * FLD (i_st_src
);
4946 SETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
4947 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4954 /* stl-offset: stl $st_src, $offset */
4957 SEM_FN_NAME (i960base
,stl_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4959 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4960 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4961 int UNUSED written
= 0;
4962 IADDR UNUSED pc
= abuf
->addr
;
4963 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4967 tmp_sregno
= FLD (f_srcdst
);
4969 SI opval
= * FLD (i_st_src
);
4970 SETMEMSI (current_cpu
, pc
, FLD (f_offset
), opval
);
4971 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4974 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
4975 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 4), opval
);
4976 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4984 /* stl-indirect-offset: stl $st_src, $offset($abase) */
4987 SEM_FN_NAME (i960base
,stl_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4989 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4990 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4991 int UNUSED written
= 0;
4992 IADDR UNUSED pc
= abuf
->addr
;
4993 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4997 tmp_sregno
= FLD (f_srcdst
);
4999 SI opval
= * FLD (i_st_src
);
5000 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
5001 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5004 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5005 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 4), opval
);
5006 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5014 /* stl-indirect: stl $st_src, ($abase) */
5017 SEM_FN_NAME (i960base
,stl_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5019 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
5020 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5021 int UNUSED written
= 0;
5022 IADDR UNUSED pc
= abuf
->addr
;
5023 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5027 tmp_sregno
= FLD (f_srcdst
);
5029 SI opval
= * FLD (i_st_src
);
5030 SETMEMSI (current_cpu
, pc
, * FLD (i_abase
), opval
);
5031 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5034 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5035 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 4), opval
);
5036 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5044 /* stl-indirect-index: stl $st_src, ($abase)[$index*S$scale] */
5047 SEM_FN_NAME (i960base
,stl_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5049 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5050 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5051 int UNUSED written
= 0;
5052 IADDR UNUSED pc
= abuf
->addr
;
5053 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5057 tmp_sregno
= FLD (f_srcdst
);
5059 SI opval
= * FLD (i_st_src
);
5060 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5061 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5064 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5065 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5066 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5074 /* stl-disp: stl $st_src, $optdisp */
5077 SEM_FN_NAME (i960base
,stl_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5079 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5080 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5081 int UNUSED written
= 0;
5082 IADDR UNUSED pc
= abuf
->addr
;
5083 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5087 tmp_sregno
= FLD (f_srcdst
);
5089 SI opval
= * FLD (i_st_src
);
5090 SETMEMSI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
5091 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5094 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5095 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 4), opval
);
5096 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5104 /* stl-indirect-disp: stl $st_src, $optdisp($abase) */
5107 SEM_FN_NAME (i960base
,stl_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5109 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5110 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5111 int UNUSED written
= 0;
5112 IADDR UNUSED pc
= abuf
->addr
;
5113 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5117 tmp_sregno
= FLD (f_srcdst
);
5119 SI opval
= * FLD (i_st_src
);
5120 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
5121 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5124 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5125 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 4), opval
);
5126 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5134 /* stl-index-disp: stl $st_src, $optdisp[$index*S$scale */
5137 SEM_FN_NAME (i960base
,stl_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5139 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5140 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5141 int UNUSED written
= 0;
5142 IADDR UNUSED pc
= abuf
->addr
;
5143 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5147 tmp_sregno
= FLD (f_srcdst
);
5149 SI opval
= * FLD (i_st_src
);
5150 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5151 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5154 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5155 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5156 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5164 /* stl-indirect-index-disp: stl $st_src, $optdisp($abase)[$index*S$scale] */
5167 SEM_FN_NAME (i960base
,stl_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5169 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5170 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5171 int UNUSED written
= 0;
5172 IADDR UNUSED pc
= abuf
->addr
;
5173 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5177 tmp_sregno
= FLD (f_srcdst
);
5179 SI opval
= * FLD (i_st_src
);
5180 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
5181 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5184 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5185 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 4), opval
);
5186 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5194 /* stt-offset: stt $st_src, $offset */
5197 SEM_FN_NAME (i960base
,stt_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5199 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
5200 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5201 int UNUSED written
= 0;
5202 IADDR UNUSED pc
= abuf
->addr
;
5203 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5207 tmp_sregno
= FLD (f_srcdst
);
5209 SI opval
= * FLD (i_st_src
);
5210 SETMEMSI (current_cpu
, pc
, FLD (f_offset
), opval
);
5211 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5214 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5215 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 4), opval
);
5216 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5219 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5220 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 8), opval
);
5221 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5229 /* stt-indirect-offset: stt $st_src, $offset($abase) */
5232 SEM_FN_NAME (i960base
,stt_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5234 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
5235 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5236 int UNUSED written
= 0;
5237 IADDR UNUSED pc
= abuf
->addr
;
5238 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5242 tmp_sregno
= FLD (f_srcdst
);
5244 SI opval
= * FLD (i_st_src
);
5245 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
5246 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5249 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5250 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 4), opval
);
5251 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5254 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5255 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 8), opval
);
5256 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5264 /* stt-indirect: stt $st_src, ($abase) */
5267 SEM_FN_NAME (i960base
,stt_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5269 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
5270 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5271 int UNUSED written
= 0;
5272 IADDR UNUSED pc
= abuf
->addr
;
5273 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5277 tmp_sregno
= FLD (f_srcdst
);
5279 SI opval
= * FLD (i_st_src
);
5280 SETMEMSI (current_cpu
, pc
, * FLD (i_abase
), opval
);
5281 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5284 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5285 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 4), opval
);
5286 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5289 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5290 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 8), opval
);
5291 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5299 /* stt-indirect-index: stt $st_src, ($abase)[$index*S$scale] */
5302 SEM_FN_NAME (i960base
,stt_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5304 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5305 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5306 int UNUSED written
= 0;
5307 IADDR UNUSED pc
= abuf
->addr
;
5308 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5312 tmp_sregno
= FLD (f_srcdst
);
5314 SI opval
= * FLD (i_st_src
);
5315 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5316 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5319 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5320 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5321 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5324 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5325 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 8), opval
);
5326 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5334 /* stt-disp: stt $st_src, $optdisp */
5337 SEM_FN_NAME (i960base
,stt_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5339 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5340 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5341 int UNUSED written
= 0;
5342 IADDR UNUSED pc
= abuf
->addr
;
5343 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5347 tmp_sregno
= FLD (f_srcdst
);
5349 SI opval
= * FLD (i_st_src
);
5350 SETMEMSI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
5351 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5354 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5355 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 4), opval
);
5356 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5359 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5360 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 8), opval
);
5361 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5369 /* stt-indirect-disp: stt $st_src, $optdisp($abase) */
5372 SEM_FN_NAME (i960base
,stt_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5374 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5375 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5376 int UNUSED written
= 0;
5377 IADDR UNUSED pc
= abuf
->addr
;
5378 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5382 tmp_sregno
= FLD (f_srcdst
);
5384 SI opval
= * FLD (i_st_src
);
5385 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
5386 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5389 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5390 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 4), opval
);
5391 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5394 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5395 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 8), opval
);
5396 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5404 /* stt-index-disp: stt $st_src, $optdisp[$index*S$scale */
5407 SEM_FN_NAME (i960base
,stt_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5409 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5410 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5411 int UNUSED written
= 0;
5412 IADDR UNUSED pc
= abuf
->addr
;
5413 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5417 tmp_sregno
= FLD (f_srcdst
);
5419 SI opval
= * FLD (i_st_src
);
5420 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5421 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5424 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5425 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5426 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5429 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5430 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 8), opval
);
5431 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5439 /* stt-indirect-index-disp: stt $st_src, $optdisp($abase)[$index*S$scale] */
5442 SEM_FN_NAME (i960base
,stt_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5444 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5445 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5446 int UNUSED written
= 0;
5447 IADDR UNUSED pc
= abuf
->addr
;
5448 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5452 tmp_sregno
= FLD (f_srcdst
);
5454 SI opval
= * FLD (i_st_src
);
5455 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
5456 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5459 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5460 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 4), opval
);
5461 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5464 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5465 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 8), opval
);
5466 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5474 /* stq-offset: stq $st_src, $offset */
5477 SEM_FN_NAME (i960base
,stq_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5479 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
5480 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5481 int UNUSED written
= 0;
5482 IADDR UNUSED pc
= abuf
->addr
;
5483 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5487 tmp_sregno
= FLD (f_srcdst
);
5489 SI opval
= * FLD (i_st_src
);
5490 SETMEMSI (current_cpu
, pc
, FLD (f_offset
), opval
);
5491 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5494 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5495 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 4), opval
);
5496 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5499 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5500 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 8), opval
);
5501 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5504 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5505 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 12), opval
);
5506 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5514 /* stq-indirect-offset: stq $st_src, $offset($abase) */
5517 SEM_FN_NAME (i960base
,stq_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5519 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
5520 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5521 int UNUSED written
= 0;
5522 IADDR UNUSED pc
= abuf
->addr
;
5523 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5527 tmp_sregno
= FLD (f_srcdst
);
5529 SI opval
= * FLD (i_st_src
);
5530 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
5531 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5534 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5535 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 4), opval
);
5536 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5539 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5540 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 8), opval
);
5541 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5544 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5545 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 12), opval
);
5546 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5554 /* stq-indirect: stq $st_src, ($abase) */
5557 SEM_FN_NAME (i960base
,stq_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5559 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
5560 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5561 int UNUSED written
= 0;
5562 IADDR UNUSED pc
= abuf
->addr
;
5563 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5567 tmp_sregno
= FLD (f_srcdst
);
5569 SI opval
= * FLD (i_st_src
);
5570 SETMEMSI (current_cpu
, pc
, * FLD (i_abase
), opval
);
5571 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5574 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5575 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 4), opval
);
5576 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5579 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5580 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 8), opval
);
5581 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5584 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5585 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 12), opval
);
5586 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5594 /* stq-indirect-index: stq $st_src, ($abase)[$index*S$scale] */
5597 SEM_FN_NAME (i960base
,stq_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5599 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5600 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5601 int UNUSED written
= 0;
5602 IADDR UNUSED pc
= abuf
->addr
;
5603 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5607 tmp_sregno
= FLD (f_srcdst
);
5609 SI opval
= * FLD (i_st_src
);
5610 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5611 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5614 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5615 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5616 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5619 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5620 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 8), opval
);
5621 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5624 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5625 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 12), opval
);
5626 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5634 /* stq-disp: stq $st_src, $optdisp */
5637 SEM_FN_NAME (i960base
,stq_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5639 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5640 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5641 int UNUSED written
= 0;
5642 IADDR UNUSED pc
= abuf
->addr
;
5643 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5647 tmp_sregno
= FLD (f_srcdst
);
5649 SI opval
= * FLD (i_st_src
);
5650 SETMEMSI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
5651 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5654 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5655 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 4), opval
);
5656 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5659 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5660 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 8), opval
);
5661 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5664 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5665 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 12), opval
);
5666 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5674 /* stq-indirect-disp: stq $st_src, $optdisp($abase) */
5677 SEM_FN_NAME (i960base
,stq_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5679 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5680 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5681 int UNUSED written
= 0;
5682 IADDR UNUSED pc
= abuf
->addr
;
5683 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5687 tmp_sregno
= FLD (f_srcdst
);
5689 SI opval
= * FLD (i_st_src
);
5690 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
5691 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5694 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5695 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 4), opval
);
5696 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5699 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5700 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 8), opval
);
5701 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5704 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5705 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 12), opval
);
5706 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5714 /* stq-index-disp: stq $st_src, $optdisp[$index*S$scale */
5717 SEM_FN_NAME (i960base
,stq_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5719 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5720 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5721 int UNUSED written
= 0;
5722 IADDR UNUSED pc
= abuf
->addr
;
5723 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5727 tmp_sregno
= FLD (f_srcdst
);
5729 SI opval
= * FLD (i_st_src
);
5730 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5731 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5734 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5735 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5736 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5739 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5740 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 8), opval
);
5741 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5744 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5745 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 12), opval
);
5746 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5754 /* stq-indirect-index-disp: stq $st_src, $optdisp($abase)[$index*S$scale] */
5757 SEM_FN_NAME (i960base
,stq_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5759 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5760 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5761 int UNUSED written
= 0;
5762 IADDR UNUSED pc
= abuf
->addr
;
5763 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5767 tmp_sregno
= FLD (f_srcdst
);
5769 SI opval
= * FLD (i_st_src
);
5770 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
5771 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5774 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5775 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 4), opval
);
5776 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5779 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5780 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 8), opval
);
5781 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5784 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5785 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 12), opval
);
5786 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5794 /* cmpobe-reg: cmpobe $br_src1, $br_src2, $br_disp */
5797 SEM_FN_NAME (i960base
,cmpobe_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5799 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
5800 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5801 int UNUSED written
= 0;
5802 IADDR UNUSED pc
= abuf
->addr
;
5804 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5806 if (EQSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5808 USI opval
= FLD (i_br_disp
);
5809 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5810 written
|= (1 << 3);
5811 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5815 abuf
->written
= written
;
5816 SEM_BRANCH_FINI (vpc
);
5821 /* cmpobe-lit: cmpobe $br_lit1, $br_src2, $br_disp */
5824 SEM_FN_NAME (i960base
,cmpobe_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5826 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
5827 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5828 int UNUSED written
= 0;
5829 IADDR UNUSED pc
= abuf
->addr
;
5831 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5833 if (EQSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5835 USI opval
= FLD (i_br_disp
);
5836 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5837 written
|= (1 << 3);
5838 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5842 abuf
->written
= written
;
5843 SEM_BRANCH_FINI (vpc
);
5848 /* cmpobne-reg: cmpobne $br_src1, $br_src2, $br_disp */
5851 SEM_FN_NAME (i960base
,cmpobne_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5853 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
5854 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5855 int UNUSED written
= 0;
5856 IADDR UNUSED pc
= abuf
->addr
;
5858 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5860 if (NESI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5862 USI opval
= FLD (i_br_disp
);
5863 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5864 written
|= (1 << 3);
5865 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5869 abuf
->written
= written
;
5870 SEM_BRANCH_FINI (vpc
);
5875 /* cmpobne-lit: cmpobne $br_lit1, $br_src2, $br_disp */
5878 SEM_FN_NAME (i960base
,cmpobne_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5880 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
5881 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5882 int UNUSED written
= 0;
5883 IADDR UNUSED pc
= abuf
->addr
;
5885 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5887 if (NESI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5889 USI opval
= FLD (i_br_disp
);
5890 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5891 written
|= (1 << 3);
5892 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5896 abuf
->written
= written
;
5897 SEM_BRANCH_FINI (vpc
);
5902 /* cmpobl-reg: cmpobl $br_src1, $br_src2, $br_disp */
5905 SEM_FN_NAME (i960base
,cmpobl_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5907 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
5908 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5909 int UNUSED written
= 0;
5910 IADDR UNUSED pc
= abuf
->addr
;
5912 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5914 if (LTUSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5916 USI opval
= FLD (i_br_disp
);
5917 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5918 written
|= (1 << 3);
5919 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5923 abuf
->written
= written
;
5924 SEM_BRANCH_FINI (vpc
);
5929 /* cmpobl-lit: cmpobl $br_lit1, $br_src2, $br_disp */
5932 SEM_FN_NAME (i960base
,cmpobl_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5934 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
5935 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5936 int UNUSED written
= 0;
5937 IADDR UNUSED pc
= abuf
->addr
;
5939 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5941 if (LTUSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5943 USI opval
= FLD (i_br_disp
);
5944 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5945 written
|= (1 << 3);
5946 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5950 abuf
->written
= written
;
5951 SEM_BRANCH_FINI (vpc
);
5956 /* cmpoble-reg: cmpoble $br_src1, $br_src2, $br_disp */
5959 SEM_FN_NAME (i960base
,cmpoble_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5961 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
5962 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5963 int UNUSED written
= 0;
5964 IADDR UNUSED pc
= abuf
->addr
;
5966 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5968 if (LEUSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5970 USI opval
= FLD (i_br_disp
);
5971 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5972 written
|= (1 << 3);
5973 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5977 abuf
->written
= written
;
5978 SEM_BRANCH_FINI (vpc
);
5983 /* cmpoble-lit: cmpoble $br_lit1, $br_src2, $br_disp */
5986 SEM_FN_NAME (i960base
,cmpoble_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5988 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
5989 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5990 int UNUSED written
= 0;
5991 IADDR UNUSED pc
= abuf
->addr
;
5993 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5995 if (LEUSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5997 USI opval
= FLD (i_br_disp
);
5998 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5999 written
|= (1 << 3);
6000 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6004 abuf
->written
= written
;
6005 SEM_BRANCH_FINI (vpc
);
6010 /* cmpobg-reg: cmpobg $br_src1, $br_src2, $br_disp */
6013 SEM_FN_NAME (i960base
,cmpobg_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6015 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6016 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6017 int UNUSED written
= 0;
6018 IADDR UNUSED pc
= abuf
->addr
;
6020 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6022 if (GTUSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6024 USI opval
= FLD (i_br_disp
);
6025 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6026 written
|= (1 << 3);
6027 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6031 abuf
->written
= written
;
6032 SEM_BRANCH_FINI (vpc
);
6037 /* cmpobg-lit: cmpobg $br_lit1, $br_src2, $br_disp */
6040 SEM_FN_NAME (i960base
,cmpobg_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6042 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6043 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6044 int UNUSED written
= 0;
6045 IADDR UNUSED pc
= abuf
->addr
;
6047 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6049 if (GTUSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6051 USI opval
= FLD (i_br_disp
);
6052 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6053 written
|= (1 << 3);
6054 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6058 abuf
->written
= written
;
6059 SEM_BRANCH_FINI (vpc
);
6064 /* cmpobge-reg: cmpobge $br_src1, $br_src2, $br_disp */
6067 SEM_FN_NAME (i960base
,cmpobge_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6069 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6070 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6071 int UNUSED written
= 0;
6072 IADDR UNUSED pc
= abuf
->addr
;
6074 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6076 if (GEUSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6078 USI opval
= FLD (i_br_disp
);
6079 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6080 written
|= (1 << 3);
6081 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6085 abuf
->written
= written
;
6086 SEM_BRANCH_FINI (vpc
);
6091 /* cmpobge-lit: cmpobge $br_lit1, $br_src2, $br_disp */
6094 SEM_FN_NAME (i960base
,cmpobge_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6096 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6097 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6098 int UNUSED written
= 0;
6099 IADDR UNUSED pc
= abuf
->addr
;
6101 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6103 if (GEUSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6105 USI opval
= FLD (i_br_disp
);
6106 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6107 written
|= (1 << 3);
6108 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6112 abuf
->written
= written
;
6113 SEM_BRANCH_FINI (vpc
);
6118 /* cmpibe-reg: cmpibe $br_src1, $br_src2, $br_disp */
6121 SEM_FN_NAME (i960base
,cmpibe_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6123 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6124 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6125 int UNUSED written
= 0;
6126 IADDR UNUSED pc
= abuf
->addr
;
6128 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6130 if (EQSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6132 USI opval
= FLD (i_br_disp
);
6133 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6134 written
|= (1 << 3);
6135 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6139 abuf
->written
= written
;
6140 SEM_BRANCH_FINI (vpc
);
6145 /* cmpibe-lit: cmpibe $br_lit1, $br_src2, $br_disp */
6148 SEM_FN_NAME (i960base
,cmpibe_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6150 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6151 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6152 int UNUSED written
= 0;
6153 IADDR UNUSED pc
= abuf
->addr
;
6155 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6157 if (EQSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6159 USI opval
= FLD (i_br_disp
);
6160 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6161 written
|= (1 << 3);
6162 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6166 abuf
->written
= written
;
6167 SEM_BRANCH_FINI (vpc
);
6172 /* cmpibne-reg: cmpibne $br_src1, $br_src2, $br_disp */
6175 SEM_FN_NAME (i960base
,cmpibne_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6177 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6178 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6179 int UNUSED written
= 0;
6180 IADDR UNUSED pc
= abuf
->addr
;
6182 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6184 if (NESI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6186 USI opval
= FLD (i_br_disp
);
6187 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6188 written
|= (1 << 3);
6189 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6193 abuf
->written
= written
;
6194 SEM_BRANCH_FINI (vpc
);
6199 /* cmpibne-lit: cmpibne $br_lit1, $br_src2, $br_disp */
6202 SEM_FN_NAME (i960base
,cmpibne_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6204 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6205 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6206 int UNUSED written
= 0;
6207 IADDR UNUSED pc
= abuf
->addr
;
6209 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6211 if (NESI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6213 USI opval
= FLD (i_br_disp
);
6214 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6215 written
|= (1 << 3);
6216 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6220 abuf
->written
= written
;
6221 SEM_BRANCH_FINI (vpc
);
6226 /* cmpibl-reg: cmpibl $br_src1, $br_src2, $br_disp */
6229 SEM_FN_NAME (i960base
,cmpibl_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6231 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6232 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6233 int UNUSED written
= 0;
6234 IADDR UNUSED pc
= abuf
->addr
;
6236 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6238 if (LTSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6240 USI opval
= FLD (i_br_disp
);
6241 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6242 written
|= (1 << 3);
6243 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6247 abuf
->written
= written
;
6248 SEM_BRANCH_FINI (vpc
);
6253 /* cmpibl-lit: cmpibl $br_lit1, $br_src2, $br_disp */
6256 SEM_FN_NAME (i960base
,cmpibl_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6258 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6259 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6260 int UNUSED written
= 0;
6261 IADDR UNUSED pc
= abuf
->addr
;
6263 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6265 if (LTSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6267 USI opval
= FLD (i_br_disp
);
6268 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6269 written
|= (1 << 3);
6270 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6274 abuf
->written
= written
;
6275 SEM_BRANCH_FINI (vpc
);
6280 /* cmpible-reg: cmpible $br_src1, $br_src2, $br_disp */
6283 SEM_FN_NAME (i960base
,cmpible_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6285 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6286 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6287 int UNUSED written
= 0;
6288 IADDR UNUSED pc
= abuf
->addr
;
6290 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6292 if (LESI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6294 USI opval
= FLD (i_br_disp
);
6295 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6296 written
|= (1 << 3);
6297 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6301 abuf
->written
= written
;
6302 SEM_BRANCH_FINI (vpc
);
6307 /* cmpible-lit: cmpible $br_lit1, $br_src2, $br_disp */
6310 SEM_FN_NAME (i960base
,cmpible_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6312 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6313 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6314 int UNUSED written
= 0;
6315 IADDR UNUSED pc
= abuf
->addr
;
6317 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6319 if (LESI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6321 USI opval
= FLD (i_br_disp
);
6322 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6323 written
|= (1 << 3);
6324 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6328 abuf
->written
= written
;
6329 SEM_BRANCH_FINI (vpc
);
6334 /* cmpibg-reg: cmpibg $br_src1, $br_src2, $br_disp */
6337 SEM_FN_NAME (i960base
,cmpibg_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6339 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6340 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6341 int UNUSED written
= 0;
6342 IADDR UNUSED pc
= abuf
->addr
;
6344 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6346 if (GTSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6348 USI opval
= FLD (i_br_disp
);
6349 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6350 written
|= (1 << 3);
6351 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6355 abuf
->written
= written
;
6356 SEM_BRANCH_FINI (vpc
);
6361 /* cmpibg-lit: cmpibg $br_lit1, $br_src2, $br_disp */
6364 SEM_FN_NAME (i960base
,cmpibg_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6366 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6367 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6368 int UNUSED written
= 0;
6369 IADDR UNUSED pc
= abuf
->addr
;
6371 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6373 if (GTSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6375 USI opval
= FLD (i_br_disp
);
6376 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6377 written
|= (1 << 3);
6378 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6382 abuf
->written
= written
;
6383 SEM_BRANCH_FINI (vpc
);
6388 /* cmpibge-reg: cmpibge $br_src1, $br_src2, $br_disp */
6391 SEM_FN_NAME (i960base
,cmpibge_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6393 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6394 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6395 int UNUSED written
= 0;
6396 IADDR UNUSED pc
= abuf
->addr
;
6398 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6400 if (GESI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6402 USI opval
= FLD (i_br_disp
);
6403 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6404 written
|= (1 << 3);
6405 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6409 abuf
->written
= written
;
6410 SEM_BRANCH_FINI (vpc
);
6415 /* cmpibge-lit: cmpibge $br_lit1, $br_src2, $br_disp */
6418 SEM_FN_NAME (i960base
,cmpibge_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6420 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6421 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6422 int UNUSED written
= 0;
6423 IADDR UNUSED pc
= abuf
->addr
;
6425 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6427 if (GESI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6429 USI opval
= FLD (i_br_disp
);
6430 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6431 written
|= (1 << 3);
6432 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6436 abuf
->written
= written
;
6437 SEM_BRANCH_FINI (vpc
);
6442 /* bbc-reg: bbc $br_src1, $br_src2, $br_disp */
6445 SEM_FN_NAME (i960base
,bbc_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6447 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6448 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6449 int UNUSED written
= 0;
6450 IADDR UNUSED pc
= abuf
->addr
;
6452 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6454 if (EQSI (ANDSI (SLLSI (1, * FLD (i_br_src1
)), * FLD (i_br_src2
)), 0)) {
6456 USI opval
= FLD (i_br_disp
);
6457 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6458 written
|= (1 << 3);
6459 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6463 abuf
->written
= written
;
6464 SEM_BRANCH_FINI (vpc
);
6469 /* bbc-lit: bbc $br_lit1, $br_src2, $br_disp */
6472 SEM_FN_NAME (i960base
,bbc_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6474 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6475 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6476 int UNUSED written
= 0;
6477 IADDR UNUSED pc
= abuf
->addr
;
6479 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6481 if (EQSI (ANDSI (SLLSI (1, FLD (f_br_src1
)), * FLD (i_br_src2
)), 0)) {
6483 USI opval
= FLD (i_br_disp
);
6484 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6485 written
|= (1 << 3);
6486 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6490 abuf
->written
= written
;
6491 SEM_BRANCH_FINI (vpc
);
6496 /* bbs-reg: bbs $br_src1, $br_src2, $br_disp */
6499 SEM_FN_NAME (i960base
,bbs_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6501 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6502 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6503 int UNUSED written
= 0;
6504 IADDR UNUSED pc
= abuf
->addr
;
6506 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6508 if (NESI (ANDSI (SLLSI (1, * FLD (i_br_src1
)), * FLD (i_br_src2
)), 0)) {
6510 USI opval
= FLD (i_br_disp
);
6511 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6512 written
|= (1 << 3);
6513 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6517 abuf
->written
= written
;
6518 SEM_BRANCH_FINI (vpc
);
6523 /* bbs-lit: bbs $br_lit1, $br_src2, $br_disp */
6526 SEM_FN_NAME (i960base
,bbs_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6528 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6529 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6530 int UNUSED written
= 0;
6531 IADDR UNUSED pc
= abuf
->addr
;
6533 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6535 if (NESI (ANDSI (SLLSI (1, FLD (f_br_src1
)), * FLD (i_br_src2
)), 0)) {
6537 USI opval
= FLD (i_br_disp
);
6538 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6539 written
|= (1 << 3);
6540 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6544 abuf
->written
= written
;
6545 SEM_BRANCH_FINI (vpc
);
6550 /* cmpi: cmpi $src1, $src2 */
6553 SEM_FN_NAME (i960base
,cmpi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6555 #define FLD(f) abuf->fields.sfmt_emul.f
6556 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6557 int UNUSED written
= 0;
6558 IADDR UNUSED pc
= abuf
->addr
;
6559 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6562 SI opval
= (LTSI (* FLD (i_src1
), * FLD (i_src2
))) ? (4) : (EQSI (* FLD (i_src1
), * FLD (i_src2
))) ? (2) : (1);
6564 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6571 /* cmpi1: cmpi $lit1, $src2 */
6574 SEM_FN_NAME (i960base
,cmpi1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6576 #define FLD(f) abuf->fields.sfmt_emul1.f
6577 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6578 int UNUSED written
= 0;
6579 IADDR UNUSED pc
= abuf
->addr
;
6580 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6583 SI opval
= (LTSI (FLD (f_src1
), * FLD (i_src2
))) ? (4) : (EQSI (FLD (f_src1
), * FLD (i_src2
))) ? (2) : (1);
6585 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6592 /* cmpi2: cmpi $src1, $lit2 */
6595 SEM_FN_NAME (i960base
,cmpi2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6597 #define FLD(f) abuf->fields.sfmt_emul2.f
6598 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6599 int UNUSED written
= 0;
6600 IADDR UNUSED pc
= abuf
->addr
;
6601 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6604 SI opval
= (LTSI (* FLD (i_src1
), FLD (f_src2
))) ? (4) : (EQSI (* FLD (i_src1
), FLD (f_src2
))) ? (2) : (1);
6606 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6613 /* cmpi3: cmpi $lit1, $lit2 */
6616 SEM_FN_NAME (i960base
,cmpi3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6618 #define FLD(f) abuf->fields.sfmt_emul3.f
6619 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6620 int UNUSED written
= 0;
6621 IADDR UNUSED pc
= abuf
->addr
;
6622 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6625 SI opval
= (LTSI (FLD (f_src1
), FLD (f_src2
))) ? (4) : (EQSI (FLD (f_src1
), FLD (f_src2
))) ? (2) : (1);
6627 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6634 /* cmpo: cmpo $src1, $src2 */
6637 SEM_FN_NAME (i960base
,cmpo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6639 #define FLD(f) abuf->fields.sfmt_emul.f
6640 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6641 int UNUSED written
= 0;
6642 IADDR UNUSED pc
= abuf
->addr
;
6643 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6646 SI opval
= (LTUSI (* FLD (i_src1
), * FLD (i_src2
))) ? (4) : (EQSI (* FLD (i_src1
), * FLD (i_src2
))) ? (2) : (1);
6648 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6655 /* cmpo1: cmpo $lit1, $src2 */
6658 SEM_FN_NAME (i960base
,cmpo1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6660 #define FLD(f) abuf->fields.sfmt_emul1.f
6661 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6662 int UNUSED written
= 0;
6663 IADDR UNUSED pc
= abuf
->addr
;
6664 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6667 SI opval
= (LTUSI (FLD (f_src1
), * FLD (i_src2
))) ? (4) : (EQSI (FLD (f_src1
), * FLD (i_src2
))) ? (2) : (1);
6669 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6676 /* cmpo2: cmpo $src1, $lit2 */
6679 SEM_FN_NAME (i960base
,cmpo2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6681 #define FLD(f) abuf->fields.sfmt_emul2.f
6682 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6683 int UNUSED written
= 0;
6684 IADDR UNUSED pc
= abuf
->addr
;
6685 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6688 SI opval
= (LTUSI (* FLD (i_src1
), FLD (f_src2
))) ? (4) : (EQSI (* FLD (i_src1
), FLD (f_src2
))) ? (2) : (1);
6690 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6697 /* cmpo3: cmpo $lit1, $lit2 */
6700 SEM_FN_NAME (i960base
,cmpo3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6702 #define FLD(f) abuf->fields.sfmt_emul3.f
6703 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6704 int UNUSED written
= 0;
6705 IADDR UNUSED pc
= abuf
->addr
;
6706 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6709 SI opval
= (LTUSI (FLD (f_src1
), FLD (f_src2
))) ? (4) : (EQSI (FLD (f_src1
), FLD (f_src2
))) ? (2) : (1);
6711 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6718 /* testno-reg: testno $br_src1 */
6721 SEM_FN_NAME (i960base
,testno_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6723 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6724 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6725 int UNUSED written
= 0;
6726 IADDR UNUSED pc
= abuf
->addr
;
6727 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6730 SI opval
= EQSI (CPU (h_cc
), 0);
6731 * FLD (i_br_src1
) = opval
;
6732 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6739 /* testg-reg: testg $br_src1 */
6742 SEM_FN_NAME (i960base
,testg_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6744 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6745 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6746 int UNUSED written
= 0;
6747 IADDR UNUSED pc
= abuf
->addr
;
6748 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6751 SI opval
= NESI (ANDSI (CPU (h_cc
), 1), 0);
6752 * FLD (i_br_src1
) = opval
;
6753 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6760 /* teste-reg: teste $br_src1 */
6763 SEM_FN_NAME (i960base
,teste_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6765 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6766 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6767 int UNUSED written
= 0;
6768 IADDR UNUSED pc
= abuf
->addr
;
6769 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6772 SI opval
= NESI (ANDSI (CPU (h_cc
), 2), 0);
6773 * FLD (i_br_src1
) = opval
;
6774 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6781 /* testge-reg: testge $br_src1 */
6784 SEM_FN_NAME (i960base
,testge_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6786 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6787 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6788 int UNUSED written
= 0;
6789 IADDR UNUSED pc
= abuf
->addr
;
6790 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6793 SI opval
= NESI (ANDSI (CPU (h_cc
), 3), 0);
6794 * FLD (i_br_src1
) = opval
;
6795 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6802 /* testl-reg: testl $br_src1 */
6805 SEM_FN_NAME (i960base
,testl_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6807 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6808 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6809 int UNUSED written
= 0;
6810 IADDR UNUSED pc
= abuf
->addr
;
6811 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6814 SI opval
= NESI (ANDSI (CPU (h_cc
), 4), 0);
6815 * FLD (i_br_src1
) = opval
;
6816 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6823 /* testne-reg: testne $br_src1 */
6826 SEM_FN_NAME (i960base
,testne_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6828 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6829 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6830 int UNUSED written
= 0;
6831 IADDR UNUSED pc
= abuf
->addr
;
6832 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6835 SI opval
= NESI (ANDSI (CPU (h_cc
), 5), 0);
6836 * FLD (i_br_src1
) = opval
;
6837 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6844 /* testle-reg: testle $br_src1 */
6847 SEM_FN_NAME (i960base
,testle_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6849 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6850 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6851 int UNUSED written
= 0;
6852 IADDR UNUSED pc
= abuf
->addr
;
6853 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6856 SI opval
= NESI (ANDSI (CPU (h_cc
), 6), 0);
6857 * FLD (i_br_src1
) = opval
;
6858 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6865 /* testo-reg: testo $br_src1 */
6868 SEM_FN_NAME (i960base
,testo_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6870 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6871 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6872 int UNUSED written
= 0;
6873 IADDR UNUSED pc
= abuf
->addr
;
6874 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6877 SI opval
= NESI (ANDSI (CPU (h_cc
), 7), 0);
6878 * FLD (i_br_src1
) = opval
;
6879 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6886 /* bno: bno $ctrl_disp */
6889 SEM_FN_NAME (i960base
,bno
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6891 #define FLD(f) abuf->fields.sfmt_bno.f
6892 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6893 int UNUSED written
= 0;
6894 IADDR UNUSED pc
= abuf
->addr
;
6896 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6898 if (EQSI (CPU (h_cc
), 0)) {
6900 USI opval
= FLD (i_ctrl_disp
);
6901 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6902 written
|= (1 << 2);
6903 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6907 abuf
->written
= written
;
6908 SEM_BRANCH_FINI (vpc
);
6913 /* bg: bg $ctrl_disp */
6916 SEM_FN_NAME (i960base
,bg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6918 #define FLD(f) abuf->fields.sfmt_bno.f
6919 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6920 int UNUSED written
= 0;
6921 IADDR UNUSED pc
= abuf
->addr
;
6923 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6925 if (NESI (ANDSI (CPU (h_cc
), 1), 0)) {
6927 USI opval
= FLD (i_ctrl_disp
);
6928 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6929 written
|= (1 << 2);
6930 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6934 abuf
->written
= written
;
6935 SEM_BRANCH_FINI (vpc
);
6940 /* be: be $ctrl_disp */
6943 SEM_FN_NAME (i960base
,be
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6945 #define FLD(f) abuf->fields.sfmt_bno.f
6946 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6947 int UNUSED written
= 0;
6948 IADDR UNUSED pc
= abuf
->addr
;
6950 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6952 if (NESI (ANDSI (CPU (h_cc
), 2), 0)) {
6954 USI opval
= FLD (i_ctrl_disp
);
6955 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6956 written
|= (1 << 2);
6957 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6961 abuf
->written
= written
;
6962 SEM_BRANCH_FINI (vpc
);
6967 /* bge: bge $ctrl_disp */
6970 SEM_FN_NAME (i960base
,bge
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6972 #define FLD(f) abuf->fields.sfmt_bno.f
6973 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6974 int UNUSED written
= 0;
6975 IADDR UNUSED pc
= abuf
->addr
;
6977 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6979 if (NESI (ANDSI (CPU (h_cc
), 3), 0)) {
6981 USI opval
= FLD (i_ctrl_disp
);
6982 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6983 written
|= (1 << 2);
6984 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6988 abuf
->written
= written
;
6989 SEM_BRANCH_FINI (vpc
);
6994 /* bl: bl $ctrl_disp */
6997 SEM_FN_NAME (i960base
,bl
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6999 #define FLD(f) abuf->fields.sfmt_bno.f
7000 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7001 int UNUSED written
= 0;
7002 IADDR UNUSED pc
= abuf
->addr
;
7004 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7006 if (NESI (ANDSI (CPU (h_cc
), 4), 0)) {
7008 USI opval
= FLD (i_ctrl_disp
);
7009 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
7010 written
|= (1 << 2);
7011 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7015 abuf
->written
= written
;
7016 SEM_BRANCH_FINI (vpc
);
7021 /* bne: bne $ctrl_disp */
7024 SEM_FN_NAME (i960base
,bne
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7026 #define FLD(f) abuf->fields.sfmt_bno.f
7027 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7028 int UNUSED written
= 0;
7029 IADDR UNUSED pc
= abuf
->addr
;
7031 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7033 if (NESI (ANDSI (CPU (h_cc
), 5), 0)) {
7035 USI opval
= FLD (i_ctrl_disp
);
7036 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
7037 written
|= (1 << 2);
7038 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7042 abuf
->written
= written
;
7043 SEM_BRANCH_FINI (vpc
);
7048 /* ble: ble $ctrl_disp */
7051 SEM_FN_NAME (i960base
,ble
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7053 #define FLD(f) abuf->fields.sfmt_bno.f
7054 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7055 int UNUSED written
= 0;
7056 IADDR UNUSED pc
= abuf
->addr
;
7058 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7060 if (NESI (ANDSI (CPU (h_cc
), 6), 0)) {
7062 USI opval
= FLD (i_ctrl_disp
);
7063 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
7064 written
|= (1 << 2);
7065 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7069 abuf
->written
= written
;
7070 SEM_BRANCH_FINI (vpc
);
7075 /* bo: bo $ctrl_disp */
7078 SEM_FN_NAME (i960base
,bo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7080 #define FLD(f) abuf->fields.sfmt_bno.f
7081 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7082 int UNUSED written
= 0;
7083 IADDR UNUSED pc
= abuf
->addr
;
7085 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7087 if (NESI (ANDSI (CPU (h_cc
), 7), 0)) {
7089 USI opval
= FLD (i_ctrl_disp
);
7090 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
7091 written
|= (1 << 2);
7092 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7096 abuf
->written
= written
;
7097 SEM_BRANCH_FINI (vpc
);
7102 /* b: b $ctrl_disp */
7105 SEM_FN_NAME (i960base
,b
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7107 #define FLD(f) abuf->fields.sfmt_bno.f
7108 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7109 int UNUSED written
= 0;
7110 IADDR UNUSED pc
= abuf
->addr
;
7112 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7115 USI opval
= FLD (i_ctrl_disp
);
7116 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
7117 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7120 SEM_BRANCH_FINI (vpc
);
7125 /* bx-indirect-offset: bx $offset($abase) */
7128 SEM_FN_NAME (i960base
,bx_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7130 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
7131 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7132 int UNUSED written
= 0;
7133 IADDR UNUSED pc
= abuf
->addr
;
7135 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7138 USI opval
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
7139 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7140 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7143 SEM_BRANCH_FINI (vpc
);
7148 /* bx-indirect: bx ($abase) */
7151 SEM_FN_NAME (i960base
,bx_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7153 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
7154 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7155 int UNUSED written
= 0;
7156 IADDR UNUSED pc
= abuf
->addr
;
7158 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7161 USI opval
= * FLD (i_abase
);
7162 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7163 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7166 SEM_BRANCH_FINI (vpc
);
7171 /* bx-indirect-index: bx ($abase)[$index*S$scale] */
7174 SEM_FN_NAME (i960base
,bx_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7176 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
7177 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7178 int UNUSED written
= 0;
7179 IADDR UNUSED pc
= abuf
->addr
;
7181 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7184 USI opval
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
7185 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7186 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7189 SEM_BRANCH_FINI (vpc
);
7194 /* bx-disp: bx $optdisp */
7197 SEM_FN_NAME (i960base
,bx_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7199 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
7200 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7201 int UNUSED written
= 0;
7202 IADDR UNUSED pc
= abuf
->addr
;
7204 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
7207 USI opval
= FLD (f_optdisp
);
7208 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
7209 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7212 SEM_BRANCH_FINI (vpc
);
7217 /* bx-indirect-disp: bx $optdisp($abase) */
7220 SEM_FN_NAME (i960base
,bx_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7222 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
7223 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7224 int UNUSED written
= 0;
7225 IADDR UNUSED pc
= abuf
->addr
;
7227 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
7230 USI opval
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
7231 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7232 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7235 SEM_BRANCH_FINI (vpc
);
7240 /* callx-disp: callx $optdisp */
7243 SEM_FN_NAME (i960base
,callx_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7245 #define FLD(f) abuf->fields.sfmt_callx_disp.f
7246 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7247 int UNUSED written
= 0;
7248 IADDR UNUSED pc
= abuf
->addr
;
7250 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
7254 tmp_temp
= ANDSI (ADDSI (CPU (h_gr
[((UINT
) 1)]), 63), INVSI (63));
7256 SI opval
= ADDSI (pc
, 8);
7257 CPU (h_gr
[((UINT
) 2)]) = opval
;
7258 TRACE_RESULT (current_cpu
, abuf
, "gr-2", 'x', opval
);
7260 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 0), CPU (h_gr
[((UINT
) 0)]));
7261 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 4), CPU (h_gr
[((UINT
) 1)]));
7262 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 8), CPU (h_gr
[((UINT
) 2)]));
7263 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 12), CPU (h_gr
[((UINT
) 3)]));
7264 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 16), CPU (h_gr
[((UINT
) 4)]));
7265 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 20), CPU (h_gr
[((UINT
) 5)]));
7266 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 24), CPU (h_gr
[((UINT
) 6)]));
7267 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 28), CPU (h_gr
[((UINT
) 7)]));
7268 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 32), CPU (h_gr
[((UINT
) 8)]));
7269 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 36), CPU (h_gr
[((UINT
) 9)]));
7270 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 40), CPU (h_gr
[((UINT
) 10)]));
7271 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 44), CPU (h_gr
[((UINT
) 11)]));
7272 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 48), CPU (h_gr
[((UINT
) 12)]));
7273 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 52), CPU (h_gr
[((UINT
) 13)]));
7274 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 56), CPU (h_gr
[((UINT
) 14)]));
7275 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 60), CPU (h_gr
[((UINT
) 15)]));
7277 USI opval
= FLD (f_optdisp
);
7278 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
7279 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7281 CPU (h_gr
[((UINT
) 0)]) = 0xdeadbeef;
7282 CPU (h_gr
[((UINT
) 1)]) = 0xdeadbeef;
7283 CPU (h_gr
[((UINT
) 2)]) = 0xdeadbeef;
7284 CPU (h_gr
[((UINT
) 3)]) = 0xdeadbeef;
7285 CPU (h_gr
[((UINT
) 4)]) = 0xdeadbeef;
7286 CPU (h_gr
[((UINT
) 5)]) = 0xdeadbeef;
7287 CPU (h_gr
[((UINT
) 6)]) = 0xdeadbeef;
7288 CPU (h_gr
[((UINT
) 7)]) = 0xdeadbeef;
7289 CPU (h_gr
[((UINT
) 8)]) = 0xdeadbeef;
7290 CPU (h_gr
[((UINT
) 9)]) = 0xdeadbeef;
7291 CPU (h_gr
[((UINT
) 10)]) = 0xdeadbeef;
7292 CPU (h_gr
[((UINT
) 11)]) = 0xdeadbeef;
7293 CPU (h_gr
[((UINT
) 12)]) = 0xdeadbeef;
7294 CPU (h_gr
[((UINT
) 13)]) = 0xdeadbeef;
7295 CPU (h_gr
[((UINT
) 14)]) = 0xdeadbeef;
7296 CPU (h_gr
[((UINT
) 15)]) = 0xdeadbeef;
7298 SI opval
= CPU (h_gr
[((UINT
) 31)]);
7299 CPU (h_gr
[((UINT
) 0)]) = opval
;
7300 TRACE_RESULT (current_cpu
, abuf
, "gr-0", 'x', opval
);
7303 SI opval
= tmp_temp
;
7304 CPU (h_gr
[((UINT
) 31)]) = opval
;
7305 TRACE_RESULT (current_cpu
, abuf
, "gr-31", 'x', opval
);
7308 SI opval
= ADDSI (tmp_temp
, 64);
7309 CPU (h_gr
[((UINT
) 1)]) = opval
;
7310 TRACE_RESULT (current_cpu
, abuf
, "gr-1", 'x', opval
);
7314 SEM_BRANCH_FINI (vpc
);
7319 /* callx-indirect: callx ($abase) */
7322 SEM_FN_NAME (i960base
,callx_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7324 #define FLD(f) abuf->fields.sfmt_callx_indirect_offset.f
7325 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7326 int UNUSED written
= 0;
7327 IADDR UNUSED pc
= abuf
->addr
;
7329 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7333 tmp_temp
= ANDSI (ADDSI (CPU (h_gr
[((UINT
) 1)]), 63), INVSI (63));
7335 SI opval
= ADDSI (pc
, 4);
7336 CPU (h_gr
[((UINT
) 2)]) = opval
;
7337 TRACE_RESULT (current_cpu
, abuf
, "gr-2", 'x', opval
);
7339 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 0), CPU (h_gr
[((UINT
) 0)]));
7340 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 4), CPU (h_gr
[((UINT
) 1)]));
7341 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 8), CPU (h_gr
[((UINT
) 2)]));
7342 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 12), CPU (h_gr
[((UINT
) 3)]));
7343 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 16), CPU (h_gr
[((UINT
) 4)]));
7344 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 20), CPU (h_gr
[((UINT
) 5)]));
7345 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 24), CPU (h_gr
[((UINT
) 6)]));
7346 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 28), CPU (h_gr
[((UINT
) 7)]));
7347 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 32), CPU (h_gr
[((UINT
) 8)]));
7348 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 36), CPU (h_gr
[((UINT
) 9)]));
7349 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 40), CPU (h_gr
[((UINT
) 10)]));
7350 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 44), CPU (h_gr
[((UINT
) 11)]));
7351 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 48), CPU (h_gr
[((UINT
) 12)]));
7352 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 52), CPU (h_gr
[((UINT
) 13)]));
7353 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 56), CPU (h_gr
[((UINT
) 14)]));
7354 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 60), CPU (h_gr
[((UINT
) 15)]));
7356 USI opval
= * FLD (i_abase
);
7357 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7358 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7360 CPU (h_gr
[((UINT
) 0)]) = 0xdeadbeef;
7361 CPU (h_gr
[((UINT
) 1)]) = 0xdeadbeef;
7362 CPU (h_gr
[((UINT
) 2)]) = 0xdeadbeef;
7363 CPU (h_gr
[((UINT
) 3)]) = 0xdeadbeef;
7364 CPU (h_gr
[((UINT
) 4)]) = 0xdeadbeef;
7365 CPU (h_gr
[((UINT
) 5)]) = 0xdeadbeef;
7366 CPU (h_gr
[((UINT
) 6)]) = 0xdeadbeef;
7367 CPU (h_gr
[((UINT
) 7)]) = 0xdeadbeef;
7368 CPU (h_gr
[((UINT
) 8)]) = 0xdeadbeef;
7369 CPU (h_gr
[((UINT
) 9)]) = 0xdeadbeef;
7370 CPU (h_gr
[((UINT
) 10)]) = 0xdeadbeef;
7371 CPU (h_gr
[((UINT
) 11)]) = 0xdeadbeef;
7372 CPU (h_gr
[((UINT
) 12)]) = 0xdeadbeef;
7373 CPU (h_gr
[((UINT
) 13)]) = 0xdeadbeef;
7374 CPU (h_gr
[((UINT
) 14)]) = 0xdeadbeef;
7375 CPU (h_gr
[((UINT
) 15)]) = 0xdeadbeef;
7377 SI opval
= CPU (h_gr
[((UINT
) 31)]);
7378 CPU (h_gr
[((UINT
) 0)]) = opval
;
7379 TRACE_RESULT (current_cpu
, abuf
, "gr-0", 'x', opval
);
7382 SI opval
= tmp_temp
;
7383 CPU (h_gr
[((UINT
) 31)]) = opval
;
7384 TRACE_RESULT (current_cpu
, abuf
, "gr-31", 'x', opval
);
7387 SI opval
= ADDSI (tmp_temp
, 64);
7388 CPU (h_gr
[((UINT
) 1)]) = opval
;
7389 TRACE_RESULT (current_cpu
, abuf
, "gr-1", 'x', opval
);
7393 SEM_BRANCH_FINI (vpc
);
7398 /* callx-indirect-offset: callx $offset($abase) */
7401 SEM_FN_NAME (i960base
,callx_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7403 #define FLD(f) abuf->fields.sfmt_callx_indirect_offset.f
7404 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7405 int UNUSED written
= 0;
7406 IADDR UNUSED pc
= abuf
->addr
;
7408 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7412 tmp_temp
= ANDSI (ADDSI (CPU (h_gr
[((UINT
) 1)]), 63), INVSI (63));
7414 SI opval
= ADDSI (pc
, 4);
7415 CPU (h_gr
[((UINT
) 2)]) = opval
;
7416 TRACE_RESULT (current_cpu
, abuf
, "gr-2", 'x', opval
);
7418 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 0), CPU (h_gr
[((UINT
) 0)]));
7419 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 4), CPU (h_gr
[((UINT
) 1)]));
7420 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 8), CPU (h_gr
[((UINT
) 2)]));
7421 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 12), CPU (h_gr
[((UINT
) 3)]));
7422 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 16), CPU (h_gr
[((UINT
) 4)]));
7423 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 20), CPU (h_gr
[((UINT
) 5)]));
7424 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 24), CPU (h_gr
[((UINT
) 6)]));
7425 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 28), CPU (h_gr
[((UINT
) 7)]));
7426 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 32), CPU (h_gr
[((UINT
) 8)]));
7427 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 36), CPU (h_gr
[((UINT
) 9)]));
7428 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 40), CPU (h_gr
[((UINT
) 10)]));
7429 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 44), CPU (h_gr
[((UINT
) 11)]));
7430 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 48), CPU (h_gr
[((UINT
) 12)]));
7431 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 52), CPU (h_gr
[((UINT
) 13)]));
7432 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 56), CPU (h_gr
[((UINT
) 14)]));
7433 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 60), CPU (h_gr
[((UINT
) 15)]));
7435 USI opval
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
7436 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7437 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7439 CPU (h_gr
[((UINT
) 0)]) = 0xdeadbeef;
7440 CPU (h_gr
[((UINT
) 1)]) = 0xdeadbeef;
7441 CPU (h_gr
[((UINT
) 2)]) = 0xdeadbeef;
7442 CPU (h_gr
[((UINT
) 3)]) = 0xdeadbeef;
7443 CPU (h_gr
[((UINT
) 4)]) = 0xdeadbeef;
7444 CPU (h_gr
[((UINT
) 5)]) = 0xdeadbeef;
7445 CPU (h_gr
[((UINT
) 6)]) = 0xdeadbeef;
7446 CPU (h_gr
[((UINT
) 7)]) = 0xdeadbeef;
7447 CPU (h_gr
[((UINT
) 8)]) = 0xdeadbeef;
7448 CPU (h_gr
[((UINT
) 9)]) = 0xdeadbeef;
7449 CPU (h_gr
[((UINT
) 10)]) = 0xdeadbeef;
7450 CPU (h_gr
[((UINT
) 11)]) = 0xdeadbeef;
7451 CPU (h_gr
[((UINT
) 12)]) = 0xdeadbeef;
7452 CPU (h_gr
[((UINT
) 13)]) = 0xdeadbeef;
7453 CPU (h_gr
[((UINT
) 14)]) = 0xdeadbeef;
7454 CPU (h_gr
[((UINT
) 15)]) = 0xdeadbeef;
7456 SI opval
= CPU (h_gr
[((UINT
) 31)]);
7457 CPU (h_gr
[((UINT
) 0)]) = opval
;
7458 TRACE_RESULT (current_cpu
, abuf
, "gr-0", 'x', opval
);
7461 SI opval
= tmp_temp
;
7462 CPU (h_gr
[((UINT
) 31)]) = opval
;
7463 TRACE_RESULT (current_cpu
, abuf
, "gr-31", 'x', opval
);
7466 SI opval
= ADDSI (tmp_temp
, 64);
7467 CPU (h_gr
[((UINT
) 1)]) = opval
;
7468 TRACE_RESULT (current_cpu
, abuf
, "gr-1", 'x', opval
);
7472 SEM_BRANCH_FINI (vpc
);
7480 SEM_FN_NAME (i960base
,ret
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7482 #define FLD(f) abuf->fields.sfmt_callx_disp.f
7483 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7484 int UNUSED written
= 0;
7485 IADDR UNUSED pc
= abuf
->addr
;
7487 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7491 SI opval
= CPU (h_gr
[((UINT
) 0)]);
7492 CPU (h_gr
[((UINT
) 31)]) = opval
;
7493 TRACE_RESULT (current_cpu
, abuf
, "gr-31", 'x', opval
);
7495 CPU (h_gr
[((UINT
) 0)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 0));
7496 CPU (h_gr
[((UINT
) 1)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 4));
7497 CPU (h_gr
[((UINT
) 2)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 8));
7498 CPU (h_gr
[((UINT
) 3)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 12));
7499 CPU (h_gr
[((UINT
) 4)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 16));
7500 CPU (h_gr
[((UINT
) 5)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 20));
7501 CPU (h_gr
[((UINT
) 6)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 24));
7502 CPU (h_gr
[((UINT
) 7)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 28));
7503 CPU (h_gr
[((UINT
) 8)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 32));
7504 CPU (h_gr
[((UINT
) 9)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 36));
7505 CPU (h_gr
[((UINT
) 10)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 40));
7506 CPU (h_gr
[((UINT
) 11)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 44));
7507 CPU (h_gr
[((UINT
) 12)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 48));
7508 CPU (h_gr
[((UINT
) 13)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 52));
7509 CPU (h_gr
[((UINT
) 14)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 56));
7510 CPU (h_gr
[((UINT
) 15)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 60));
7512 USI opval
= CPU (h_gr
[((UINT
) 2)]);
7513 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7514 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7518 SEM_BRANCH_FINI (vpc
);
7523 /* calls: calls $src1 */
7526 SEM_FN_NAME (i960base
,calls
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7528 #define FLD(f) abuf->fields.sfmt_emul2.f
7529 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7530 int UNUSED written
= 0;
7531 IADDR UNUSED pc
= abuf
->addr
;
7533 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7536 SI opval
= i960_trap (current_cpu
, pc
, * FLD (i_src1
));
7537 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7538 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7541 SEM_BRANCH_FINI (vpc
);
7549 SEM_FN_NAME (i960base
,fmark
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7551 #define FLD(f) abuf->fields.fmt_empty.f
7552 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7553 int UNUSED written
= 0;
7554 IADDR UNUSED pc
= abuf
->addr
;
7556 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7559 SI opval
= i960_breakpoint (current_cpu
, pc
);
7560 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7561 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7564 SEM_BRANCH_FINI (vpc
);
7569 /* flushreg: flushreg */
7572 SEM_FN_NAME (i960base
,flushreg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7574 #define FLD(f) abuf->fields.fmt_empty.f
7575 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7576 int UNUSED written
= 0;
7577 IADDR UNUSED pc
= abuf
->addr
;
7578 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7580 do { } while (0); /*nop*/
7586 /* Table of all semantic fns. */
7588 static const struct sem_fn_desc sem_fns
[] = {
7589 { I960BASE_INSN_X_INVALID
, SEM_FN_NAME (i960base
,x_invalid
) },
7590 { I960BASE_INSN_X_AFTER
, SEM_FN_NAME (i960base
,x_after
) },
7591 { I960BASE_INSN_X_BEFORE
, SEM_FN_NAME (i960base
,x_before
) },
7592 { I960BASE_INSN_X_CTI_CHAIN
, SEM_FN_NAME (i960base
,x_cti_chain
) },
7593 { I960BASE_INSN_X_CHAIN
, SEM_FN_NAME (i960base
,x_chain
) },
7594 { I960BASE_INSN_X_BEGIN
, SEM_FN_NAME (i960base
,x_begin
) },
7595 { I960BASE_INSN_MULO
, SEM_FN_NAME (i960base
,mulo
) },
7596 { I960BASE_INSN_MULO1
, SEM_FN_NAME (i960base
,mulo1
) },
7597 { I960BASE_INSN_MULO2
, SEM_FN_NAME (i960base
,mulo2
) },
7598 { I960BASE_INSN_MULO3
, SEM_FN_NAME (i960base
,mulo3
) },
7599 { I960BASE_INSN_REMO
, SEM_FN_NAME (i960base
,remo
) },
7600 { I960BASE_INSN_REMO1
, SEM_FN_NAME (i960base
,remo1
) },
7601 { I960BASE_INSN_REMO2
, SEM_FN_NAME (i960base
,remo2
) },
7602 { I960BASE_INSN_REMO3
, SEM_FN_NAME (i960base
,remo3
) },
7603 { I960BASE_INSN_DIVO
, SEM_FN_NAME (i960base
,divo
) },
7604 { I960BASE_INSN_DIVO1
, SEM_FN_NAME (i960base
,divo1
) },
7605 { I960BASE_INSN_DIVO2
, SEM_FN_NAME (i960base
,divo2
) },
7606 { I960BASE_INSN_DIVO3
, SEM_FN_NAME (i960base
,divo3
) },
7607 { I960BASE_INSN_REMI
, SEM_FN_NAME (i960base
,remi
) },
7608 { I960BASE_INSN_REMI1
, SEM_FN_NAME (i960base
,remi1
) },
7609 { I960BASE_INSN_REMI2
, SEM_FN_NAME (i960base
,remi2
) },
7610 { I960BASE_INSN_REMI3
, SEM_FN_NAME (i960base
,remi3
) },
7611 { I960BASE_INSN_DIVI
, SEM_FN_NAME (i960base
,divi
) },
7612 { I960BASE_INSN_DIVI1
, SEM_FN_NAME (i960base
,divi1
) },
7613 { I960BASE_INSN_DIVI2
, SEM_FN_NAME (i960base
,divi2
) },
7614 { I960BASE_INSN_DIVI3
, SEM_FN_NAME (i960base
,divi3
) },
7615 { I960BASE_INSN_ADDO
, SEM_FN_NAME (i960base
,addo
) },
7616 { I960BASE_INSN_ADDO1
, SEM_FN_NAME (i960base
,addo1
) },
7617 { I960BASE_INSN_ADDO2
, SEM_FN_NAME (i960base
,addo2
) },
7618 { I960BASE_INSN_ADDO3
, SEM_FN_NAME (i960base
,addo3
) },
7619 { I960BASE_INSN_SUBO
, SEM_FN_NAME (i960base
,subo
) },
7620 { I960BASE_INSN_SUBO1
, SEM_FN_NAME (i960base
,subo1
) },
7621 { I960BASE_INSN_SUBO2
, SEM_FN_NAME (i960base
,subo2
) },
7622 { I960BASE_INSN_SUBO3
, SEM_FN_NAME (i960base
,subo3
) },
7623 { I960BASE_INSN_NOTBIT
, SEM_FN_NAME (i960base
,notbit
) },
7624 { I960BASE_INSN_NOTBIT1
, SEM_FN_NAME (i960base
,notbit1
) },
7625 { I960BASE_INSN_NOTBIT2
, SEM_FN_NAME (i960base
,notbit2
) },
7626 { I960BASE_INSN_NOTBIT3
, SEM_FN_NAME (i960base
,notbit3
) },
7627 { I960BASE_INSN_AND
, SEM_FN_NAME (i960base
,and) },
7628 { I960BASE_INSN_AND1
, SEM_FN_NAME (i960base
,and1
) },
7629 { I960BASE_INSN_AND2
, SEM_FN_NAME (i960base
,and2
) },
7630 { I960BASE_INSN_AND3
, SEM_FN_NAME (i960base
,and3
) },
7631 { I960BASE_INSN_ANDNOT
, SEM_FN_NAME (i960base
,andnot
) },
7632 { I960BASE_INSN_ANDNOT1
, SEM_FN_NAME (i960base
,andnot1
) },
7633 { I960BASE_INSN_ANDNOT2
, SEM_FN_NAME (i960base
,andnot2
) },
7634 { I960BASE_INSN_ANDNOT3
, SEM_FN_NAME (i960base
,andnot3
) },
7635 { I960BASE_INSN_SETBIT
, SEM_FN_NAME (i960base
,setbit
) },
7636 { I960BASE_INSN_SETBIT1
, SEM_FN_NAME (i960base
,setbit1
) },
7637 { I960BASE_INSN_SETBIT2
, SEM_FN_NAME (i960base
,setbit2
) },
7638 { I960BASE_INSN_SETBIT3
, SEM_FN_NAME (i960base
,setbit3
) },
7639 { I960BASE_INSN_NOTAND
, SEM_FN_NAME (i960base
,notand
) },
7640 { I960BASE_INSN_NOTAND1
, SEM_FN_NAME (i960base
,notand1
) },
7641 { I960BASE_INSN_NOTAND2
, SEM_FN_NAME (i960base
,notand2
) },
7642 { I960BASE_INSN_NOTAND3
, SEM_FN_NAME (i960base
,notand3
) },
7643 { I960BASE_INSN_XOR
, SEM_FN_NAME (i960base
,xor) },
7644 { I960BASE_INSN_XOR1
, SEM_FN_NAME (i960base
,xor1
) },
7645 { I960BASE_INSN_XOR2
, SEM_FN_NAME (i960base
,xor2
) },
7646 { I960BASE_INSN_XOR3
, SEM_FN_NAME (i960base
,xor3
) },
7647 { I960BASE_INSN_OR
, SEM_FN_NAME (i960base
,or) },
7648 { I960BASE_INSN_OR1
, SEM_FN_NAME (i960base
,or1
) },
7649 { I960BASE_INSN_OR2
, SEM_FN_NAME (i960base
,or2
) },
7650 { I960BASE_INSN_OR3
, SEM_FN_NAME (i960base
,or3
) },
7651 { I960BASE_INSN_NOR
, SEM_FN_NAME (i960base
,nor
) },
7652 { I960BASE_INSN_NOR1
, SEM_FN_NAME (i960base
,nor1
) },
7653 { I960BASE_INSN_NOR2
, SEM_FN_NAME (i960base
,nor2
) },
7654 { I960BASE_INSN_NOR3
, SEM_FN_NAME (i960base
,nor3
) },
7655 { I960BASE_INSN_XNOR
, SEM_FN_NAME (i960base
,xnor
) },
7656 { I960BASE_INSN_XNOR1
, SEM_FN_NAME (i960base
,xnor1
) },
7657 { I960BASE_INSN_XNOR2
, SEM_FN_NAME (i960base
,xnor2
) },
7658 { I960BASE_INSN_XNOR3
, SEM_FN_NAME (i960base
,xnor3
) },
7659 { I960BASE_INSN_NOT
, SEM_FN_NAME (i960base
,not) },
7660 { I960BASE_INSN_NOT1
, SEM_FN_NAME (i960base
,not1
) },
7661 { I960BASE_INSN_NOT2
, SEM_FN_NAME (i960base
,not2
) },
7662 { I960BASE_INSN_NOT3
, SEM_FN_NAME (i960base
,not3
) },
7663 { I960BASE_INSN_ORNOT
, SEM_FN_NAME (i960base
,ornot
) },
7664 { I960BASE_INSN_ORNOT1
, SEM_FN_NAME (i960base
,ornot1
) },
7665 { I960BASE_INSN_ORNOT2
, SEM_FN_NAME (i960base
,ornot2
) },
7666 { I960BASE_INSN_ORNOT3
, SEM_FN_NAME (i960base
,ornot3
) },
7667 { I960BASE_INSN_CLRBIT
, SEM_FN_NAME (i960base
,clrbit
) },
7668 { I960BASE_INSN_CLRBIT1
, SEM_FN_NAME (i960base
,clrbit1
) },
7669 { I960BASE_INSN_CLRBIT2
, SEM_FN_NAME (i960base
,clrbit2
) },
7670 { I960BASE_INSN_CLRBIT3
, SEM_FN_NAME (i960base
,clrbit3
) },
7671 { I960BASE_INSN_SHLO
, SEM_FN_NAME (i960base
,shlo
) },
7672 { I960BASE_INSN_SHLO1
, SEM_FN_NAME (i960base
,shlo1
) },
7673 { I960BASE_INSN_SHLO2
, SEM_FN_NAME (i960base
,shlo2
) },
7674 { I960BASE_INSN_SHLO3
, SEM_FN_NAME (i960base
,shlo3
) },
7675 { I960BASE_INSN_SHRO
, SEM_FN_NAME (i960base
,shro
) },
7676 { I960BASE_INSN_SHRO1
, SEM_FN_NAME (i960base
,shro1
) },
7677 { I960BASE_INSN_SHRO2
, SEM_FN_NAME (i960base
,shro2
) },
7678 { I960BASE_INSN_SHRO3
, SEM_FN_NAME (i960base
,shro3
) },
7679 { I960BASE_INSN_SHLI
, SEM_FN_NAME (i960base
,shli
) },
7680 { I960BASE_INSN_SHLI1
, SEM_FN_NAME (i960base
,shli1
) },
7681 { I960BASE_INSN_SHLI2
, SEM_FN_NAME (i960base
,shli2
) },
7682 { I960BASE_INSN_SHLI3
, SEM_FN_NAME (i960base
,shli3
) },
7683 { I960BASE_INSN_SHRI
, SEM_FN_NAME (i960base
,shri
) },
7684 { I960BASE_INSN_SHRI1
, SEM_FN_NAME (i960base
,shri1
) },
7685 { I960BASE_INSN_SHRI2
, SEM_FN_NAME (i960base
,shri2
) },
7686 { I960BASE_INSN_SHRI3
, SEM_FN_NAME (i960base
,shri3
) },
7687 { I960BASE_INSN_EMUL
, SEM_FN_NAME (i960base
,emul
) },
7688 { I960BASE_INSN_EMUL1
, SEM_FN_NAME (i960base
,emul1
) },
7689 { I960BASE_INSN_EMUL2
, SEM_FN_NAME (i960base
,emul2
) },
7690 { I960BASE_INSN_EMUL3
, SEM_FN_NAME (i960base
,emul3
) },
7691 { I960BASE_INSN_MOV
, SEM_FN_NAME (i960base
,mov
) },
7692 { I960BASE_INSN_MOV1
, SEM_FN_NAME (i960base
,mov1
) },
7693 { I960BASE_INSN_MOVL
, SEM_FN_NAME (i960base
,movl
) },
7694 { I960BASE_INSN_MOVL1
, SEM_FN_NAME (i960base
,movl1
) },
7695 { I960BASE_INSN_MOVT
, SEM_FN_NAME (i960base
,movt
) },
7696 { I960BASE_INSN_MOVT1
, SEM_FN_NAME (i960base
,movt1
) },
7697 { I960BASE_INSN_MOVQ
, SEM_FN_NAME (i960base
,movq
) },
7698 { I960BASE_INSN_MOVQ1
, SEM_FN_NAME (i960base
,movq1
) },
7699 { I960BASE_INSN_MODPC
, SEM_FN_NAME (i960base
,modpc
) },
7700 { I960BASE_INSN_MODAC
, SEM_FN_NAME (i960base
,modac
) },
7701 { I960BASE_INSN_LDA_OFFSET
, SEM_FN_NAME (i960base
,lda_offset
) },
7702 { I960BASE_INSN_LDA_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,lda_indirect_offset
) },
7703 { I960BASE_INSN_LDA_INDIRECT
, SEM_FN_NAME (i960base
,lda_indirect
) },
7704 { I960BASE_INSN_LDA_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,lda_indirect_index
) },
7705 { I960BASE_INSN_LDA_DISP
, SEM_FN_NAME (i960base
,lda_disp
) },
7706 { I960BASE_INSN_LDA_INDIRECT_DISP
, SEM_FN_NAME (i960base
,lda_indirect_disp
) },
7707 { I960BASE_INSN_LDA_INDEX_DISP
, SEM_FN_NAME (i960base
,lda_index_disp
) },
7708 { I960BASE_INSN_LDA_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,lda_indirect_index_disp
) },
7709 { I960BASE_INSN_LD_OFFSET
, SEM_FN_NAME (i960base
,ld_offset
) },
7710 { I960BASE_INSN_LD_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,ld_indirect_offset
) },
7711 { I960BASE_INSN_LD_INDIRECT
, SEM_FN_NAME (i960base
,ld_indirect
) },
7712 { I960BASE_INSN_LD_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,ld_indirect_index
) },
7713 { I960BASE_INSN_LD_DISP
, SEM_FN_NAME (i960base
,ld_disp
) },
7714 { I960BASE_INSN_LD_INDIRECT_DISP
, SEM_FN_NAME (i960base
,ld_indirect_disp
) },
7715 { I960BASE_INSN_LD_INDEX_DISP
, SEM_FN_NAME (i960base
,ld_index_disp
) },
7716 { I960BASE_INSN_LD_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,ld_indirect_index_disp
) },
7717 { I960BASE_INSN_LDOB_OFFSET
, SEM_FN_NAME (i960base
,ldob_offset
) },
7718 { I960BASE_INSN_LDOB_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,ldob_indirect_offset
) },
7719 { I960BASE_INSN_LDOB_INDIRECT
, SEM_FN_NAME (i960base
,ldob_indirect
) },
7720 { I960BASE_INSN_LDOB_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,ldob_indirect_index
) },
7721 { I960BASE_INSN_LDOB_DISP
, SEM_FN_NAME (i960base
,ldob_disp
) },
7722 { I960BASE_INSN_LDOB_INDIRECT_DISP
, SEM_FN_NAME (i960base
,ldob_indirect_disp
) },
7723 { I960BASE_INSN_LDOB_INDEX_DISP
, SEM_FN_NAME (i960base
,ldob_index_disp
) },
7724 { I960BASE_INSN_LDOB_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,ldob_indirect_index_disp
) },
7725 { I960BASE_INSN_LDOS_OFFSET
, SEM_FN_NAME (i960base
,ldos_offset
) },
7726 { I960BASE_INSN_LDOS_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,ldos_indirect_offset
) },
7727 { I960BASE_INSN_LDOS_INDIRECT
, SEM_FN_NAME (i960base
,ldos_indirect
) },
7728 { I960BASE_INSN_LDOS_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,ldos_indirect_index
) },
7729 { I960BASE_INSN_LDOS_DISP
, SEM_FN_NAME (i960base
,ldos_disp
) },
7730 { I960BASE_INSN_LDOS_INDIRECT_DISP
, SEM_FN_NAME (i960base
,ldos_indirect_disp
) },
7731 { I960BASE_INSN_LDOS_INDEX_DISP
, SEM_FN_NAME (i960base
,ldos_index_disp
) },
7732 { I960BASE_INSN_LDOS_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,ldos_indirect_index_disp
) },
7733 { I960BASE_INSN_LDIB_OFFSET
, SEM_FN_NAME (i960base
,ldib_offset
) },
7734 { I960BASE_INSN_LDIB_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,ldib_indirect_offset
) },
7735 { I960BASE_INSN_LDIB_INDIRECT
, SEM_FN_NAME (i960base
,ldib_indirect
) },
7736 { I960BASE_INSN_LDIB_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,ldib_indirect_index
) },
7737 { I960BASE_INSN_LDIB_DISP
, SEM_FN_NAME (i960base
,ldib_disp
) },
7738 { I960BASE_INSN_LDIB_INDIRECT_DISP
, SEM_FN_NAME (i960base
,ldib_indirect_disp
) },
7739 { I960BASE_INSN_LDIB_INDEX_DISP
, SEM_FN_NAME (i960base
,ldib_index_disp
) },
7740 { I960BASE_INSN_LDIB_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,ldib_indirect_index_disp
) },
7741 { I960BASE_INSN_LDIS_OFFSET
, SEM_FN_NAME (i960base
,ldis_offset
) },
7742 { I960BASE_INSN_LDIS_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,ldis_indirect_offset
) },
7743 { I960BASE_INSN_LDIS_INDIRECT
, SEM_FN_NAME (i960base
,ldis_indirect
) },
7744 { I960BASE_INSN_LDIS_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,ldis_indirect_index
) },
7745 { I960BASE_INSN_LDIS_DISP
, SEM_FN_NAME (i960base
,ldis_disp
) },
7746 { I960BASE_INSN_LDIS_INDIRECT_DISP
, SEM_FN_NAME (i960base
,ldis_indirect_disp
) },
7747 { I960BASE_INSN_LDIS_INDEX_DISP
, SEM_FN_NAME (i960base
,ldis_index_disp
) },
7748 { I960BASE_INSN_LDIS_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,ldis_indirect_index_disp
) },
7749 { I960BASE_INSN_LDL_OFFSET
, SEM_FN_NAME (i960base
,ldl_offset
) },
7750 { I960BASE_INSN_LDL_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,ldl_indirect_offset
) },
7751 { I960BASE_INSN_LDL_INDIRECT
, SEM_FN_NAME (i960base
,ldl_indirect
) },
7752 { I960BASE_INSN_LDL_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,ldl_indirect_index
) },
7753 { I960BASE_INSN_LDL_DISP
, SEM_FN_NAME (i960base
,ldl_disp
) },
7754 { I960BASE_INSN_LDL_INDIRECT_DISP
, SEM_FN_NAME (i960base
,ldl_indirect_disp
) },
7755 { I960BASE_INSN_LDL_INDEX_DISP
, SEM_FN_NAME (i960base
,ldl_index_disp
) },
7756 { I960BASE_INSN_LDL_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,ldl_indirect_index_disp
) },
7757 { I960BASE_INSN_LDT_OFFSET
, SEM_FN_NAME (i960base
,ldt_offset
) },
7758 { I960BASE_INSN_LDT_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,ldt_indirect_offset
) },
7759 { I960BASE_INSN_LDT_INDIRECT
, SEM_FN_NAME (i960base
,ldt_indirect
) },
7760 { I960BASE_INSN_LDT_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,ldt_indirect_index
) },
7761 { I960BASE_INSN_LDT_DISP
, SEM_FN_NAME (i960base
,ldt_disp
) },
7762 { I960BASE_INSN_LDT_INDIRECT_DISP
, SEM_FN_NAME (i960base
,ldt_indirect_disp
) },
7763 { I960BASE_INSN_LDT_INDEX_DISP
, SEM_FN_NAME (i960base
,ldt_index_disp
) },
7764 { I960BASE_INSN_LDT_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,ldt_indirect_index_disp
) },
7765 { I960BASE_INSN_LDQ_OFFSET
, SEM_FN_NAME (i960base
,ldq_offset
) },
7766 { I960BASE_INSN_LDQ_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,ldq_indirect_offset
) },
7767 { I960BASE_INSN_LDQ_INDIRECT
, SEM_FN_NAME (i960base
,ldq_indirect
) },
7768 { I960BASE_INSN_LDQ_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,ldq_indirect_index
) },
7769 { I960BASE_INSN_LDQ_DISP
, SEM_FN_NAME (i960base
,ldq_disp
) },
7770 { I960BASE_INSN_LDQ_INDIRECT_DISP
, SEM_FN_NAME (i960base
,ldq_indirect_disp
) },
7771 { I960BASE_INSN_LDQ_INDEX_DISP
, SEM_FN_NAME (i960base
,ldq_index_disp
) },
7772 { I960BASE_INSN_LDQ_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,ldq_indirect_index_disp
) },
7773 { I960BASE_INSN_ST_OFFSET
, SEM_FN_NAME (i960base
,st_offset
) },
7774 { I960BASE_INSN_ST_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,st_indirect_offset
) },
7775 { I960BASE_INSN_ST_INDIRECT
, SEM_FN_NAME (i960base
,st_indirect
) },
7776 { I960BASE_INSN_ST_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,st_indirect_index
) },
7777 { I960BASE_INSN_ST_DISP
, SEM_FN_NAME (i960base
,st_disp
) },
7778 { I960BASE_INSN_ST_INDIRECT_DISP
, SEM_FN_NAME (i960base
,st_indirect_disp
) },
7779 { I960BASE_INSN_ST_INDEX_DISP
, SEM_FN_NAME (i960base
,st_index_disp
) },
7780 { I960BASE_INSN_ST_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,st_indirect_index_disp
) },
7781 { I960BASE_INSN_STOB_OFFSET
, SEM_FN_NAME (i960base
,stob_offset
) },
7782 { I960BASE_INSN_STOB_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,stob_indirect_offset
) },
7783 { I960BASE_INSN_STOB_INDIRECT
, SEM_FN_NAME (i960base
,stob_indirect
) },
7784 { I960BASE_INSN_STOB_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,stob_indirect_index
) },
7785 { I960BASE_INSN_STOB_DISP
, SEM_FN_NAME (i960base
,stob_disp
) },
7786 { I960BASE_INSN_STOB_INDIRECT_DISP
, SEM_FN_NAME (i960base
,stob_indirect_disp
) },
7787 { I960BASE_INSN_STOB_INDEX_DISP
, SEM_FN_NAME (i960base
,stob_index_disp
) },
7788 { I960BASE_INSN_STOB_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,stob_indirect_index_disp
) },
7789 { I960BASE_INSN_STOS_OFFSET
, SEM_FN_NAME (i960base
,stos_offset
) },
7790 { I960BASE_INSN_STOS_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,stos_indirect_offset
) },
7791 { I960BASE_INSN_STOS_INDIRECT
, SEM_FN_NAME (i960base
,stos_indirect
) },
7792 { I960BASE_INSN_STOS_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,stos_indirect_index
) },
7793 { I960BASE_INSN_STOS_DISP
, SEM_FN_NAME (i960base
,stos_disp
) },
7794 { I960BASE_INSN_STOS_INDIRECT_DISP
, SEM_FN_NAME (i960base
,stos_indirect_disp
) },
7795 { I960BASE_INSN_STOS_INDEX_DISP
, SEM_FN_NAME (i960base
,stos_index_disp
) },
7796 { I960BASE_INSN_STOS_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,stos_indirect_index_disp
) },
7797 { I960BASE_INSN_STL_OFFSET
, SEM_FN_NAME (i960base
,stl_offset
) },
7798 { I960BASE_INSN_STL_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,stl_indirect_offset
) },
7799 { I960BASE_INSN_STL_INDIRECT
, SEM_FN_NAME (i960base
,stl_indirect
) },
7800 { I960BASE_INSN_STL_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,stl_indirect_index
) },
7801 { I960BASE_INSN_STL_DISP
, SEM_FN_NAME (i960base
,stl_disp
) },
7802 { I960BASE_INSN_STL_INDIRECT_DISP
, SEM_FN_NAME (i960base
,stl_indirect_disp
) },
7803 { I960BASE_INSN_STL_INDEX_DISP
, SEM_FN_NAME (i960base
,stl_index_disp
) },
7804 { I960BASE_INSN_STL_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,stl_indirect_index_disp
) },
7805 { I960BASE_INSN_STT_OFFSET
, SEM_FN_NAME (i960base
,stt_offset
) },
7806 { I960BASE_INSN_STT_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,stt_indirect_offset
) },
7807 { I960BASE_INSN_STT_INDIRECT
, SEM_FN_NAME (i960base
,stt_indirect
) },
7808 { I960BASE_INSN_STT_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,stt_indirect_index
) },
7809 { I960BASE_INSN_STT_DISP
, SEM_FN_NAME (i960base
,stt_disp
) },
7810 { I960BASE_INSN_STT_INDIRECT_DISP
, SEM_FN_NAME (i960base
,stt_indirect_disp
) },
7811 { I960BASE_INSN_STT_INDEX_DISP
, SEM_FN_NAME (i960base
,stt_index_disp
) },
7812 { I960BASE_INSN_STT_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,stt_indirect_index_disp
) },
7813 { I960BASE_INSN_STQ_OFFSET
, SEM_FN_NAME (i960base
,stq_offset
) },
7814 { I960BASE_INSN_STQ_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,stq_indirect_offset
) },
7815 { I960BASE_INSN_STQ_INDIRECT
, SEM_FN_NAME (i960base
,stq_indirect
) },
7816 { I960BASE_INSN_STQ_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,stq_indirect_index
) },
7817 { I960BASE_INSN_STQ_DISP
, SEM_FN_NAME (i960base
,stq_disp
) },
7818 { I960BASE_INSN_STQ_INDIRECT_DISP
, SEM_FN_NAME (i960base
,stq_indirect_disp
) },
7819 { I960BASE_INSN_STQ_INDEX_DISP
, SEM_FN_NAME (i960base
,stq_index_disp
) },
7820 { I960BASE_INSN_STQ_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,stq_indirect_index_disp
) },
7821 { I960BASE_INSN_CMPOBE_REG
, SEM_FN_NAME (i960base
,cmpobe_reg
) },
7822 { I960BASE_INSN_CMPOBE_LIT
, SEM_FN_NAME (i960base
,cmpobe_lit
) },
7823 { I960BASE_INSN_CMPOBNE_REG
, SEM_FN_NAME (i960base
,cmpobne_reg
) },
7824 { I960BASE_INSN_CMPOBNE_LIT
, SEM_FN_NAME (i960base
,cmpobne_lit
) },
7825 { I960BASE_INSN_CMPOBL_REG
, SEM_FN_NAME (i960base
,cmpobl_reg
) },
7826 { I960BASE_INSN_CMPOBL_LIT
, SEM_FN_NAME (i960base
,cmpobl_lit
) },
7827 { I960BASE_INSN_CMPOBLE_REG
, SEM_FN_NAME (i960base
,cmpoble_reg
) },
7828 { I960BASE_INSN_CMPOBLE_LIT
, SEM_FN_NAME (i960base
,cmpoble_lit
) },
7829 { I960BASE_INSN_CMPOBG_REG
, SEM_FN_NAME (i960base
,cmpobg_reg
) },
7830 { I960BASE_INSN_CMPOBG_LIT
, SEM_FN_NAME (i960base
,cmpobg_lit
) },
7831 { I960BASE_INSN_CMPOBGE_REG
, SEM_FN_NAME (i960base
,cmpobge_reg
) },
7832 { I960BASE_INSN_CMPOBGE_LIT
, SEM_FN_NAME (i960base
,cmpobge_lit
) },
7833 { I960BASE_INSN_CMPIBE_REG
, SEM_FN_NAME (i960base
,cmpibe_reg
) },
7834 { I960BASE_INSN_CMPIBE_LIT
, SEM_FN_NAME (i960base
,cmpibe_lit
) },
7835 { I960BASE_INSN_CMPIBNE_REG
, SEM_FN_NAME (i960base
,cmpibne_reg
) },
7836 { I960BASE_INSN_CMPIBNE_LIT
, SEM_FN_NAME (i960base
,cmpibne_lit
) },
7837 { I960BASE_INSN_CMPIBL_REG
, SEM_FN_NAME (i960base
,cmpibl_reg
) },
7838 { I960BASE_INSN_CMPIBL_LIT
, SEM_FN_NAME (i960base
,cmpibl_lit
) },
7839 { I960BASE_INSN_CMPIBLE_REG
, SEM_FN_NAME (i960base
,cmpible_reg
) },
7840 { I960BASE_INSN_CMPIBLE_LIT
, SEM_FN_NAME (i960base
,cmpible_lit
) },
7841 { I960BASE_INSN_CMPIBG_REG
, SEM_FN_NAME (i960base
,cmpibg_reg
) },
7842 { I960BASE_INSN_CMPIBG_LIT
, SEM_FN_NAME (i960base
,cmpibg_lit
) },
7843 { I960BASE_INSN_CMPIBGE_REG
, SEM_FN_NAME (i960base
,cmpibge_reg
) },
7844 { I960BASE_INSN_CMPIBGE_LIT
, SEM_FN_NAME (i960base
,cmpibge_lit
) },
7845 { I960BASE_INSN_BBC_REG
, SEM_FN_NAME (i960base
,bbc_reg
) },
7846 { I960BASE_INSN_BBC_LIT
, SEM_FN_NAME (i960base
,bbc_lit
) },
7847 { I960BASE_INSN_BBS_REG
, SEM_FN_NAME (i960base
,bbs_reg
) },
7848 { I960BASE_INSN_BBS_LIT
, SEM_FN_NAME (i960base
,bbs_lit
) },
7849 { I960BASE_INSN_CMPI
, SEM_FN_NAME (i960base
,cmpi
) },
7850 { I960BASE_INSN_CMPI1
, SEM_FN_NAME (i960base
,cmpi1
) },
7851 { I960BASE_INSN_CMPI2
, SEM_FN_NAME (i960base
,cmpi2
) },
7852 { I960BASE_INSN_CMPI3
, SEM_FN_NAME (i960base
,cmpi3
) },
7853 { I960BASE_INSN_CMPO
, SEM_FN_NAME (i960base
,cmpo
) },
7854 { I960BASE_INSN_CMPO1
, SEM_FN_NAME (i960base
,cmpo1
) },
7855 { I960BASE_INSN_CMPO2
, SEM_FN_NAME (i960base
,cmpo2
) },
7856 { I960BASE_INSN_CMPO3
, SEM_FN_NAME (i960base
,cmpo3
) },
7857 { I960BASE_INSN_TESTNO_REG
, SEM_FN_NAME (i960base
,testno_reg
) },
7858 { I960BASE_INSN_TESTG_REG
, SEM_FN_NAME (i960base
,testg_reg
) },
7859 { I960BASE_INSN_TESTE_REG
, SEM_FN_NAME (i960base
,teste_reg
) },
7860 { I960BASE_INSN_TESTGE_REG
, SEM_FN_NAME (i960base
,testge_reg
) },
7861 { I960BASE_INSN_TESTL_REG
, SEM_FN_NAME (i960base
,testl_reg
) },
7862 { I960BASE_INSN_TESTNE_REG
, SEM_FN_NAME (i960base
,testne_reg
) },
7863 { I960BASE_INSN_TESTLE_REG
, SEM_FN_NAME (i960base
,testle_reg
) },
7864 { I960BASE_INSN_TESTO_REG
, SEM_FN_NAME (i960base
,testo_reg
) },
7865 { I960BASE_INSN_BNO
, SEM_FN_NAME (i960base
,bno
) },
7866 { I960BASE_INSN_BG
, SEM_FN_NAME (i960base
,bg
) },
7867 { I960BASE_INSN_BE
, SEM_FN_NAME (i960base
,be
) },
7868 { I960BASE_INSN_BGE
, SEM_FN_NAME (i960base
,bge
) },
7869 { I960BASE_INSN_BL
, SEM_FN_NAME (i960base
,bl
) },
7870 { I960BASE_INSN_BNE
, SEM_FN_NAME (i960base
,bne
) },
7871 { I960BASE_INSN_BLE
, SEM_FN_NAME (i960base
,ble
) },
7872 { I960BASE_INSN_BO
, SEM_FN_NAME (i960base
,bo
) },
7873 { I960BASE_INSN_B
, SEM_FN_NAME (i960base
,b
) },
7874 { I960BASE_INSN_BX_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,bx_indirect_offset
) },
7875 { I960BASE_INSN_BX_INDIRECT
, SEM_FN_NAME (i960base
,bx_indirect
) },
7876 { I960BASE_INSN_BX_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,bx_indirect_index
) },
7877 { I960BASE_INSN_BX_DISP
, SEM_FN_NAME (i960base
,bx_disp
) },
7878 { I960BASE_INSN_BX_INDIRECT_DISP
, SEM_FN_NAME (i960base
,bx_indirect_disp
) },
7879 { I960BASE_INSN_CALLX_DISP
, SEM_FN_NAME (i960base
,callx_disp
) },
7880 { I960BASE_INSN_CALLX_INDIRECT
, SEM_FN_NAME (i960base
,callx_indirect
) },
7881 { I960BASE_INSN_CALLX_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,callx_indirect_offset
) },
7882 { I960BASE_INSN_RET
, SEM_FN_NAME (i960base
,ret
) },
7883 { I960BASE_INSN_CALLS
, SEM_FN_NAME (i960base
,calls
) },
7884 { I960BASE_INSN_FMARK
, SEM_FN_NAME (i960base
,fmark
) },
7885 { I960BASE_INSN_FLUSHREG
, SEM_FN_NAME (i960base
,flushreg
) },
7889 /* Add the semantic fns to IDESC_TABLE. */
7892 SEM_FN_NAME (i960base
,init_idesc_table
) (SIM_CPU
*current_cpu
)
7894 IDESC
*idesc_table
= CPU_IDESC (current_cpu
);
7895 const struct sem_fn_desc
*sf
;
7896 int mach_num
= MACH_NUM (CPU_MACH (current_cpu
));
7898 for (sf
= &sem_fns
[0]; sf
->fn
!= 0; ++sf
)
7900 int valid_p
= CGEN_INSN_MACH_HAS_P (idesc_table
[sf
->index
].idata
, mach_num
);
7903 idesc_table
[sf
->index
].sem_fast
= sf
->fn
;
7905 idesc_table
[sf
->index
].sem_fast
= SEM_FN_NAME (i960base
,x_invalid
);
7908 idesc_table
[sf
->index
].sem_full
= sf
->fn
;
7910 idesc_table
[sf
->index
].sem_full
= SEM_FN_NAME (i960base
,x_invalid
);