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);
58 /* Update the recorded pc in the cpu state struct.
59 Only necessary for WITH_SCACHE case, but to avoid the
60 conditional compilation .... */
62 /* Virtual insns have zero size. Overwrite vpc with address of next insn
63 using the default-insn-bitsize spec. When executing insns in parallel
64 we may want to queue the fault and continue execution. */
65 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
66 vpc
= sim_engine_invalid_insn (current_cpu
, pc
, vpc
);
73 /* x-after: --after-- */
76 SEM_FN_NAME (i960base
,x_after
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
78 #define FLD(f) abuf->fields.fmt_empty.f
79 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
80 int UNUSED written
= 0;
81 IADDR UNUSED pc
= abuf
->addr
;
82 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
85 #if WITH_SCACHE_PBB_I960BASE
86 i960base_pbb_after (current_cpu
, sem_arg
);
94 /* x-before: --before-- */
97 SEM_FN_NAME (i960base
,x_before
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
99 #define FLD(f) abuf->fields.fmt_empty.f
100 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
101 int UNUSED written
= 0;
102 IADDR UNUSED pc
= abuf
->addr
;
103 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
106 #if WITH_SCACHE_PBB_I960BASE
107 i960base_pbb_before (current_cpu
, sem_arg
);
115 /* x-cti-chain: --cti-chain-- */
118 SEM_FN_NAME (i960base
,x_cti_chain
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
120 #define FLD(f) abuf->fields.fmt_empty.f
121 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
122 int UNUSED written
= 0;
123 IADDR UNUSED pc
= abuf
->addr
;
124 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
127 #if WITH_SCACHE_PBB_I960BASE
129 vpc
= i960base_pbb_cti_chain (current_cpu
, sem_arg
,
130 pbb_br_type
, pbb_br_npc
);
133 /* FIXME: Allow provision of explicit ifmt spec in insn spec. */
134 vpc
= i960base_pbb_cti_chain (current_cpu
, sem_arg
,
135 CPU_PBB_BR_TYPE (current_cpu
),
136 CPU_PBB_BR_NPC (current_cpu
));
145 /* x-chain: --chain-- */
148 SEM_FN_NAME (i960base
,x_chain
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
150 #define FLD(f) abuf->fields.fmt_empty.f
151 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
152 int UNUSED written
= 0;
153 IADDR UNUSED pc
= abuf
->addr
;
154 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
157 #if WITH_SCACHE_PBB_I960BASE
158 vpc
= i960base_pbb_chain (current_cpu
, sem_arg
);
169 /* x-begin: --begin-- */
172 SEM_FN_NAME (i960base
,x_begin
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
174 #define FLD(f) abuf->fields.fmt_empty.f
175 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
176 int UNUSED written
= 0;
177 IADDR UNUSED pc
= abuf
->addr
;
178 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
181 #if WITH_SCACHE_PBB_I960BASE
183 /* In the switch case FAST_P is a constant, allowing several optimizations
184 in any called inline functions. */
185 vpc
= i960base_pbb_begin (current_cpu
, FAST_P
);
187 vpc
= i960base_pbb_begin (current_cpu
, STATE_RUN_FAST_P (CPU_STATE (current_cpu
)));
196 /* mulo: mulo $src1, $src2, $dst */
199 SEM_FN_NAME (i960base
,mulo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
201 #define FLD(f) abuf->fields.sfmt_emul.f
202 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
203 int UNUSED written
= 0;
204 IADDR UNUSED pc
= abuf
->addr
;
205 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
208 SI opval
= MULSI (* FLD (i_src1
), * FLD (i_src2
));
209 * FLD (i_dst
) = opval
;
210 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
217 /* mulo1: mulo $lit1, $src2, $dst */
220 SEM_FN_NAME (i960base
,mulo1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
222 #define FLD(f) abuf->fields.sfmt_emul1.f
223 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
224 int UNUSED written
= 0;
225 IADDR UNUSED pc
= abuf
->addr
;
226 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
229 SI opval
= MULSI (FLD (f_src1
), * FLD (i_src2
));
230 * FLD (i_dst
) = opval
;
231 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
238 /* mulo2: mulo $src1, $lit2, $dst */
241 SEM_FN_NAME (i960base
,mulo2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
243 #define FLD(f) abuf->fields.sfmt_emul2.f
244 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
245 int UNUSED written
= 0;
246 IADDR UNUSED pc
= abuf
->addr
;
247 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
250 SI opval
= MULSI (* FLD (i_src1
), FLD (f_src2
));
251 * FLD (i_dst
) = opval
;
252 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
259 /* mulo3: mulo $lit1, $lit2, $dst */
262 SEM_FN_NAME (i960base
,mulo3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
264 #define FLD(f) abuf->fields.sfmt_emul3.f
265 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
266 int UNUSED written
= 0;
267 IADDR UNUSED pc
= abuf
->addr
;
268 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
271 SI opval
= MULSI (FLD (f_src1
), FLD (f_src2
));
272 * FLD (i_dst
) = opval
;
273 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
280 /* remo: remo $src1, $src2, $dst */
283 SEM_FN_NAME (i960base
,remo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
285 #define FLD(f) abuf->fields.sfmt_emul.f
286 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
287 int UNUSED written
= 0;
288 IADDR UNUSED pc
= abuf
->addr
;
289 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
292 SI opval
= UMODSI (* FLD (i_src2
), * FLD (i_src1
));
293 * FLD (i_dst
) = opval
;
294 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
301 /* remo1: remo $lit1, $src2, $dst */
304 SEM_FN_NAME (i960base
,remo1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
306 #define FLD(f) abuf->fields.sfmt_emul1.f
307 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
308 int UNUSED written
= 0;
309 IADDR UNUSED pc
= abuf
->addr
;
310 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
313 SI opval
= UMODSI (* FLD (i_src2
), FLD (f_src1
));
314 * FLD (i_dst
) = opval
;
315 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
322 /* remo2: remo $src1, $lit2, $dst */
325 SEM_FN_NAME (i960base
,remo2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
327 #define FLD(f) abuf->fields.sfmt_emul2.f
328 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
329 int UNUSED written
= 0;
330 IADDR UNUSED pc
= abuf
->addr
;
331 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
334 SI opval
= UMODSI (FLD (f_src2
), * FLD (i_src1
));
335 * FLD (i_dst
) = opval
;
336 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
343 /* remo3: remo $lit1, $lit2, $dst */
346 SEM_FN_NAME (i960base
,remo3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
348 #define FLD(f) abuf->fields.sfmt_emul3.f
349 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
350 int UNUSED written
= 0;
351 IADDR UNUSED pc
= abuf
->addr
;
352 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
355 SI opval
= UMODSI (FLD (f_src2
), FLD (f_src1
));
356 * FLD (i_dst
) = opval
;
357 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
364 /* divo: divo $src1, $src2, $dst */
367 SEM_FN_NAME (i960base
,divo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
369 #define FLD(f) abuf->fields.sfmt_emul.f
370 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
371 int UNUSED written
= 0;
372 IADDR UNUSED pc
= abuf
->addr
;
373 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
376 SI opval
= UDIVSI (* FLD (i_src2
), * FLD (i_src1
));
377 * FLD (i_dst
) = opval
;
378 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
385 /* divo1: divo $lit1, $src2, $dst */
388 SEM_FN_NAME (i960base
,divo1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
390 #define FLD(f) abuf->fields.sfmt_emul1.f
391 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
392 int UNUSED written
= 0;
393 IADDR UNUSED pc
= abuf
->addr
;
394 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
397 SI opval
= UDIVSI (* FLD (i_src2
), FLD (f_src1
));
398 * FLD (i_dst
) = opval
;
399 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
406 /* divo2: divo $src1, $lit2, $dst */
409 SEM_FN_NAME (i960base
,divo2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
411 #define FLD(f) abuf->fields.sfmt_emul2.f
412 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
413 int UNUSED written
= 0;
414 IADDR UNUSED pc
= abuf
->addr
;
415 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
418 SI opval
= UDIVSI (FLD (f_src2
), * FLD (i_src1
));
419 * FLD (i_dst
) = opval
;
420 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
427 /* divo3: divo $lit1, $lit2, $dst */
430 SEM_FN_NAME (i960base
,divo3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
432 #define FLD(f) abuf->fields.sfmt_emul3.f
433 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
434 int UNUSED written
= 0;
435 IADDR UNUSED pc
= abuf
->addr
;
436 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
439 SI opval
= UDIVSI (FLD (f_src2
), FLD (f_src1
));
440 * FLD (i_dst
) = opval
;
441 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
448 /* remi: remi $src1, $src2, $dst */
451 SEM_FN_NAME (i960base
,remi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
453 #define FLD(f) abuf->fields.sfmt_emul.f
454 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
455 int UNUSED written
= 0;
456 IADDR UNUSED pc
= abuf
->addr
;
457 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
460 SI opval
= MODSI (* FLD (i_src2
), * FLD (i_src1
));
461 * FLD (i_dst
) = opval
;
462 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
469 /* remi1: remi $lit1, $src2, $dst */
472 SEM_FN_NAME (i960base
,remi1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
474 #define FLD(f) abuf->fields.sfmt_emul1.f
475 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
476 int UNUSED written
= 0;
477 IADDR UNUSED pc
= abuf
->addr
;
478 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
481 SI opval
= MODSI (* FLD (i_src2
), FLD (f_src1
));
482 * FLD (i_dst
) = opval
;
483 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
490 /* remi2: remi $src1, $lit2, $dst */
493 SEM_FN_NAME (i960base
,remi2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
495 #define FLD(f) abuf->fields.sfmt_emul2.f
496 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
497 int UNUSED written
= 0;
498 IADDR UNUSED pc
= abuf
->addr
;
499 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
502 SI opval
= MODSI (FLD (f_src2
), * FLD (i_src1
));
503 * FLD (i_dst
) = opval
;
504 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
511 /* remi3: remi $lit1, $lit2, $dst */
514 SEM_FN_NAME (i960base
,remi3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
516 #define FLD(f) abuf->fields.sfmt_emul3.f
517 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
518 int UNUSED written
= 0;
519 IADDR UNUSED pc
= abuf
->addr
;
520 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
523 SI opval
= MODSI (FLD (f_src2
), FLD (f_src1
));
524 * FLD (i_dst
) = opval
;
525 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
532 /* divi: divi $src1, $src2, $dst */
535 SEM_FN_NAME (i960base
,divi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
537 #define FLD(f) abuf->fields.sfmt_emul.f
538 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
539 int UNUSED written
= 0;
540 IADDR UNUSED pc
= abuf
->addr
;
541 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
544 SI opval
= DIVSI (* FLD (i_src2
), * FLD (i_src1
));
545 * FLD (i_dst
) = opval
;
546 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
553 /* divi1: divi $lit1, $src2, $dst */
556 SEM_FN_NAME (i960base
,divi1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
558 #define FLD(f) abuf->fields.sfmt_emul1.f
559 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
560 int UNUSED written
= 0;
561 IADDR UNUSED pc
= abuf
->addr
;
562 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
565 SI opval
= DIVSI (* FLD (i_src2
), FLD (f_src1
));
566 * FLD (i_dst
) = opval
;
567 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
574 /* divi2: divi $src1, $lit2, $dst */
577 SEM_FN_NAME (i960base
,divi2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
579 #define FLD(f) abuf->fields.sfmt_emul2.f
580 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
581 int UNUSED written
= 0;
582 IADDR UNUSED pc
= abuf
->addr
;
583 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
586 SI opval
= DIVSI (FLD (f_src2
), * FLD (i_src1
));
587 * FLD (i_dst
) = opval
;
588 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
595 /* divi3: divi $lit1, $lit2, $dst */
598 SEM_FN_NAME (i960base
,divi3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
600 #define FLD(f) abuf->fields.sfmt_emul3.f
601 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
602 int UNUSED written
= 0;
603 IADDR UNUSED pc
= abuf
->addr
;
604 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
607 SI opval
= DIVSI (FLD (f_src2
), FLD (f_src1
));
608 * FLD (i_dst
) = opval
;
609 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
616 /* addo: addo $src1, $src2, $dst */
619 SEM_FN_NAME (i960base
,addo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
621 #define FLD(f) abuf->fields.sfmt_emul.f
622 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
623 int UNUSED written
= 0;
624 IADDR UNUSED pc
= abuf
->addr
;
625 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
628 SI opval
= ADDSI (* FLD (i_src1
), * FLD (i_src2
));
629 * FLD (i_dst
) = opval
;
630 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
637 /* addo1: addo $lit1, $src2, $dst */
640 SEM_FN_NAME (i960base
,addo1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
642 #define FLD(f) abuf->fields.sfmt_emul1.f
643 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
644 int UNUSED written
= 0;
645 IADDR UNUSED pc
= abuf
->addr
;
646 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
649 SI opval
= ADDSI (FLD (f_src1
), * FLD (i_src2
));
650 * FLD (i_dst
) = opval
;
651 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
658 /* addo2: addo $src1, $lit2, $dst */
661 SEM_FN_NAME (i960base
,addo2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
663 #define FLD(f) abuf->fields.sfmt_emul2.f
664 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
665 int UNUSED written
= 0;
666 IADDR UNUSED pc
= abuf
->addr
;
667 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
670 SI opval
= ADDSI (* FLD (i_src1
), FLD (f_src2
));
671 * FLD (i_dst
) = opval
;
672 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
679 /* addo3: addo $lit1, $lit2, $dst */
682 SEM_FN_NAME (i960base
,addo3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
684 #define FLD(f) abuf->fields.sfmt_emul3.f
685 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
686 int UNUSED written
= 0;
687 IADDR UNUSED pc
= abuf
->addr
;
688 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
691 SI opval
= ADDSI (FLD (f_src1
), FLD (f_src2
));
692 * FLD (i_dst
) = opval
;
693 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
700 /* subo: subo $src1, $src2, $dst */
703 SEM_FN_NAME (i960base
,subo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
705 #define FLD(f) abuf->fields.sfmt_emul.f
706 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
707 int UNUSED written
= 0;
708 IADDR UNUSED pc
= abuf
->addr
;
709 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
712 SI opval
= SUBSI (* FLD (i_src2
), * FLD (i_src1
));
713 * FLD (i_dst
) = opval
;
714 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
721 /* subo1: subo $lit1, $src2, $dst */
724 SEM_FN_NAME (i960base
,subo1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
726 #define FLD(f) abuf->fields.sfmt_emul1.f
727 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
728 int UNUSED written
= 0;
729 IADDR UNUSED pc
= abuf
->addr
;
730 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
733 SI opval
= SUBSI (* FLD (i_src2
), FLD (f_src1
));
734 * FLD (i_dst
) = opval
;
735 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
742 /* subo2: subo $src1, $lit2, $dst */
745 SEM_FN_NAME (i960base
,subo2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
747 #define FLD(f) abuf->fields.sfmt_emul2.f
748 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
749 int UNUSED written
= 0;
750 IADDR UNUSED pc
= abuf
->addr
;
751 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
754 SI opval
= SUBSI (FLD (f_src2
), * FLD (i_src1
));
755 * FLD (i_dst
) = opval
;
756 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
763 /* subo3: subo $lit1, $lit2, $dst */
766 SEM_FN_NAME (i960base
,subo3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
768 #define FLD(f) abuf->fields.sfmt_emul3.f
769 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
770 int UNUSED written
= 0;
771 IADDR UNUSED pc
= abuf
->addr
;
772 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
775 SI opval
= SUBSI (FLD (f_src2
), FLD (f_src1
));
776 * FLD (i_dst
) = opval
;
777 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
784 /* notbit: notbit $src1, $src2, $dst */
787 SEM_FN_NAME (i960base
,notbit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
789 #define FLD(f) abuf->fields.sfmt_emul.f
790 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
791 int UNUSED written
= 0;
792 IADDR UNUSED pc
= abuf
->addr
;
793 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
796 SI opval
= XORSI (SLLSI (1, * FLD (i_src1
)), * FLD (i_src2
));
797 * FLD (i_dst
) = opval
;
798 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
805 /* notbit1: notbit $lit1, $src2, $dst */
808 SEM_FN_NAME (i960base
,notbit1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
810 #define FLD(f) abuf->fields.sfmt_emul1.f
811 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
812 int UNUSED written
= 0;
813 IADDR UNUSED pc
= abuf
->addr
;
814 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
817 SI opval
= XORSI (SLLSI (1, FLD (f_src1
)), * FLD (i_src2
));
818 * FLD (i_dst
) = opval
;
819 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
826 /* notbit2: notbit $src1, $lit2, $dst */
829 SEM_FN_NAME (i960base
,notbit2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
831 #define FLD(f) abuf->fields.sfmt_emul2.f
832 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
833 int UNUSED written
= 0;
834 IADDR UNUSED pc
= abuf
->addr
;
835 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
838 SI opval
= XORSI (SLLSI (1, * FLD (i_src1
)), FLD (f_src2
));
839 * FLD (i_dst
) = opval
;
840 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
847 /* notbit3: notbit $lit1, $lit2, $dst */
850 SEM_FN_NAME (i960base
,notbit3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
852 #define FLD(f) abuf->fields.sfmt_emul3.f
853 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
854 int UNUSED written
= 0;
855 IADDR UNUSED pc
= abuf
->addr
;
856 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
859 SI opval
= XORSI (SLLSI (1, FLD (f_src1
)), FLD (f_src2
));
860 * FLD (i_dst
) = opval
;
861 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
868 /* and: and $src1, $src2, $dst */
871 SEM_FN_NAME (i960base
,and) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
873 #define FLD(f) abuf->fields.sfmt_emul.f
874 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
875 int UNUSED written
= 0;
876 IADDR UNUSED pc
= abuf
->addr
;
877 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
880 SI opval
= ANDSI (* FLD (i_src1
), * FLD (i_src2
));
881 * FLD (i_dst
) = opval
;
882 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
889 /* and1: and $lit1, $src2, $dst */
892 SEM_FN_NAME (i960base
,and1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
894 #define FLD(f) abuf->fields.sfmt_emul1.f
895 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
896 int UNUSED written
= 0;
897 IADDR UNUSED pc
= abuf
->addr
;
898 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
901 SI opval
= ANDSI (FLD (f_src1
), * FLD (i_src2
));
902 * FLD (i_dst
) = opval
;
903 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
910 /* and2: and $src1, $lit2, $dst */
913 SEM_FN_NAME (i960base
,and2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
915 #define FLD(f) abuf->fields.sfmt_emul2.f
916 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
917 int UNUSED written
= 0;
918 IADDR UNUSED pc
= abuf
->addr
;
919 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
922 SI opval
= ANDSI (* FLD (i_src1
), FLD (f_src2
));
923 * FLD (i_dst
) = opval
;
924 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
931 /* and3: and $lit1, $lit2, $dst */
934 SEM_FN_NAME (i960base
,and3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
936 #define FLD(f) abuf->fields.sfmt_emul3.f
937 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
938 int UNUSED written
= 0;
939 IADDR UNUSED pc
= abuf
->addr
;
940 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
943 SI opval
= ANDSI (FLD (f_src1
), FLD (f_src2
));
944 * FLD (i_dst
) = opval
;
945 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
952 /* andnot: andnot $src1, $src2, $dst */
955 SEM_FN_NAME (i960base
,andnot
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
957 #define FLD(f) abuf->fields.sfmt_emul.f
958 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
959 int UNUSED written
= 0;
960 IADDR UNUSED pc
= abuf
->addr
;
961 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
964 SI opval
= ANDSI (* FLD (i_src2
), INVSI (* FLD (i_src1
)));
965 * FLD (i_dst
) = opval
;
966 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
973 /* andnot1: andnot $lit1, $src2, $dst */
976 SEM_FN_NAME (i960base
,andnot1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
978 #define FLD(f) abuf->fields.sfmt_emul1.f
979 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
980 int UNUSED written
= 0;
981 IADDR UNUSED pc
= abuf
->addr
;
982 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
985 SI opval
= ANDSI (* FLD (i_src2
), INVSI (FLD (f_src1
)));
986 * FLD (i_dst
) = opval
;
987 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
994 /* andnot2: andnot $src1, $lit2, $dst */
997 SEM_FN_NAME (i960base
,andnot2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
999 #define FLD(f) abuf->fields.sfmt_emul2.f
1000 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1001 int UNUSED written
= 0;
1002 IADDR UNUSED pc
= abuf
->addr
;
1003 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1006 SI opval
= ANDSI (FLD (f_src2
), INVSI (* FLD (i_src1
)));
1007 * FLD (i_dst
) = opval
;
1008 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1015 /* andnot3: andnot $lit1, $lit2, $dst */
1018 SEM_FN_NAME (i960base
,andnot3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1020 #define FLD(f) abuf->fields.sfmt_emul3.f
1021 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1022 int UNUSED written
= 0;
1023 IADDR UNUSED pc
= abuf
->addr
;
1024 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1027 SI opval
= ANDSI (FLD (f_src2
), INVSI (FLD (f_src1
)));
1028 * FLD (i_dst
) = opval
;
1029 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1036 /* setbit: setbit $src1, $src2, $dst */
1039 SEM_FN_NAME (i960base
,setbit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1041 #define FLD(f) abuf->fields.sfmt_emul.f
1042 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1043 int UNUSED written
= 0;
1044 IADDR UNUSED pc
= abuf
->addr
;
1045 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1048 SI opval
= ORSI (SLLSI (1, * FLD (i_src1
)), * FLD (i_src2
));
1049 * FLD (i_dst
) = opval
;
1050 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1057 /* setbit1: setbit $lit1, $src2, $dst */
1060 SEM_FN_NAME (i960base
,setbit1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1062 #define FLD(f) abuf->fields.sfmt_emul1.f
1063 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1064 int UNUSED written
= 0;
1065 IADDR UNUSED pc
= abuf
->addr
;
1066 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1069 SI opval
= ORSI (SLLSI (1, FLD (f_src1
)), * FLD (i_src2
));
1070 * FLD (i_dst
) = opval
;
1071 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1078 /* setbit2: setbit $src1, $lit2, $dst */
1081 SEM_FN_NAME (i960base
,setbit2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1083 #define FLD(f) abuf->fields.sfmt_emul2.f
1084 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1085 int UNUSED written
= 0;
1086 IADDR UNUSED pc
= abuf
->addr
;
1087 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1090 SI opval
= ORSI (SLLSI (1, * FLD (i_src1
)), FLD (f_src2
));
1091 * FLD (i_dst
) = opval
;
1092 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1099 /* setbit3: setbit $lit1, $lit2, $dst */
1102 SEM_FN_NAME (i960base
,setbit3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1104 #define FLD(f) abuf->fields.sfmt_emul3.f
1105 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1106 int UNUSED written
= 0;
1107 IADDR UNUSED pc
= abuf
->addr
;
1108 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1111 SI opval
= ORSI (SLLSI (1, FLD (f_src1
)), FLD (f_src2
));
1112 * FLD (i_dst
) = opval
;
1113 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1120 /* notand: notand $src1, $src2, $dst */
1123 SEM_FN_NAME (i960base
,notand
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1125 #define FLD(f) abuf->fields.sfmt_emul.f
1126 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1127 int UNUSED written
= 0;
1128 IADDR UNUSED pc
= abuf
->addr
;
1129 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1132 SI opval
= ANDSI (INVSI (* FLD (i_src2
)), * FLD (i_src1
));
1133 * FLD (i_dst
) = opval
;
1134 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1141 /* notand1: notand $lit1, $src2, $dst */
1144 SEM_FN_NAME (i960base
,notand1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1146 #define FLD(f) abuf->fields.sfmt_emul1.f
1147 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1148 int UNUSED written
= 0;
1149 IADDR UNUSED pc
= abuf
->addr
;
1150 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1153 SI opval
= ANDSI (INVSI (* FLD (i_src2
)), FLD (f_src1
));
1154 * FLD (i_dst
) = opval
;
1155 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1162 /* notand2: notand $src1, $lit2, $dst */
1165 SEM_FN_NAME (i960base
,notand2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1167 #define FLD(f) abuf->fields.sfmt_emul2.f
1168 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1169 int UNUSED written
= 0;
1170 IADDR UNUSED pc
= abuf
->addr
;
1171 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1174 SI opval
= ANDSI (INVSI (FLD (f_src2
)), * FLD (i_src1
));
1175 * FLD (i_dst
) = opval
;
1176 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1183 /* notand3: notand $lit1, $lit2, $dst */
1186 SEM_FN_NAME (i960base
,notand3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1188 #define FLD(f) abuf->fields.sfmt_emul3.f
1189 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1190 int UNUSED written
= 0;
1191 IADDR UNUSED pc
= abuf
->addr
;
1192 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1195 SI opval
= ANDSI (INVSI (FLD (f_src2
)), FLD (f_src1
));
1196 * FLD (i_dst
) = opval
;
1197 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1204 /* xor: xor $src1, $src2, $dst */
1207 SEM_FN_NAME (i960base
,xor) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1209 #define FLD(f) abuf->fields.sfmt_emul.f
1210 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1211 int UNUSED written
= 0;
1212 IADDR UNUSED pc
= abuf
->addr
;
1213 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1216 SI opval
= XORSI (* FLD (i_src1
), * FLD (i_src2
));
1217 * FLD (i_dst
) = opval
;
1218 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1225 /* xor1: xor $lit1, $src2, $dst */
1228 SEM_FN_NAME (i960base
,xor1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1230 #define FLD(f) abuf->fields.sfmt_emul1.f
1231 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1232 int UNUSED written
= 0;
1233 IADDR UNUSED pc
= abuf
->addr
;
1234 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1237 SI opval
= XORSI (FLD (f_src1
), * FLD (i_src2
));
1238 * FLD (i_dst
) = opval
;
1239 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1246 /* xor2: xor $src1, $lit2, $dst */
1249 SEM_FN_NAME (i960base
,xor2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1251 #define FLD(f) abuf->fields.sfmt_emul2.f
1252 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1253 int UNUSED written
= 0;
1254 IADDR UNUSED pc
= abuf
->addr
;
1255 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1258 SI opval
= XORSI (* FLD (i_src1
), FLD (f_src2
));
1259 * FLD (i_dst
) = opval
;
1260 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1267 /* xor3: xor $lit1, $lit2, $dst */
1270 SEM_FN_NAME (i960base
,xor3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1272 #define FLD(f) abuf->fields.sfmt_emul3.f
1273 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1274 int UNUSED written
= 0;
1275 IADDR UNUSED pc
= abuf
->addr
;
1276 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1279 SI opval
= XORSI (FLD (f_src1
), FLD (f_src2
));
1280 * FLD (i_dst
) = opval
;
1281 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1288 /* or: or $src1, $src2, $dst */
1291 SEM_FN_NAME (i960base
,or) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1293 #define FLD(f) abuf->fields.sfmt_emul.f
1294 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1295 int UNUSED written
= 0;
1296 IADDR UNUSED pc
= abuf
->addr
;
1297 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1300 SI opval
= ORSI (* FLD (i_src1
), * FLD (i_src2
));
1301 * FLD (i_dst
) = opval
;
1302 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1309 /* or1: or $lit1, $src2, $dst */
1312 SEM_FN_NAME (i960base
,or1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1314 #define FLD(f) abuf->fields.sfmt_emul1.f
1315 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1316 int UNUSED written
= 0;
1317 IADDR UNUSED pc
= abuf
->addr
;
1318 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1321 SI opval
= ORSI (FLD (f_src1
), * FLD (i_src2
));
1322 * FLD (i_dst
) = opval
;
1323 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1330 /* or2: or $src1, $lit2, $dst */
1333 SEM_FN_NAME (i960base
,or2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1335 #define FLD(f) abuf->fields.sfmt_emul2.f
1336 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1337 int UNUSED written
= 0;
1338 IADDR UNUSED pc
= abuf
->addr
;
1339 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1342 SI opval
= ORSI (* FLD (i_src1
), FLD (f_src2
));
1343 * FLD (i_dst
) = opval
;
1344 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1351 /* or3: or $lit1, $lit2, $dst */
1354 SEM_FN_NAME (i960base
,or3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1356 #define FLD(f) abuf->fields.sfmt_emul3.f
1357 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1358 int UNUSED written
= 0;
1359 IADDR UNUSED pc
= abuf
->addr
;
1360 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1363 SI opval
= ORSI (FLD (f_src1
), FLD (f_src2
));
1364 * FLD (i_dst
) = opval
;
1365 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1372 /* nor: nor $src1, $src2, $dst */
1375 SEM_FN_NAME (i960base
,nor
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1377 #define FLD(f) abuf->fields.sfmt_emul.f
1378 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1379 int UNUSED written
= 0;
1380 IADDR UNUSED pc
= abuf
->addr
;
1381 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1384 SI opval
= ANDSI (INVSI (* FLD (i_src2
)), INVSI (* FLD (i_src1
)));
1385 * FLD (i_dst
) = opval
;
1386 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1393 /* nor1: nor $lit1, $src2, $dst */
1396 SEM_FN_NAME (i960base
,nor1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1398 #define FLD(f) abuf->fields.sfmt_emul1.f
1399 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1400 int UNUSED written
= 0;
1401 IADDR UNUSED pc
= abuf
->addr
;
1402 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1405 SI opval
= ANDSI (INVSI (* FLD (i_src2
)), INVSI (FLD (f_src1
)));
1406 * FLD (i_dst
) = opval
;
1407 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1414 /* nor2: nor $src1, $lit2, $dst */
1417 SEM_FN_NAME (i960base
,nor2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1419 #define FLD(f) abuf->fields.sfmt_emul2.f
1420 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1421 int UNUSED written
= 0;
1422 IADDR UNUSED pc
= abuf
->addr
;
1423 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1426 SI opval
= ANDSI (INVSI (FLD (f_src2
)), INVSI (* FLD (i_src1
)));
1427 * FLD (i_dst
) = opval
;
1428 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1435 /* nor3: nor $lit1, $lit2, $dst */
1438 SEM_FN_NAME (i960base
,nor3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1440 #define FLD(f) abuf->fields.sfmt_emul3.f
1441 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1442 int UNUSED written
= 0;
1443 IADDR UNUSED pc
= abuf
->addr
;
1444 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1447 SI opval
= ANDSI (INVSI (FLD (f_src2
)), INVSI (FLD (f_src1
)));
1448 * FLD (i_dst
) = opval
;
1449 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1456 /* xnor: xnor $src1, $src2, $dst */
1459 SEM_FN_NAME (i960base
,xnor
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1461 #define FLD(f) abuf->fields.sfmt_emul.f
1462 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1463 int UNUSED written
= 0;
1464 IADDR UNUSED pc
= abuf
->addr
;
1465 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1468 SI opval
= INVSI (XORSI (* FLD (i_src1
), * FLD (i_src2
)));
1469 * FLD (i_dst
) = opval
;
1470 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1477 /* xnor1: xnor $lit1, $src2, $dst */
1480 SEM_FN_NAME (i960base
,xnor1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1482 #define FLD(f) abuf->fields.sfmt_emul1.f
1483 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1484 int UNUSED written
= 0;
1485 IADDR UNUSED pc
= abuf
->addr
;
1486 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1489 SI opval
= INVSI (XORSI (FLD (f_src1
), * FLD (i_src2
)));
1490 * FLD (i_dst
) = opval
;
1491 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1498 /* xnor2: xnor $src1, $lit2, $dst */
1501 SEM_FN_NAME (i960base
,xnor2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1503 #define FLD(f) abuf->fields.sfmt_emul2.f
1504 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1505 int UNUSED written
= 0;
1506 IADDR UNUSED pc
= abuf
->addr
;
1507 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1510 SI opval
= INVSI (XORSI (* FLD (i_src1
), FLD (f_src2
)));
1511 * FLD (i_dst
) = opval
;
1512 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1519 /* xnor3: xnor $lit1, $lit2, $dst */
1522 SEM_FN_NAME (i960base
,xnor3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1524 #define FLD(f) abuf->fields.sfmt_emul3.f
1525 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1526 int UNUSED written
= 0;
1527 IADDR UNUSED pc
= abuf
->addr
;
1528 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1531 SI opval
= INVSI (XORSI (FLD (f_src1
), FLD (f_src2
)));
1532 * FLD (i_dst
) = opval
;
1533 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1540 /* not: not $src1, $src2, $dst */
1543 SEM_FN_NAME (i960base
,not) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1545 #define FLD(f) abuf->fields.sfmt_emul2.f
1546 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1547 int UNUSED written
= 0;
1548 IADDR UNUSED pc
= abuf
->addr
;
1549 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1552 SI opval
= INVSI (* FLD (i_src1
));
1553 * FLD (i_dst
) = opval
;
1554 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1561 /* not1: not $lit1, $src2, $dst */
1564 SEM_FN_NAME (i960base
,not1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1566 #define FLD(f) abuf->fields.sfmt_emul3.f
1567 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1568 int UNUSED written
= 0;
1569 IADDR UNUSED pc
= abuf
->addr
;
1570 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1573 SI opval
= INVSI (FLD (f_src1
));
1574 * FLD (i_dst
) = opval
;
1575 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1582 /* not2: not $src1, $lit2, $dst */
1585 SEM_FN_NAME (i960base
,not2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1587 #define FLD(f) abuf->fields.sfmt_emul2.f
1588 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1589 int UNUSED written
= 0;
1590 IADDR UNUSED pc
= abuf
->addr
;
1591 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1594 SI opval
= INVSI (* FLD (i_src1
));
1595 * FLD (i_dst
) = opval
;
1596 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1603 /* not3: not $lit1, $lit2, $dst */
1606 SEM_FN_NAME (i960base
,not3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1608 #define FLD(f) abuf->fields.sfmt_emul3.f
1609 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1610 int UNUSED written
= 0;
1611 IADDR UNUSED pc
= abuf
->addr
;
1612 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1615 SI opval
= INVSI (FLD (f_src1
));
1616 * FLD (i_dst
) = opval
;
1617 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1624 /* ornot: ornot $src1, $src2, $dst */
1627 SEM_FN_NAME (i960base
,ornot
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1629 #define FLD(f) abuf->fields.sfmt_emul.f
1630 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1631 int UNUSED written
= 0;
1632 IADDR UNUSED pc
= abuf
->addr
;
1633 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1636 SI opval
= ORSI (* FLD (i_src2
), INVSI (* FLD (i_src1
)));
1637 * FLD (i_dst
) = opval
;
1638 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1645 /* ornot1: ornot $lit1, $src2, $dst */
1648 SEM_FN_NAME (i960base
,ornot1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1650 #define FLD(f) abuf->fields.sfmt_emul1.f
1651 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1652 int UNUSED written
= 0;
1653 IADDR UNUSED pc
= abuf
->addr
;
1654 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1657 SI opval
= ORSI (* FLD (i_src2
), INVSI (FLD (f_src1
)));
1658 * FLD (i_dst
) = opval
;
1659 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1666 /* ornot2: ornot $src1, $lit2, $dst */
1669 SEM_FN_NAME (i960base
,ornot2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1671 #define FLD(f) abuf->fields.sfmt_emul2.f
1672 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1673 int UNUSED written
= 0;
1674 IADDR UNUSED pc
= abuf
->addr
;
1675 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1678 SI opval
= ORSI (FLD (f_src2
), INVSI (* FLD (i_src1
)));
1679 * FLD (i_dst
) = opval
;
1680 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1687 /* ornot3: ornot $lit1, $lit2, $dst */
1690 SEM_FN_NAME (i960base
,ornot3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1692 #define FLD(f) abuf->fields.sfmt_emul3.f
1693 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1694 int UNUSED written
= 0;
1695 IADDR UNUSED pc
= abuf
->addr
;
1696 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1699 SI opval
= ORSI (FLD (f_src2
), INVSI (FLD (f_src1
)));
1700 * FLD (i_dst
) = opval
;
1701 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1708 /* clrbit: clrbit $src1, $src2, $dst */
1711 SEM_FN_NAME (i960base
,clrbit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1713 #define FLD(f) abuf->fields.sfmt_emul.f
1714 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1715 int UNUSED written
= 0;
1716 IADDR UNUSED pc
= abuf
->addr
;
1717 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1720 SI opval
= ANDSI (INVSI (SLLSI (1, * FLD (i_src1
))), * FLD (i_src2
));
1721 * FLD (i_dst
) = opval
;
1722 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1729 /* clrbit1: clrbit $lit1, $src2, $dst */
1732 SEM_FN_NAME (i960base
,clrbit1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1734 #define FLD(f) abuf->fields.sfmt_emul1.f
1735 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1736 int UNUSED written
= 0;
1737 IADDR UNUSED pc
= abuf
->addr
;
1738 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1741 SI opval
= ANDSI (INVSI (SLLSI (1, FLD (f_src1
))), * FLD (i_src2
));
1742 * FLD (i_dst
) = opval
;
1743 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1750 /* clrbit2: clrbit $src1, $lit2, $dst */
1753 SEM_FN_NAME (i960base
,clrbit2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1755 #define FLD(f) abuf->fields.sfmt_emul2.f
1756 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1757 int UNUSED written
= 0;
1758 IADDR UNUSED pc
= abuf
->addr
;
1759 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1762 SI opval
= ANDSI (INVSI (SLLSI (1, * FLD (i_src1
))), FLD (f_src2
));
1763 * FLD (i_dst
) = opval
;
1764 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1771 /* clrbit3: clrbit $lit1, $lit2, $dst */
1774 SEM_FN_NAME (i960base
,clrbit3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1776 #define FLD(f) abuf->fields.sfmt_emul3.f
1777 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1778 int UNUSED written
= 0;
1779 IADDR UNUSED pc
= abuf
->addr
;
1780 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1783 SI opval
= ANDSI (INVSI (SLLSI (1, FLD (f_src1
))), FLD (f_src2
));
1784 * FLD (i_dst
) = opval
;
1785 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1792 /* shlo: shlo $src1, $src2, $dst */
1795 SEM_FN_NAME (i960base
,shlo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1797 #define FLD(f) abuf->fields.sfmt_emul.f
1798 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1799 int UNUSED written
= 0;
1800 IADDR UNUSED pc
= abuf
->addr
;
1801 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1804 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SLLSI (* FLD (i_src2
), * FLD (i_src1
)));
1805 * FLD (i_dst
) = opval
;
1806 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1813 /* shlo1: shlo $lit1, $src2, $dst */
1816 SEM_FN_NAME (i960base
,shlo1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1818 #define FLD(f) abuf->fields.sfmt_emul1.f
1819 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1820 int UNUSED written
= 0;
1821 IADDR UNUSED pc
= abuf
->addr
;
1822 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1825 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SLLSI (* FLD (i_src2
), FLD (f_src1
)));
1826 * FLD (i_dst
) = opval
;
1827 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1834 /* shlo2: shlo $src1, $lit2, $dst */
1837 SEM_FN_NAME (i960base
,shlo2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1839 #define FLD(f) abuf->fields.sfmt_emul2.f
1840 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1841 int UNUSED written
= 0;
1842 IADDR UNUSED pc
= abuf
->addr
;
1843 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1846 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SLLSI (FLD (f_src2
), * FLD (i_src1
)));
1847 * FLD (i_dst
) = opval
;
1848 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1855 /* shlo3: shlo $lit1, $lit2, $dst */
1858 SEM_FN_NAME (i960base
,shlo3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1860 #define FLD(f) abuf->fields.sfmt_emul3.f
1861 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1862 int UNUSED written
= 0;
1863 IADDR UNUSED pc
= abuf
->addr
;
1864 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1867 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SLLSI (FLD (f_src2
), FLD (f_src1
)));
1868 * FLD (i_dst
) = opval
;
1869 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1876 /* shro: shro $src1, $src2, $dst */
1879 SEM_FN_NAME (i960base
,shro
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1881 #define FLD(f) abuf->fields.sfmt_emul.f
1882 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1883 int UNUSED written
= 0;
1884 IADDR UNUSED pc
= abuf
->addr
;
1885 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1888 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SRLSI (* FLD (i_src2
), * FLD (i_src1
)));
1889 * FLD (i_dst
) = opval
;
1890 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1897 /* shro1: shro $lit1, $src2, $dst */
1900 SEM_FN_NAME (i960base
,shro1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1902 #define FLD(f) abuf->fields.sfmt_emul1.f
1903 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1904 int UNUSED written
= 0;
1905 IADDR UNUSED pc
= abuf
->addr
;
1906 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1909 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SRLSI (* FLD (i_src2
), FLD (f_src1
)));
1910 * FLD (i_dst
) = opval
;
1911 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1918 /* shro2: shro $src1, $lit2, $dst */
1921 SEM_FN_NAME (i960base
,shro2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1923 #define FLD(f) abuf->fields.sfmt_emul2.f
1924 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1925 int UNUSED written
= 0;
1926 IADDR UNUSED pc
= abuf
->addr
;
1927 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1930 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SRLSI (FLD (f_src2
), * FLD (i_src1
)));
1931 * FLD (i_dst
) = opval
;
1932 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1939 /* shro3: shro $lit1, $lit2, $dst */
1942 SEM_FN_NAME (i960base
,shro3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1944 #define FLD(f) abuf->fields.sfmt_emul3.f
1945 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1946 int UNUSED written
= 0;
1947 IADDR UNUSED pc
= abuf
->addr
;
1948 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1951 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SRLSI (FLD (f_src2
), FLD (f_src1
)));
1952 * FLD (i_dst
) = opval
;
1953 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1960 /* shli: shli $src1, $src2, $dst */
1963 SEM_FN_NAME (i960base
,shli
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1965 #define FLD(f) abuf->fields.sfmt_emul.f
1966 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1967 int UNUSED written
= 0;
1968 IADDR UNUSED pc
= abuf
->addr
;
1969 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1972 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SLLSI (* FLD (i_src2
), * FLD (i_src1
)));
1973 * FLD (i_dst
) = opval
;
1974 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
1981 /* shli1: shli $lit1, $src2, $dst */
1984 SEM_FN_NAME (i960base
,shli1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1986 #define FLD(f) abuf->fields.sfmt_emul1.f
1987 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1988 int UNUSED written
= 0;
1989 IADDR UNUSED pc
= abuf
->addr
;
1990 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1993 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SLLSI (* FLD (i_src2
), FLD (f_src1
)));
1994 * FLD (i_dst
) = opval
;
1995 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2002 /* shli2: shli $src1, $lit2, $dst */
2005 SEM_FN_NAME (i960base
,shli2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2007 #define FLD(f) abuf->fields.sfmt_emul2.f
2008 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2009 int UNUSED written
= 0;
2010 IADDR UNUSED pc
= abuf
->addr
;
2011 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2014 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (0) : (SLLSI (FLD (f_src2
), * FLD (i_src1
)));
2015 * FLD (i_dst
) = opval
;
2016 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2023 /* shli3: shli $lit1, $lit2, $dst */
2026 SEM_FN_NAME (i960base
,shli3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2028 #define FLD(f) abuf->fields.sfmt_emul3.f
2029 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2030 int UNUSED written
= 0;
2031 IADDR UNUSED pc
= abuf
->addr
;
2032 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2035 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (0) : (SLLSI (FLD (f_src2
), FLD (f_src1
)));
2036 * FLD (i_dst
) = opval
;
2037 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2044 /* shri: shri $src1, $src2, $dst */
2047 SEM_FN_NAME (i960base
,shri
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2049 #define FLD(f) abuf->fields.sfmt_emul.f
2050 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2051 int UNUSED written
= 0;
2052 IADDR UNUSED pc
= abuf
->addr
;
2053 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2056 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (SRASI (* FLD (i_src2
), 31)) : (SRASI (* FLD (i_src2
), * FLD (i_src1
)));
2057 * FLD (i_dst
) = opval
;
2058 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2065 /* shri1: shri $lit1, $src2, $dst */
2068 SEM_FN_NAME (i960base
,shri1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2070 #define FLD(f) abuf->fields.sfmt_emul1.f
2071 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2072 int UNUSED written
= 0;
2073 IADDR UNUSED pc
= abuf
->addr
;
2074 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2077 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (SRASI (* FLD (i_src2
), 31)) : (SRASI (* FLD (i_src2
), FLD (f_src1
)));
2078 * FLD (i_dst
) = opval
;
2079 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2086 /* shri2: shri $src1, $lit2, $dst */
2089 SEM_FN_NAME (i960base
,shri2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2091 #define FLD(f) abuf->fields.sfmt_emul2.f
2092 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2093 int UNUSED written
= 0;
2094 IADDR UNUSED pc
= abuf
->addr
;
2095 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2098 SI opval
= (GEUSI (* FLD (i_src1
), 32)) ? (SRASI (FLD (f_src2
), 31)) : (SRASI (FLD (f_src2
), * FLD (i_src1
)));
2099 * FLD (i_dst
) = opval
;
2100 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2107 /* shri3: shri $lit1, $lit2, $dst */
2110 SEM_FN_NAME (i960base
,shri3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2112 #define FLD(f) abuf->fields.sfmt_emul3.f
2113 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2114 int UNUSED written
= 0;
2115 IADDR UNUSED pc
= abuf
->addr
;
2116 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2119 SI opval
= (GEUSI (FLD (f_src1
), 32)) ? (SRASI (FLD (f_src2
), 31)) : (SRASI (FLD (f_src2
), FLD (f_src1
)));
2120 * FLD (i_dst
) = opval
;
2121 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2128 /* emul: emul $src1, $src2, $dst */
2131 SEM_FN_NAME (i960base
,emul
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2133 #define FLD(f) abuf->fields.sfmt_emul.f
2134 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2135 int UNUSED written
= 0;
2136 IADDR UNUSED pc
= abuf
->addr
;
2137 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2142 tmp_temp
= MULDI (ZEXTSIDI (* FLD (i_src1
)), ZEXTSIDI (* FLD (i_src2
)));
2143 tmp_dregno
= FLD (f_srcdst
);
2145 SI opval
= TRUNCDISI (tmp_temp
);
2146 * FLD (i_dst
) = opval
;
2147 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2150 SI opval
= TRUNCDISI (SRLDI (tmp_temp
, 32));
2151 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2152 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
2160 /* emul1: emul $lit1, $src2, $dst */
2163 SEM_FN_NAME (i960base
,emul1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2165 #define FLD(f) abuf->fields.sfmt_emul1.f
2166 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2167 int UNUSED written
= 0;
2168 IADDR UNUSED pc
= abuf
->addr
;
2169 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2174 tmp_temp
= MULDI (ZEXTSIDI (FLD (f_src1
)), ZEXTSIDI (* FLD (i_src2
)));
2175 tmp_dregno
= FLD (f_srcdst
);
2177 SI opval
= TRUNCDISI (tmp_temp
);
2178 * FLD (i_dst
) = opval
;
2179 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2182 SI opval
= TRUNCDISI (SRLDI (tmp_temp
, 32));
2183 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2184 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
2192 /* emul2: emul $src1, $lit2, $dst */
2195 SEM_FN_NAME (i960base
,emul2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2197 #define FLD(f) abuf->fields.sfmt_emul2.f
2198 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2199 int UNUSED written
= 0;
2200 IADDR UNUSED pc
= abuf
->addr
;
2201 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2206 tmp_temp
= MULDI (ZEXTSIDI (* FLD (i_src1
)), ZEXTSIDI (FLD (f_src2
)));
2207 tmp_dregno
= FLD (f_srcdst
);
2209 SI opval
= TRUNCDISI (tmp_temp
);
2210 * FLD (i_dst
) = opval
;
2211 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2214 SI opval
= TRUNCDISI (SRLDI (tmp_temp
, 32));
2215 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2216 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
2224 /* emul3: emul $lit1, $lit2, $dst */
2227 SEM_FN_NAME (i960base
,emul3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2229 #define FLD(f) abuf->fields.sfmt_emul3.f
2230 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2231 int UNUSED written
= 0;
2232 IADDR UNUSED pc
= abuf
->addr
;
2233 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2238 tmp_temp
= MULDI (ZEXTSIDI (FLD (f_src1
)), ZEXTSIDI (FLD (f_src2
)));
2239 tmp_dregno
= FLD (f_srcdst
);
2241 SI opval
= TRUNCDISI (tmp_temp
);
2242 * FLD (i_dst
) = opval
;
2243 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2246 SI opval
= TRUNCDISI (SRLDI (tmp_temp
, 32));
2247 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2248 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
2256 /* mov: mov $src1, $dst */
2259 SEM_FN_NAME (i960base
,mov
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2261 #define FLD(f) abuf->fields.sfmt_emul2.f
2262 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2263 int UNUSED written
= 0;
2264 IADDR UNUSED pc
= abuf
->addr
;
2265 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2268 SI opval
= * FLD (i_src1
);
2269 * FLD (i_dst
) = opval
;
2270 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2277 /* mov1: mov $lit1, $dst */
2280 SEM_FN_NAME (i960base
,mov1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2282 #define FLD(f) abuf->fields.sfmt_emul3.f
2283 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2284 int UNUSED written
= 0;
2285 IADDR UNUSED pc
= abuf
->addr
;
2286 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2289 SI opval
= FLD (f_src1
);
2290 * FLD (i_dst
) = opval
;
2291 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2298 /* movl: movl $src1, $dst */
2301 SEM_FN_NAME (i960base
,movl
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2303 #define FLD(f) abuf->fields.sfmt_movq.f
2304 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2305 int UNUSED written
= 0;
2306 IADDR UNUSED pc
= abuf
->addr
;
2307 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2312 tmp_dregno
= FLD (f_srcdst
);
2313 tmp_sregno
= FLD (f_src1
);
2315 SI opval
= * FLD (i_src1
);
2316 * FLD (i_dst
) = opval
;
2317 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2320 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (1))]);
2321 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2322 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
2330 /* movl1: movl $lit1, $dst */
2333 SEM_FN_NAME (i960base
,movl1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2335 #define FLD(f) abuf->fields.sfmt_emul3.f
2336 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2337 int UNUSED written
= 0;
2338 IADDR UNUSED pc
= abuf
->addr
;
2339 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2343 tmp_dregno
= FLD (f_srcdst
);
2345 SI opval
= FLD (f_src1
);
2346 * FLD (i_dst
) = opval
;
2347 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2351 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2352 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
2360 /* movt: movt $src1, $dst */
2363 SEM_FN_NAME (i960base
,movt
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2365 #define FLD(f) abuf->fields.sfmt_movq.f
2366 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2367 int UNUSED written
= 0;
2368 IADDR UNUSED pc
= abuf
->addr
;
2369 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2374 tmp_dregno
= FLD (f_srcdst
);
2375 tmp_sregno
= FLD (f_src1
);
2377 SI opval
= * FLD (i_src1
);
2378 * FLD (i_dst
) = opval
;
2379 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2382 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (1))]);
2383 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2384 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
2387 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (2))]);
2388 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
2389 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
2397 /* movt1: movt $lit1, $dst */
2400 SEM_FN_NAME (i960base
,movt1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2402 #define FLD(f) abuf->fields.sfmt_movq.f
2403 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2404 int UNUSED written
= 0;
2405 IADDR UNUSED pc
= abuf
->addr
;
2406 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2410 tmp_dregno
= FLD (f_srcdst
);
2412 SI opval
= FLD (f_src1
);
2413 * FLD (i_dst
) = opval
;
2414 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2418 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2419 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
2423 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
2424 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
2432 /* movq: movq $src1, $dst */
2435 SEM_FN_NAME (i960base
,movq
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2437 #define FLD(f) abuf->fields.sfmt_movq.f
2438 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2439 int UNUSED written
= 0;
2440 IADDR UNUSED pc
= abuf
->addr
;
2441 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2446 tmp_dregno
= FLD (f_srcdst
);
2447 tmp_sregno
= FLD (f_src1
);
2449 SI opval
= * FLD (i_src1
);
2450 * FLD (i_dst
) = opval
;
2451 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2454 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (1))]);
2455 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2456 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
2459 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (2))]);
2460 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
2461 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
2464 SI opval
= CPU (h_gr
[((FLD (f_src1
)) + (3))]);
2465 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
2466 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-3", 'x', opval
);
2474 /* movq1: movq $lit1, $dst */
2477 SEM_FN_NAME (i960base
,movq1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2479 #define FLD(f) abuf->fields.sfmt_movq.f
2480 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2481 int UNUSED written
= 0;
2482 IADDR UNUSED pc
= abuf
->addr
;
2483 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2487 tmp_dregno
= FLD (f_srcdst
);
2489 SI opval
= FLD (f_src1
);
2490 * FLD (i_dst
) = opval
;
2491 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2495 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
2496 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
2500 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
2501 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
2505 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
2506 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-3", 'x', opval
);
2514 /* modpc: modpc $src1, $src2, $dst */
2517 SEM_FN_NAME (i960base
,modpc
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2519 #define FLD(f) abuf->fields.sfmt_emul1.f
2520 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2521 int UNUSED written
= 0;
2522 IADDR UNUSED pc
= abuf
->addr
;
2523 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2526 SI opval
= * FLD (i_src2
);
2527 * FLD (i_dst
) = opval
;
2528 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2535 /* modac: modac $src1, $src2, $dst */
2538 SEM_FN_NAME (i960base
,modac
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2540 #define FLD(f) abuf->fields.sfmt_emul1.f
2541 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2542 int UNUSED written
= 0;
2543 IADDR UNUSED pc
= abuf
->addr
;
2544 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2547 SI opval
= * FLD (i_src2
);
2548 * FLD (i_dst
) = opval
;
2549 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2556 /* lda-offset: lda $offset, $dst */
2559 SEM_FN_NAME (i960base
,lda_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2561 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
2562 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2563 int UNUSED written
= 0;
2564 IADDR UNUSED pc
= abuf
->addr
;
2565 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2568 SI opval
= FLD (f_offset
);
2569 * FLD (i_dst
) = opval
;
2570 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2577 /* lda-indirect-offset: lda $offset($abase), $dst */
2580 SEM_FN_NAME (i960base
,lda_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2582 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
2583 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2584 int UNUSED written
= 0;
2585 IADDR UNUSED pc
= abuf
->addr
;
2586 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2589 SI opval
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
2590 * FLD (i_dst
) = opval
;
2591 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2598 /* lda-indirect: lda ($abase), $dst */
2601 SEM_FN_NAME (i960base
,lda_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2603 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
2604 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2605 int UNUSED written
= 0;
2606 IADDR UNUSED pc
= abuf
->addr
;
2607 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2610 SI opval
= * FLD (i_abase
);
2611 * FLD (i_dst
) = opval
;
2612 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2619 /* lda-indirect-index: lda ($abase)[$index*S$scale], $dst */
2622 SEM_FN_NAME (i960base
,lda_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2624 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2625 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2626 int UNUSED written
= 0;
2627 IADDR UNUSED pc
= abuf
->addr
;
2628 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2631 SI opval
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
2632 * FLD (i_dst
) = opval
;
2633 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2640 /* lda-disp: lda $optdisp, $dst */
2643 SEM_FN_NAME (i960base
,lda_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2645 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2646 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2647 int UNUSED written
= 0;
2648 IADDR UNUSED pc
= abuf
->addr
;
2649 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2652 SI opval
= FLD (f_optdisp
);
2653 * FLD (i_dst
) = opval
;
2654 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2661 /* lda-indirect-disp: lda $optdisp($abase), $dst */
2664 SEM_FN_NAME (i960base
,lda_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2666 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2667 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2668 int UNUSED written
= 0;
2669 IADDR UNUSED pc
= abuf
->addr
;
2670 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2673 SI opval
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
2674 * FLD (i_dst
) = opval
;
2675 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2682 /* lda-index-disp: lda $optdisp[$index*S$scale], $dst */
2685 SEM_FN_NAME (i960base
,lda_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2687 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2688 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2689 int UNUSED written
= 0;
2690 IADDR UNUSED pc
= abuf
->addr
;
2691 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2694 SI opval
= ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
2695 * FLD (i_dst
) = opval
;
2696 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2703 /* lda-indirect-index-disp: lda $optdisp($abase)[$index*S$scale], $dst */
2706 SEM_FN_NAME (i960base
,lda_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2708 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2709 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2710 int UNUSED written
= 0;
2711 IADDR UNUSED pc
= abuf
->addr
;
2712 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2715 SI opval
= ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
2716 * FLD (i_dst
) = opval
;
2717 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2724 /* ld-offset: ld $offset, $dst */
2727 SEM_FN_NAME (i960base
,ld_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2729 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
2730 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2731 int UNUSED written
= 0;
2732 IADDR UNUSED pc
= abuf
->addr
;
2733 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2736 SI opval
= GETMEMSI (current_cpu
, pc
, FLD (f_offset
));
2737 * FLD (i_dst
) = opval
;
2738 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2745 /* ld-indirect-offset: ld $offset($abase), $dst */
2748 SEM_FN_NAME (i960base
,ld_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2750 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
2751 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2752 int UNUSED written
= 0;
2753 IADDR UNUSED pc
= abuf
->addr
;
2754 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2757 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
2758 * FLD (i_dst
) = opval
;
2759 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2766 /* ld-indirect: ld ($abase), $dst */
2769 SEM_FN_NAME (i960base
,ld_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2771 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
2772 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2773 int UNUSED written
= 0;
2774 IADDR UNUSED pc
= abuf
->addr
;
2775 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2778 SI opval
= GETMEMSI (current_cpu
, pc
, * FLD (i_abase
));
2779 * FLD (i_dst
) = opval
;
2780 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2787 /* ld-indirect-index: ld ($abase)[$index*S$scale], $dst */
2790 SEM_FN_NAME (i960base
,ld_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2792 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2793 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2794 int UNUSED written
= 0;
2795 IADDR UNUSED pc
= abuf
->addr
;
2796 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2799 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
2800 * FLD (i_dst
) = opval
;
2801 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2808 /* ld-disp: ld $optdisp, $dst */
2811 SEM_FN_NAME (i960base
,ld_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2813 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2814 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2815 int UNUSED written
= 0;
2816 IADDR UNUSED pc
= abuf
->addr
;
2817 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2820 SI opval
= GETMEMSI (current_cpu
, pc
, FLD (f_optdisp
));
2821 * FLD (i_dst
) = opval
;
2822 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2829 /* ld-indirect-disp: ld $optdisp($abase), $dst */
2832 SEM_FN_NAME (i960base
,ld_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2834 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2835 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2836 int UNUSED written
= 0;
2837 IADDR UNUSED pc
= abuf
->addr
;
2838 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2841 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
2842 * FLD (i_dst
) = opval
;
2843 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2850 /* ld-index-disp: ld $optdisp[$index*S$scale], $dst */
2853 SEM_FN_NAME (i960base
,ld_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2855 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2856 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2857 int UNUSED written
= 0;
2858 IADDR UNUSED pc
= abuf
->addr
;
2859 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2862 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
2863 * FLD (i_dst
) = opval
;
2864 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2871 /* ld-indirect-index-disp: ld $optdisp($abase)[$index*S$scale], $dst */
2874 SEM_FN_NAME (i960base
,ld_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2876 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2877 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2878 int UNUSED written
= 0;
2879 IADDR UNUSED pc
= abuf
->addr
;
2880 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2883 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
2884 * FLD (i_dst
) = opval
;
2885 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2892 /* ldob-offset: ldob $offset, $dst */
2895 SEM_FN_NAME (i960base
,ldob_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2897 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
2898 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2899 int UNUSED written
= 0;
2900 IADDR UNUSED pc
= abuf
->addr
;
2901 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2904 SI opval
= GETMEMUQI (current_cpu
, pc
, FLD (f_offset
));
2905 * FLD (i_dst
) = opval
;
2906 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2913 /* ldob-indirect-offset: ldob $offset($abase), $dst */
2916 SEM_FN_NAME (i960base
,ldob_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2918 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
2919 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2920 int UNUSED written
= 0;
2921 IADDR UNUSED pc
= abuf
->addr
;
2922 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2925 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
2926 * FLD (i_dst
) = opval
;
2927 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2934 /* ldob-indirect: ldob ($abase), $dst */
2937 SEM_FN_NAME (i960base
,ldob_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2939 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
2940 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2941 int UNUSED written
= 0;
2942 IADDR UNUSED pc
= abuf
->addr
;
2943 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2946 SI opval
= GETMEMUQI (current_cpu
, pc
, * FLD (i_abase
));
2947 * FLD (i_dst
) = opval
;
2948 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2955 /* ldob-indirect-index: ldob ($abase)[$index*S$scale], $dst */
2958 SEM_FN_NAME (i960base
,ldob_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2960 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2961 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2962 int UNUSED written
= 0;
2963 IADDR UNUSED pc
= abuf
->addr
;
2964 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2967 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
2968 * FLD (i_dst
) = opval
;
2969 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2976 /* ldob-disp: ldob $optdisp, $dst */
2979 SEM_FN_NAME (i960base
,ldob_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2981 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
2982 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2983 int UNUSED written
= 0;
2984 IADDR UNUSED pc
= abuf
->addr
;
2985 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
2988 SI opval
= GETMEMUQI (current_cpu
, pc
, FLD (f_optdisp
));
2989 * FLD (i_dst
) = opval
;
2990 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
2997 /* ldob-indirect-disp: ldob $optdisp($abase), $dst */
3000 SEM_FN_NAME (i960base
,ldob_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3002 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3003 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3004 int UNUSED written
= 0;
3005 IADDR UNUSED pc
= abuf
->addr
;
3006 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3009 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
3010 * FLD (i_dst
) = opval
;
3011 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3018 /* ldob-index-disp: ldob $optdisp[$index*S$scale], $dst */
3021 SEM_FN_NAME (i960base
,ldob_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3023 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3024 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3025 int UNUSED written
= 0;
3026 IADDR UNUSED pc
= abuf
->addr
;
3027 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3030 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3031 * FLD (i_dst
) = opval
;
3032 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3039 /* ldob-indirect-index-disp: ldob $optdisp($abase)[$index*S$scale], $dst */
3042 SEM_FN_NAME (i960base
,ldob_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3044 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3045 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3046 int UNUSED written
= 0;
3047 IADDR UNUSED pc
= abuf
->addr
;
3048 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3051 SI opval
= GETMEMUQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
3052 * FLD (i_dst
) = opval
;
3053 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3060 /* ldos-offset: ldos $offset, $dst */
3063 SEM_FN_NAME (i960base
,ldos_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3065 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3066 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3067 int UNUSED written
= 0;
3068 IADDR UNUSED pc
= abuf
->addr
;
3069 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3072 SI opval
= GETMEMUHI (current_cpu
, pc
, FLD (f_offset
));
3073 * FLD (i_dst
) = opval
;
3074 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3081 /* ldos-indirect-offset: ldos $offset($abase), $dst */
3084 SEM_FN_NAME (i960base
,ldos_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3086 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3087 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3088 int UNUSED written
= 0;
3089 IADDR UNUSED pc
= abuf
->addr
;
3090 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3093 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
3094 * FLD (i_dst
) = opval
;
3095 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3102 /* ldos-indirect: ldos ($abase), $dst */
3105 SEM_FN_NAME (i960base
,ldos_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3107 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3108 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3109 int UNUSED written
= 0;
3110 IADDR UNUSED pc
= abuf
->addr
;
3111 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3114 SI opval
= GETMEMUHI (current_cpu
, pc
, * FLD (i_abase
));
3115 * FLD (i_dst
) = opval
;
3116 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3123 /* ldos-indirect-index: ldos ($abase)[$index*S$scale], $dst */
3126 SEM_FN_NAME (i960base
,ldos_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3128 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3129 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3130 int UNUSED written
= 0;
3131 IADDR UNUSED pc
= abuf
->addr
;
3132 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3135 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3136 * FLD (i_dst
) = opval
;
3137 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3144 /* ldos-disp: ldos $optdisp, $dst */
3147 SEM_FN_NAME (i960base
,ldos_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3149 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3150 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3151 int UNUSED written
= 0;
3152 IADDR UNUSED pc
= abuf
->addr
;
3153 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3156 SI opval
= GETMEMUHI (current_cpu
, pc
, FLD (f_optdisp
));
3157 * FLD (i_dst
) = opval
;
3158 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3165 /* ldos-indirect-disp: ldos $optdisp($abase), $dst */
3168 SEM_FN_NAME (i960base
,ldos_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3170 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3171 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3172 int UNUSED written
= 0;
3173 IADDR UNUSED pc
= abuf
->addr
;
3174 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3177 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
3178 * FLD (i_dst
) = opval
;
3179 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3186 /* ldos-index-disp: ldos $optdisp[$index*S$scale], $dst */
3189 SEM_FN_NAME (i960base
,ldos_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3191 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3192 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3193 int UNUSED written
= 0;
3194 IADDR UNUSED pc
= abuf
->addr
;
3195 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3198 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3199 * FLD (i_dst
) = opval
;
3200 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3207 /* ldos-indirect-index-disp: ldos $optdisp($abase)[$index*S$scale], $dst */
3210 SEM_FN_NAME (i960base
,ldos_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3212 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3213 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3214 int UNUSED written
= 0;
3215 IADDR UNUSED pc
= abuf
->addr
;
3216 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3219 SI opval
= GETMEMUHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
3220 * FLD (i_dst
) = opval
;
3221 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3228 /* ldib-offset: ldib $offset, $dst */
3231 SEM_FN_NAME (i960base
,ldib_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3233 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3234 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3235 int UNUSED written
= 0;
3236 IADDR UNUSED pc
= abuf
->addr
;
3237 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3240 SI opval
= GETMEMQI (current_cpu
, pc
, FLD (f_offset
));
3241 * FLD (i_dst
) = opval
;
3242 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3249 /* ldib-indirect-offset: ldib $offset($abase), $dst */
3252 SEM_FN_NAME (i960base
,ldib_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3254 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3255 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3256 int UNUSED written
= 0;
3257 IADDR UNUSED pc
= abuf
->addr
;
3258 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3261 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
3262 * FLD (i_dst
) = opval
;
3263 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3270 /* ldib-indirect: ldib ($abase), $dst */
3273 SEM_FN_NAME (i960base
,ldib_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3275 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3276 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3277 int UNUSED written
= 0;
3278 IADDR UNUSED pc
= abuf
->addr
;
3279 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3282 SI opval
= GETMEMQI (current_cpu
, pc
, * FLD (i_abase
));
3283 * FLD (i_dst
) = opval
;
3284 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3291 /* ldib-indirect-index: ldib ($abase)[$index*S$scale], $dst */
3294 SEM_FN_NAME (i960base
,ldib_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3296 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3297 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3298 int UNUSED written
= 0;
3299 IADDR UNUSED pc
= abuf
->addr
;
3300 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3303 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3304 * FLD (i_dst
) = opval
;
3305 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3312 /* ldib-disp: ldib $optdisp, $dst */
3315 SEM_FN_NAME (i960base
,ldib_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3317 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3318 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3319 int UNUSED written
= 0;
3320 IADDR UNUSED pc
= abuf
->addr
;
3321 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3324 SI opval
= GETMEMQI (current_cpu
, pc
, FLD (f_optdisp
));
3325 * FLD (i_dst
) = opval
;
3326 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3333 /* ldib-indirect-disp: ldib $optdisp($abase), $dst */
3336 SEM_FN_NAME (i960base
,ldib_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3338 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3339 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3340 int UNUSED written
= 0;
3341 IADDR UNUSED pc
= abuf
->addr
;
3342 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3345 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
3346 * FLD (i_dst
) = opval
;
3347 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3354 /* ldib-index-disp: ldib $optdisp[$index*S$scale], $dst */
3357 SEM_FN_NAME (i960base
,ldib_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3359 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3360 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3361 int UNUSED written
= 0;
3362 IADDR UNUSED pc
= abuf
->addr
;
3363 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3366 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3367 * FLD (i_dst
) = opval
;
3368 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3375 /* ldib-indirect-index-disp: ldib $optdisp($abase)[$index*S$scale], $dst */
3378 SEM_FN_NAME (i960base
,ldib_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3380 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3381 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3382 int UNUSED written
= 0;
3383 IADDR UNUSED pc
= abuf
->addr
;
3384 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3387 SI opval
= GETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
3388 * FLD (i_dst
) = opval
;
3389 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3396 /* ldis-offset: ldis $offset, $dst */
3399 SEM_FN_NAME (i960base
,ldis_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3401 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3402 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3403 int UNUSED written
= 0;
3404 IADDR UNUSED pc
= abuf
->addr
;
3405 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3408 SI opval
= GETMEMHI (current_cpu
, pc
, FLD (f_offset
));
3409 * FLD (i_dst
) = opval
;
3410 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3417 /* ldis-indirect-offset: ldis $offset($abase), $dst */
3420 SEM_FN_NAME (i960base
,ldis_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3422 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3423 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3424 int UNUSED written
= 0;
3425 IADDR UNUSED pc
= abuf
->addr
;
3426 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3429 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)));
3430 * FLD (i_dst
) = opval
;
3431 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3438 /* ldis-indirect: ldis ($abase), $dst */
3441 SEM_FN_NAME (i960base
,ldis_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3443 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3444 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3445 int UNUSED written
= 0;
3446 IADDR UNUSED pc
= abuf
->addr
;
3447 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3450 SI opval
= GETMEMHI (current_cpu
, pc
, * FLD (i_abase
));
3451 * FLD (i_dst
) = opval
;
3452 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3459 /* ldis-indirect-index: ldis ($abase)[$index*S$scale], $dst */
3462 SEM_FN_NAME (i960base
,ldis_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3464 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3465 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3466 int UNUSED written
= 0;
3467 IADDR UNUSED pc
= abuf
->addr
;
3468 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3471 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3472 * FLD (i_dst
) = opval
;
3473 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3480 /* ldis-disp: ldis $optdisp, $dst */
3483 SEM_FN_NAME (i960base
,ldis_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3485 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3486 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3487 int UNUSED written
= 0;
3488 IADDR UNUSED pc
= abuf
->addr
;
3489 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3492 SI opval
= GETMEMHI (current_cpu
, pc
, FLD (f_optdisp
));
3493 * FLD (i_dst
) = opval
;
3494 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3501 /* ldis-indirect-disp: ldis $optdisp($abase), $dst */
3504 SEM_FN_NAME (i960base
,ldis_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3506 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3507 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3508 int UNUSED written
= 0;
3509 IADDR UNUSED pc
= abuf
->addr
;
3510 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3513 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)));
3514 * FLD (i_dst
) = opval
;
3515 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3522 /* ldis-index-disp: ldis $optdisp[$index*S$scale], $dst */
3525 SEM_FN_NAME (i960base
,ldis_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3527 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3528 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3529 int UNUSED written
= 0;
3530 IADDR UNUSED pc
= abuf
->addr
;
3531 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3534 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3535 * FLD (i_dst
) = opval
;
3536 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3543 /* ldis-indirect-index-disp: ldis $optdisp($abase)[$index*S$scale], $dst */
3546 SEM_FN_NAME (i960base
,ldis_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3548 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3549 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3550 int UNUSED written
= 0;
3551 IADDR UNUSED pc
= abuf
->addr
;
3552 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3555 SI opval
= GETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))));
3556 * FLD (i_dst
) = opval
;
3557 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3564 /* ldl-offset: ldl $offset, $dst */
3567 SEM_FN_NAME (i960base
,ldl_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3569 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3570 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3571 int UNUSED written
= 0;
3572 IADDR UNUSED pc
= abuf
->addr
;
3573 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3578 tmp_dregno
= FLD (f_srcdst
);
3579 tmp_temp
= FLD (f_offset
);
3581 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3582 * FLD (i_dst
) = opval
;
3583 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3586 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3587 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3588 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3596 /* ldl-indirect-offset: ldl $offset($abase), $dst */
3599 SEM_FN_NAME (i960base
,ldl_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3601 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3602 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3603 int UNUSED written
= 0;
3604 IADDR UNUSED pc
= abuf
->addr
;
3605 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3610 tmp_dregno
= FLD (f_srcdst
);
3611 tmp_temp
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
3613 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3614 * FLD (i_dst
) = opval
;
3615 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3618 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3619 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3620 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3628 /* ldl-indirect: ldl ($abase), $dst */
3631 SEM_FN_NAME (i960base
,ldl_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3633 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3634 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3635 int UNUSED written
= 0;
3636 IADDR UNUSED pc
= abuf
->addr
;
3637 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3642 tmp_dregno
= FLD (f_srcdst
);
3643 tmp_temp
= * FLD (i_abase
);
3645 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3646 * FLD (i_dst
) = opval
;
3647 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3650 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3651 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3652 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3660 /* ldl-indirect-index: ldl ($abase)[$index*S$scale], $dst */
3663 SEM_FN_NAME (i960base
,ldl_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3665 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3666 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3667 int UNUSED written
= 0;
3668 IADDR UNUSED pc
= abuf
->addr
;
3669 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3674 tmp_dregno
= FLD (f_srcdst
);
3675 tmp_temp
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
3677 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3678 * FLD (i_dst
) = opval
;
3679 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3682 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3683 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3684 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3692 /* ldl-disp: ldl $optdisp, $dst */
3695 SEM_FN_NAME (i960base
,ldl_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3697 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3698 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3699 int UNUSED written
= 0;
3700 IADDR UNUSED pc
= abuf
->addr
;
3701 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3706 tmp_dregno
= FLD (f_srcdst
);
3707 tmp_temp
= FLD (f_optdisp
);
3709 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3710 * FLD (i_dst
) = opval
;
3711 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3714 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3715 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3716 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3724 /* ldl-indirect-disp: ldl $optdisp($abase), $dst */
3727 SEM_FN_NAME (i960base
,ldl_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3729 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3730 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3731 int UNUSED written
= 0;
3732 IADDR UNUSED pc
= abuf
->addr
;
3733 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3738 tmp_dregno
= FLD (f_srcdst
);
3739 tmp_temp
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
3741 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3742 * FLD (i_dst
) = opval
;
3743 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3746 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3747 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3748 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3756 /* ldl-index-disp: ldl $optdisp[$index*S$scale], $dst */
3759 SEM_FN_NAME (i960base
,ldl_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3761 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3762 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3763 int UNUSED written
= 0;
3764 IADDR UNUSED pc
= abuf
->addr
;
3765 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3770 tmp_dregno
= FLD (f_srcdst
);
3771 tmp_temp
= ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
3773 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3774 * FLD (i_dst
) = opval
;
3775 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3778 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3779 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3780 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3788 /* ldl-indirect-index-disp: ldl $optdisp($abase)[$index*S$scale], $dst */
3791 SEM_FN_NAME (i960base
,ldl_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3793 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3794 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3795 int UNUSED written
= 0;
3796 IADDR UNUSED pc
= abuf
->addr
;
3797 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3802 tmp_dregno
= FLD (f_srcdst
);
3803 tmp_temp
= ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
3805 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3806 * FLD (i_dst
) = opval
;
3807 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3810 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3811 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3812 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3820 /* ldt-offset: ldt $offset, $dst */
3823 SEM_FN_NAME (i960base
,ldt_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3825 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3826 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3827 int UNUSED written
= 0;
3828 IADDR UNUSED pc
= abuf
->addr
;
3829 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3834 tmp_dregno
= FLD (f_srcdst
);
3835 tmp_temp
= FLD (f_offset
);
3837 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3838 * FLD (i_dst
) = opval
;
3839 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3842 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3843 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3844 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3847 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3848 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3849 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
3857 /* ldt-indirect-offset: ldt $offset($abase), $dst */
3860 SEM_FN_NAME (i960base
,ldt_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3862 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3863 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3864 int UNUSED written
= 0;
3865 IADDR UNUSED pc
= abuf
->addr
;
3866 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3871 tmp_dregno
= FLD (f_srcdst
);
3872 tmp_temp
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
3874 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3875 * FLD (i_dst
) = opval
;
3876 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3879 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3880 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3881 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3884 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3885 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3886 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
3894 /* ldt-indirect: ldt ($abase), $dst */
3897 SEM_FN_NAME (i960base
,ldt_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3899 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
3900 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3901 int UNUSED written
= 0;
3902 IADDR UNUSED pc
= abuf
->addr
;
3903 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3908 tmp_dregno
= FLD (f_srcdst
);
3909 tmp_temp
= * FLD (i_abase
);
3911 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3912 * FLD (i_dst
) = opval
;
3913 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3916 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3917 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3918 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3921 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3922 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3923 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
3931 /* ldt-indirect-index: ldt ($abase)[$index*S$scale], $dst */
3934 SEM_FN_NAME (i960base
,ldt_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3936 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3937 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3938 int UNUSED written
= 0;
3939 IADDR UNUSED pc
= abuf
->addr
;
3940 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3945 tmp_dregno
= FLD (f_srcdst
);
3946 tmp_temp
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
3948 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3949 * FLD (i_dst
) = opval
;
3950 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3953 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3954 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3955 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3958 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3959 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3960 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
3968 /* ldt-disp: ldt $optdisp, $dst */
3971 SEM_FN_NAME (i960base
,ldt_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3973 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
3974 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3975 int UNUSED written
= 0;
3976 IADDR UNUSED pc
= abuf
->addr
;
3977 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
3982 tmp_dregno
= FLD (f_srcdst
);
3983 tmp_temp
= FLD (f_optdisp
);
3985 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
3986 * FLD (i_dst
) = opval
;
3987 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
3990 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
3991 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
3992 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
3995 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
3996 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
3997 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4005 /* ldt-indirect-disp: ldt $optdisp($abase), $dst */
4008 SEM_FN_NAME (i960base
,ldt_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4010 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4011 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4012 int UNUSED written
= 0;
4013 IADDR UNUSED pc
= abuf
->addr
;
4014 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4019 tmp_dregno
= FLD (f_srcdst
);
4020 tmp_temp
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
4022 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4023 * FLD (i_dst
) = opval
;
4024 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4027 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4028 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4029 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
4032 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4033 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4034 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4042 /* ldt-index-disp: ldt $optdisp[$index*S$scale], $dst */
4045 SEM_FN_NAME (i960base
,ldt_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4047 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4048 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4049 int UNUSED written
= 0;
4050 IADDR UNUSED pc
= abuf
->addr
;
4051 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4056 tmp_dregno
= FLD (f_srcdst
);
4057 tmp_temp
= ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
4059 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4060 * FLD (i_dst
) = opval
;
4061 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4064 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4065 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4066 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
4069 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4070 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4071 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4079 /* ldt-indirect-index-disp: ldt $optdisp($abase)[$index*S$scale], $dst */
4082 SEM_FN_NAME (i960base
,ldt_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4084 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4085 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4086 int UNUSED written
= 0;
4087 IADDR UNUSED pc
= abuf
->addr
;
4088 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4093 tmp_dregno
= FLD (f_srcdst
);
4094 tmp_temp
= ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
4096 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4097 * FLD (i_dst
) = opval
;
4098 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4101 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4102 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4103 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
4106 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4107 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4108 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4116 /* ldq-offset: ldq $offset, $dst */
4119 SEM_FN_NAME (i960base
,ldq_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4121 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
4122 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4123 int UNUSED written
= 0;
4124 IADDR UNUSED pc
= abuf
->addr
;
4125 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4130 tmp_dregno
= FLD (f_srcdst
);
4131 tmp_temp
= FLD (f_offset
);
4133 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4134 * FLD (i_dst
) = opval
;
4135 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4138 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4139 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4140 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
4143 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4144 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4145 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4148 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4149 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4150 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-3", 'x', opval
);
4158 /* ldq-indirect-offset: ldq $offset($abase), $dst */
4161 SEM_FN_NAME (i960base
,ldq_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4163 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
4164 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4165 int UNUSED written
= 0;
4166 IADDR UNUSED pc
= abuf
->addr
;
4167 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4172 tmp_dregno
= FLD (f_srcdst
);
4173 tmp_temp
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
4175 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4176 * FLD (i_dst
) = opval
;
4177 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4180 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4181 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4182 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
4185 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4186 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4187 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4190 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4191 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4192 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-3", 'x', opval
);
4200 /* ldq-indirect: ldq ($abase), $dst */
4203 SEM_FN_NAME (i960base
,ldq_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4205 #define FLD(f) abuf->fields.sfmt_ldq_indirect_offset.f
4206 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4207 int UNUSED written
= 0;
4208 IADDR UNUSED pc
= abuf
->addr
;
4209 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4214 tmp_dregno
= FLD (f_srcdst
);
4215 tmp_temp
= * FLD (i_abase
);
4217 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4218 * FLD (i_dst
) = opval
;
4219 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4222 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4223 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4224 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
4227 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4228 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4229 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4232 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4233 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4234 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-3", 'x', opval
);
4242 /* ldq-indirect-index: ldq ($abase)[$index*S$scale], $dst */
4245 SEM_FN_NAME (i960base
,ldq_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4247 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4248 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4249 int UNUSED written
= 0;
4250 IADDR UNUSED pc
= abuf
->addr
;
4251 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4256 tmp_dregno
= FLD (f_srcdst
);
4257 tmp_temp
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
4259 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4260 * FLD (i_dst
) = opval
;
4261 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4264 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4265 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4266 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
4269 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4270 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4271 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4274 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4275 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4276 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-3", 'x', opval
);
4284 /* ldq-disp: ldq $optdisp, $dst */
4287 SEM_FN_NAME (i960base
,ldq_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4289 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4290 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4291 int UNUSED written
= 0;
4292 IADDR UNUSED pc
= abuf
->addr
;
4293 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4298 tmp_dregno
= FLD (f_srcdst
);
4299 tmp_temp
= FLD (f_optdisp
);
4301 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4302 * FLD (i_dst
) = opval
;
4303 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4306 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4307 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4308 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
4311 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4312 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4313 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4316 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4317 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4318 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-3", 'x', opval
);
4326 /* ldq-indirect-disp: ldq $optdisp($abase), $dst */
4329 SEM_FN_NAME (i960base
,ldq_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4331 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4332 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4333 int UNUSED written
= 0;
4334 IADDR UNUSED pc
= abuf
->addr
;
4335 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4340 tmp_dregno
= FLD (f_srcdst
);
4341 tmp_temp
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
4343 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4344 * FLD (i_dst
) = opval
;
4345 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4348 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4349 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4350 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
4353 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4354 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4355 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4358 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4359 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4360 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-3", 'x', opval
);
4368 /* ldq-index-disp: ldq $optdisp[$index*S$scale], $dst */
4371 SEM_FN_NAME (i960base
,ldq_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4373 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4374 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4375 int UNUSED written
= 0;
4376 IADDR UNUSED pc
= abuf
->addr
;
4377 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4382 tmp_dregno
= FLD (f_srcdst
);
4383 tmp_temp
= ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
4385 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4386 * FLD (i_dst
) = opval
;
4387 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4390 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4391 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4392 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
4395 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4396 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4397 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4400 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4401 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4402 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-3", 'x', opval
);
4410 /* ldq-indirect-index-disp: ldq $optdisp($abase)[$index*S$scale], $dst */
4413 SEM_FN_NAME (i960base
,ldq_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4415 #define FLD(f) abuf->fields.sfmt_ldq_indirect_index_disp.f
4416 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4417 int UNUSED written
= 0;
4418 IADDR UNUSED pc
= abuf
->addr
;
4419 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4424 tmp_dregno
= FLD (f_srcdst
);
4425 tmp_temp
= ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))));
4427 SI opval
= GETMEMSI (current_cpu
, pc
, tmp_temp
);
4428 * FLD (i_dst
) = opval
;
4429 TRACE_RESULT (current_cpu
, abuf
, "dst", 'x', opval
);
4432 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 4));
4433 CPU (h_gr
[((FLD (f_srcdst
)) + (1))]) = opval
;
4434 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-1", 'x', opval
);
4437 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 8));
4438 CPU (h_gr
[((FLD (f_srcdst
)) + (2))]) = opval
;
4439 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-2", 'x', opval
);
4442 SI opval
= GETMEMSI (current_cpu
, pc
, ADDSI (tmp_temp
, 12));
4443 CPU (h_gr
[((FLD (f_srcdst
)) + (3))]) = opval
;
4444 TRACE_RESULT (current_cpu
, abuf
, "gr-add--DFLT-index-of--DFLT-dst-3", 'x', opval
);
4452 /* st-offset: st $st_src, $offset */
4455 SEM_FN_NAME (i960base
,st_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4457 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4458 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4459 int UNUSED written
= 0;
4460 IADDR UNUSED pc
= abuf
->addr
;
4461 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4464 SI opval
= * FLD (i_st_src
);
4465 SETMEMSI (current_cpu
, pc
, FLD (f_offset
), opval
);
4466 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4473 /* st-indirect-offset: st $st_src, $offset($abase) */
4476 SEM_FN_NAME (i960base
,st_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4478 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4479 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4480 int UNUSED written
= 0;
4481 IADDR UNUSED pc
= abuf
->addr
;
4482 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4485 SI opval
= * FLD (i_st_src
);
4486 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
4487 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4494 /* st-indirect: st $st_src, ($abase) */
4497 SEM_FN_NAME (i960base
,st_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4499 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4500 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4501 int UNUSED written
= 0;
4502 IADDR UNUSED pc
= abuf
->addr
;
4503 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4506 SI opval
= * FLD (i_st_src
);
4507 SETMEMSI (current_cpu
, pc
, * FLD (i_abase
), opval
);
4508 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4515 /* st-indirect-index: st $st_src, ($abase)[$index*S$scale] */
4518 SEM_FN_NAME (i960base
,st_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4520 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4521 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4522 int UNUSED written
= 0;
4523 IADDR UNUSED pc
= abuf
->addr
;
4524 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4527 SI opval
= * FLD (i_st_src
);
4528 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4529 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4536 /* st-disp: st $st_src, $optdisp */
4539 SEM_FN_NAME (i960base
,st_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4541 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4542 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4543 int UNUSED written
= 0;
4544 IADDR UNUSED pc
= abuf
->addr
;
4545 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4548 SI opval
= * FLD (i_st_src
);
4549 SETMEMSI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
4550 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4557 /* st-indirect-disp: st $st_src, $optdisp($abase) */
4560 SEM_FN_NAME (i960base
,st_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4562 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4563 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4564 int UNUSED written
= 0;
4565 IADDR UNUSED pc
= abuf
->addr
;
4566 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4569 SI opval
= * FLD (i_st_src
);
4570 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
4571 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4578 /* st-index-disp: st $st_src, $optdisp[$index*S$scale */
4581 SEM_FN_NAME (i960base
,st_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4583 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4584 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4585 int UNUSED written
= 0;
4586 IADDR UNUSED pc
= abuf
->addr
;
4587 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4590 SI opval
= * FLD (i_st_src
);
4591 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4592 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4599 /* st-indirect-index-disp: st $st_src, $optdisp($abase)[$index*S$scale] */
4602 SEM_FN_NAME (i960base
,st_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4604 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4605 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4606 int UNUSED written
= 0;
4607 IADDR UNUSED pc
= abuf
->addr
;
4608 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4611 SI opval
= * FLD (i_st_src
);
4612 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
4613 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4620 /* stob-offset: stob $st_src, $offset */
4623 SEM_FN_NAME (i960base
,stob_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4625 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4626 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4627 int UNUSED written
= 0;
4628 IADDR UNUSED pc
= abuf
->addr
;
4629 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4632 QI opval
= * FLD (i_st_src
);
4633 SETMEMQI (current_cpu
, pc
, FLD (f_offset
), opval
);
4634 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4641 /* stob-indirect-offset: stob $st_src, $offset($abase) */
4644 SEM_FN_NAME (i960base
,stob_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4646 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4647 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4648 int UNUSED written
= 0;
4649 IADDR UNUSED pc
= abuf
->addr
;
4650 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4653 QI opval
= * FLD (i_st_src
);
4654 SETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
4655 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4662 /* stob-indirect: stob $st_src, ($abase) */
4665 SEM_FN_NAME (i960base
,stob_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4667 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4668 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4669 int UNUSED written
= 0;
4670 IADDR UNUSED pc
= abuf
->addr
;
4671 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4674 QI opval
= * FLD (i_st_src
);
4675 SETMEMQI (current_cpu
, pc
, * FLD (i_abase
), opval
);
4676 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4683 /* stob-indirect-index: stob $st_src, ($abase)[$index*S$scale] */
4686 SEM_FN_NAME (i960base
,stob_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4688 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4689 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4690 int UNUSED written
= 0;
4691 IADDR UNUSED pc
= abuf
->addr
;
4692 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4695 QI opval
= * FLD (i_st_src
);
4696 SETMEMQI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4697 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4704 /* stob-disp: stob $st_src, $optdisp */
4707 SEM_FN_NAME (i960base
,stob_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4709 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4710 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4711 int UNUSED written
= 0;
4712 IADDR UNUSED pc
= abuf
->addr
;
4713 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4716 QI opval
= * FLD (i_st_src
);
4717 SETMEMQI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
4718 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4725 /* stob-indirect-disp: stob $st_src, $optdisp($abase) */
4728 SEM_FN_NAME (i960base
,stob_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4730 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4731 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4732 int UNUSED written
= 0;
4733 IADDR UNUSED pc
= abuf
->addr
;
4734 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4737 QI opval
= * FLD (i_st_src
);
4738 SETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
4739 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4746 /* stob-index-disp: stob $st_src, $optdisp[$index*S$scale */
4749 SEM_FN_NAME (i960base
,stob_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4751 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4752 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4753 int UNUSED written
= 0;
4754 IADDR UNUSED pc
= abuf
->addr
;
4755 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4758 QI opval
= * FLD (i_st_src
);
4759 SETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4760 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4767 /* stob-indirect-index-disp: stob $st_src, $optdisp($abase)[$index*S$scale] */
4770 SEM_FN_NAME (i960base
,stob_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4772 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4773 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4774 int UNUSED written
= 0;
4775 IADDR UNUSED pc
= abuf
->addr
;
4776 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4779 QI opval
= * FLD (i_st_src
);
4780 SETMEMQI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
4781 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4788 /* stos-offset: stos $st_src, $offset */
4791 SEM_FN_NAME (i960base
,stos_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4793 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4794 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4795 int UNUSED written
= 0;
4796 IADDR UNUSED pc
= abuf
->addr
;
4797 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4800 HI opval
= * FLD (i_st_src
);
4801 SETMEMHI (current_cpu
, pc
, FLD (f_offset
), opval
);
4802 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4809 /* stos-indirect-offset: stos $st_src, $offset($abase) */
4812 SEM_FN_NAME (i960base
,stos_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4814 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4815 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4816 int UNUSED written
= 0;
4817 IADDR UNUSED pc
= abuf
->addr
;
4818 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4821 HI opval
= * FLD (i_st_src
);
4822 SETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
4823 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4830 /* stos-indirect: stos $st_src, ($abase) */
4833 SEM_FN_NAME (i960base
,stos_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4835 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4836 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4837 int UNUSED written
= 0;
4838 IADDR UNUSED pc
= abuf
->addr
;
4839 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4842 HI opval
= * FLD (i_st_src
);
4843 SETMEMHI (current_cpu
, pc
, * FLD (i_abase
), opval
);
4844 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4851 /* stos-indirect-index: stos $st_src, ($abase)[$index*S$scale] */
4854 SEM_FN_NAME (i960base
,stos_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4856 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4857 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4858 int UNUSED written
= 0;
4859 IADDR UNUSED pc
= abuf
->addr
;
4860 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4863 HI opval
= * FLD (i_st_src
);
4864 SETMEMHI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4865 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4872 /* stos-disp: stos $st_src, $optdisp */
4875 SEM_FN_NAME (i960base
,stos_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4877 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4878 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4879 int UNUSED written
= 0;
4880 IADDR UNUSED pc
= abuf
->addr
;
4881 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4884 HI opval
= * FLD (i_st_src
);
4885 SETMEMHI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
4886 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4893 /* stos-indirect-disp: stos $st_src, $optdisp($abase) */
4896 SEM_FN_NAME (i960base
,stos_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4898 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4899 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4900 int UNUSED written
= 0;
4901 IADDR UNUSED pc
= abuf
->addr
;
4902 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4905 HI opval
= * FLD (i_st_src
);
4906 SETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
4907 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4914 /* stos-index-disp: stos $st_src, $optdisp[$index*S$scale */
4917 SEM_FN_NAME (i960base
,stos_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4919 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4920 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4921 int UNUSED written
= 0;
4922 IADDR UNUSED pc
= abuf
->addr
;
4923 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4926 HI opval
= * FLD (i_st_src
);
4927 SETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
4928 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4935 /* stos-indirect-index-disp: stos $st_src, $optdisp($abase)[$index*S$scale] */
4938 SEM_FN_NAME (i960base
,stos_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4940 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
4941 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4942 int UNUSED written
= 0;
4943 IADDR UNUSED pc
= abuf
->addr
;
4944 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
4947 HI opval
= * FLD (i_st_src
);
4948 SETMEMHI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
4949 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4956 /* stl-offset: stl $st_src, $offset */
4959 SEM_FN_NAME (i960base
,stl_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4961 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4962 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4963 int UNUSED written
= 0;
4964 IADDR UNUSED pc
= abuf
->addr
;
4965 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4969 tmp_sregno
= FLD (f_srcdst
);
4971 SI opval
= * FLD (i_st_src
);
4972 SETMEMSI (current_cpu
, pc
, FLD (f_offset
), opval
);
4973 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4976 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
4977 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 4), opval
);
4978 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
4986 /* stl-indirect-offset: stl $st_src, $offset($abase) */
4989 SEM_FN_NAME (i960base
,stl_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
4991 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
4992 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
4993 int UNUSED written
= 0;
4994 IADDR UNUSED pc
= abuf
->addr
;
4995 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
4999 tmp_sregno
= FLD (f_srcdst
);
5001 SI opval
= * FLD (i_st_src
);
5002 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
5003 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5006 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5007 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 4), opval
);
5008 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5016 /* stl-indirect: stl $st_src, ($abase) */
5019 SEM_FN_NAME (i960base
,stl_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5021 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
5022 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5023 int UNUSED written
= 0;
5024 IADDR UNUSED pc
= abuf
->addr
;
5025 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5029 tmp_sregno
= FLD (f_srcdst
);
5031 SI opval
= * FLD (i_st_src
);
5032 SETMEMSI (current_cpu
, pc
, * FLD (i_abase
), opval
);
5033 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5036 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5037 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 4), opval
);
5038 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5046 /* stl-indirect-index: stl $st_src, ($abase)[$index*S$scale] */
5049 SEM_FN_NAME (i960base
,stl_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5051 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5052 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5053 int UNUSED written
= 0;
5054 IADDR UNUSED pc
= abuf
->addr
;
5055 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5059 tmp_sregno
= FLD (f_srcdst
);
5061 SI opval
= * FLD (i_st_src
);
5062 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5063 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5066 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5067 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5068 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5076 /* stl-disp: stl $st_src, $optdisp */
5079 SEM_FN_NAME (i960base
,stl_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5081 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5082 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5083 int UNUSED written
= 0;
5084 IADDR UNUSED pc
= abuf
->addr
;
5085 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5089 tmp_sregno
= FLD (f_srcdst
);
5091 SI opval
= * FLD (i_st_src
);
5092 SETMEMSI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
5093 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5096 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5097 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 4), opval
);
5098 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5106 /* stl-indirect-disp: stl $st_src, $optdisp($abase) */
5109 SEM_FN_NAME (i960base
,stl_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5111 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5112 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5113 int UNUSED written
= 0;
5114 IADDR UNUSED pc
= abuf
->addr
;
5115 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5119 tmp_sregno
= FLD (f_srcdst
);
5121 SI opval
= * FLD (i_st_src
);
5122 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
5123 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5126 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5127 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 4), opval
);
5128 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5136 /* stl-index-disp: stl $st_src, $optdisp[$index*S$scale */
5139 SEM_FN_NAME (i960base
,stl_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5141 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5142 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5143 int UNUSED written
= 0;
5144 IADDR UNUSED pc
= abuf
->addr
;
5145 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5149 tmp_sregno
= FLD (f_srcdst
);
5151 SI opval
= * FLD (i_st_src
);
5152 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5153 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5156 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5157 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5158 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5166 /* stl-indirect-index-disp: stl $st_src, $optdisp($abase)[$index*S$scale] */
5169 SEM_FN_NAME (i960base
,stl_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5171 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5172 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5173 int UNUSED written
= 0;
5174 IADDR UNUSED pc
= abuf
->addr
;
5175 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5179 tmp_sregno
= FLD (f_srcdst
);
5181 SI opval
= * FLD (i_st_src
);
5182 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
5183 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5186 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5187 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 4), opval
);
5188 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5196 /* stt-offset: stt $st_src, $offset */
5199 SEM_FN_NAME (i960base
,stt_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5201 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
5202 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5203 int UNUSED written
= 0;
5204 IADDR UNUSED pc
= abuf
->addr
;
5205 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5209 tmp_sregno
= FLD (f_srcdst
);
5211 SI opval
= * FLD (i_st_src
);
5212 SETMEMSI (current_cpu
, pc
, FLD (f_offset
), opval
);
5213 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5216 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5217 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 4), opval
);
5218 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5221 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5222 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 8), opval
);
5223 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5231 /* stt-indirect-offset: stt $st_src, $offset($abase) */
5234 SEM_FN_NAME (i960base
,stt_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5236 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
5237 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5238 int UNUSED written
= 0;
5239 IADDR UNUSED pc
= abuf
->addr
;
5240 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5244 tmp_sregno
= FLD (f_srcdst
);
5246 SI opval
= * FLD (i_st_src
);
5247 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
5248 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5251 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5252 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 4), opval
);
5253 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5256 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5257 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 8), opval
);
5258 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5266 /* stt-indirect: stt $st_src, ($abase) */
5269 SEM_FN_NAME (i960base
,stt_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5271 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
5272 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5273 int UNUSED written
= 0;
5274 IADDR UNUSED pc
= abuf
->addr
;
5275 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5279 tmp_sregno
= FLD (f_srcdst
);
5281 SI opval
= * FLD (i_st_src
);
5282 SETMEMSI (current_cpu
, pc
, * FLD (i_abase
), opval
);
5283 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5286 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5287 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 4), opval
);
5288 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5291 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5292 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 8), opval
);
5293 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5301 /* stt-indirect-index: stt $st_src, ($abase)[$index*S$scale] */
5304 SEM_FN_NAME (i960base
,stt_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5306 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5307 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5308 int UNUSED written
= 0;
5309 IADDR UNUSED pc
= abuf
->addr
;
5310 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5314 tmp_sregno
= FLD (f_srcdst
);
5316 SI opval
= * FLD (i_st_src
);
5317 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5318 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5321 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5322 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5323 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5326 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5327 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 8), opval
);
5328 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5336 /* stt-disp: stt $st_src, $optdisp */
5339 SEM_FN_NAME (i960base
,stt_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5341 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5342 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5343 int UNUSED written
= 0;
5344 IADDR UNUSED pc
= abuf
->addr
;
5345 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5349 tmp_sregno
= FLD (f_srcdst
);
5351 SI opval
= * FLD (i_st_src
);
5352 SETMEMSI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
5353 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5356 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5357 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 4), opval
);
5358 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5361 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5362 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 8), opval
);
5363 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5371 /* stt-indirect-disp: stt $st_src, $optdisp($abase) */
5374 SEM_FN_NAME (i960base
,stt_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5376 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5377 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5378 int UNUSED written
= 0;
5379 IADDR UNUSED pc
= abuf
->addr
;
5380 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5384 tmp_sregno
= FLD (f_srcdst
);
5386 SI opval
= * FLD (i_st_src
);
5387 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
5388 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5391 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5392 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 4), opval
);
5393 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5396 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5397 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 8), opval
);
5398 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5406 /* stt-index-disp: stt $st_src, $optdisp[$index*S$scale */
5409 SEM_FN_NAME (i960base
,stt_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5411 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5412 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5413 int UNUSED written
= 0;
5414 IADDR UNUSED pc
= abuf
->addr
;
5415 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5419 tmp_sregno
= FLD (f_srcdst
);
5421 SI opval
= * FLD (i_st_src
);
5422 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5423 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5426 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5427 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5428 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5431 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5432 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 8), opval
);
5433 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5441 /* stt-indirect-index-disp: stt $st_src, $optdisp($abase)[$index*S$scale] */
5444 SEM_FN_NAME (i960base
,stt_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5446 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5447 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5448 int UNUSED written
= 0;
5449 IADDR UNUSED pc
= abuf
->addr
;
5450 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5454 tmp_sregno
= FLD (f_srcdst
);
5456 SI opval
= * FLD (i_st_src
);
5457 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
5458 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5461 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5462 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 4), opval
);
5463 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5466 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5467 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 8), opval
);
5468 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5476 /* stq-offset: stq $st_src, $offset */
5479 SEM_FN_NAME (i960base
,stq_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5481 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
5482 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5483 int UNUSED written
= 0;
5484 IADDR UNUSED pc
= abuf
->addr
;
5485 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5489 tmp_sregno
= FLD (f_srcdst
);
5491 SI opval
= * FLD (i_st_src
);
5492 SETMEMSI (current_cpu
, pc
, FLD (f_offset
), opval
);
5493 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5496 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5497 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 4), opval
);
5498 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5501 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5502 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 8), opval
);
5503 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5506 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5507 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), 12), opval
);
5508 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5516 /* stq-indirect-offset: stq $st_src, $offset($abase) */
5519 SEM_FN_NAME (i960base
,stq_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5521 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
5522 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5523 int UNUSED written
= 0;
5524 IADDR UNUSED pc
= abuf
->addr
;
5525 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5529 tmp_sregno
= FLD (f_srcdst
);
5531 SI opval
= * FLD (i_st_src
);
5532 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_offset
), * FLD (i_abase
)), opval
);
5533 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5536 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5537 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 4), opval
);
5538 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5541 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5542 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 8), opval
);
5543 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5546 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5547 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_offset
), * FLD (i_abase
)), 12), opval
);
5548 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5556 /* stq-indirect: stq $st_src, ($abase) */
5559 SEM_FN_NAME (i960base
,stq_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5561 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
5562 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5563 int UNUSED written
= 0;
5564 IADDR UNUSED pc
= abuf
->addr
;
5565 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5569 tmp_sregno
= FLD (f_srcdst
);
5571 SI opval
= * FLD (i_st_src
);
5572 SETMEMSI (current_cpu
, pc
, * FLD (i_abase
), opval
);
5573 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5576 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5577 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 4), opval
);
5578 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5581 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5582 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 8), opval
);
5583 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5586 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5587 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), 12), opval
);
5588 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5596 /* stq-indirect-index: stq $st_src, ($abase)[$index*S$scale] */
5599 SEM_FN_NAME (i960base
,stq_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5601 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5602 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5603 int UNUSED written
= 0;
5604 IADDR UNUSED pc
= abuf
->addr
;
5605 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5609 tmp_sregno
= FLD (f_srcdst
);
5611 SI opval
= * FLD (i_st_src
);
5612 SETMEMSI (current_cpu
, pc
, ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5613 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5616 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5617 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5618 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5621 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5622 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 8), opval
);
5623 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5626 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5627 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 12), opval
);
5628 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5636 /* stq-disp: stq $st_src, $optdisp */
5639 SEM_FN_NAME (i960base
,stq_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5641 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5642 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5643 int UNUSED written
= 0;
5644 IADDR UNUSED pc
= abuf
->addr
;
5645 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5649 tmp_sregno
= FLD (f_srcdst
);
5651 SI opval
= * FLD (i_st_src
);
5652 SETMEMSI (current_cpu
, pc
, FLD (f_optdisp
), opval
);
5653 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5656 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5657 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 4), opval
);
5658 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5661 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5662 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 8), opval
);
5663 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5666 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5667 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), 12), opval
);
5668 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5676 /* stq-indirect-disp: stq $st_src, $optdisp($abase) */
5679 SEM_FN_NAME (i960base
,stq_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5681 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5682 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5683 int UNUSED written
= 0;
5684 IADDR UNUSED pc
= abuf
->addr
;
5685 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5689 tmp_sregno
= FLD (f_srcdst
);
5691 SI opval
= * FLD (i_st_src
);
5692 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), opval
);
5693 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5696 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5697 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 4), opval
);
5698 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5701 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5702 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 8), opval
);
5703 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5706 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5707 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), * FLD (i_abase
)), 12), opval
);
5708 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5716 /* stq-index-disp: stq $st_src, $optdisp[$index*S$scale */
5719 SEM_FN_NAME (i960base
,stq_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5721 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5722 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5723 int UNUSED written
= 0;
5724 IADDR UNUSED pc
= abuf
->addr
;
5725 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5729 tmp_sregno
= FLD (f_srcdst
);
5731 SI opval
= * FLD (i_st_src
);
5732 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), opval
);
5733 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5736 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5737 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 4), opval
);
5738 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5741 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5742 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 8), opval
);
5743 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5746 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5747 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
)))), 12), opval
);
5748 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5756 /* stq-indirect-index-disp: stq $st_src, $optdisp($abase)[$index*S$scale] */
5759 SEM_FN_NAME (i960base
,stq_indirect_index_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5761 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
5762 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5763 int UNUSED written
= 0;
5764 IADDR UNUSED pc
= abuf
->addr
;
5765 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
5769 tmp_sregno
= FLD (f_srcdst
);
5771 SI opval
= * FLD (i_st_src
);
5772 SETMEMSI (current_cpu
, pc
, ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), opval
);
5773 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5776 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (1))]);
5777 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 4), opval
);
5778 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5781 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (2))]);
5782 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 8), opval
);
5783 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5786 SI opval
= CPU (h_gr
[((FLD (f_srcdst
)) + (3))]);
5787 SETMEMSI (current_cpu
, pc
, ADDSI (ADDSI (FLD (f_optdisp
), ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))))), 12), opval
);
5788 TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
5796 /* cmpobe-reg: cmpobe $br_src1, $br_src2, $br_disp */
5799 SEM_FN_NAME (i960base
,cmpobe_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5801 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
5802 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5803 int UNUSED written
= 0;
5804 IADDR UNUSED pc
= abuf
->addr
;
5806 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5808 if (EQSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5810 USI opval
= FLD (i_br_disp
);
5811 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5812 written
|= (1 << 3);
5813 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5817 abuf
->written
= written
;
5818 SEM_BRANCH_FINI (vpc
);
5823 /* cmpobe-lit: cmpobe $br_lit1, $br_src2, $br_disp */
5826 SEM_FN_NAME (i960base
,cmpobe_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5828 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
5829 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5830 int UNUSED written
= 0;
5831 IADDR UNUSED pc
= abuf
->addr
;
5833 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5835 if (EQSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5837 USI opval
= FLD (i_br_disp
);
5838 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5839 written
|= (1 << 3);
5840 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5844 abuf
->written
= written
;
5845 SEM_BRANCH_FINI (vpc
);
5850 /* cmpobne-reg: cmpobne $br_src1, $br_src2, $br_disp */
5853 SEM_FN_NAME (i960base
,cmpobne_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5855 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
5856 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5857 int UNUSED written
= 0;
5858 IADDR UNUSED pc
= abuf
->addr
;
5860 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5862 if (NESI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5864 USI opval
= FLD (i_br_disp
);
5865 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5866 written
|= (1 << 3);
5867 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5871 abuf
->written
= written
;
5872 SEM_BRANCH_FINI (vpc
);
5877 /* cmpobne-lit: cmpobne $br_lit1, $br_src2, $br_disp */
5880 SEM_FN_NAME (i960base
,cmpobne_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5882 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
5883 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5884 int UNUSED written
= 0;
5885 IADDR UNUSED pc
= abuf
->addr
;
5887 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5889 if (NESI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5891 USI opval
= FLD (i_br_disp
);
5892 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5893 written
|= (1 << 3);
5894 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5898 abuf
->written
= written
;
5899 SEM_BRANCH_FINI (vpc
);
5904 /* cmpobl-reg: cmpobl $br_src1, $br_src2, $br_disp */
5907 SEM_FN_NAME (i960base
,cmpobl_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5909 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
5910 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5911 int UNUSED written
= 0;
5912 IADDR UNUSED pc
= abuf
->addr
;
5914 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5916 if (LTUSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5918 USI opval
= FLD (i_br_disp
);
5919 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5920 written
|= (1 << 3);
5921 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5925 abuf
->written
= written
;
5926 SEM_BRANCH_FINI (vpc
);
5931 /* cmpobl-lit: cmpobl $br_lit1, $br_src2, $br_disp */
5934 SEM_FN_NAME (i960base
,cmpobl_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5936 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
5937 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5938 int UNUSED written
= 0;
5939 IADDR UNUSED pc
= abuf
->addr
;
5941 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5943 if (LTUSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5945 USI opval
= FLD (i_br_disp
);
5946 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5947 written
|= (1 << 3);
5948 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5952 abuf
->written
= written
;
5953 SEM_BRANCH_FINI (vpc
);
5958 /* cmpoble-reg: cmpoble $br_src1, $br_src2, $br_disp */
5961 SEM_FN_NAME (i960base
,cmpoble_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5963 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
5964 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5965 int UNUSED written
= 0;
5966 IADDR UNUSED pc
= abuf
->addr
;
5968 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5970 if (LEUSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
5972 USI opval
= FLD (i_br_disp
);
5973 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
5974 written
|= (1 << 3);
5975 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
5979 abuf
->written
= written
;
5980 SEM_BRANCH_FINI (vpc
);
5985 /* cmpoble-lit: cmpoble $br_lit1, $br_src2, $br_disp */
5988 SEM_FN_NAME (i960base
,cmpoble_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
5990 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
5991 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
5992 int UNUSED written
= 0;
5993 IADDR UNUSED pc
= abuf
->addr
;
5995 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
5997 if (LEUSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
5999 USI opval
= FLD (i_br_disp
);
6000 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6001 written
|= (1 << 3);
6002 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6006 abuf
->written
= written
;
6007 SEM_BRANCH_FINI (vpc
);
6012 /* cmpobg-reg: cmpobg $br_src1, $br_src2, $br_disp */
6015 SEM_FN_NAME (i960base
,cmpobg_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6017 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6018 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6019 int UNUSED written
= 0;
6020 IADDR UNUSED pc
= abuf
->addr
;
6022 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6024 if (GTUSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6026 USI opval
= FLD (i_br_disp
);
6027 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6028 written
|= (1 << 3);
6029 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6033 abuf
->written
= written
;
6034 SEM_BRANCH_FINI (vpc
);
6039 /* cmpobg-lit: cmpobg $br_lit1, $br_src2, $br_disp */
6042 SEM_FN_NAME (i960base
,cmpobg_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6044 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6045 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6046 int UNUSED written
= 0;
6047 IADDR UNUSED pc
= abuf
->addr
;
6049 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6051 if (GTUSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6053 USI opval
= FLD (i_br_disp
);
6054 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6055 written
|= (1 << 3);
6056 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6060 abuf
->written
= written
;
6061 SEM_BRANCH_FINI (vpc
);
6066 /* cmpobge-reg: cmpobge $br_src1, $br_src2, $br_disp */
6069 SEM_FN_NAME (i960base
,cmpobge_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6071 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6072 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6073 int UNUSED written
= 0;
6074 IADDR UNUSED pc
= abuf
->addr
;
6076 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6078 if (GEUSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6080 USI opval
= FLD (i_br_disp
);
6081 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6082 written
|= (1 << 3);
6083 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6087 abuf
->written
= written
;
6088 SEM_BRANCH_FINI (vpc
);
6093 /* cmpobge-lit: cmpobge $br_lit1, $br_src2, $br_disp */
6096 SEM_FN_NAME (i960base
,cmpobge_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6098 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6099 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6100 int UNUSED written
= 0;
6101 IADDR UNUSED pc
= abuf
->addr
;
6103 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6105 if (GEUSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6107 USI opval
= FLD (i_br_disp
);
6108 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6109 written
|= (1 << 3);
6110 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6114 abuf
->written
= written
;
6115 SEM_BRANCH_FINI (vpc
);
6120 /* cmpibe-reg: cmpibe $br_src1, $br_src2, $br_disp */
6123 SEM_FN_NAME (i960base
,cmpibe_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6125 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6126 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6127 int UNUSED written
= 0;
6128 IADDR UNUSED pc
= abuf
->addr
;
6130 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6132 if (EQSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6134 USI opval
= FLD (i_br_disp
);
6135 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6136 written
|= (1 << 3);
6137 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6141 abuf
->written
= written
;
6142 SEM_BRANCH_FINI (vpc
);
6147 /* cmpibe-lit: cmpibe $br_lit1, $br_src2, $br_disp */
6150 SEM_FN_NAME (i960base
,cmpibe_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6152 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6153 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6154 int UNUSED written
= 0;
6155 IADDR UNUSED pc
= abuf
->addr
;
6157 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6159 if (EQSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6161 USI opval
= FLD (i_br_disp
);
6162 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6163 written
|= (1 << 3);
6164 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6168 abuf
->written
= written
;
6169 SEM_BRANCH_FINI (vpc
);
6174 /* cmpibne-reg: cmpibne $br_src1, $br_src2, $br_disp */
6177 SEM_FN_NAME (i960base
,cmpibne_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6179 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6180 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6181 int UNUSED written
= 0;
6182 IADDR UNUSED pc
= abuf
->addr
;
6184 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6186 if (NESI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6188 USI opval
= FLD (i_br_disp
);
6189 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6190 written
|= (1 << 3);
6191 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6195 abuf
->written
= written
;
6196 SEM_BRANCH_FINI (vpc
);
6201 /* cmpibne-lit: cmpibne $br_lit1, $br_src2, $br_disp */
6204 SEM_FN_NAME (i960base
,cmpibne_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6206 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6207 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6208 int UNUSED written
= 0;
6209 IADDR UNUSED pc
= abuf
->addr
;
6211 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6213 if (NESI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6215 USI opval
= FLD (i_br_disp
);
6216 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6217 written
|= (1 << 3);
6218 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6222 abuf
->written
= written
;
6223 SEM_BRANCH_FINI (vpc
);
6228 /* cmpibl-reg: cmpibl $br_src1, $br_src2, $br_disp */
6231 SEM_FN_NAME (i960base
,cmpibl_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6233 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6234 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6235 int UNUSED written
= 0;
6236 IADDR UNUSED pc
= abuf
->addr
;
6238 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6240 if (LTSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6242 USI opval
= FLD (i_br_disp
);
6243 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6244 written
|= (1 << 3);
6245 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6249 abuf
->written
= written
;
6250 SEM_BRANCH_FINI (vpc
);
6255 /* cmpibl-lit: cmpibl $br_lit1, $br_src2, $br_disp */
6258 SEM_FN_NAME (i960base
,cmpibl_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6260 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6261 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6262 int UNUSED written
= 0;
6263 IADDR UNUSED pc
= abuf
->addr
;
6265 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6267 if (LTSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6269 USI opval
= FLD (i_br_disp
);
6270 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6271 written
|= (1 << 3);
6272 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6276 abuf
->written
= written
;
6277 SEM_BRANCH_FINI (vpc
);
6282 /* cmpible-reg: cmpible $br_src1, $br_src2, $br_disp */
6285 SEM_FN_NAME (i960base
,cmpible_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6287 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6288 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6289 int UNUSED written
= 0;
6290 IADDR UNUSED pc
= abuf
->addr
;
6292 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6294 if (LESI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6296 USI opval
= FLD (i_br_disp
);
6297 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6298 written
|= (1 << 3);
6299 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6303 abuf
->written
= written
;
6304 SEM_BRANCH_FINI (vpc
);
6309 /* cmpible-lit: cmpible $br_lit1, $br_src2, $br_disp */
6312 SEM_FN_NAME (i960base
,cmpible_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6314 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6315 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6316 int UNUSED written
= 0;
6317 IADDR UNUSED pc
= abuf
->addr
;
6319 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6321 if (LESI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6323 USI opval
= FLD (i_br_disp
);
6324 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6325 written
|= (1 << 3);
6326 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6330 abuf
->written
= written
;
6331 SEM_BRANCH_FINI (vpc
);
6336 /* cmpibg-reg: cmpibg $br_src1, $br_src2, $br_disp */
6339 SEM_FN_NAME (i960base
,cmpibg_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6341 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6342 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6343 int UNUSED written
= 0;
6344 IADDR UNUSED pc
= abuf
->addr
;
6346 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6348 if (GTSI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6350 USI opval
= FLD (i_br_disp
);
6351 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6352 written
|= (1 << 3);
6353 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6357 abuf
->written
= written
;
6358 SEM_BRANCH_FINI (vpc
);
6363 /* cmpibg-lit: cmpibg $br_lit1, $br_src2, $br_disp */
6366 SEM_FN_NAME (i960base
,cmpibg_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6368 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6369 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6370 int UNUSED written
= 0;
6371 IADDR UNUSED pc
= abuf
->addr
;
6373 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6375 if (GTSI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6377 USI opval
= FLD (i_br_disp
);
6378 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6379 written
|= (1 << 3);
6380 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6384 abuf
->written
= written
;
6385 SEM_BRANCH_FINI (vpc
);
6390 /* cmpibge-reg: cmpibge $br_src1, $br_src2, $br_disp */
6393 SEM_FN_NAME (i960base
,cmpibge_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6395 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6396 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6397 int UNUSED written
= 0;
6398 IADDR UNUSED pc
= abuf
->addr
;
6400 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6402 if (GESI (* FLD (i_br_src1
), * FLD (i_br_src2
))) {
6404 USI opval
= FLD (i_br_disp
);
6405 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6406 written
|= (1 << 3);
6407 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6411 abuf
->written
= written
;
6412 SEM_BRANCH_FINI (vpc
);
6417 /* cmpibge-lit: cmpibge $br_lit1, $br_src2, $br_disp */
6420 SEM_FN_NAME (i960base
,cmpibge_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6422 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6423 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6424 int UNUSED written
= 0;
6425 IADDR UNUSED pc
= abuf
->addr
;
6427 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6429 if (GESI (FLD (f_br_src1
), * FLD (i_br_src2
))) {
6431 USI opval
= FLD (i_br_disp
);
6432 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6433 written
|= (1 << 3);
6434 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6438 abuf
->written
= written
;
6439 SEM_BRANCH_FINI (vpc
);
6444 /* bbc-reg: bbc $br_src1, $br_src2, $br_disp */
6447 SEM_FN_NAME (i960base
,bbc_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6449 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6450 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6451 int UNUSED written
= 0;
6452 IADDR UNUSED pc
= abuf
->addr
;
6454 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6456 if (EQSI (ANDSI (SLLSI (1, * FLD (i_br_src1
)), * FLD (i_br_src2
)), 0)) {
6458 USI opval
= FLD (i_br_disp
);
6459 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6460 written
|= (1 << 3);
6461 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6465 abuf
->written
= written
;
6466 SEM_BRANCH_FINI (vpc
);
6471 /* bbc-lit: bbc $br_lit1, $br_src2, $br_disp */
6474 SEM_FN_NAME (i960base
,bbc_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6476 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6477 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6478 int UNUSED written
= 0;
6479 IADDR UNUSED pc
= abuf
->addr
;
6481 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6483 if (EQSI (ANDSI (SLLSI (1, FLD (f_br_src1
)), * FLD (i_br_src2
)), 0)) {
6485 USI opval
= FLD (i_br_disp
);
6486 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6487 written
|= (1 << 3);
6488 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6492 abuf
->written
= written
;
6493 SEM_BRANCH_FINI (vpc
);
6498 /* bbs-reg: bbs $br_src1, $br_src2, $br_disp */
6501 SEM_FN_NAME (i960base
,bbs_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6503 #define FLD(f) abuf->fields.sfmt_cmpobe_reg.f
6504 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6505 int UNUSED written
= 0;
6506 IADDR UNUSED pc
= abuf
->addr
;
6508 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6510 if (NESI (ANDSI (SLLSI (1, * FLD (i_br_src1
)), * FLD (i_br_src2
)), 0)) {
6512 USI opval
= FLD (i_br_disp
);
6513 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6514 written
|= (1 << 3);
6515 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6519 abuf
->written
= written
;
6520 SEM_BRANCH_FINI (vpc
);
6525 /* bbs-lit: bbs $br_lit1, $br_src2, $br_disp */
6528 SEM_FN_NAME (i960base
,bbs_lit
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6530 #define FLD(f) abuf->fields.sfmt_cmpobe_lit.f
6531 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6532 int UNUSED written
= 0;
6533 IADDR UNUSED pc
= abuf
->addr
;
6535 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6537 if (NESI (ANDSI (SLLSI (1, FLD (f_br_src1
)), * FLD (i_br_src2
)), 0)) {
6539 USI opval
= FLD (i_br_disp
);
6540 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6541 written
|= (1 << 3);
6542 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6546 abuf
->written
= written
;
6547 SEM_BRANCH_FINI (vpc
);
6552 /* cmpi: cmpi $src1, $src2 */
6555 SEM_FN_NAME (i960base
,cmpi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6557 #define FLD(f) abuf->fields.sfmt_emul.f
6558 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6559 int UNUSED written
= 0;
6560 IADDR UNUSED pc
= abuf
->addr
;
6561 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6564 SI opval
= (LTSI (* FLD (i_src1
), * FLD (i_src2
))) ? (4) : (EQSI (* FLD (i_src1
), * FLD (i_src2
))) ? (2) : (1);
6566 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6573 /* cmpi1: cmpi $lit1, $src2 */
6576 SEM_FN_NAME (i960base
,cmpi1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6578 #define FLD(f) abuf->fields.sfmt_emul1.f
6579 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6580 int UNUSED written
= 0;
6581 IADDR UNUSED pc
= abuf
->addr
;
6582 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6585 SI opval
= (LTSI (FLD (f_src1
), * FLD (i_src2
))) ? (4) : (EQSI (FLD (f_src1
), * FLD (i_src2
))) ? (2) : (1);
6587 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6594 /* cmpi2: cmpi $src1, $lit2 */
6597 SEM_FN_NAME (i960base
,cmpi2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6599 #define FLD(f) abuf->fields.sfmt_emul2.f
6600 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6601 int UNUSED written
= 0;
6602 IADDR UNUSED pc
= abuf
->addr
;
6603 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6606 SI opval
= (LTSI (* FLD (i_src1
), FLD (f_src2
))) ? (4) : (EQSI (* FLD (i_src1
), FLD (f_src2
))) ? (2) : (1);
6608 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6615 /* cmpi3: cmpi $lit1, $lit2 */
6618 SEM_FN_NAME (i960base
,cmpi3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6620 #define FLD(f) abuf->fields.sfmt_emul3.f
6621 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6622 int UNUSED written
= 0;
6623 IADDR UNUSED pc
= abuf
->addr
;
6624 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6627 SI opval
= (LTSI (FLD (f_src1
), FLD (f_src2
))) ? (4) : (EQSI (FLD (f_src1
), FLD (f_src2
))) ? (2) : (1);
6629 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6636 /* cmpo: cmpo $src1, $src2 */
6639 SEM_FN_NAME (i960base
,cmpo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6641 #define FLD(f) abuf->fields.sfmt_emul.f
6642 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6643 int UNUSED written
= 0;
6644 IADDR UNUSED pc
= abuf
->addr
;
6645 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6648 SI opval
= (LTUSI (* FLD (i_src1
), * FLD (i_src2
))) ? (4) : (EQSI (* FLD (i_src1
), * FLD (i_src2
))) ? (2) : (1);
6650 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6657 /* cmpo1: cmpo $lit1, $src2 */
6660 SEM_FN_NAME (i960base
,cmpo1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6662 #define FLD(f) abuf->fields.sfmt_emul1.f
6663 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6664 int UNUSED written
= 0;
6665 IADDR UNUSED pc
= abuf
->addr
;
6666 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6669 SI opval
= (LTUSI (FLD (f_src1
), * FLD (i_src2
))) ? (4) : (EQSI (FLD (f_src1
), * FLD (i_src2
))) ? (2) : (1);
6671 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6678 /* cmpo2: cmpo $src1, $lit2 */
6681 SEM_FN_NAME (i960base
,cmpo2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6683 #define FLD(f) abuf->fields.sfmt_emul2.f
6684 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6685 int UNUSED written
= 0;
6686 IADDR UNUSED pc
= abuf
->addr
;
6687 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6690 SI opval
= (LTUSI (* FLD (i_src1
), FLD (f_src2
))) ? (4) : (EQSI (* FLD (i_src1
), FLD (f_src2
))) ? (2) : (1);
6692 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6699 /* cmpo3: cmpo $lit1, $lit2 */
6702 SEM_FN_NAME (i960base
,cmpo3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6704 #define FLD(f) abuf->fields.sfmt_emul3.f
6705 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6706 int UNUSED written
= 0;
6707 IADDR UNUSED pc
= abuf
->addr
;
6708 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6711 SI opval
= (LTUSI (FLD (f_src1
), FLD (f_src2
))) ? (4) : (EQSI (FLD (f_src1
), FLD (f_src2
))) ? (2) : (1);
6713 TRACE_RESULT (current_cpu
, abuf
, "cc", 'x', opval
);
6720 /* testno-reg: testno $br_src1 */
6723 SEM_FN_NAME (i960base
,testno_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6725 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6726 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6727 int UNUSED written
= 0;
6728 IADDR UNUSED pc
= abuf
->addr
;
6729 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6732 SI opval
= EQSI (CPU (h_cc
), 0);
6733 * FLD (i_br_src1
) = opval
;
6734 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6741 /* testg-reg: testg $br_src1 */
6744 SEM_FN_NAME (i960base
,testg_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6746 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6747 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6748 int UNUSED written
= 0;
6749 IADDR UNUSED pc
= abuf
->addr
;
6750 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6753 SI opval
= NESI (ANDSI (CPU (h_cc
), 1), 0);
6754 * FLD (i_br_src1
) = opval
;
6755 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6762 /* teste-reg: teste $br_src1 */
6765 SEM_FN_NAME (i960base
,teste_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6767 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6768 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6769 int UNUSED written
= 0;
6770 IADDR UNUSED pc
= abuf
->addr
;
6771 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6774 SI opval
= NESI (ANDSI (CPU (h_cc
), 2), 0);
6775 * FLD (i_br_src1
) = opval
;
6776 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6783 /* testge-reg: testge $br_src1 */
6786 SEM_FN_NAME (i960base
,testge_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6788 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6789 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6790 int UNUSED written
= 0;
6791 IADDR UNUSED pc
= abuf
->addr
;
6792 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6795 SI opval
= NESI (ANDSI (CPU (h_cc
), 3), 0);
6796 * FLD (i_br_src1
) = opval
;
6797 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6804 /* testl-reg: testl $br_src1 */
6807 SEM_FN_NAME (i960base
,testl_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6809 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6810 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6811 int UNUSED written
= 0;
6812 IADDR UNUSED pc
= abuf
->addr
;
6813 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6816 SI opval
= NESI (ANDSI (CPU (h_cc
), 4), 0);
6817 * FLD (i_br_src1
) = opval
;
6818 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6825 /* testne-reg: testne $br_src1 */
6828 SEM_FN_NAME (i960base
,testne_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6830 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6831 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6832 int UNUSED written
= 0;
6833 IADDR UNUSED pc
= abuf
->addr
;
6834 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6837 SI opval
= NESI (ANDSI (CPU (h_cc
), 5), 0);
6838 * FLD (i_br_src1
) = opval
;
6839 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6846 /* testle-reg: testle $br_src1 */
6849 SEM_FN_NAME (i960base
,testle_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6851 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6852 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6853 int UNUSED written
= 0;
6854 IADDR UNUSED pc
= abuf
->addr
;
6855 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6858 SI opval
= NESI (ANDSI (CPU (h_cc
), 6), 0);
6859 * FLD (i_br_src1
) = opval
;
6860 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6867 /* testo-reg: testo $br_src1 */
6870 SEM_FN_NAME (i960base
,testo_reg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6872 #define FLD(f) abuf->fields.sfmt_testno_reg.f
6873 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6874 int UNUSED written
= 0;
6875 IADDR UNUSED pc
= abuf
->addr
;
6876 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6879 SI opval
= NESI (ANDSI (CPU (h_cc
), 7), 0);
6880 * FLD (i_br_src1
) = opval
;
6881 TRACE_RESULT (current_cpu
, abuf
, "br_src1", 'x', opval
);
6888 /* bno: bno $ctrl_disp */
6891 SEM_FN_NAME (i960base
,bno
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6893 #define FLD(f) abuf->fields.sfmt_bno.f
6894 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6895 int UNUSED written
= 0;
6896 IADDR UNUSED pc
= abuf
->addr
;
6898 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6900 if (EQSI (CPU (h_cc
), 0)) {
6902 USI opval
= FLD (i_ctrl_disp
);
6903 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6904 written
|= (1 << 2);
6905 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6909 abuf
->written
= written
;
6910 SEM_BRANCH_FINI (vpc
);
6915 /* bg: bg $ctrl_disp */
6918 SEM_FN_NAME (i960base
,bg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6920 #define FLD(f) abuf->fields.sfmt_bno.f
6921 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6922 int UNUSED written
= 0;
6923 IADDR UNUSED pc
= abuf
->addr
;
6925 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6927 if (NESI (ANDSI (CPU (h_cc
), 1), 0)) {
6929 USI opval
= FLD (i_ctrl_disp
);
6930 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6931 written
|= (1 << 2);
6932 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6936 abuf
->written
= written
;
6937 SEM_BRANCH_FINI (vpc
);
6942 /* be: be $ctrl_disp */
6945 SEM_FN_NAME (i960base
,be
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6947 #define FLD(f) abuf->fields.sfmt_bno.f
6948 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6949 int UNUSED written
= 0;
6950 IADDR UNUSED pc
= abuf
->addr
;
6952 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6954 if (NESI (ANDSI (CPU (h_cc
), 2), 0)) {
6956 USI opval
= FLD (i_ctrl_disp
);
6957 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6958 written
|= (1 << 2);
6959 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6963 abuf
->written
= written
;
6964 SEM_BRANCH_FINI (vpc
);
6969 /* bge: bge $ctrl_disp */
6972 SEM_FN_NAME (i960base
,bge
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
6974 #define FLD(f) abuf->fields.sfmt_bno.f
6975 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
6976 int UNUSED written
= 0;
6977 IADDR UNUSED pc
= abuf
->addr
;
6979 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
6981 if (NESI (ANDSI (CPU (h_cc
), 3), 0)) {
6983 USI opval
= FLD (i_ctrl_disp
);
6984 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
6985 written
|= (1 << 2);
6986 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
6990 abuf
->written
= written
;
6991 SEM_BRANCH_FINI (vpc
);
6996 /* bl: bl $ctrl_disp */
6999 SEM_FN_NAME (i960base
,bl
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7001 #define FLD(f) abuf->fields.sfmt_bno.f
7002 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7003 int UNUSED written
= 0;
7004 IADDR UNUSED pc
= abuf
->addr
;
7006 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7008 if (NESI (ANDSI (CPU (h_cc
), 4), 0)) {
7010 USI opval
= FLD (i_ctrl_disp
);
7011 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
7012 written
|= (1 << 2);
7013 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7017 abuf
->written
= written
;
7018 SEM_BRANCH_FINI (vpc
);
7023 /* bne: bne $ctrl_disp */
7026 SEM_FN_NAME (i960base
,bne
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7028 #define FLD(f) abuf->fields.sfmt_bno.f
7029 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7030 int UNUSED written
= 0;
7031 IADDR UNUSED pc
= abuf
->addr
;
7033 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7035 if (NESI (ANDSI (CPU (h_cc
), 5), 0)) {
7037 USI opval
= FLD (i_ctrl_disp
);
7038 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
7039 written
|= (1 << 2);
7040 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7044 abuf
->written
= written
;
7045 SEM_BRANCH_FINI (vpc
);
7050 /* ble: ble $ctrl_disp */
7053 SEM_FN_NAME (i960base
,ble
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7055 #define FLD(f) abuf->fields.sfmt_bno.f
7056 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7057 int UNUSED written
= 0;
7058 IADDR UNUSED pc
= abuf
->addr
;
7060 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7062 if (NESI (ANDSI (CPU (h_cc
), 6), 0)) {
7064 USI opval
= FLD (i_ctrl_disp
);
7065 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
7066 written
|= (1 << 2);
7067 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7071 abuf
->written
= written
;
7072 SEM_BRANCH_FINI (vpc
);
7077 /* bo: bo $ctrl_disp */
7080 SEM_FN_NAME (i960base
,bo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7082 #define FLD(f) abuf->fields.sfmt_bno.f
7083 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7084 int UNUSED written
= 0;
7085 IADDR UNUSED pc
= abuf
->addr
;
7087 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7089 if (NESI (ANDSI (CPU (h_cc
), 7), 0)) {
7091 USI opval
= FLD (i_ctrl_disp
);
7092 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
7093 written
|= (1 << 2);
7094 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7098 abuf
->written
= written
;
7099 SEM_BRANCH_FINI (vpc
);
7104 /* b: b $ctrl_disp */
7107 SEM_FN_NAME (i960base
,b
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7109 #define FLD(f) abuf->fields.sfmt_bno.f
7110 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7111 int UNUSED written
= 0;
7112 IADDR UNUSED pc
= abuf
->addr
;
7114 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7117 USI opval
= FLD (i_ctrl_disp
);
7118 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
7119 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7122 SEM_BRANCH_FINI (vpc
);
7127 /* bx-indirect-offset: bx $offset($abase) */
7130 SEM_FN_NAME (i960base
,bx_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7132 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
7133 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7134 int UNUSED written
= 0;
7135 IADDR UNUSED pc
= abuf
->addr
;
7137 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7140 USI opval
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
7141 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7142 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7145 SEM_BRANCH_FINI (vpc
);
7150 /* bx-indirect: bx ($abase) */
7153 SEM_FN_NAME (i960base
,bx_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7155 #define FLD(f) abuf->fields.sfmt_stq_indirect_offset.f
7156 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7157 int UNUSED written
= 0;
7158 IADDR UNUSED pc
= abuf
->addr
;
7160 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7163 USI opval
= * FLD (i_abase
);
7164 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7165 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7168 SEM_BRANCH_FINI (vpc
);
7173 /* bx-indirect-index: bx ($abase)[$index*S$scale] */
7176 SEM_FN_NAME (i960base
,bx_indirect_index
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7178 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
7179 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7180 int UNUSED written
= 0;
7181 IADDR UNUSED pc
= abuf
->addr
;
7183 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7186 USI opval
= ADDSI (* FLD (i_abase
), MULSI (* FLD (i_index
), SLLSI (1, FLD (f_scale
))));
7187 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7188 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7191 SEM_BRANCH_FINI (vpc
);
7196 /* bx-disp: bx $optdisp */
7199 SEM_FN_NAME (i960base
,bx_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7201 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
7202 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7203 int UNUSED written
= 0;
7204 IADDR UNUSED pc
= abuf
->addr
;
7206 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
7209 USI opval
= FLD (f_optdisp
);
7210 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
7211 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7214 SEM_BRANCH_FINI (vpc
);
7219 /* bx-indirect-disp: bx $optdisp($abase) */
7222 SEM_FN_NAME (i960base
,bx_indirect_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7224 #define FLD(f) abuf->fields.sfmt_stq_indirect_index_disp.f
7225 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7226 int UNUSED written
= 0;
7227 IADDR UNUSED pc
= abuf
->addr
;
7229 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
7232 USI opval
= ADDSI (FLD (f_optdisp
), * FLD (i_abase
));
7233 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7234 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7237 SEM_BRANCH_FINI (vpc
);
7242 /* callx-disp: callx $optdisp */
7245 SEM_FN_NAME (i960base
,callx_disp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7247 #define FLD(f) abuf->fields.sfmt_callx_disp.f
7248 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7249 int UNUSED written
= 0;
7250 IADDR UNUSED pc
= abuf
->addr
;
7252 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 8);
7256 tmp_temp
= ANDSI (ADDSI (CPU (h_gr
[((UINT
) 1)]), 63), INVSI (63));
7258 SI opval
= ADDSI (pc
, 8);
7259 CPU (h_gr
[((UINT
) 2)]) = opval
;
7260 TRACE_RESULT (current_cpu
, abuf
, "gr-2", 'x', opval
);
7262 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 0), CPU (h_gr
[((UINT
) 0)]));
7263 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 4), CPU (h_gr
[((UINT
) 1)]));
7264 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 8), CPU (h_gr
[((UINT
) 2)]));
7265 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 12), CPU (h_gr
[((UINT
) 3)]));
7266 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 16), CPU (h_gr
[((UINT
) 4)]));
7267 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 20), CPU (h_gr
[((UINT
) 5)]));
7268 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 24), CPU (h_gr
[((UINT
) 6)]));
7269 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 28), CPU (h_gr
[((UINT
) 7)]));
7270 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 32), CPU (h_gr
[((UINT
) 8)]));
7271 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 36), CPU (h_gr
[((UINT
) 9)]));
7272 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 40), CPU (h_gr
[((UINT
) 10)]));
7273 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 44), CPU (h_gr
[((UINT
) 11)]));
7274 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 48), CPU (h_gr
[((UINT
) 12)]));
7275 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 52), CPU (h_gr
[((UINT
) 13)]));
7276 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 56), CPU (h_gr
[((UINT
) 14)]));
7277 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 60), CPU (h_gr
[((UINT
) 15)]));
7279 USI opval
= FLD (f_optdisp
);
7280 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
7281 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7283 CPU (h_gr
[((UINT
) 0)]) = 0xdeadbeef;
7284 CPU (h_gr
[((UINT
) 1)]) = 0xdeadbeef;
7285 CPU (h_gr
[((UINT
) 2)]) = 0xdeadbeef;
7286 CPU (h_gr
[((UINT
) 3)]) = 0xdeadbeef;
7287 CPU (h_gr
[((UINT
) 4)]) = 0xdeadbeef;
7288 CPU (h_gr
[((UINT
) 5)]) = 0xdeadbeef;
7289 CPU (h_gr
[((UINT
) 6)]) = 0xdeadbeef;
7290 CPU (h_gr
[((UINT
) 7)]) = 0xdeadbeef;
7291 CPU (h_gr
[((UINT
) 8)]) = 0xdeadbeef;
7292 CPU (h_gr
[((UINT
) 9)]) = 0xdeadbeef;
7293 CPU (h_gr
[((UINT
) 10)]) = 0xdeadbeef;
7294 CPU (h_gr
[((UINT
) 11)]) = 0xdeadbeef;
7295 CPU (h_gr
[((UINT
) 12)]) = 0xdeadbeef;
7296 CPU (h_gr
[((UINT
) 13)]) = 0xdeadbeef;
7297 CPU (h_gr
[((UINT
) 14)]) = 0xdeadbeef;
7298 CPU (h_gr
[((UINT
) 15)]) = 0xdeadbeef;
7300 SI opval
= CPU (h_gr
[((UINT
) 31)]);
7301 CPU (h_gr
[((UINT
) 0)]) = opval
;
7302 TRACE_RESULT (current_cpu
, abuf
, "gr-0", 'x', opval
);
7305 SI opval
= tmp_temp
;
7306 CPU (h_gr
[((UINT
) 31)]) = opval
;
7307 TRACE_RESULT (current_cpu
, abuf
, "gr-31", 'x', opval
);
7310 SI opval
= ADDSI (tmp_temp
, 64);
7311 CPU (h_gr
[((UINT
) 1)]) = opval
;
7312 TRACE_RESULT (current_cpu
, abuf
, "gr-1", 'x', opval
);
7316 SEM_BRANCH_FINI (vpc
);
7321 /* callx-indirect: callx ($abase) */
7324 SEM_FN_NAME (i960base
,callx_indirect
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7326 #define FLD(f) abuf->fields.sfmt_callx_indirect_offset.f
7327 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7328 int UNUSED written
= 0;
7329 IADDR UNUSED pc
= abuf
->addr
;
7331 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7335 tmp_temp
= ANDSI (ADDSI (CPU (h_gr
[((UINT
) 1)]), 63), INVSI (63));
7337 SI opval
= ADDSI (pc
, 4);
7338 CPU (h_gr
[((UINT
) 2)]) = opval
;
7339 TRACE_RESULT (current_cpu
, abuf
, "gr-2", 'x', opval
);
7341 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 0), CPU (h_gr
[((UINT
) 0)]));
7342 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 4), CPU (h_gr
[((UINT
) 1)]));
7343 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 8), CPU (h_gr
[((UINT
) 2)]));
7344 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 12), CPU (h_gr
[((UINT
) 3)]));
7345 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 16), CPU (h_gr
[((UINT
) 4)]));
7346 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 20), CPU (h_gr
[((UINT
) 5)]));
7347 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 24), CPU (h_gr
[((UINT
) 6)]));
7348 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 28), CPU (h_gr
[((UINT
) 7)]));
7349 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 32), CPU (h_gr
[((UINT
) 8)]));
7350 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 36), CPU (h_gr
[((UINT
) 9)]));
7351 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 40), CPU (h_gr
[((UINT
) 10)]));
7352 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 44), CPU (h_gr
[((UINT
) 11)]));
7353 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 48), CPU (h_gr
[((UINT
) 12)]));
7354 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 52), CPU (h_gr
[((UINT
) 13)]));
7355 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 56), CPU (h_gr
[((UINT
) 14)]));
7356 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 60), CPU (h_gr
[((UINT
) 15)]));
7358 USI opval
= * FLD (i_abase
);
7359 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7360 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7362 CPU (h_gr
[((UINT
) 0)]) = 0xdeadbeef;
7363 CPU (h_gr
[((UINT
) 1)]) = 0xdeadbeef;
7364 CPU (h_gr
[((UINT
) 2)]) = 0xdeadbeef;
7365 CPU (h_gr
[((UINT
) 3)]) = 0xdeadbeef;
7366 CPU (h_gr
[((UINT
) 4)]) = 0xdeadbeef;
7367 CPU (h_gr
[((UINT
) 5)]) = 0xdeadbeef;
7368 CPU (h_gr
[((UINT
) 6)]) = 0xdeadbeef;
7369 CPU (h_gr
[((UINT
) 7)]) = 0xdeadbeef;
7370 CPU (h_gr
[((UINT
) 8)]) = 0xdeadbeef;
7371 CPU (h_gr
[((UINT
) 9)]) = 0xdeadbeef;
7372 CPU (h_gr
[((UINT
) 10)]) = 0xdeadbeef;
7373 CPU (h_gr
[((UINT
) 11)]) = 0xdeadbeef;
7374 CPU (h_gr
[((UINT
) 12)]) = 0xdeadbeef;
7375 CPU (h_gr
[((UINT
) 13)]) = 0xdeadbeef;
7376 CPU (h_gr
[((UINT
) 14)]) = 0xdeadbeef;
7377 CPU (h_gr
[((UINT
) 15)]) = 0xdeadbeef;
7379 SI opval
= CPU (h_gr
[((UINT
) 31)]);
7380 CPU (h_gr
[((UINT
) 0)]) = opval
;
7381 TRACE_RESULT (current_cpu
, abuf
, "gr-0", 'x', opval
);
7384 SI opval
= tmp_temp
;
7385 CPU (h_gr
[((UINT
) 31)]) = opval
;
7386 TRACE_RESULT (current_cpu
, abuf
, "gr-31", 'x', opval
);
7389 SI opval
= ADDSI (tmp_temp
, 64);
7390 CPU (h_gr
[((UINT
) 1)]) = opval
;
7391 TRACE_RESULT (current_cpu
, abuf
, "gr-1", 'x', opval
);
7395 SEM_BRANCH_FINI (vpc
);
7400 /* callx-indirect-offset: callx $offset($abase) */
7403 SEM_FN_NAME (i960base
,callx_indirect_offset
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7405 #define FLD(f) abuf->fields.sfmt_callx_indirect_offset.f
7406 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7407 int UNUSED written
= 0;
7408 IADDR UNUSED pc
= abuf
->addr
;
7410 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7414 tmp_temp
= ANDSI (ADDSI (CPU (h_gr
[((UINT
) 1)]), 63), INVSI (63));
7416 SI opval
= ADDSI (pc
, 4);
7417 CPU (h_gr
[((UINT
) 2)]) = opval
;
7418 TRACE_RESULT (current_cpu
, abuf
, "gr-2", 'x', opval
);
7420 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 0), CPU (h_gr
[((UINT
) 0)]));
7421 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 4), CPU (h_gr
[((UINT
) 1)]));
7422 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 8), CPU (h_gr
[((UINT
) 2)]));
7423 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 12), CPU (h_gr
[((UINT
) 3)]));
7424 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 16), CPU (h_gr
[((UINT
) 4)]));
7425 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 20), CPU (h_gr
[((UINT
) 5)]));
7426 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 24), CPU (h_gr
[((UINT
) 6)]));
7427 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 28), CPU (h_gr
[((UINT
) 7)]));
7428 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 32), CPU (h_gr
[((UINT
) 8)]));
7429 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 36), CPU (h_gr
[((UINT
) 9)]));
7430 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 40), CPU (h_gr
[((UINT
) 10)]));
7431 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 44), CPU (h_gr
[((UINT
) 11)]));
7432 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 48), CPU (h_gr
[((UINT
) 12)]));
7433 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 52), CPU (h_gr
[((UINT
) 13)]));
7434 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 56), CPU (h_gr
[((UINT
) 14)]));
7435 SETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 60), CPU (h_gr
[((UINT
) 15)]));
7437 USI opval
= ADDSI (FLD (f_offset
), * FLD (i_abase
));
7438 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7439 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7441 CPU (h_gr
[((UINT
) 0)]) = 0xdeadbeef;
7442 CPU (h_gr
[((UINT
) 1)]) = 0xdeadbeef;
7443 CPU (h_gr
[((UINT
) 2)]) = 0xdeadbeef;
7444 CPU (h_gr
[((UINT
) 3)]) = 0xdeadbeef;
7445 CPU (h_gr
[((UINT
) 4)]) = 0xdeadbeef;
7446 CPU (h_gr
[((UINT
) 5)]) = 0xdeadbeef;
7447 CPU (h_gr
[((UINT
) 6)]) = 0xdeadbeef;
7448 CPU (h_gr
[((UINT
) 7)]) = 0xdeadbeef;
7449 CPU (h_gr
[((UINT
) 8)]) = 0xdeadbeef;
7450 CPU (h_gr
[((UINT
) 9)]) = 0xdeadbeef;
7451 CPU (h_gr
[((UINT
) 10)]) = 0xdeadbeef;
7452 CPU (h_gr
[((UINT
) 11)]) = 0xdeadbeef;
7453 CPU (h_gr
[((UINT
) 12)]) = 0xdeadbeef;
7454 CPU (h_gr
[((UINT
) 13)]) = 0xdeadbeef;
7455 CPU (h_gr
[((UINT
) 14)]) = 0xdeadbeef;
7456 CPU (h_gr
[((UINT
) 15)]) = 0xdeadbeef;
7458 SI opval
= CPU (h_gr
[((UINT
) 31)]);
7459 CPU (h_gr
[((UINT
) 0)]) = opval
;
7460 TRACE_RESULT (current_cpu
, abuf
, "gr-0", 'x', opval
);
7463 SI opval
= tmp_temp
;
7464 CPU (h_gr
[((UINT
) 31)]) = opval
;
7465 TRACE_RESULT (current_cpu
, abuf
, "gr-31", 'x', opval
);
7468 SI opval
= ADDSI (tmp_temp
, 64);
7469 CPU (h_gr
[((UINT
) 1)]) = opval
;
7470 TRACE_RESULT (current_cpu
, abuf
, "gr-1", 'x', opval
);
7474 SEM_BRANCH_FINI (vpc
);
7482 SEM_FN_NAME (i960base
,ret
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7484 #define FLD(f) abuf->fields.sfmt_callx_disp.f
7485 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7486 int UNUSED written
= 0;
7487 IADDR UNUSED pc
= abuf
->addr
;
7489 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7493 SI opval
= CPU (h_gr
[((UINT
) 0)]);
7494 CPU (h_gr
[((UINT
) 31)]) = opval
;
7495 TRACE_RESULT (current_cpu
, abuf
, "gr-31", 'x', opval
);
7497 CPU (h_gr
[((UINT
) 0)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 0));
7498 CPU (h_gr
[((UINT
) 1)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 4));
7499 CPU (h_gr
[((UINT
) 2)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 8));
7500 CPU (h_gr
[((UINT
) 3)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 12));
7501 CPU (h_gr
[((UINT
) 4)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 16));
7502 CPU (h_gr
[((UINT
) 5)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 20));
7503 CPU (h_gr
[((UINT
) 6)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 24));
7504 CPU (h_gr
[((UINT
) 7)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 28));
7505 CPU (h_gr
[((UINT
) 8)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 32));
7506 CPU (h_gr
[((UINT
) 9)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 36));
7507 CPU (h_gr
[((UINT
) 10)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 40));
7508 CPU (h_gr
[((UINT
) 11)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 44));
7509 CPU (h_gr
[((UINT
) 12)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 48));
7510 CPU (h_gr
[((UINT
) 13)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 52));
7511 CPU (h_gr
[((UINT
) 14)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 56));
7512 CPU (h_gr
[((UINT
) 15)]) = GETMEMSI (current_cpu
, pc
, ADDSI (CPU (h_gr
[((UINT
) 31)]), 60));
7514 USI opval
= CPU (h_gr
[((UINT
) 2)]);
7515 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7516 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7520 SEM_BRANCH_FINI (vpc
);
7525 /* calls: calls $src1 */
7528 SEM_FN_NAME (i960base
,calls
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7530 #define FLD(f) abuf->fields.sfmt_emul2.f
7531 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7532 int UNUSED written
= 0;
7533 IADDR UNUSED pc
= abuf
->addr
;
7535 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7538 SI opval
= i960_trap (current_cpu
, pc
, * FLD (i_src1
));
7539 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7540 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7543 SEM_BRANCH_FINI (vpc
);
7551 SEM_FN_NAME (i960base
,fmark
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7553 #define FLD(f) abuf->fields.fmt_empty.f
7554 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7555 int UNUSED written
= 0;
7556 IADDR UNUSED pc
= abuf
->addr
;
7558 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7561 SI opval
= i960_breakpoint (current_cpu
, pc
);
7562 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
7563 TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
7566 SEM_BRANCH_FINI (vpc
);
7571 /* flushreg: flushreg */
7574 SEM_FN_NAME (i960base
,flushreg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
7576 #define FLD(f) abuf->fields.fmt_empty.f
7577 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
7578 int UNUSED written
= 0;
7579 IADDR UNUSED pc
= abuf
->addr
;
7580 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
7588 /* Table of all semantic fns. */
7590 static const struct sem_fn_desc sem_fns
[] = {
7591 { I960BASE_INSN_X_INVALID
, SEM_FN_NAME (i960base
,x_invalid
) },
7592 { I960BASE_INSN_X_AFTER
, SEM_FN_NAME (i960base
,x_after
) },
7593 { I960BASE_INSN_X_BEFORE
, SEM_FN_NAME (i960base
,x_before
) },
7594 { I960BASE_INSN_X_CTI_CHAIN
, SEM_FN_NAME (i960base
,x_cti_chain
) },
7595 { I960BASE_INSN_X_CHAIN
, SEM_FN_NAME (i960base
,x_chain
) },
7596 { I960BASE_INSN_X_BEGIN
, SEM_FN_NAME (i960base
,x_begin
) },
7597 { I960BASE_INSN_MULO
, SEM_FN_NAME (i960base
,mulo
) },
7598 { I960BASE_INSN_MULO1
, SEM_FN_NAME (i960base
,mulo1
) },
7599 { I960BASE_INSN_MULO2
, SEM_FN_NAME (i960base
,mulo2
) },
7600 { I960BASE_INSN_MULO3
, SEM_FN_NAME (i960base
,mulo3
) },
7601 { I960BASE_INSN_REMO
, SEM_FN_NAME (i960base
,remo
) },
7602 { I960BASE_INSN_REMO1
, SEM_FN_NAME (i960base
,remo1
) },
7603 { I960BASE_INSN_REMO2
, SEM_FN_NAME (i960base
,remo2
) },
7604 { I960BASE_INSN_REMO3
, SEM_FN_NAME (i960base
,remo3
) },
7605 { I960BASE_INSN_DIVO
, SEM_FN_NAME (i960base
,divo
) },
7606 { I960BASE_INSN_DIVO1
, SEM_FN_NAME (i960base
,divo1
) },
7607 { I960BASE_INSN_DIVO2
, SEM_FN_NAME (i960base
,divo2
) },
7608 { I960BASE_INSN_DIVO3
, SEM_FN_NAME (i960base
,divo3
) },
7609 { I960BASE_INSN_REMI
, SEM_FN_NAME (i960base
,remi
) },
7610 { I960BASE_INSN_REMI1
, SEM_FN_NAME (i960base
,remi1
) },
7611 { I960BASE_INSN_REMI2
, SEM_FN_NAME (i960base
,remi2
) },
7612 { I960BASE_INSN_REMI3
, SEM_FN_NAME (i960base
,remi3
) },
7613 { I960BASE_INSN_DIVI
, SEM_FN_NAME (i960base
,divi
) },
7614 { I960BASE_INSN_DIVI1
, SEM_FN_NAME (i960base
,divi1
) },
7615 { I960BASE_INSN_DIVI2
, SEM_FN_NAME (i960base
,divi2
) },
7616 { I960BASE_INSN_DIVI3
, SEM_FN_NAME (i960base
,divi3
) },
7617 { I960BASE_INSN_ADDO
, SEM_FN_NAME (i960base
,addo
) },
7618 { I960BASE_INSN_ADDO1
, SEM_FN_NAME (i960base
,addo1
) },
7619 { I960BASE_INSN_ADDO2
, SEM_FN_NAME (i960base
,addo2
) },
7620 { I960BASE_INSN_ADDO3
, SEM_FN_NAME (i960base
,addo3
) },
7621 { I960BASE_INSN_SUBO
, SEM_FN_NAME (i960base
,subo
) },
7622 { I960BASE_INSN_SUBO1
, SEM_FN_NAME (i960base
,subo1
) },
7623 { I960BASE_INSN_SUBO2
, SEM_FN_NAME (i960base
,subo2
) },
7624 { I960BASE_INSN_SUBO3
, SEM_FN_NAME (i960base
,subo3
) },
7625 { I960BASE_INSN_NOTBIT
, SEM_FN_NAME (i960base
,notbit
) },
7626 { I960BASE_INSN_NOTBIT1
, SEM_FN_NAME (i960base
,notbit1
) },
7627 { I960BASE_INSN_NOTBIT2
, SEM_FN_NAME (i960base
,notbit2
) },
7628 { I960BASE_INSN_NOTBIT3
, SEM_FN_NAME (i960base
,notbit3
) },
7629 { I960BASE_INSN_AND
, SEM_FN_NAME (i960base
,and) },
7630 { I960BASE_INSN_AND1
, SEM_FN_NAME (i960base
,and1
) },
7631 { I960BASE_INSN_AND2
, SEM_FN_NAME (i960base
,and2
) },
7632 { I960BASE_INSN_AND3
, SEM_FN_NAME (i960base
,and3
) },
7633 { I960BASE_INSN_ANDNOT
, SEM_FN_NAME (i960base
,andnot
) },
7634 { I960BASE_INSN_ANDNOT1
, SEM_FN_NAME (i960base
,andnot1
) },
7635 { I960BASE_INSN_ANDNOT2
, SEM_FN_NAME (i960base
,andnot2
) },
7636 { I960BASE_INSN_ANDNOT3
, SEM_FN_NAME (i960base
,andnot3
) },
7637 { I960BASE_INSN_SETBIT
, SEM_FN_NAME (i960base
,setbit
) },
7638 { I960BASE_INSN_SETBIT1
, SEM_FN_NAME (i960base
,setbit1
) },
7639 { I960BASE_INSN_SETBIT2
, SEM_FN_NAME (i960base
,setbit2
) },
7640 { I960BASE_INSN_SETBIT3
, SEM_FN_NAME (i960base
,setbit3
) },
7641 { I960BASE_INSN_NOTAND
, SEM_FN_NAME (i960base
,notand
) },
7642 { I960BASE_INSN_NOTAND1
, SEM_FN_NAME (i960base
,notand1
) },
7643 { I960BASE_INSN_NOTAND2
, SEM_FN_NAME (i960base
,notand2
) },
7644 { I960BASE_INSN_NOTAND3
, SEM_FN_NAME (i960base
,notand3
) },
7645 { I960BASE_INSN_XOR
, SEM_FN_NAME (i960base
,xor) },
7646 { I960BASE_INSN_XOR1
, SEM_FN_NAME (i960base
,xor1
) },
7647 { I960BASE_INSN_XOR2
, SEM_FN_NAME (i960base
,xor2
) },
7648 { I960BASE_INSN_XOR3
, SEM_FN_NAME (i960base
,xor3
) },
7649 { I960BASE_INSN_OR
, SEM_FN_NAME (i960base
,or) },
7650 { I960BASE_INSN_OR1
, SEM_FN_NAME (i960base
,or1
) },
7651 { I960BASE_INSN_OR2
, SEM_FN_NAME (i960base
,or2
) },
7652 { I960BASE_INSN_OR3
, SEM_FN_NAME (i960base
,or3
) },
7653 { I960BASE_INSN_NOR
, SEM_FN_NAME (i960base
,nor
) },
7654 { I960BASE_INSN_NOR1
, SEM_FN_NAME (i960base
,nor1
) },
7655 { I960BASE_INSN_NOR2
, SEM_FN_NAME (i960base
,nor2
) },
7656 { I960BASE_INSN_NOR3
, SEM_FN_NAME (i960base
,nor3
) },
7657 { I960BASE_INSN_XNOR
, SEM_FN_NAME (i960base
,xnor
) },
7658 { I960BASE_INSN_XNOR1
, SEM_FN_NAME (i960base
,xnor1
) },
7659 { I960BASE_INSN_XNOR2
, SEM_FN_NAME (i960base
,xnor2
) },
7660 { I960BASE_INSN_XNOR3
, SEM_FN_NAME (i960base
,xnor3
) },
7661 { I960BASE_INSN_NOT
, SEM_FN_NAME (i960base
,not) },
7662 { I960BASE_INSN_NOT1
, SEM_FN_NAME (i960base
,not1
) },
7663 { I960BASE_INSN_NOT2
, SEM_FN_NAME (i960base
,not2
) },
7664 { I960BASE_INSN_NOT3
, SEM_FN_NAME (i960base
,not3
) },
7665 { I960BASE_INSN_ORNOT
, SEM_FN_NAME (i960base
,ornot
) },
7666 { I960BASE_INSN_ORNOT1
, SEM_FN_NAME (i960base
,ornot1
) },
7667 { I960BASE_INSN_ORNOT2
, SEM_FN_NAME (i960base
,ornot2
) },
7668 { I960BASE_INSN_ORNOT3
, SEM_FN_NAME (i960base
,ornot3
) },
7669 { I960BASE_INSN_CLRBIT
, SEM_FN_NAME (i960base
,clrbit
) },
7670 { I960BASE_INSN_CLRBIT1
, SEM_FN_NAME (i960base
,clrbit1
) },
7671 { I960BASE_INSN_CLRBIT2
, SEM_FN_NAME (i960base
,clrbit2
) },
7672 { I960BASE_INSN_CLRBIT3
, SEM_FN_NAME (i960base
,clrbit3
) },
7673 { I960BASE_INSN_SHLO
, SEM_FN_NAME (i960base
,shlo
) },
7674 { I960BASE_INSN_SHLO1
, SEM_FN_NAME (i960base
,shlo1
) },
7675 { I960BASE_INSN_SHLO2
, SEM_FN_NAME (i960base
,shlo2
) },
7676 { I960BASE_INSN_SHLO3
, SEM_FN_NAME (i960base
,shlo3
) },
7677 { I960BASE_INSN_SHRO
, SEM_FN_NAME (i960base
,shro
) },
7678 { I960BASE_INSN_SHRO1
, SEM_FN_NAME (i960base
,shro1
) },
7679 { I960BASE_INSN_SHRO2
, SEM_FN_NAME (i960base
,shro2
) },
7680 { I960BASE_INSN_SHRO3
, SEM_FN_NAME (i960base
,shro3
) },
7681 { I960BASE_INSN_SHLI
, SEM_FN_NAME (i960base
,shli
) },
7682 { I960BASE_INSN_SHLI1
, SEM_FN_NAME (i960base
,shli1
) },
7683 { I960BASE_INSN_SHLI2
, SEM_FN_NAME (i960base
,shli2
) },
7684 { I960BASE_INSN_SHLI3
, SEM_FN_NAME (i960base
,shli3
) },
7685 { I960BASE_INSN_SHRI
, SEM_FN_NAME (i960base
,shri
) },
7686 { I960BASE_INSN_SHRI1
, SEM_FN_NAME (i960base
,shri1
) },
7687 { I960BASE_INSN_SHRI2
, SEM_FN_NAME (i960base
,shri2
) },
7688 { I960BASE_INSN_SHRI3
, SEM_FN_NAME (i960base
,shri3
) },
7689 { I960BASE_INSN_EMUL
, SEM_FN_NAME (i960base
,emul
) },
7690 { I960BASE_INSN_EMUL1
, SEM_FN_NAME (i960base
,emul1
) },
7691 { I960BASE_INSN_EMUL2
, SEM_FN_NAME (i960base
,emul2
) },
7692 { I960BASE_INSN_EMUL3
, SEM_FN_NAME (i960base
,emul3
) },
7693 { I960BASE_INSN_MOV
, SEM_FN_NAME (i960base
,mov
) },
7694 { I960BASE_INSN_MOV1
, SEM_FN_NAME (i960base
,mov1
) },
7695 { I960BASE_INSN_MOVL
, SEM_FN_NAME (i960base
,movl
) },
7696 { I960BASE_INSN_MOVL1
, SEM_FN_NAME (i960base
,movl1
) },
7697 { I960BASE_INSN_MOVT
, SEM_FN_NAME (i960base
,movt
) },
7698 { I960BASE_INSN_MOVT1
, SEM_FN_NAME (i960base
,movt1
) },
7699 { I960BASE_INSN_MOVQ
, SEM_FN_NAME (i960base
,movq
) },
7700 { I960BASE_INSN_MOVQ1
, SEM_FN_NAME (i960base
,movq1
) },
7701 { I960BASE_INSN_MODPC
, SEM_FN_NAME (i960base
,modpc
) },
7702 { I960BASE_INSN_MODAC
, SEM_FN_NAME (i960base
,modac
) },
7703 { I960BASE_INSN_LDA_OFFSET
, SEM_FN_NAME (i960base
,lda_offset
) },
7704 { I960BASE_INSN_LDA_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,lda_indirect_offset
) },
7705 { I960BASE_INSN_LDA_INDIRECT
, SEM_FN_NAME (i960base
,lda_indirect
) },
7706 { I960BASE_INSN_LDA_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,lda_indirect_index
) },
7707 { I960BASE_INSN_LDA_DISP
, SEM_FN_NAME (i960base
,lda_disp
) },
7708 { I960BASE_INSN_LDA_INDIRECT_DISP
, SEM_FN_NAME (i960base
,lda_indirect_disp
) },
7709 { I960BASE_INSN_LDA_INDEX_DISP
, SEM_FN_NAME (i960base
,lda_index_disp
) },
7710 { I960BASE_INSN_LDA_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,lda_indirect_index_disp
) },
7711 { I960BASE_INSN_LD_OFFSET
, SEM_FN_NAME (i960base
,ld_offset
) },
7712 { I960BASE_INSN_LD_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,ld_indirect_offset
) },
7713 { I960BASE_INSN_LD_INDIRECT
, SEM_FN_NAME (i960base
,ld_indirect
) },
7714 { I960BASE_INSN_LD_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,ld_indirect_index
) },
7715 { I960BASE_INSN_LD_DISP
, SEM_FN_NAME (i960base
,ld_disp
) },
7716 { I960BASE_INSN_LD_INDIRECT_DISP
, SEM_FN_NAME (i960base
,ld_indirect_disp
) },
7717 { I960BASE_INSN_LD_INDEX_DISP
, SEM_FN_NAME (i960base
,ld_index_disp
) },
7718 { I960BASE_INSN_LD_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,ld_indirect_index_disp
) },
7719 { I960BASE_INSN_LDOB_OFFSET
, SEM_FN_NAME (i960base
,ldob_offset
) },
7720 { I960BASE_INSN_LDOB_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,ldob_indirect_offset
) },
7721 { I960BASE_INSN_LDOB_INDIRECT
, SEM_FN_NAME (i960base
,ldob_indirect
) },
7722 { I960BASE_INSN_LDOB_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,ldob_indirect_index
) },
7723 { I960BASE_INSN_LDOB_DISP
, SEM_FN_NAME (i960base
,ldob_disp
) },
7724 { I960BASE_INSN_LDOB_INDIRECT_DISP
, SEM_FN_NAME (i960base
,ldob_indirect_disp
) },
7725 { I960BASE_INSN_LDOB_INDEX_DISP
, SEM_FN_NAME (i960base
,ldob_index_disp
) },
7726 { I960BASE_INSN_LDOB_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,ldob_indirect_index_disp
) },
7727 { I960BASE_INSN_LDOS_OFFSET
, SEM_FN_NAME (i960base
,ldos_offset
) },
7728 { I960BASE_INSN_LDOS_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,ldos_indirect_offset
) },
7729 { I960BASE_INSN_LDOS_INDIRECT
, SEM_FN_NAME (i960base
,ldos_indirect
) },
7730 { I960BASE_INSN_LDOS_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,ldos_indirect_index
) },
7731 { I960BASE_INSN_LDOS_DISP
, SEM_FN_NAME (i960base
,ldos_disp
) },
7732 { I960BASE_INSN_LDOS_INDIRECT_DISP
, SEM_FN_NAME (i960base
,ldos_indirect_disp
) },
7733 { I960BASE_INSN_LDOS_INDEX_DISP
, SEM_FN_NAME (i960base
,ldos_index_disp
) },
7734 { I960BASE_INSN_LDOS_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,ldos_indirect_index_disp
) },
7735 { I960BASE_INSN_LDIB_OFFSET
, SEM_FN_NAME (i960base
,ldib_offset
) },
7736 { I960BASE_INSN_LDIB_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,ldib_indirect_offset
) },
7737 { I960BASE_INSN_LDIB_INDIRECT
, SEM_FN_NAME (i960base
,ldib_indirect
) },
7738 { I960BASE_INSN_LDIB_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,ldib_indirect_index
) },
7739 { I960BASE_INSN_LDIB_DISP
, SEM_FN_NAME (i960base
,ldib_disp
) },
7740 { I960BASE_INSN_LDIB_INDIRECT_DISP
, SEM_FN_NAME (i960base
,ldib_indirect_disp
) },
7741 { I960BASE_INSN_LDIB_INDEX_DISP
, SEM_FN_NAME (i960base
,ldib_index_disp
) },
7742 { I960BASE_INSN_LDIB_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,ldib_indirect_index_disp
) },
7743 { I960BASE_INSN_LDIS_OFFSET
, SEM_FN_NAME (i960base
,ldis_offset
) },
7744 { I960BASE_INSN_LDIS_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,ldis_indirect_offset
) },
7745 { I960BASE_INSN_LDIS_INDIRECT
, SEM_FN_NAME (i960base
,ldis_indirect
) },
7746 { I960BASE_INSN_LDIS_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,ldis_indirect_index
) },
7747 { I960BASE_INSN_LDIS_DISP
, SEM_FN_NAME (i960base
,ldis_disp
) },
7748 { I960BASE_INSN_LDIS_INDIRECT_DISP
, SEM_FN_NAME (i960base
,ldis_indirect_disp
) },
7749 { I960BASE_INSN_LDIS_INDEX_DISP
, SEM_FN_NAME (i960base
,ldis_index_disp
) },
7750 { I960BASE_INSN_LDIS_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,ldis_indirect_index_disp
) },
7751 { I960BASE_INSN_LDL_OFFSET
, SEM_FN_NAME (i960base
,ldl_offset
) },
7752 { I960BASE_INSN_LDL_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,ldl_indirect_offset
) },
7753 { I960BASE_INSN_LDL_INDIRECT
, SEM_FN_NAME (i960base
,ldl_indirect
) },
7754 { I960BASE_INSN_LDL_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,ldl_indirect_index
) },
7755 { I960BASE_INSN_LDL_DISP
, SEM_FN_NAME (i960base
,ldl_disp
) },
7756 { I960BASE_INSN_LDL_INDIRECT_DISP
, SEM_FN_NAME (i960base
,ldl_indirect_disp
) },
7757 { I960BASE_INSN_LDL_INDEX_DISP
, SEM_FN_NAME (i960base
,ldl_index_disp
) },
7758 { I960BASE_INSN_LDL_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,ldl_indirect_index_disp
) },
7759 { I960BASE_INSN_LDT_OFFSET
, SEM_FN_NAME (i960base
,ldt_offset
) },
7760 { I960BASE_INSN_LDT_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,ldt_indirect_offset
) },
7761 { I960BASE_INSN_LDT_INDIRECT
, SEM_FN_NAME (i960base
,ldt_indirect
) },
7762 { I960BASE_INSN_LDT_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,ldt_indirect_index
) },
7763 { I960BASE_INSN_LDT_DISP
, SEM_FN_NAME (i960base
,ldt_disp
) },
7764 { I960BASE_INSN_LDT_INDIRECT_DISP
, SEM_FN_NAME (i960base
,ldt_indirect_disp
) },
7765 { I960BASE_INSN_LDT_INDEX_DISP
, SEM_FN_NAME (i960base
,ldt_index_disp
) },
7766 { I960BASE_INSN_LDT_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,ldt_indirect_index_disp
) },
7767 { I960BASE_INSN_LDQ_OFFSET
, SEM_FN_NAME (i960base
,ldq_offset
) },
7768 { I960BASE_INSN_LDQ_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,ldq_indirect_offset
) },
7769 { I960BASE_INSN_LDQ_INDIRECT
, SEM_FN_NAME (i960base
,ldq_indirect
) },
7770 { I960BASE_INSN_LDQ_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,ldq_indirect_index
) },
7771 { I960BASE_INSN_LDQ_DISP
, SEM_FN_NAME (i960base
,ldq_disp
) },
7772 { I960BASE_INSN_LDQ_INDIRECT_DISP
, SEM_FN_NAME (i960base
,ldq_indirect_disp
) },
7773 { I960BASE_INSN_LDQ_INDEX_DISP
, SEM_FN_NAME (i960base
,ldq_index_disp
) },
7774 { I960BASE_INSN_LDQ_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,ldq_indirect_index_disp
) },
7775 { I960BASE_INSN_ST_OFFSET
, SEM_FN_NAME (i960base
,st_offset
) },
7776 { I960BASE_INSN_ST_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,st_indirect_offset
) },
7777 { I960BASE_INSN_ST_INDIRECT
, SEM_FN_NAME (i960base
,st_indirect
) },
7778 { I960BASE_INSN_ST_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,st_indirect_index
) },
7779 { I960BASE_INSN_ST_DISP
, SEM_FN_NAME (i960base
,st_disp
) },
7780 { I960BASE_INSN_ST_INDIRECT_DISP
, SEM_FN_NAME (i960base
,st_indirect_disp
) },
7781 { I960BASE_INSN_ST_INDEX_DISP
, SEM_FN_NAME (i960base
,st_index_disp
) },
7782 { I960BASE_INSN_ST_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,st_indirect_index_disp
) },
7783 { I960BASE_INSN_STOB_OFFSET
, SEM_FN_NAME (i960base
,stob_offset
) },
7784 { I960BASE_INSN_STOB_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,stob_indirect_offset
) },
7785 { I960BASE_INSN_STOB_INDIRECT
, SEM_FN_NAME (i960base
,stob_indirect
) },
7786 { I960BASE_INSN_STOB_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,stob_indirect_index
) },
7787 { I960BASE_INSN_STOB_DISP
, SEM_FN_NAME (i960base
,stob_disp
) },
7788 { I960BASE_INSN_STOB_INDIRECT_DISP
, SEM_FN_NAME (i960base
,stob_indirect_disp
) },
7789 { I960BASE_INSN_STOB_INDEX_DISP
, SEM_FN_NAME (i960base
,stob_index_disp
) },
7790 { I960BASE_INSN_STOB_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,stob_indirect_index_disp
) },
7791 { I960BASE_INSN_STOS_OFFSET
, SEM_FN_NAME (i960base
,stos_offset
) },
7792 { I960BASE_INSN_STOS_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,stos_indirect_offset
) },
7793 { I960BASE_INSN_STOS_INDIRECT
, SEM_FN_NAME (i960base
,stos_indirect
) },
7794 { I960BASE_INSN_STOS_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,stos_indirect_index
) },
7795 { I960BASE_INSN_STOS_DISP
, SEM_FN_NAME (i960base
,stos_disp
) },
7796 { I960BASE_INSN_STOS_INDIRECT_DISP
, SEM_FN_NAME (i960base
,stos_indirect_disp
) },
7797 { I960BASE_INSN_STOS_INDEX_DISP
, SEM_FN_NAME (i960base
,stos_index_disp
) },
7798 { I960BASE_INSN_STOS_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,stos_indirect_index_disp
) },
7799 { I960BASE_INSN_STL_OFFSET
, SEM_FN_NAME (i960base
,stl_offset
) },
7800 { I960BASE_INSN_STL_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,stl_indirect_offset
) },
7801 { I960BASE_INSN_STL_INDIRECT
, SEM_FN_NAME (i960base
,stl_indirect
) },
7802 { I960BASE_INSN_STL_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,stl_indirect_index
) },
7803 { I960BASE_INSN_STL_DISP
, SEM_FN_NAME (i960base
,stl_disp
) },
7804 { I960BASE_INSN_STL_INDIRECT_DISP
, SEM_FN_NAME (i960base
,stl_indirect_disp
) },
7805 { I960BASE_INSN_STL_INDEX_DISP
, SEM_FN_NAME (i960base
,stl_index_disp
) },
7806 { I960BASE_INSN_STL_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,stl_indirect_index_disp
) },
7807 { I960BASE_INSN_STT_OFFSET
, SEM_FN_NAME (i960base
,stt_offset
) },
7808 { I960BASE_INSN_STT_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,stt_indirect_offset
) },
7809 { I960BASE_INSN_STT_INDIRECT
, SEM_FN_NAME (i960base
,stt_indirect
) },
7810 { I960BASE_INSN_STT_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,stt_indirect_index
) },
7811 { I960BASE_INSN_STT_DISP
, SEM_FN_NAME (i960base
,stt_disp
) },
7812 { I960BASE_INSN_STT_INDIRECT_DISP
, SEM_FN_NAME (i960base
,stt_indirect_disp
) },
7813 { I960BASE_INSN_STT_INDEX_DISP
, SEM_FN_NAME (i960base
,stt_index_disp
) },
7814 { I960BASE_INSN_STT_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,stt_indirect_index_disp
) },
7815 { I960BASE_INSN_STQ_OFFSET
, SEM_FN_NAME (i960base
,stq_offset
) },
7816 { I960BASE_INSN_STQ_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,stq_indirect_offset
) },
7817 { I960BASE_INSN_STQ_INDIRECT
, SEM_FN_NAME (i960base
,stq_indirect
) },
7818 { I960BASE_INSN_STQ_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,stq_indirect_index
) },
7819 { I960BASE_INSN_STQ_DISP
, SEM_FN_NAME (i960base
,stq_disp
) },
7820 { I960BASE_INSN_STQ_INDIRECT_DISP
, SEM_FN_NAME (i960base
,stq_indirect_disp
) },
7821 { I960BASE_INSN_STQ_INDEX_DISP
, SEM_FN_NAME (i960base
,stq_index_disp
) },
7822 { I960BASE_INSN_STQ_INDIRECT_INDEX_DISP
, SEM_FN_NAME (i960base
,stq_indirect_index_disp
) },
7823 { I960BASE_INSN_CMPOBE_REG
, SEM_FN_NAME (i960base
,cmpobe_reg
) },
7824 { I960BASE_INSN_CMPOBE_LIT
, SEM_FN_NAME (i960base
,cmpobe_lit
) },
7825 { I960BASE_INSN_CMPOBNE_REG
, SEM_FN_NAME (i960base
,cmpobne_reg
) },
7826 { I960BASE_INSN_CMPOBNE_LIT
, SEM_FN_NAME (i960base
,cmpobne_lit
) },
7827 { I960BASE_INSN_CMPOBL_REG
, SEM_FN_NAME (i960base
,cmpobl_reg
) },
7828 { I960BASE_INSN_CMPOBL_LIT
, SEM_FN_NAME (i960base
,cmpobl_lit
) },
7829 { I960BASE_INSN_CMPOBLE_REG
, SEM_FN_NAME (i960base
,cmpoble_reg
) },
7830 { I960BASE_INSN_CMPOBLE_LIT
, SEM_FN_NAME (i960base
,cmpoble_lit
) },
7831 { I960BASE_INSN_CMPOBG_REG
, SEM_FN_NAME (i960base
,cmpobg_reg
) },
7832 { I960BASE_INSN_CMPOBG_LIT
, SEM_FN_NAME (i960base
,cmpobg_lit
) },
7833 { I960BASE_INSN_CMPOBGE_REG
, SEM_FN_NAME (i960base
,cmpobge_reg
) },
7834 { I960BASE_INSN_CMPOBGE_LIT
, SEM_FN_NAME (i960base
,cmpobge_lit
) },
7835 { I960BASE_INSN_CMPIBE_REG
, SEM_FN_NAME (i960base
,cmpibe_reg
) },
7836 { I960BASE_INSN_CMPIBE_LIT
, SEM_FN_NAME (i960base
,cmpibe_lit
) },
7837 { I960BASE_INSN_CMPIBNE_REG
, SEM_FN_NAME (i960base
,cmpibne_reg
) },
7838 { I960BASE_INSN_CMPIBNE_LIT
, SEM_FN_NAME (i960base
,cmpibne_lit
) },
7839 { I960BASE_INSN_CMPIBL_REG
, SEM_FN_NAME (i960base
,cmpibl_reg
) },
7840 { I960BASE_INSN_CMPIBL_LIT
, SEM_FN_NAME (i960base
,cmpibl_lit
) },
7841 { I960BASE_INSN_CMPIBLE_REG
, SEM_FN_NAME (i960base
,cmpible_reg
) },
7842 { I960BASE_INSN_CMPIBLE_LIT
, SEM_FN_NAME (i960base
,cmpible_lit
) },
7843 { I960BASE_INSN_CMPIBG_REG
, SEM_FN_NAME (i960base
,cmpibg_reg
) },
7844 { I960BASE_INSN_CMPIBG_LIT
, SEM_FN_NAME (i960base
,cmpibg_lit
) },
7845 { I960BASE_INSN_CMPIBGE_REG
, SEM_FN_NAME (i960base
,cmpibge_reg
) },
7846 { I960BASE_INSN_CMPIBGE_LIT
, SEM_FN_NAME (i960base
,cmpibge_lit
) },
7847 { I960BASE_INSN_BBC_REG
, SEM_FN_NAME (i960base
,bbc_reg
) },
7848 { I960BASE_INSN_BBC_LIT
, SEM_FN_NAME (i960base
,bbc_lit
) },
7849 { I960BASE_INSN_BBS_REG
, SEM_FN_NAME (i960base
,bbs_reg
) },
7850 { I960BASE_INSN_BBS_LIT
, SEM_FN_NAME (i960base
,bbs_lit
) },
7851 { I960BASE_INSN_CMPI
, SEM_FN_NAME (i960base
,cmpi
) },
7852 { I960BASE_INSN_CMPI1
, SEM_FN_NAME (i960base
,cmpi1
) },
7853 { I960BASE_INSN_CMPI2
, SEM_FN_NAME (i960base
,cmpi2
) },
7854 { I960BASE_INSN_CMPI3
, SEM_FN_NAME (i960base
,cmpi3
) },
7855 { I960BASE_INSN_CMPO
, SEM_FN_NAME (i960base
,cmpo
) },
7856 { I960BASE_INSN_CMPO1
, SEM_FN_NAME (i960base
,cmpo1
) },
7857 { I960BASE_INSN_CMPO2
, SEM_FN_NAME (i960base
,cmpo2
) },
7858 { I960BASE_INSN_CMPO3
, SEM_FN_NAME (i960base
,cmpo3
) },
7859 { I960BASE_INSN_TESTNO_REG
, SEM_FN_NAME (i960base
,testno_reg
) },
7860 { I960BASE_INSN_TESTG_REG
, SEM_FN_NAME (i960base
,testg_reg
) },
7861 { I960BASE_INSN_TESTE_REG
, SEM_FN_NAME (i960base
,teste_reg
) },
7862 { I960BASE_INSN_TESTGE_REG
, SEM_FN_NAME (i960base
,testge_reg
) },
7863 { I960BASE_INSN_TESTL_REG
, SEM_FN_NAME (i960base
,testl_reg
) },
7864 { I960BASE_INSN_TESTNE_REG
, SEM_FN_NAME (i960base
,testne_reg
) },
7865 { I960BASE_INSN_TESTLE_REG
, SEM_FN_NAME (i960base
,testle_reg
) },
7866 { I960BASE_INSN_TESTO_REG
, SEM_FN_NAME (i960base
,testo_reg
) },
7867 { I960BASE_INSN_BNO
, SEM_FN_NAME (i960base
,bno
) },
7868 { I960BASE_INSN_BG
, SEM_FN_NAME (i960base
,bg
) },
7869 { I960BASE_INSN_BE
, SEM_FN_NAME (i960base
,be
) },
7870 { I960BASE_INSN_BGE
, SEM_FN_NAME (i960base
,bge
) },
7871 { I960BASE_INSN_BL
, SEM_FN_NAME (i960base
,bl
) },
7872 { I960BASE_INSN_BNE
, SEM_FN_NAME (i960base
,bne
) },
7873 { I960BASE_INSN_BLE
, SEM_FN_NAME (i960base
,ble
) },
7874 { I960BASE_INSN_BO
, SEM_FN_NAME (i960base
,bo
) },
7875 { I960BASE_INSN_B
, SEM_FN_NAME (i960base
,b
) },
7876 { I960BASE_INSN_BX_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,bx_indirect_offset
) },
7877 { I960BASE_INSN_BX_INDIRECT
, SEM_FN_NAME (i960base
,bx_indirect
) },
7878 { I960BASE_INSN_BX_INDIRECT_INDEX
, SEM_FN_NAME (i960base
,bx_indirect_index
) },
7879 { I960BASE_INSN_BX_DISP
, SEM_FN_NAME (i960base
,bx_disp
) },
7880 { I960BASE_INSN_BX_INDIRECT_DISP
, SEM_FN_NAME (i960base
,bx_indirect_disp
) },
7881 { I960BASE_INSN_CALLX_DISP
, SEM_FN_NAME (i960base
,callx_disp
) },
7882 { I960BASE_INSN_CALLX_INDIRECT
, SEM_FN_NAME (i960base
,callx_indirect
) },
7883 { I960BASE_INSN_CALLX_INDIRECT_OFFSET
, SEM_FN_NAME (i960base
,callx_indirect_offset
) },
7884 { I960BASE_INSN_RET
, SEM_FN_NAME (i960base
,ret
) },
7885 { I960BASE_INSN_CALLS
, SEM_FN_NAME (i960base
,calls
) },
7886 { I960BASE_INSN_FMARK
, SEM_FN_NAME (i960base
,fmark
) },
7887 { I960BASE_INSN_FLUSHREG
, SEM_FN_NAME (i960base
,flushreg
) },
7891 /* Add the semantic fns to IDESC_TABLE. */
7894 SEM_FN_NAME (i960base
,init_idesc_table
) (SIM_CPU
*current_cpu
)
7896 IDESC
*idesc_table
= CPU_IDESC (current_cpu
);
7897 const struct sem_fn_desc
*sf
;
7898 int mach_num
= MACH_NUM (CPU_MACH (current_cpu
));
7900 for (sf
= &sem_fns
[0]; sf
->fn
!= 0; ++sf
)
7902 const CGEN_INSN
*insn
= idesc_table
[sf
->index
].idata
;
7903 int valid_p
= (CGEN_INSN_VIRTUAL_P (insn
)
7904 || CGEN_INSN_MACH_HAS_P (insn
, mach_num
));
7907 idesc_table
[sf
->index
].sem_fast
= sf
->fn
;
7909 idesc_table
[sf
->index
].sem_fast
= SEM_FN_NAME (i960base
,x_invalid
);
7912 idesc_table
[sf
->index
].sem_full
= sf
->fn
;
7914 idesc_table
[sf
->index
].sem_full
= SEM_FN_NAME (i960base
,x_invalid
);