* Makefile.am: Rename .dep* files to DEP*. Change DEP variable to
[deliverable/binutils-gdb.git] / sim / i960 / sem.c
CommitLineData
c906108c
SS
1/* Simulator instruction semantics for i960base.
2
3THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
6
7This file is part of the GNU Simulators.
8
9This program is free software; you can redistribute it and/or modify
10it under the terms of the GNU General Public License as published by
11the Free Software Foundation; either version 2, or (at your option)
12any later version.
13
14This program is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17GNU General Public License for more details.
18
19You should have received a copy of the GNU General Public License along
20with this program; if not, write to the Free Software Foundation, Inc.,
2159 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
23*/
24
25#define WANT_CPU i960base
26#define WANT_CPU_I960BASE
27
28#include "sim-main.h"
29#include "cgen-mem.h"
30#include "cgen-ops.h"
31
32#undef GET_ATTR
33#define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
34
35/* x-invalid: --invalid-- */
36
37SEM_PC
38SEM_FN_NAME (i960base,x_invalid) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
39{
40#define FLD(f) abuf->fields.fmt_empty.f
41 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
42 int UNUSED written = 0;
43 IADDR UNUSED pc = abuf->addr;
44 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
45
46 {
47#if WITH_SCACHE
48 /* Update the recorded pc in the cpu state struct. */
49 SET_H_PC (pc);
50#endif
51 sim_engine_invalid_insn (current_cpu, pc);
52 sim_io_error (CPU_STATE (current_cpu), "invalid insn not handled\n");
53 /* NOTREACHED */
54 }
55
56 return vpc;
57#undef FLD
58}
59
60/* x-after: --after-- */
61
62SEM_PC
63SEM_FN_NAME (i960base,x_after) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
64{
65#define FLD(f) abuf->fields.fmt_empty.f
66 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
67 int UNUSED written = 0;
68 IADDR UNUSED pc = abuf->addr;
69 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
70
71 {
72#if WITH_SCACHE_PBB_I960BASE
73 i960base_pbb_after (current_cpu, sem_arg);
74#endif
75 }
76
77 return vpc;
78#undef FLD
79}
80
81/* x-before: --before-- */
82
83SEM_PC
84SEM_FN_NAME (i960base,x_before) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
85{
86#define FLD(f) abuf->fields.fmt_empty.f
87 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
88 int UNUSED written = 0;
89 IADDR UNUSED pc = abuf->addr;
90 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
91
92 {
93#if WITH_SCACHE_PBB_I960BASE
94 i960base_pbb_before (current_cpu, sem_arg);
95#endif
96 }
97
98 return vpc;
99#undef FLD
100}
101
102/* x-cti-chain: --cti-chain-- */
103
104SEM_PC
105SEM_FN_NAME (i960base,x_cti_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
106{
107#define FLD(f) abuf->fields.fmt_empty.f
108 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
109 int UNUSED written = 0;
110 IADDR UNUSED pc = abuf->addr;
111 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
112
113 {
114#if WITH_SCACHE_PBB_I960BASE
115#ifdef DEFINE_SWITCH
116 vpc = i960base_pbb_cti_chain (current_cpu, sem_arg,
117 pbb_br_npc_ptr, pbb_br_npc);
118 BREAK (sem);
119#else
120 /* FIXME: Allow provision of explicit ifmt spec in insn spec. */
121 vpc = i960base_pbb_cti_chain (current_cpu, sem_arg,
122 CPU_PBB_BR_NPC_PTR (current_cpu),
123 CPU_PBB_BR_NPC (current_cpu));
124#endif
125#endif
126 }
127
128 return vpc;
129#undef FLD
130}
131
132/* x-chain: --chain-- */
133
134SEM_PC
135SEM_FN_NAME (i960base,x_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
136{
137#define FLD(f) abuf->fields.fmt_empty.f
138 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
139 int UNUSED written = 0;
140 IADDR UNUSED pc = abuf->addr;
141 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
142
143 {
144#if WITH_SCACHE_PBB_I960BASE
145 vpc = i960base_pbb_chain (current_cpu, sem_arg);
146#ifdef DEFINE_SWITCH
147 BREAK (sem);
148#endif
149#endif
150 }
151
152 return vpc;
153#undef FLD
154}
155
156/* x-begin: --begin-- */
157
158SEM_PC
159SEM_FN_NAME (i960base,x_begin) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
160{
161#define FLD(f) abuf->fields.fmt_empty.f
162 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
163 int UNUSED written = 0;
164 IADDR UNUSED pc = abuf->addr;
165 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
166
167 {
168#if WITH_SCACHE_PBB_I960BASE
169#ifdef DEFINE_SWITCH
170 /* In the switch case FAST_P is a constant, allowing several optimizations
171 in any called inline functions. */
172 vpc = i960base_pbb_begin (current_cpu, FAST_P);
173#else
174 vpc = i960base_pbb_begin (current_cpu, STATE_RUN_FAST_P (CPU_STATE (current_cpu)));
175#endif
176#endif
177 }
178
179 return vpc;
180#undef FLD
181}
182
183/* mulo: mulo $src1, $src2, $dst */
184
185SEM_PC
186SEM_FN_NAME (i960base,mulo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
187{
188#define FLD(f) abuf->fields.fmt_mulo.f
189 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
190 int UNUSED written = 0;
191 IADDR UNUSED pc = abuf->addr;
192 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
193
194 {
195 SI opval = MULSI (* FLD (i_src1), * FLD (i_src2));
196 * FLD (i_dst) = opval;
197 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
198 }
199
200 return vpc;
201#undef FLD
202}
203
204/* mulo1: mulo $lit1, $src2, $dst */
205
206SEM_PC
207SEM_FN_NAME (i960base,mulo1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
208{
209#define FLD(f) abuf->fields.fmt_mulo1.f
210 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
211 int UNUSED written = 0;
212 IADDR UNUSED pc = abuf->addr;
213 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
214
215 {
216 SI opval = MULSI (FLD (f_src1), * FLD (i_src2));
217 * FLD (i_dst) = opval;
218 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
219 }
220
221 return vpc;
222#undef FLD
223}
224
225/* mulo2: mulo $src1, $lit2, $dst */
226
227SEM_PC
228SEM_FN_NAME (i960base,mulo2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
229{
230#define FLD(f) abuf->fields.fmt_mulo2.f
231 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
232 int UNUSED written = 0;
233 IADDR UNUSED pc = abuf->addr;
234 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
235
236 {
237 SI opval = MULSI (* FLD (i_src1), FLD (f_src2));
238 * FLD (i_dst) = opval;
239 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
240 }
241
242 return vpc;
243#undef FLD
244}
245
246/* mulo3: mulo $lit1, $lit2, $dst */
247
248SEM_PC
249SEM_FN_NAME (i960base,mulo3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
250{
251#define FLD(f) abuf->fields.fmt_mulo3.f
252 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
253 int UNUSED written = 0;
254 IADDR UNUSED pc = abuf->addr;
255 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
256
257 {
258 SI opval = MULSI (FLD (f_src1), FLD (f_src2));
259 * FLD (i_dst) = opval;
260 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
261 }
262
263 return vpc;
264#undef FLD
265}
266
267/* remo: remo $src1, $src2, $dst */
268
269SEM_PC
270SEM_FN_NAME (i960base,remo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
271{
272#define FLD(f) abuf->fields.fmt_mulo.f
273 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
274 int UNUSED written = 0;
275 IADDR UNUSED pc = abuf->addr;
276 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
277
278 {
279 SI opval = UMODSI (* FLD (i_src2), * FLD (i_src1));
280 * FLD (i_dst) = opval;
281 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
282 }
283
284 return vpc;
285#undef FLD
286}
287
288/* remo1: remo $lit1, $src2, $dst */
289
290SEM_PC
291SEM_FN_NAME (i960base,remo1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
292{
293#define FLD(f) abuf->fields.fmt_mulo1.f
294 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
295 int UNUSED written = 0;
296 IADDR UNUSED pc = abuf->addr;
297 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
298
299 {
300 SI opval = UMODSI (* FLD (i_src2), FLD (f_src1));
301 * FLD (i_dst) = opval;
302 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
303 }
304
305 return vpc;
306#undef FLD
307}
308
309/* remo2: remo $src1, $lit2, $dst */
310
311SEM_PC
312SEM_FN_NAME (i960base,remo2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
313{
314#define FLD(f) abuf->fields.fmt_mulo2.f
315 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
316 int UNUSED written = 0;
317 IADDR UNUSED pc = abuf->addr;
318 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
319
320 {
321 SI opval = UMODSI (FLD (f_src2), * FLD (i_src1));
322 * FLD (i_dst) = opval;
323 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
324 }
325
326 return vpc;
327#undef FLD
328}
329
330/* remo3: remo $lit1, $lit2, $dst */
331
332SEM_PC
333SEM_FN_NAME (i960base,remo3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
334{
335#define FLD(f) abuf->fields.fmt_mulo3.f
336 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
337 int UNUSED written = 0;
338 IADDR UNUSED pc = abuf->addr;
339 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
340
341 {
342 SI opval = UMODSI (FLD (f_src2), FLD (f_src1));
343 * FLD (i_dst) = opval;
344 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
345 }
346
347 return vpc;
348#undef FLD
349}
350
351/* divo: divo $src1, $src2, $dst */
352
353SEM_PC
354SEM_FN_NAME (i960base,divo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
355{
356#define FLD(f) abuf->fields.fmt_mulo.f
357 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
358 int UNUSED written = 0;
359 IADDR UNUSED pc = abuf->addr;
360 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
361
362 {
363 SI opval = UDIVSI (* FLD (i_src2), * FLD (i_src1));
364 * FLD (i_dst) = opval;
365 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
366 }
367
368 return vpc;
369#undef FLD
370}
371
372/* divo1: divo $lit1, $src2, $dst */
373
374SEM_PC
375SEM_FN_NAME (i960base,divo1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
376{
377#define FLD(f) abuf->fields.fmt_mulo1.f
378 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
379 int UNUSED written = 0;
380 IADDR UNUSED pc = abuf->addr;
381 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
382
383 {
384 SI opval = UDIVSI (* FLD (i_src2), FLD (f_src1));
385 * FLD (i_dst) = opval;
386 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
387 }
388
389 return vpc;
390#undef FLD
391}
392
393/* divo2: divo $src1, $lit2, $dst */
394
395SEM_PC
396SEM_FN_NAME (i960base,divo2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
397{
398#define FLD(f) abuf->fields.fmt_mulo2.f
399 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
400 int UNUSED written = 0;
401 IADDR UNUSED pc = abuf->addr;
402 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
403
404 {
405 SI opval = UDIVSI (FLD (f_src2), * FLD (i_src1));
406 * FLD (i_dst) = opval;
407 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
408 }
409
410 return vpc;
411#undef FLD
412}
413
414/* divo3: divo $lit1, $lit2, $dst */
415
416SEM_PC
417SEM_FN_NAME (i960base,divo3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
418{
419#define FLD(f) abuf->fields.fmt_mulo3.f
420 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
421 int UNUSED written = 0;
422 IADDR UNUSED pc = abuf->addr;
423 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
424
425 {
426 SI opval = UDIVSI (FLD (f_src2), FLD (f_src1));
427 * FLD (i_dst) = opval;
428 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
429 }
430
431 return vpc;
432#undef FLD
433}
434
435/* remi: remi $src1, $src2, $dst */
436
437SEM_PC
438SEM_FN_NAME (i960base,remi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
439{
440#define FLD(f) abuf->fields.fmt_mulo.f
441 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
442 int UNUSED written = 0;
443 IADDR UNUSED pc = abuf->addr;
444 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
445
446 {
447 SI opval = MODSI (* FLD (i_src2), * FLD (i_src1));
448 * FLD (i_dst) = opval;
449 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
450 }
451
452 return vpc;
453#undef FLD
454}
455
456/* remi1: remi $lit1, $src2, $dst */
457
458SEM_PC
459SEM_FN_NAME (i960base,remi1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
460{
461#define FLD(f) abuf->fields.fmt_mulo1.f
462 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
463 int UNUSED written = 0;
464 IADDR UNUSED pc = abuf->addr;
465 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
466
467 {
468 SI opval = MODSI (* FLD (i_src2), FLD (f_src1));
469 * FLD (i_dst) = opval;
470 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
471 }
472
473 return vpc;
474#undef FLD
475}
476
477/* remi2: remi $src1, $lit2, $dst */
478
479SEM_PC
480SEM_FN_NAME (i960base,remi2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
481{
482#define FLD(f) abuf->fields.fmt_mulo2.f
483 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
484 int UNUSED written = 0;
485 IADDR UNUSED pc = abuf->addr;
486 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
487
488 {
489 SI opval = MODSI (FLD (f_src2), * FLD (i_src1));
490 * FLD (i_dst) = opval;
491 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
492 }
493
494 return vpc;
495#undef FLD
496}
497
498/* remi3: remi $lit1, $lit2, $dst */
499
500SEM_PC
501SEM_FN_NAME (i960base,remi3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
502{
503#define FLD(f) abuf->fields.fmt_mulo3.f
504 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
505 int UNUSED written = 0;
506 IADDR UNUSED pc = abuf->addr;
507 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
508
509 {
510 SI opval = MODSI (FLD (f_src2), FLD (f_src1));
511 * FLD (i_dst) = opval;
512 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
513 }
514
515 return vpc;
516#undef FLD
517}
518
519/* divi: divi $src1, $src2, $dst */
520
521SEM_PC
522SEM_FN_NAME (i960base,divi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
523{
524#define FLD(f) abuf->fields.fmt_mulo.f
525 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
526 int UNUSED written = 0;
527 IADDR UNUSED pc = abuf->addr;
528 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
529
530 {
531 SI opval = DIVSI (* FLD (i_src2), * FLD (i_src1));
532 * FLD (i_dst) = opval;
533 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
534 }
535
536 return vpc;
537#undef FLD
538}
539
540/* divi1: divi $lit1, $src2, $dst */
541
542SEM_PC
543SEM_FN_NAME (i960base,divi1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
544{
545#define FLD(f) abuf->fields.fmt_mulo1.f
546 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
547 int UNUSED written = 0;
548 IADDR UNUSED pc = abuf->addr;
549 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
550
551 {
552 SI opval = DIVSI (* FLD (i_src2), FLD (f_src1));
553 * FLD (i_dst) = opval;
554 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
555 }
556
557 return vpc;
558#undef FLD
559}
560
561/* divi2: divi $src1, $lit2, $dst */
562
563SEM_PC
564SEM_FN_NAME (i960base,divi2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
565{
566#define FLD(f) abuf->fields.fmt_mulo2.f
567 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
568 int UNUSED written = 0;
569 IADDR UNUSED pc = abuf->addr;
570 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
571
572 {
573 SI opval = DIVSI (FLD (f_src2), * FLD (i_src1));
574 * FLD (i_dst) = opval;
575 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
576 }
577
578 return vpc;
579#undef FLD
580}
581
582/* divi3: divi $lit1, $lit2, $dst */
583
584SEM_PC
585SEM_FN_NAME (i960base,divi3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
586{
587#define FLD(f) abuf->fields.fmt_mulo3.f
588 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
589 int UNUSED written = 0;
590 IADDR UNUSED pc = abuf->addr;
591 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
592
593 {
594 SI opval = DIVSI (FLD (f_src2), FLD (f_src1));
595 * FLD (i_dst) = opval;
596 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
597 }
598
599 return vpc;
600#undef FLD
601}
602
603/* addo: addo $src1, $src2, $dst */
604
605SEM_PC
606SEM_FN_NAME (i960base,addo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
607{
608#define FLD(f) abuf->fields.fmt_mulo.f
609 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
610 int UNUSED written = 0;
611 IADDR UNUSED pc = abuf->addr;
612 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
613
614 {
615 SI opval = ADDSI (* FLD (i_src1), * FLD (i_src2));
616 * FLD (i_dst) = opval;
617 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
618 }
619
620 return vpc;
621#undef FLD
622}
623
624/* addo1: addo $lit1, $src2, $dst */
625
626SEM_PC
627SEM_FN_NAME (i960base,addo1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
628{
629#define FLD(f) abuf->fields.fmt_mulo1.f
630 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
631 int UNUSED written = 0;
632 IADDR UNUSED pc = abuf->addr;
633 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
634
635 {
636 SI opval = ADDSI (FLD (f_src1), * FLD (i_src2));
637 * FLD (i_dst) = opval;
638 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
639 }
640
641 return vpc;
642#undef FLD
643}
644
645/* addo2: addo $src1, $lit2, $dst */
646
647SEM_PC
648SEM_FN_NAME (i960base,addo2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
649{
650#define FLD(f) abuf->fields.fmt_mulo2.f
651 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
652 int UNUSED written = 0;
653 IADDR UNUSED pc = abuf->addr;
654 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
655
656 {
657 SI opval = ADDSI (* FLD (i_src1), FLD (f_src2));
658 * FLD (i_dst) = opval;
659 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
660 }
661
662 return vpc;
663#undef FLD
664}
665
666/* addo3: addo $lit1, $lit2, $dst */
667
668SEM_PC
669SEM_FN_NAME (i960base,addo3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
670{
671#define FLD(f) abuf->fields.fmt_mulo3.f
672 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
673 int UNUSED written = 0;
674 IADDR UNUSED pc = abuf->addr;
675 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
676
677 {
678 SI opval = ADDSI (FLD (f_src1), FLD (f_src2));
679 * FLD (i_dst) = opval;
680 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
681 }
682
683 return vpc;
684#undef FLD
685}
686
687/* subo: subo $src1, $src2, $dst */
688
689SEM_PC
690SEM_FN_NAME (i960base,subo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
691{
692#define FLD(f) abuf->fields.fmt_mulo.f
693 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
694 int UNUSED written = 0;
695 IADDR UNUSED pc = abuf->addr;
696 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
697
698 {
699 SI opval = SUBSI (* FLD (i_src2), * FLD (i_src1));
700 * FLD (i_dst) = opval;
701 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
702 }
703
704 return vpc;
705#undef FLD
706}
707
708/* subo1: subo $lit1, $src2, $dst */
709
710SEM_PC
711SEM_FN_NAME (i960base,subo1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
712{
713#define FLD(f) abuf->fields.fmt_mulo1.f
714 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
715 int UNUSED written = 0;
716 IADDR UNUSED pc = abuf->addr;
717 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
718
719 {
720 SI opval = SUBSI (* FLD (i_src2), FLD (f_src1));
721 * FLD (i_dst) = opval;
722 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
723 }
724
725 return vpc;
726#undef FLD
727}
728
729/* subo2: subo $src1, $lit2, $dst */
730
731SEM_PC
732SEM_FN_NAME (i960base,subo2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
733{
734#define FLD(f) abuf->fields.fmt_mulo2.f
735 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
736 int UNUSED written = 0;
737 IADDR UNUSED pc = abuf->addr;
738 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
739
740 {
741 SI opval = SUBSI (FLD (f_src2), * FLD (i_src1));
742 * FLD (i_dst) = opval;
743 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
744 }
745
746 return vpc;
747#undef FLD
748}
749
750/* subo3: subo $lit1, $lit2, $dst */
751
752SEM_PC
753SEM_FN_NAME (i960base,subo3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
754{
755#define FLD(f) abuf->fields.fmt_mulo3.f
756 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
757 int UNUSED written = 0;
758 IADDR UNUSED pc = abuf->addr;
759 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
760
761 {
762 SI opval = SUBSI (FLD (f_src2), FLD (f_src1));
763 * FLD (i_dst) = opval;
764 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
765 }
766
767 return vpc;
768#undef FLD
769}
770
771/* notbit: notbit $src1, $src2, $dst */
772
773SEM_PC
774SEM_FN_NAME (i960base,notbit) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
775{
776#define FLD(f) abuf->fields.fmt_notbit.f
777 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
778 int UNUSED written = 0;
779 IADDR UNUSED pc = abuf->addr;
780 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
781
782 {
783 SI opval = XORSI (SLLSI (1, * FLD (i_src1)), * FLD (i_src2));
784 * FLD (i_dst) = opval;
785 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
786 }
787
788 return vpc;
789#undef FLD
790}
791
792/* notbit1: notbit $lit1, $src2, $dst */
793
794SEM_PC
795SEM_FN_NAME (i960base,notbit1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
796{
797#define FLD(f) abuf->fields.fmt_notbit1.f
798 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
799 int UNUSED written = 0;
800 IADDR UNUSED pc = abuf->addr;
801 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
802
803 {
804 SI opval = XORSI (SLLSI (1, FLD (f_src1)), * FLD (i_src2));
805 * FLD (i_dst) = opval;
806 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
807 }
808
809 return vpc;
810#undef FLD
811}
812
813/* notbit2: notbit $src1, $lit2, $dst */
814
815SEM_PC
816SEM_FN_NAME (i960base,notbit2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
817{
818#define FLD(f) abuf->fields.fmt_notbit2.f
819 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
820 int UNUSED written = 0;
821 IADDR UNUSED pc = abuf->addr;
822 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
823
824 {
825 SI opval = XORSI (SLLSI (1, * FLD (i_src1)), FLD (f_src2));
826 * FLD (i_dst) = opval;
827 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
828 }
829
830 return vpc;
831#undef FLD
832}
833
834/* notbit3: notbit $lit1, $lit2, $dst */
835
836SEM_PC
837SEM_FN_NAME (i960base,notbit3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
838{
839#define FLD(f) abuf->fields.fmt_notbit3.f
840 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
841 int UNUSED written = 0;
842 IADDR UNUSED pc = abuf->addr;
843 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
844
845 {
846 SI opval = XORSI (SLLSI (1, FLD (f_src1)), FLD (f_src2));
847 * FLD (i_dst) = opval;
848 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
849 }
850
851 return vpc;
852#undef FLD
853}
854
855/* and: and $src1, $src2, $dst */
856
857SEM_PC
858SEM_FN_NAME (i960base,and) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
859{
860#define FLD(f) abuf->fields.fmt_mulo.f
861 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
862 int UNUSED written = 0;
863 IADDR UNUSED pc = abuf->addr;
864 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
865
866 {
867 SI opval = ANDSI (* FLD (i_src1), * FLD (i_src2));
868 * FLD (i_dst) = opval;
869 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
870 }
871
872 return vpc;
873#undef FLD
874}
875
876/* and1: and $lit1, $src2, $dst */
877
878SEM_PC
879SEM_FN_NAME (i960base,and1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
880{
881#define FLD(f) abuf->fields.fmt_mulo1.f
882 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
883 int UNUSED written = 0;
884 IADDR UNUSED pc = abuf->addr;
885 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
886
887 {
888 SI opval = ANDSI (FLD (f_src1), * FLD (i_src2));
889 * FLD (i_dst) = opval;
890 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
891 }
892
893 return vpc;
894#undef FLD
895}
896
897/* and2: and $src1, $lit2, $dst */
898
899SEM_PC
900SEM_FN_NAME (i960base,and2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
901{
902#define FLD(f) abuf->fields.fmt_mulo2.f
903 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
904 int UNUSED written = 0;
905 IADDR UNUSED pc = abuf->addr;
906 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
907
908 {
909 SI opval = ANDSI (* FLD (i_src1), FLD (f_src2));
910 * FLD (i_dst) = opval;
911 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
912 }
913
914 return vpc;
915#undef FLD
916}
917
918/* and3: and $lit1, $lit2, $dst */
919
920SEM_PC
921SEM_FN_NAME (i960base,and3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
922{
923#define FLD(f) abuf->fields.fmt_mulo3.f
924 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
925 int UNUSED written = 0;
926 IADDR UNUSED pc = abuf->addr;
927 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
928
929 {
930 SI opval = ANDSI (FLD (f_src1), FLD (f_src2));
931 * FLD (i_dst) = opval;
932 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
933 }
934
935 return vpc;
936#undef FLD
937}
938
939/* andnot: andnot $src1, $src2, $dst */
940
941SEM_PC
942SEM_FN_NAME (i960base,andnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
943{
944#define FLD(f) abuf->fields.fmt_mulo.f
945 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
946 int UNUSED written = 0;
947 IADDR UNUSED pc = abuf->addr;
948 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
949
950 {
951 SI opval = ANDSI (* FLD (i_src2), INVSI (* FLD (i_src1)));
952 * FLD (i_dst) = opval;
953 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
954 }
955
956 return vpc;
957#undef FLD
958}
959
960/* andnot1: andnot $lit1, $src2, $dst */
961
962SEM_PC
963SEM_FN_NAME (i960base,andnot1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
964{
965#define FLD(f) abuf->fields.fmt_mulo1.f
966 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
967 int UNUSED written = 0;
968 IADDR UNUSED pc = abuf->addr;
969 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
970
971 {
972 SI opval = ANDSI (* FLD (i_src2), INVSI (FLD (f_src1)));
973 * FLD (i_dst) = opval;
974 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
975 }
976
977 return vpc;
978#undef FLD
979}
980
981/* andnot2: andnot $src1, $lit2, $dst */
982
983SEM_PC
984SEM_FN_NAME (i960base,andnot2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
985{
986#define FLD(f) abuf->fields.fmt_mulo2.f
987 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
988 int UNUSED written = 0;
989 IADDR UNUSED pc = abuf->addr;
990 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
991
992 {
993 SI opval = ANDSI (FLD (f_src2), INVSI (* FLD (i_src1)));
994 * FLD (i_dst) = opval;
995 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
996 }
997
998 return vpc;
999#undef FLD
1000}
1001
1002/* andnot3: andnot $lit1, $lit2, $dst */
1003
1004SEM_PC
1005SEM_FN_NAME (i960base,andnot3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1006{
1007#define FLD(f) abuf->fields.fmt_mulo3.f
1008 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1009 int UNUSED written = 0;
1010 IADDR UNUSED pc = abuf->addr;
1011 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1012
1013 {
1014 SI opval = ANDSI (FLD (f_src2), INVSI (FLD (f_src1)));
1015 * FLD (i_dst) = opval;
1016 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1017 }
1018
1019 return vpc;
1020#undef FLD
1021}
1022
1023/* setbit: setbit $src1, $src2, $dst */
1024
1025SEM_PC
1026SEM_FN_NAME (i960base,setbit) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1027{
1028#define FLD(f) abuf->fields.fmt_notbit.f
1029 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1030 int UNUSED written = 0;
1031 IADDR UNUSED pc = abuf->addr;
1032 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1033
1034 {
1035 SI opval = ORSI (SLLSI (1, * FLD (i_src1)), * FLD (i_src2));
1036 * FLD (i_dst) = opval;
1037 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1038 }
1039
1040 return vpc;
1041#undef FLD
1042}
1043
1044/* setbit1: setbit $lit1, $src2, $dst */
1045
1046SEM_PC
1047SEM_FN_NAME (i960base,setbit1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1048{
1049#define FLD(f) abuf->fields.fmt_notbit1.f
1050 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1051 int UNUSED written = 0;
1052 IADDR UNUSED pc = abuf->addr;
1053 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1054
1055 {
1056 SI opval = ORSI (SLLSI (1, FLD (f_src1)), * FLD (i_src2));
1057 * FLD (i_dst) = opval;
1058 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1059 }
1060
1061 return vpc;
1062#undef FLD
1063}
1064
1065/* setbit2: setbit $src1, $lit2, $dst */
1066
1067SEM_PC
1068SEM_FN_NAME (i960base,setbit2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1069{
1070#define FLD(f) abuf->fields.fmt_notbit2.f
1071 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1072 int UNUSED written = 0;
1073 IADDR UNUSED pc = abuf->addr;
1074 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1075
1076 {
1077 SI opval = ORSI (SLLSI (1, * FLD (i_src1)), FLD (f_src2));
1078 * FLD (i_dst) = opval;
1079 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1080 }
1081
1082 return vpc;
1083#undef FLD
1084}
1085
1086/* setbit3: setbit $lit1, $lit2, $dst */
1087
1088SEM_PC
1089SEM_FN_NAME (i960base,setbit3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1090{
1091#define FLD(f) abuf->fields.fmt_notbit3.f
1092 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1093 int UNUSED written = 0;
1094 IADDR UNUSED pc = abuf->addr;
1095 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1096
1097 {
1098 SI opval = ORSI (SLLSI (1, FLD (f_src1)), FLD (f_src2));
1099 * FLD (i_dst) = opval;
1100 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1101 }
1102
1103 return vpc;
1104#undef FLD
1105}
1106
1107/* notand: notand $src1, $src2, $dst */
1108
1109SEM_PC
1110SEM_FN_NAME (i960base,notand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1111{
1112#define FLD(f) abuf->fields.fmt_mulo.f
1113 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1114 int UNUSED written = 0;
1115 IADDR UNUSED pc = abuf->addr;
1116 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1117
1118 {
1119 SI opval = ANDSI (INVSI (* FLD (i_src2)), * FLD (i_src1));
1120 * FLD (i_dst) = opval;
1121 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1122 }
1123
1124 return vpc;
1125#undef FLD
1126}
1127
1128/* notand1: notand $lit1, $src2, $dst */
1129
1130SEM_PC
1131SEM_FN_NAME (i960base,notand1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1132{
1133#define FLD(f) abuf->fields.fmt_mulo1.f
1134 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1135 int UNUSED written = 0;
1136 IADDR UNUSED pc = abuf->addr;
1137 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1138
1139 {
1140 SI opval = ANDSI (INVSI (* FLD (i_src2)), FLD (f_src1));
1141 * FLD (i_dst) = opval;
1142 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1143 }
1144
1145 return vpc;
1146#undef FLD
1147}
1148
1149/* notand2: notand $src1, $lit2, $dst */
1150
1151SEM_PC
1152SEM_FN_NAME (i960base,notand2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1153{
1154#define FLD(f) abuf->fields.fmt_mulo2.f
1155 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1156 int UNUSED written = 0;
1157 IADDR UNUSED pc = abuf->addr;
1158 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1159
1160 {
1161 SI opval = ANDSI (INVSI (FLD (f_src2)), * FLD (i_src1));
1162 * FLD (i_dst) = opval;
1163 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1164 }
1165
1166 return vpc;
1167#undef FLD
1168}
1169
1170/* notand3: notand $lit1, $lit2, $dst */
1171
1172SEM_PC
1173SEM_FN_NAME (i960base,notand3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1174{
1175#define FLD(f) abuf->fields.fmt_mulo3.f
1176 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1177 int UNUSED written = 0;
1178 IADDR UNUSED pc = abuf->addr;
1179 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1180
1181 {
1182 SI opval = ANDSI (INVSI (FLD (f_src2)), FLD (f_src1));
1183 * FLD (i_dst) = opval;
1184 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1185 }
1186
1187 return vpc;
1188#undef FLD
1189}
1190
1191/* xor: xor $src1, $src2, $dst */
1192
1193SEM_PC
1194SEM_FN_NAME (i960base,xor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1195{
1196#define FLD(f) abuf->fields.fmt_mulo.f
1197 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1198 int UNUSED written = 0;
1199 IADDR UNUSED pc = abuf->addr;
1200 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1201
1202 {
1203 SI opval = XORSI (* FLD (i_src1), * FLD (i_src2));
1204 * FLD (i_dst) = opval;
1205 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1206 }
1207
1208 return vpc;
1209#undef FLD
1210}
1211
1212/* xor1: xor $lit1, $src2, $dst */
1213
1214SEM_PC
1215SEM_FN_NAME (i960base,xor1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1216{
1217#define FLD(f) abuf->fields.fmt_mulo1.f
1218 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1219 int UNUSED written = 0;
1220 IADDR UNUSED pc = abuf->addr;
1221 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1222
1223 {
1224 SI opval = XORSI (FLD (f_src1), * FLD (i_src2));
1225 * FLD (i_dst) = opval;
1226 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1227 }
1228
1229 return vpc;
1230#undef FLD
1231}
1232
1233/* xor2: xor $src1, $lit2, $dst */
1234
1235SEM_PC
1236SEM_FN_NAME (i960base,xor2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1237{
1238#define FLD(f) abuf->fields.fmt_mulo2.f
1239 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1240 int UNUSED written = 0;
1241 IADDR UNUSED pc = abuf->addr;
1242 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1243
1244 {
1245 SI opval = XORSI (* FLD (i_src1), FLD (f_src2));
1246 * FLD (i_dst) = opval;
1247 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1248 }
1249
1250 return vpc;
1251#undef FLD
1252}
1253
1254/* xor3: xor $lit1, $lit2, $dst */
1255
1256SEM_PC
1257SEM_FN_NAME (i960base,xor3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1258{
1259#define FLD(f) abuf->fields.fmt_mulo3.f
1260 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1261 int UNUSED written = 0;
1262 IADDR UNUSED pc = abuf->addr;
1263 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1264
1265 {
1266 SI opval = XORSI (FLD (f_src1), FLD (f_src2));
1267 * FLD (i_dst) = opval;
1268 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1269 }
1270
1271 return vpc;
1272#undef FLD
1273}
1274
1275/* or: or $src1, $src2, $dst */
1276
1277SEM_PC
1278SEM_FN_NAME (i960base,or) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1279{
1280#define FLD(f) abuf->fields.fmt_mulo.f
1281 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1282 int UNUSED written = 0;
1283 IADDR UNUSED pc = abuf->addr;
1284 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1285
1286 {
1287 SI opval = ORSI (* FLD (i_src1), * FLD (i_src2));
1288 * FLD (i_dst) = opval;
1289 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1290 }
1291
1292 return vpc;
1293#undef FLD
1294}
1295
1296/* or1: or $lit1, $src2, $dst */
1297
1298SEM_PC
1299SEM_FN_NAME (i960base,or1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1300{
1301#define FLD(f) abuf->fields.fmt_mulo1.f
1302 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1303 int UNUSED written = 0;
1304 IADDR UNUSED pc = abuf->addr;
1305 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1306
1307 {
1308 SI opval = ORSI (FLD (f_src1), * FLD (i_src2));
1309 * FLD (i_dst) = opval;
1310 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1311 }
1312
1313 return vpc;
1314#undef FLD
1315}
1316
1317/* or2: or $src1, $lit2, $dst */
1318
1319SEM_PC
1320SEM_FN_NAME (i960base,or2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1321{
1322#define FLD(f) abuf->fields.fmt_mulo2.f
1323 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1324 int UNUSED written = 0;
1325 IADDR UNUSED pc = abuf->addr;
1326 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1327
1328 {
1329 SI opval = ORSI (* FLD (i_src1), FLD (f_src2));
1330 * FLD (i_dst) = opval;
1331 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1332 }
1333
1334 return vpc;
1335#undef FLD
1336}
1337
1338/* or3: or $lit1, $lit2, $dst */
1339
1340SEM_PC
1341SEM_FN_NAME (i960base,or3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1342{
1343#define FLD(f) abuf->fields.fmt_mulo3.f
1344 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1345 int UNUSED written = 0;
1346 IADDR UNUSED pc = abuf->addr;
1347 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1348
1349 {
1350 SI opval = ORSI (FLD (f_src1), FLD (f_src2));
1351 * FLD (i_dst) = opval;
1352 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1353 }
1354
1355 return vpc;
1356#undef FLD
1357}
1358
1359/* nor: nor $src1, $src2, $dst */
1360
1361SEM_PC
1362SEM_FN_NAME (i960base,nor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1363{
1364#define FLD(f) abuf->fields.fmt_mulo.f
1365 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1366 int UNUSED written = 0;
1367 IADDR UNUSED pc = abuf->addr;
1368 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1369
1370 {
1371 SI opval = ANDSI (INVSI (* FLD (i_src2)), INVSI (* FLD (i_src1)));
1372 * FLD (i_dst) = opval;
1373 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1374 }
1375
1376 return vpc;
1377#undef FLD
1378}
1379
1380/* nor1: nor $lit1, $src2, $dst */
1381
1382SEM_PC
1383SEM_FN_NAME (i960base,nor1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1384{
1385#define FLD(f) abuf->fields.fmt_mulo1.f
1386 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1387 int UNUSED written = 0;
1388 IADDR UNUSED pc = abuf->addr;
1389 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1390
1391 {
1392 SI opval = ANDSI (INVSI (* FLD (i_src2)), INVSI (FLD (f_src1)));
1393 * FLD (i_dst) = opval;
1394 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1395 }
1396
1397 return vpc;
1398#undef FLD
1399}
1400
1401/* nor2: nor $src1, $lit2, $dst */
1402
1403SEM_PC
1404SEM_FN_NAME (i960base,nor2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1405{
1406#define FLD(f) abuf->fields.fmt_mulo2.f
1407 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1408 int UNUSED written = 0;
1409 IADDR UNUSED pc = abuf->addr;
1410 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1411
1412 {
1413 SI opval = ANDSI (INVSI (FLD (f_src2)), INVSI (* FLD (i_src1)));
1414 * FLD (i_dst) = opval;
1415 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1416 }
1417
1418 return vpc;
1419#undef FLD
1420}
1421
1422/* nor3: nor $lit1, $lit2, $dst */
1423
1424SEM_PC
1425SEM_FN_NAME (i960base,nor3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1426{
1427#define FLD(f) abuf->fields.fmt_mulo3.f
1428 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1429 int UNUSED written = 0;
1430 IADDR UNUSED pc = abuf->addr;
1431 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1432
1433 {
1434 SI opval = ANDSI (INVSI (FLD (f_src2)), INVSI (FLD (f_src1)));
1435 * FLD (i_dst) = opval;
1436 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1437 }
1438
1439 return vpc;
1440#undef FLD
1441}
1442
7a292a7a
SS
1443/* xnor: xnor $src1, $src2, $dst */
1444
1445SEM_PC
1446SEM_FN_NAME (i960base,xnor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1447{
1448#define FLD(f) abuf->fields.fmt_mulo.f
1449 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1450 int UNUSED written = 0;
1451 IADDR UNUSED pc = abuf->addr;
1452 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1453
1454 {
1455 SI opval = INVSI (XORSI (* FLD (i_src1), * FLD (i_src2)));
1456 * FLD (i_dst) = opval;
1457 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1458 }
1459
1460 return vpc;
1461#undef FLD
1462}
1463
1464/* xnor1: xnor $lit1, $src2, $dst */
1465
1466SEM_PC
1467SEM_FN_NAME (i960base,xnor1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1468{
1469#define FLD(f) abuf->fields.fmt_mulo1.f
1470 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1471 int UNUSED written = 0;
1472 IADDR UNUSED pc = abuf->addr;
1473 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1474
1475 {
1476 SI opval = INVSI (XORSI (FLD (f_src1), * FLD (i_src2)));
1477 * FLD (i_dst) = opval;
1478 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1479 }
1480
1481 return vpc;
1482#undef FLD
1483}
1484
1485/* xnor2: xnor $src1, $lit2, $dst */
1486
1487SEM_PC
1488SEM_FN_NAME (i960base,xnor2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1489{
1490#define FLD(f) abuf->fields.fmt_mulo2.f
1491 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1492 int UNUSED written = 0;
1493 IADDR UNUSED pc = abuf->addr;
1494 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1495
1496 {
1497 SI opval = INVSI (XORSI (* FLD (i_src1), FLD (f_src2)));
1498 * FLD (i_dst) = opval;
1499 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1500 }
1501
1502 return vpc;
1503#undef FLD
1504}
1505
1506/* xnor3: xnor $lit1, $lit2, $dst */
1507
1508SEM_PC
1509SEM_FN_NAME (i960base,xnor3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1510{
1511#define FLD(f) abuf->fields.fmt_mulo3.f
1512 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1513 int UNUSED written = 0;
1514 IADDR UNUSED pc = abuf->addr;
1515 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1516
1517 {
1518 SI opval = INVSI (XORSI (FLD (f_src1), FLD (f_src2)));
1519 * FLD (i_dst) = opval;
1520 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1521 }
1522
1523 return vpc;
1524#undef FLD
1525}
1526
c906108c
SS
1527/* not: not $src1, $src2, $dst */
1528
1529SEM_PC
1530SEM_FN_NAME (i960base,not) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1531{
1532#define FLD(f) abuf->fields.fmt_not.f
1533 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1534 int UNUSED written = 0;
1535 IADDR UNUSED pc = abuf->addr;
1536 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1537
1538 {
1539 SI opval = INVSI (* FLD (i_src1));
1540 * FLD (i_dst) = opval;
1541 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1542 }
1543
1544 return vpc;
1545#undef FLD
1546}
1547
1548/* not1: not $lit1, $src2, $dst */
1549
1550SEM_PC
1551SEM_FN_NAME (i960base,not1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1552{
1553#define FLD(f) abuf->fields.fmt_not1.f
1554 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1555 int UNUSED written = 0;
1556 IADDR UNUSED pc = abuf->addr;
1557 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1558
1559 {
1560 SI opval = INVSI (FLD (f_src1));
1561 * FLD (i_dst) = opval;
1562 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1563 }
1564
1565 return vpc;
1566#undef FLD
1567}
1568
1569/* not2: not $src1, $lit2, $dst */
1570
1571SEM_PC
1572SEM_FN_NAME (i960base,not2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1573{
1574#define FLD(f) abuf->fields.fmt_not2.f
1575 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1576 int UNUSED written = 0;
1577 IADDR UNUSED pc = abuf->addr;
1578 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1579
1580 {
1581 SI opval = INVSI (* FLD (i_src1));
1582 * FLD (i_dst) = opval;
1583 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1584 }
1585
1586 return vpc;
1587#undef FLD
1588}
1589
1590/* not3: not $lit1, $lit2, $dst */
1591
1592SEM_PC
1593SEM_FN_NAME (i960base,not3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1594{
1595#define FLD(f) abuf->fields.fmt_not3.f
1596 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1597 int UNUSED written = 0;
1598 IADDR UNUSED pc = abuf->addr;
1599 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1600
1601 {
1602 SI opval = INVSI (FLD (f_src1));
1603 * FLD (i_dst) = opval;
1604 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1605 }
1606
1607 return vpc;
1608#undef FLD
1609}
1610
7a292a7a
SS
1611/* ornot: ornot $src1, $src2, $dst */
1612
1613SEM_PC
1614SEM_FN_NAME (i960base,ornot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1615{
1616#define FLD(f) abuf->fields.fmt_mulo.f
1617 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1618 int UNUSED written = 0;
1619 IADDR UNUSED pc = abuf->addr;
1620 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1621
1622 {
1623 SI opval = ORSI (* FLD (i_src2), INVSI (* FLD (i_src1)));
1624 * FLD (i_dst) = opval;
1625 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1626 }
1627
1628 return vpc;
1629#undef FLD
1630}
1631
1632/* ornot1: ornot $lit1, $src2, $dst */
1633
1634SEM_PC
1635SEM_FN_NAME (i960base,ornot1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1636{
1637#define FLD(f) abuf->fields.fmt_mulo1.f
1638 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1639 int UNUSED written = 0;
1640 IADDR UNUSED pc = abuf->addr;
1641 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1642
1643 {
1644 SI opval = ORSI (* FLD (i_src2), INVSI (FLD (f_src1)));
1645 * FLD (i_dst) = opval;
1646 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1647 }
1648
1649 return vpc;
1650#undef FLD
1651}
1652
1653/* ornot2: ornot $src1, $lit2, $dst */
1654
1655SEM_PC
1656SEM_FN_NAME (i960base,ornot2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1657{
1658#define FLD(f) abuf->fields.fmt_mulo2.f
1659 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1660 int UNUSED written = 0;
1661 IADDR UNUSED pc = abuf->addr;
1662 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1663
1664 {
1665 SI opval = ORSI (FLD (f_src2), INVSI (* FLD (i_src1)));
1666 * FLD (i_dst) = opval;
1667 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1668 }
1669
1670 return vpc;
1671#undef FLD
1672}
1673
1674/* ornot3: ornot $lit1, $lit2, $dst */
1675
1676SEM_PC
1677SEM_FN_NAME (i960base,ornot3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1678{
1679#define FLD(f) abuf->fields.fmt_mulo3.f
1680 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1681 int UNUSED written = 0;
1682 IADDR UNUSED pc = abuf->addr;
1683 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1684
1685 {
1686 SI opval = ORSI (FLD (f_src2), INVSI (FLD (f_src1)));
1687 * FLD (i_dst) = opval;
1688 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1689 }
1690
1691 return vpc;
1692#undef FLD
1693}
1694
c906108c
SS
1695/* clrbit: clrbit $src1, $src2, $dst */
1696
1697SEM_PC
1698SEM_FN_NAME (i960base,clrbit) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1699{
1700#define FLD(f) abuf->fields.fmt_notbit.f
1701 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1702 int UNUSED written = 0;
1703 IADDR UNUSED pc = abuf->addr;
1704 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1705
1706 {
1707 SI opval = ANDSI (INVSI (SLLSI (1, * FLD (i_src1))), * FLD (i_src2));
1708 * FLD (i_dst) = opval;
1709 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1710 }
1711
1712 return vpc;
1713#undef FLD
1714}
1715
1716/* clrbit1: clrbit $lit1, $src2, $dst */
1717
1718SEM_PC
1719SEM_FN_NAME (i960base,clrbit1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1720{
1721#define FLD(f) abuf->fields.fmt_notbit1.f
1722 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1723 int UNUSED written = 0;
1724 IADDR UNUSED pc = abuf->addr;
1725 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1726
1727 {
1728 SI opval = ANDSI (INVSI (SLLSI (1, FLD (f_src1))), * FLD (i_src2));
1729 * FLD (i_dst) = opval;
1730 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1731 }
1732
1733 return vpc;
1734#undef FLD
1735}
1736
1737/* clrbit2: clrbit $src1, $lit2, $dst */
1738
1739SEM_PC
1740SEM_FN_NAME (i960base,clrbit2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1741{
1742#define FLD(f) abuf->fields.fmt_notbit2.f
1743 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1744 int UNUSED written = 0;
1745 IADDR UNUSED pc = abuf->addr;
1746 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1747
1748 {
1749 SI opval = ANDSI (INVSI (SLLSI (1, * FLD (i_src1))), FLD (f_src2));
1750 * FLD (i_dst) = opval;
1751 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1752 }
1753
1754 return vpc;
1755#undef FLD
1756}
1757
1758/* clrbit3: clrbit $lit1, $lit2, $dst */
1759
1760SEM_PC
1761SEM_FN_NAME (i960base,clrbit3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1762{
1763#define FLD(f) abuf->fields.fmt_notbit3.f
1764 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1765 int UNUSED written = 0;
1766 IADDR UNUSED pc = abuf->addr;
1767 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1768
1769 {
1770 SI opval = ANDSI (INVSI (SLLSI (1, FLD (f_src1))), FLD (f_src2));
1771 * FLD (i_dst) = opval;
1772 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1773 }
1774
1775 return vpc;
1776#undef FLD
1777}
1778
1779/* shlo: shlo $src1, $src2, $dst */
1780
1781SEM_PC
1782SEM_FN_NAME (i960base,shlo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1783{
7a292a7a 1784#define FLD(f) abuf->fields.fmt_shlo.f
c906108c
SS
1785 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1786 int UNUSED written = 0;
1787 IADDR UNUSED pc = abuf->addr;
1788 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1789
1790 {
7a292a7a 1791 SI opval = (GEUSI (* FLD (i_src1), 32)) ? (0) : (SLLSI (* FLD (i_src2), * FLD (i_src1)));
c906108c
SS
1792 * FLD (i_dst) = opval;
1793 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1794 }
1795
1796 return vpc;
1797#undef FLD
1798}
1799
1800/* shlo1: shlo $lit1, $src2, $dst */
1801
1802SEM_PC
1803SEM_FN_NAME (i960base,shlo1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1804{
7a292a7a 1805#define FLD(f) abuf->fields.fmt_shlo1.f
c906108c
SS
1806 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1807 int UNUSED written = 0;
1808 IADDR UNUSED pc = abuf->addr;
1809 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1810
1811 {
7a292a7a 1812 SI opval = (GEUSI (FLD (f_src1), 32)) ? (0) : (SLLSI (* FLD (i_src2), FLD (f_src1)));
c906108c
SS
1813 * FLD (i_dst) = opval;
1814 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1815 }
1816
1817 return vpc;
1818#undef FLD
1819}
1820
1821/* shlo2: shlo $src1, $lit2, $dst */
1822
1823SEM_PC
1824SEM_FN_NAME (i960base,shlo2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1825{
7a292a7a 1826#define FLD(f) abuf->fields.fmt_shlo2.f
c906108c
SS
1827 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1828 int UNUSED written = 0;
1829 IADDR UNUSED pc = abuf->addr;
1830 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1831
1832 {
7a292a7a 1833 SI opval = (GEUSI (* FLD (i_src1), 32)) ? (0) : (SLLSI (FLD (f_src2), * FLD (i_src1)));
c906108c
SS
1834 * FLD (i_dst) = opval;
1835 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1836 }
1837
1838 return vpc;
1839#undef FLD
1840}
1841
1842/* shlo3: shlo $lit1, $lit2, $dst */
1843
1844SEM_PC
1845SEM_FN_NAME (i960base,shlo3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1846{
7a292a7a 1847#define FLD(f) abuf->fields.fmt_shlo3.f
c906108c
SS
1848 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1849 int UNUSED written = 0;
1850 IADDR UNUSED pc = abuf->addr;
1851 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1852
1853 {
7a292a7a 1854 SI opval = (GEUSI (FLD (f_src1), 32)) ? (0) : (SLLSI (FLD (f_src2), FLD (f_src1)));
c906108c
SS
1855 * FLD (i_dst) = opval;
1856 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1857 }
1858
1859 return vpc;
1860#undef FLD
1861}
1862
1863/* shro: shro $src1, $src2, $dst */
1864
1865SEM_PC
1866SEM_FN_NAME (i960base,shro) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1867{
7a292a7a 1868#define FLD(f) abuf->fields.fmt_shlo.f
c906108c
SS
1869 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1870 int UNUSED written = 0;
1871 IADDR UNUSED pc = abuf->addr;
1872 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1873
1874 {
7a292a7a 1875 SI opval = (GEUSI (* FLD (i_src1), 32)) ? (0) : (SRLSI (* FLD (i_src2), * FLD (i_src1)));
c906108c
SS
1876 * FLD (i_dst) = opval;
1877 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1878 }
1879
1880 return vpc;
1881#undef FLD
1882}
1883
1884/* shro1: shro $lit1, $src2, $dst */
1885
1886SEM_PC
1887SEM_FN_NAME (i960base,shro1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1888{
7a292a7a 1889#define FLD(f) abuf->fields.fmt_shlo1.f
c906108c
SS
1890 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1891 int UNUSED written = 0;
1892 IADDR UNUSED pc = abuf->addr;
1893 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1894
1895 {
7a292a7a 1896 SI opval = (GEUSI (FLD (f_src1), 32)) ? (0) : (SRLSI (* FLD (i_src2), FLD (f_src1)));
c906108c
SS
1897 * FLD (i_dst) = opval;
1898 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1899 }
1900
1901 return vpc;
1902#undef FLD
1903}
1904
1905/* shro2: shro $src1, $lit2, $dst */
1906
1907SEM_PC
1908SEM_FN_NAME (i960base,shro2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1909{
7a292a7a 1910#define FLD(f) abuf->fields.fmt_shlo2.f
c906108c
SS
1911 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1912 int UNUSED written = 0;
1913 IADDR UNUSED pc = abuf->addr;
1914 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1915
1916 {
7a292a7a 1917 SI opval = (GEUSI (* FLD (i_src1), 32)) ? (0) : (SRLSI (FLD (f_src2), * FLD (i_src1)));
c906108c
SS
1918 * FLD (i_dst) = opval;
1919 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1920 }
1921
1922 return vpc;
1923#undef FLD
1924}
1925
1926/* shro3: shro $lit1, $lit2, $dst */
1927
1928SEM_PC
1929SEM_FN_NAME (i960base,shro3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1930{
7a292a7a 1931#define FLD(f) abuf->fields.fmt_shlo3.f
c906108c
SS
1932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1933 int UNUSED written = 0;
1934 IADDR UNUSED pc = abuf->addr;
1935 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1936
1937 {
7a292a7a 1938 SI opval = (GEUSI (FLD (f_src1), 32)) ? (0) : (SRLSI (FLD (f_src2), FLD (f_src1)));
c906108c
SS
1939 * FLD (i_dst) = opval;
1940 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1941 }
1942
1943 return vpc;
1944#undef FLD
1945}
1946
1947/* shli: shli $src1, $src2, $dst */
1948
1949SEM_PC
1950SEM_FN_NAME (i960base,shli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1951{
7a292a7a 1952#define FLD(f) abuf->fields.fmt_shlo.f
c906108c
SS
1953 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1954 int UNUSED written = 0;
1955 IADDR UNUSED pc = abuf->addr;
1956 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1957
1958 {
7a292a7a 1959 SI opval = (GEUSI (* FLD (i_src1), 32)) ? (0) : (SLLSI (* FLD (i_src2), * FLD (i_src1)));
c906108c
SS
1960 * FLD (i_dst) = opval;
1961 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1962 }
1963
1964 return vpc;
1965#undef FLD
1966}
1967
1968/* shli1: shli $lit1, $src2, $dst */
1969
1970SEM_PC
1971SEM_FN_NAME (i960base,shli1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1972{
7a292a7a 1973#define FLD(f) abuf->fields.fmt_shlo1.f
c906108c
SS
1974 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1975 int UNUSED written = 0;
1976 IADDR UNUSED pc = abuf->addr;
1977 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1978
1979 {
7a292a7a 1980 SI opval = (GEUSI (FLD (f_src1), 32)) ? (0) : (SLLSI (* FLD (i_src2), FLD (f_src1)));
c906108c
SS
1981 * FLD (i_dst) = opval;
1982 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
1983 }
1984
1985 return vpc;
1986#undef FLD
1987}
1988
1989/* shli2: shli $src1, $lit2, $dst */
1990
1991SEM_PC
1992SEM_FN_NAME (i960base,shli2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1993{
7a292a7a 1994#define FLD(f) abuf->fields.fmt_shlo2.f
c906108c
SS
1995 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1996 int UNUSED written = 0;
1997 IADDR UNUSED pc = abuf->addr;
1998 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1999
2000 {
7a292a7a 2001 SI opval = (GEUSI (* FLD (i_src1), 32)) ? (0) : (SLLSI (FLD (f_src2), * FLD (i_src1)));
c906108c
SS
2002 * FLD (i_dst) = opval;
2003 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2004 }
2005
2006 return vpc;
2007#undef FLD
2008}
2009
2010/* shli3: shli $lit1, $lit2, $dst */
2011
2012SEM_PC
2013SEM_FN_NAME (i960base,shli3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2014{
7a292a7a 2015#define FLD(f) abuf->fields.fmt_shlo3.f
c906108c
SS
2016 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2017 int UNUSED written = 0;
2018 IADDR UNUSED pc = abuf->addr;
2019 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2020
2021 {
7a292a7a 2022 SI opval = (GEUSI (FLD (f_src1), 32)) ? (0) : (SLLSI (FLD (f_src2), FLD (f_src1)));
c906108c
SS
2023 * FLD (i_dst) = opval;
2024 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2025 }
2026
2027 return vpc;
2028#undef FLD
2029}
2030
2031/* shri: shri $src1, $src2, $dst */
2032
2033SEM_PC
2034SEM_FN_NAME (i960base,shri) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2035{
7a292a7a 2036#define FLD(f) abuf->fields.fmt_shlo.f
c906108c
SS
2037 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2038 int UNUSED written = 0;
2039 IADDR UNUSED pc = abuf->addr;
2040 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2041
2042 {
7a292a7a 2043 SI opval = (GEUSI (* FLD (i_src1), 32)) ? (SRASI (* FLD (i_src2), 31)) : (SRASI (* FLD (i_src2), * FLD (i_src1)));
c906108c
SS
2044 * FLD (i_dst) = opval;
2045 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2046 }
2047
2048 return vpc;
2049#undef FLD
2050}
2051
2052/* shri1: shri $lit1, $src2, $dst */
2053
2054SEM_PC
2055SEM_FN_NAME (i960base,shri1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2056{
7a292a7a 2057#define FLD(f) abuf->fields.fmt_shlo1.f
c906108c
SS
2058 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2059 int UNUSED written = 0;
2060 IADDR UNUSED pc = abuf->addr;
2061 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2062
2063 {
7a292a7a 2064 SI opval = (GEUSI (FLD (f_src1), 32)) ? (SRASI (* FLD (i_src2), 31)) : (SRASI (* FLD (i_src2), FLD (f_src1)));
c906108c
SS
2065 * FLD (i_dst) = opval;
2066 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2067 }
2068
2069 return vpc;
2070#undef FLD
2071}
2072
2073/* shri2: shri $src1, $lit2, $dst */
2074
2075SEM_PC
2076SEM_FN_NAME (i960base,shri2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2077{
7a292a7a 2078#define FLD(f) abuf->fields.fmt_shlo2.f
c906108c
SS
2079 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2080 int UNUSED written = 0;
2081 IADDR UNUSED pc = abuf->addr;
2082 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2083
2084 {
7a292a7a 2085 SI opval = (GEUSI (* FLD (i_src1), 32)) ? (SRASI (FLD (f_src2), 31)) : (SRASI (FLD (f_src2), * FLD (i_src1)));
c906108c
SS
2086 * FLD (i_dst) = opval;
2087 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2088 }
2089
2090 return vpc;
2091#undef FLD
2092}
2093
2094/* shri3: shri $lit1, $lit2, $dst */
2095
2096SEM_PC
2097SEM_FN_NAME (i960base,shri3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2098{
7a292a7a 2099#define FLD(f) abuf->fields.fmt_shlo3.f
c906108c
SS
2100 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2101 int UNUSED written = 0;
2102 IADDR UNUSED pc = abuf->addr;
2103 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2104
2105 {
7a292a7a 2106 SI opval = (GEUSI (FLD (f_src1), 32)) ? (SRASI (FLD (f_src2), 31)) : (SRASI (FLD (f_src2), FLD (f_src1)));
c906108c
SS
2107 * FLD (i_dst) = opval;
2108 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2109 }
2110
2111 return vpc;
2112#undef FLD
2113}
2114
2115/* emul: emul $src1, $src2, $dst */
2116
2117SEM_PC
2118SEM_FN_NAME (i960base,emul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2119{
2120#define FLD(f) abuf->fields.fmt_emul.f
2121 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2122 int UNUSED written = 0;
2123 IADDR UNUSED pc = abuf->addr;
2124 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2125
7a292a7a 2126{
c906108c 2127 DI tmp_temp;
7a292a7a 2128 SI tmp_dregno;
c906108c
SS
2129 tmp_temp = MULDI (ZEXTSIDI (* FLD (i_src1)), ZEXTSIDI (* FLD (i_src2)));
2130 tmp_dregno = FLD (f_srcdst);
2131 {
2132 SI opval = TRUNCDISI (tmp_temp);
2133 * FLD (i_dst) = opval;
2134 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2135 }
2136 {
2137 SI opval = TRUNCDISI (SRLDI (tmp_temp, 32));
2138 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 2139 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c 2140 }
7a292a7a 2141}
c906108c
SS
2142
2143 return vpc;
2144#undef FLD
2145}
2146
2147/* emul1: emul $lit1, $src2, $dst */
2148
2149SEM_PC
2150SEM_FN_NAME (i960base,emul1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2151{
2152#define FLD(f) abuf->fields.fmt_emul1.f
2153 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2154 int UNUSED written = 0;
2155 IADDR UNUSED pc = abuf->addr;
2156 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2157
7a292a7a 2158{
c906108c 2159 DI tmp_temp;
7a292a7a 2160 SI tmp_dregno;
c906108c
SS
2161 tmp_temp = MULDI (ZEXTSIDI (FLD (f_src1)), ZEXTSIDI (* FLD (i_src2)));
2162 tmp_dregno = FLD (f_srcdst);
2163 {
2164 SI opval = TRUNCDISI (tmp_temp);
2165 * FLD (i_dst) = opval;
2166 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2167 }
2168 {
2169 SI opval = TRUNCDISI (SRLDI (tmp_temp, 32));
2170 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 2171 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c 2172 }
7a292a7a 2173}
c906108c
SS
2174
2175 return vpc;
2176#undef FLD
2177}
2178
2179/* emul2: emul $src1, $lit2, $dst */
2180
2181SEM_PC
2182SEM_FN_NAME (i960base,emul2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2183{
2184#define FLD(f) abuf->fields.fmt_emul2.f
2185 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2186 int UNUSED written = 0;
2187 IADDR UNUSED pc = abuf->addr;
2188 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2189
7a292a7a 2190{
c906108c 2191 DI tmp_temp;
7a292a7a 2192 SI tmp_dregno;
c906108c
SS
2193 tmp_temp = MULDI (ZEXTSIDI (* FLD (i_src1)), ZEXTSIDI (FLD (f_src2)));
2194 tmp_dregno = FLD (f_srcdst);
2195 {
2196 SI opval = TRUNCDISI (tmp_temp);
2197 * FLD (i_dst) = opval;
2198 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2199 }
2200 {
2201 SI opval = TRUNCDISI (SRLDI (tmp_temp, 32));
2202 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 2203 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c 2204 }
7a292a7a 2205}
c906108c
SS
2206
2207 return vpc;
2208#undef FLD
2209}
2210
2211/* emul3: emul $lit1, $lit2, $dst */
2212
2213SEM_PC
2214SEM_FN_NAME (i960base,emul3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2215{
2216#define FLD(f) abuf->fields.fmt_emul3.f
2217 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2218 int UNUSED written = 0;
2219 IADDR UNUSED pc = abuf->addr;
2220 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2221
7a292a7a 2222{
c906108c 2223 DI tmp_temp;
7a292a7a 2224 SI tmp_dregno;
c906108c
SS
2225 tmp_temp = MULDI (ZEXTSIDI (FLD (f_src1)), ZEXTSIDI (FLD (f_src2)));
2226 tmp_dregno = FLD (f_srcdst);
2227 {
2228 SI opval = TRUNCDISI (tmp_temp);
2229 * FLD (i_dst) = opval;
2230 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2231 }
2232 {
2233 SI opval = TRUNCDISI (SRLDI (tmp_temp, 32));
2234 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 2235 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c 2236 }
7a292a7a 2237}
c906108c
SS
2238
2239 return vpc;
2240#undef FLD
2241}
2242
2243/* mov: mov $src1, $dst */
2244
2245SEM_PC
2246SEM_FN_NAME (i960base,mov) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2247{
2248#define FLD(f) abuf->fields.fmt_not2.f
2249 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2250 int UNUSED written = 0;
2251 IADDR UNUSED pc = abuf->addr;
2252 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2253
2254 {
2255 SI opval = * FLD (i_src1);
2256 * FLD (i_dst) = opval;
2257 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2258 }
2259
2260 return vpc;
2261#undef FLD
2262}
2263
2264/* mov1: mov $lit1, $dst */
2265
2266SEM_PC
2267SEM_FN_NAME (i960base,mov1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2268{
2269#define FLD(f) abuf->fields.fmt_not3.f
2270 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2271 int UNUSED written = 0;
2272 IADDR UNUSED pc = abuf->addr;
2273 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2274
2275 {
2276 SI opval = FLD (f_src1);
2277 * FLD (i_dst) = opval;
2278 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2279 }
2280
2281 return vpc;
2282#undef FLD
2283}
2284
2285/* movl: movl $src1, $dst */
2286
2287SEM_PC
2288SEM_FN_NAME (i960base,movl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2289{
2290#define FLD(f) abuf->fields.fmt_movl.f
2291 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2292 int UNUSED written = 0;
2293 IADDR UNUSED pc = abuf->addr;
2294 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2295
7a292a7a 2296{
c906108c 2297 SI tmp_dregno;
7a292a7a 2298 SI tmp_sregno;
c906108c
SS
2299 tmp_dregno = FLD (f_srcdst);
2300 tmp_sregno = FLD (f_src1);
2301 {
2302 SI opval = * FLD (i_src1);
2303 * FLD (i_dst) = opval;
2304 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2305 }
2306 {
2307 SI opval = CPU (h_gr[((FLD (f_src1)) + (1))]);
2308 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 2309 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c 2310 }
7a292a7a 2311}
c906108c
SS
2312
2313 return vpc;
2314#undef FLD
2315}
2316
2317/* movl1: movl $lit1, $dst */
2318
2319SEM_PC
2320SEM_FN_NAME (i960base,movl1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2321{
2322#define FLD(f) abuf->fields.fmt_movl1.f
2323 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2324 int UNUSED written = 0;
2325 IADDR UNUSED pc = abuf->addr;
2326 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2327
7a292a7a 2328{
c906108c
SS
2329 SI tmp_dregno;
2330 tmp_dregno = FLD (f_srcdst);
2331 {
2332 SI opval = FLD (f_src1);
2333 * FLD (i_dst) = opval;
2334 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2335 }
2336 {
2337 SI opval = 0;
2338 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 2339 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c 2340 }
7a292a7a 2341}
c906108c
SS
2342
2343 return vpc;
2344#undef FLD
2345}
2346
2347/* movt: movt $src1, $dst */
2348
2349SEM_PC
2350SEM_FN_NAME (i960base,movt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2351{
2352#define FLD(f) abuf->fields.fmt_movt.f
2353 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2354 int UNUSED written = 0;
2355 IADDR UNUSED pc = abuf->addr;
2356 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2357
7a292a7a 2358{
c906108c 2359 SI tmp_dregno;
7a292a7a 2360 SI tmp_sregno;
c906108c
SS
2361 tmp_dregno = FLD (f_srcdst);
2362 tmp_sregno = FLD (f_src1);
2363 {
2364 SI opval = * FLD (i_src1);
2365 * FLD (i_dst) = opval;
2366 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2367 }
2368 {
2369 SI opval = CPU (h_gr[((FLD (f_src1)) + (1))]);
2370 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 2371 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c
SS
2372 }
2373 {
2374 SI opval = CPU (h_gr[((FLD (f_src1)) + (2))]);
2375 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
7a292a7a 2376 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
c906108c 2377 }
7a292a7a 2378}
c906108c
SS
2379
2380 return vpc;
2381#undef FLD
2382}
2383
2384/* movt1: movt $lit1, $dst */
2385
2386SEM_PC
2387SEM_FN_NAME (i960base,movt1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2388{
2389#define FLD(f) abuf->fields.fmt_movt1.f
2390 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2391 int UNUSED written = 0;
2392 IADDR UNUSED pc = abuf->addr;
2393 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2394
7a292a7a 2395{
c906108c
SS
2396 SI tmp_dregno;
2397 tmp_dregno = FLD (f_srcdst);
2398 {
2399 SI opval = FLD (f_src1);
2400 * FLD (i_dst) = opval;
2401 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2402 }
2403 {
2404 SI opval = 0;
2405 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 2406 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c
SS
2407 }
2408 {
2409 SI opval = 0;
2410 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
7a292a7a 2411 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
c906108c 2412 }
7a292a7a 2413}
c906108c
SS
2414
2415 return vpc;
2416#undef FLD
2417}
2418
2419/* movq: movq $src1, $dst */
2420
2421SEM_PC
2422SEM_FN_NAME (i960base,movq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2423{
2424#define FLD(f) abuf->fields.fmt_movq.f
2425 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2426 int UNUSED written = 0;
2427 IADDR UNUSED pc = abuf->addr;
2428 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2429
7a292a7a 2430{
c906108c 2431 SI tmp_dregno;
7a292a7a 2432 SI tmp_sregno;
c906108c
SS
2433 tmp_dregno = FLD (f_srcdst);
2434 tmp_sregno = FLD (f_src1);
2435 {
2436 SI opval = * FLD (i_src1);
2437 * FLD (i_dst) = opval;
2438 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2439 }
2440 {
2441 SI opval = CPU (h_gr[((FLD (f_src1)) + (1))]);
2442 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 2443 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c
SS
2444 }
2445 {
2446 SI opval = CPU (h_gr[((FLD (f_src1)) + (2))]);
2447 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
7a292a7a 2448 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
c906108c
SS
2449 }
2450 {
2451 SI opval = CPU (h_gr[((FLD (f_src1)) + (3))]);
2452 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
7a292a7a 2453 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-3", 'x', opval);
c906108c 2454 }
7a292a7a 2455}
c906108c
SS
2456
2457 return vpc;
2458#undef FLD
2459}
2460
2461/* movq1: movq $lit1, $dst */
2462
2463SEM_PC
2464SEM_FN_NAME (i960base,movq1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2465{
2466#define FLD(f) abuf->fields.fmt_movq1.f
2467 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2468 int UNUSED written = 0;
2469 IADDR UNUSED pc = abuf->addr;
2470 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2471
7a292a7a 2472{
c906108c
SS
2473 SI tmp_dregno;
2474 tmp_dregno = FLD (f_srcdst);
2475 {
2476 SI opval = FLD (f_src1);
2477 * FLD (i_dst) = opval;
2478 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2479 }
2480 {
2481 SI opval = 0;
2482 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 2483 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c
SS
2484 }
2485 {
2486 SI opval = 0;
2487 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
7a292a7a 2488 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
c906108c
SS
2489 }
2490 {
2491 SI opval = 0;
2492 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
7a292a7a 2493 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-3", 'x', opval);
c906108c 2494 }
7a292a7a 2495}
c906108c
SS
2496
2497 return vpc;
2498#undef FLD
2499}
2500
2501/* modpc: modpc $src1, $src2, $dst */
2502
2503SEM_PC
2504SEM_FN_NAME (i960base,modpc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2505{
2506#define FLD(f) abuf->fields.fmt_modpc.f
2507 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2508 int UNUSED written = 0;
2509 IADDR UNUSED pc = abuf->addr;
2510 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2511
2512 {
2513 SI opval = * FLD (i_src2);
2514 * FLD (i_dst) = opval;
2515 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2516 }
2517
2518 return vpc;
2519#undef FLD
2520}
2521
2522/* modac: modac $src1, $src2, $dst */
2523
2524SEM_PC
2525SEM_FN_NAME (i960base,modac) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2526{
2527#define FLD(f) abuf->fields.fmt_modpc.f
2528 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2529 int UNUSED written = 0;
2530 IADDR UNUSED pc = abuf->addr;
2531 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2532
2533 {
2534 SI opval = * FLD (i_src2);
2535 * FLD (i_dst) = opval;
2536 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2537 }
2538
2539 return vpc;
2540#undef FLD
2541}
2542
2543/* lda-offset: lda $offset, $dst */
2544
2545SEM_PC
2546SEM_FN_NAME (i960base,lda_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2547{
2548#define FLD(f) abuf->fields.fmt_lda_offset.f
2549 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2550 int UNUSED written = 0;
2551 IADDR UNUSED pc = abuf->addr;
2552 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2553
2554 {
2555 SI opval = FLD (f_offset);
2556 * FLD (i_dst) = opval;
2557 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2558 }
2559
2560 return vpc;
2561#undef FLD
2562}
2563
2564/* lda-indirect-offset: lda $offset($abase), $dst */
2565
2566SEM_PC
2567SEM_FN_NAME (i960base,lda_indirect_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2568{
2569#define FLD(f) abuf->fields.fmt_lda_indirect_offset.f
2570 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2571 int UNUSED written = 0;
2572 IADDR UNUSED pc = abuf->addr;
2573 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2574
2575 {
2576 SI opval = ADDSI (FLD (f_offset), * FLD (i_abase));
2577 * FLD (i_dst) = opval;
2578 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2579 }
2580
2581 return vpc;
2582#undef FLD
2583}
2584
2585/* lda-indirect: lda ($abase), $dst */
2586
2587SEM_PC
2588SEM_FN_NAME (i960base,lda_indirect) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2589{
2590#define FLD(f) abuf->fields.fmt_lda_indirect.f
2591 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2592 int UNUSED written = 0;
2593 IADDR UNUSED pc = abuf->addr;
2594 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2595
2596 {
2597 SI opval = * FLD (i_abase);
2598 * FLD (i_dst) = opval;
2599 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2600 }
2601
2602 return vpc;
2603#undef FLD
2604}
2605
2606/* lda-indirect-index: lda ($abase)[$index*S$scale], $dst */
2607
2608SEM_PC
2609SEM_FN_NAME (i960base,lda_indirect_index) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2610{
2611#define FLD(f) abuf->fields.fmt_lda_indirect_index.f
2612 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2613 int UNUSED written = 0;
2614 IADDR UNUSED pc = abuf->addr;
2615 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2616
2617 {
2618 SI opval = ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))));
2619 * FLD (i_dst) = opval;
2620 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2621 }
2622
2623 return vpc;
2624#undef FLD
2625}
2626
2627/* lda-disp: lda $optdisp, $dst */
2628
2629SEM_PC
2630SEM_FN_NAME (i960base,lda_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2631{
2632#define FLD(f) abuf->fields.fmt_lda_disp.f
2633 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2634 int UNUSED written = 0;
2635 IADDR UNUSED pc = abuf->addr;
2636 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
2637
2638 {
2639 SI opval = FLD (f_optdisp);
2640 * FLD (i_dst) = opval;
2641 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2642 }
2643
2644 return vpc;
2645#undef FLD
2646}
2647
2648/* lda-indirect-disp: lda $optdisp($abase), $dst */
2649
2650SEM_PC
2651SEM_FN_NAME (i960base,lda_indirect_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2652{
2653#define FLD(f) abuf->fields.fmt_lda_indirect_disp.f
2654 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2655 int UNUSED written = 0;
2656 IADDR UNUSED pc = abuf->addr;
2657 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
2658
2659 {
2660 SI opval = ADDSI (FLD (f_optdisp), * FLD (i_abase));
2661 * FLD (i_dst) = opval;
2662 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2663 }
2664
2665 return vpc;
2666#undef FLD
2667}
2668
2669/* lda-index-disp: lda $optdisp[$index*S$scale], $dst */
2670
2671SEM_PC
2672SEM_FN_NAME (i960base,lda_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2673{
2674#define FLD(f) abuf->fields.fmt_lda_index_disp.f
2675 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2676 int UNUSED written = 0;
2677 IADDR UNUSED pc = abuf->addr;
2678 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
2679
2680 {
2681 SI opval = ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))));
2682 * FLD (i_dst) = opval;
2683 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2684 }
2685
2686 return vpc;
2687#undef FLD
2688}
2689
2690/* lda-indirect-index-disp: lda $optdisp($abase)[$index*S$scale], $dst */
2691
2692SEM_PC
2693SEM_FN_NAME (i960base,lda_indirect_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2694{
2695#define FLD(f) abuf->fields.fmt_lda_indirect_index_disp.f
2696 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2697 int UNUSED written = 0;
2698 IADDR UNUSED pc = abuf->addr;
2699 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
2700
2701 {
2702 SI opval = ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
2703 * FLD (i_dst) = opval;
2704 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2705 }
2706
2707 return vpc;
2708#undef FLD
2709}
2710
2711/* ld-offset: ld $offset, $dst */
2712
2713SEM_PC
2714SEM_FN_NAME (i960base,ld_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2715{
2716#define FLD(f) abuf->fields.fmt_ld_offset.f
2717 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2718 int UNUSED written = 0;
2719 IADDR UNUSED pc = abuf->addr;
2720 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2721
2722 {
2723 SI opval = GETMEMSI (current_cpu, pc, FLD (f_offset));
2724 * FLD (i_dst) = opval;
2725 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2726 }
2727
2728 return vpc;
2729#undef FLD
2730}
2731
2732/* ld-indirect-offset: ld $offset($abase), $dst */
2733
2734SEM_PC
2735SEM_FN_NAME (i960base,ld_indirect_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2736{
2737#define FLD(f) abuf->fields.fmt_ld_indirect_offset.f
2738 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2739 int UNUSED written = 0;
2740 IADDR UNUSED pc = abuf->addr;
2741 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2742
2743 {
2744 SI opval = GETMEMSI (current_cpu, pc, ADDSI (FLD (f_offset), * FLD (i_abase)));
2745 * FLD (i_dst) = opval;
2746 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2747 }
2748
2749 return vpc;
2750#undef FLD
2751}
2752
2753/* ld-indirect: ld ($abase), $dst */
2754
2755SEM_PC
2756SEM_FN_NAME (i960base,ld_indirect) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2757{
2758#define FLD(f) abuf->fields.fmt_ld_indirect.f
2759 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2760 int UNUSED written = 0;
2761 IADDR UNUSED pc = abuf->addr;
2762 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2763
2764 {
2765 SI opval = GETMEMSI (current_cpu, pc, * FLD (i_abase));
2766 * FLD (i_dst) = opval;
2767 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2768 }
2769
2770 return vpc;
2771#undef FLD
2772}
2773
2774/* ld-indirect-index: ld ($abase)[$index*S$scale], $dst */
2775
2776SEM_PC
2777SEM_FN_NAME (i960base,ld_indirect_index) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2778{
2779#define FLD(f) abuf->fields.fmt_ld_indirect_index.f
2780 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2781 int UNUSED written = 0;
2782 IADDR UNUSED pc = abuf->addr;
2783 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2784
2785 {
2786 SI opval = GETMEMSI (current_cpu, pc, ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
2787 * FLD (i_dst) = opval;
2788 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2789 }
2790
2791 return vpc;
2792#undef FLD
2793}
2794
2795/* ld-disp: ld $optdisp, $dst */
2796
2797SEM_PC
2798SEM_FN_NAME (i960base,ld_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2799{
2800#define FLD(f) abuf->fields.fmt_ld_disp.f
2801 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2802 int UNUSED written = 0;
2803 IADDR UNUSED pc = abuf->addr;
2804 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
2805
2806 {
2807 SI opval = GETMEMSI (current_cpu, pc, FLD (f_optdisp));
2808 * FLD (i_dst) = opval;
2809 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2810 }
2811
2812 return vpc;
2813#undef FLD
2814}
2815
2816/* ld-indirect-disp: ld $optdisp($abase), $dst */
2817
2818SEM_PC
2819SEM_FN_NAME (i960base,ld_indirect_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2820{
2821#define FLD(f) abuf->fields.fmt_ld_indirect_disp.f
2822 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2823 int UNUSED written = 0;
2824 IADDR UNUSED pc = abuf->addr;
2825 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
2826
2827 {
2828 SI opval = GETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), * FLD (i_abase)));
2829 * FLD (i_dst) = opval;
2830 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2831 }
2832
2833 return vpc;
2834#undef FLD
2835}
2836
2837/* ld-index-disp: ld $optdisp[$index*S$scale], $dst */
2838
2839SEM_PC
2840SEM_FN_NAME (i960base,ld_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2841{
2842#define FLD(f) abuf->fields.fmt_ld_index_disp.f
2843 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2844 int UNUSED written = 0;
2845 IADDR UNUSED pc = abuf->addr;
2846 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
2847
2848 {
2849 SI opval = GETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
2850 * FLD (i_dst) = opval;
2851 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2852 }
2853
2854 return vpc;
2855#undef FLD
2856}
2857
2858/* ld-indirect-index-disp: ld $optdisp($abase)[$index*S$scale], $dst */
2859
2860SEM_PC
2861SEM_FN_NAME (i960base,ld_indirect_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2862{
2863#define FLD(f) abuf->fields.fmt_ld_indirect_index_disp.f
2864 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2865 int UNUSED written = 0;
2866 IADDR UNUSED pc = abuf->addr;
2867 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
2868
2869 {
2870 SI opval = GETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))));
2871 * FLD (i_dst) = opval;
2872 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2873 }
2874
2875 return vpc;
2876#undef FLD
2877}
2878
2879/* ldob-offset: ldob $offset, $dst */
2880
2881SEM_PC
2882SEM_FN_NAME (i960base,ldob_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2883{
2884#define FLD(f) abuf->fields.fmt_ldob_offset.f
2885 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2886 int UNUSED written = 0;
2887 IADDR UNUSED pc = abuf->addr;
2888 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2889
2890 {
2891 SI opval = GETMEMUQI (current_cpu, pc, FLD (f_offset));
2892 * FLD (i_dst) = opval;
2893 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2894 }
2895
2896 return vpc;
2897#undef FLD
2898}
2899
2900/* ldob-indirect-offset: ldob $offset($abase), $dst */
2901
2902SEM_PC
2903SEM_FN_NAME (i960base,ldob_indirect_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2904{
2905#define FLD(f) abuf->fields.fmt_ldob_indirect_offset.f
2906 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2907 int UNUSED written = 0;
2908 IADDR UNUSED pc = abuf->addr;
2909 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2910
2911 {
2912 SI opval = GETMEMUQI (current_cpu, pc, ADDSI (FLD (f_offset), * FLD (i_abase)));
2913 * FLD (i_dst) = opval;
2914 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2915 }
2916
2917 return vpc;
2918#undef FLD
2919}
2920
2921/* ldob-indirect: ldob ($abase), $dst */
2922
2923SEM_PC
2924SEM_FN_NAME (i960base,ldob_indirect) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2925{
2926#define FLD(f) abuf->fields.fmt_ldob_indirect.f
2927 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2928 int UNUSED written = 0;
2929 IADDR UNUSED pc = abuf->addr;
2930 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2931
2932 {
2933 SI opval = GETMEMUQI (current_cpu, pc, * FLD (i_abase));
2934 * FLD (i_dst) = opval;
2935 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2936 }
2937
2938 return vpc;
2939#undef FLD
2940}
2941
2942/* ldob-indirect-index: ldob ($abase)[$index*S$scale], $dst */
2943
2944SEM_PC
2945SEM_FN_NAME (i960base,ldob_indirect_index) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2946{
2947#define FLD(f) abuf->fields.fmt_ldob_indirect_index.f
2948 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2949 int UNUSED written = 0;
2950 IADDR UNUSED pc = abuf->addr;
2951 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2952
2953 {
2954 SI opval = GETMEMUQI (current_cpu, pc, ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
2955 * FLD (i_dst) = opval;
2956 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2957 }
2958
2959 return vpc;
2960#undef FLD
2961}
2962
2963/* ldob-disp: ldob $optdisp, $dst */
2964
2965SEM_PC
2966SEM_FN_NAME (i960base,ldob_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2967{
2968#define FLD(f) abuf->fields.fmt_ldob_disp.f
2969 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2970 int UNUSED written = 0;
2971 IADDR UNUSED pc = abuf->addr;
2972 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
2973
2974 {
2975 SI opval = GETMEMUQI (current_cpu, pc, FLD (f_optdisp));
2976 * FLD (i_dst) = opval;
2977 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2978 }
2979
2980 return vpc;
2981#undef FLD
2982}
2983
2984/* ldob-indirect-disp: ldob $optdisp($abase), $dst */
2985
2986SEM_PC
2987SEM_FN_NAME (i960base,ldob_indirect_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2988{
2989#define FLD(f) abuf->fields.fmt_ldob_indirect_disp.f
2990 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2991 int UNUSED written = 0;
2992 IADDR UNUSED pc = abuf->addr;
2993 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
2994
2995 {
2996 SI opval = GETMEMUQI (current_cpu, pc, ADDSI (FLD (f_optdisp), * FLD (i_abase)));
2997 * FLD (i_dst) = opval;
2998 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
2999 }
3000
3001 return vpc;
3002#undef FLD
3003}
3004
3005/* ldob-index-disp: ldob $optdisp[$index*S$scale], $dst */
3006
3007SEM_PC
3008SEM_FN_NAME (i960base,ldob_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3009{
3010#define FLD(f) abuf->fields.fmt_ldob_index_disp.f
3011 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3012 int UNUSED written = 0;
3013 IADDR UNUSED pc = abuf->addr;
3014 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3015
3016 {
3017 SI opval = GETMEMUQI (current_cpu, pc, ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
3018 * FLD (i_dst) = opval;
3019 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3020 }
3021
3022 return vpc;
3023#undef FLD
3024}
3025
3026/* ldob-indirect-index-disp: ldob $optdisp($abase)[$index*S$scale], $dst */
3027
3028SEM_PC
3029SEM_FN_NAME (i960base,ldob_indirect_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3030{
3031#define FLD(f) abuf->fields.fmt_ldob_indirect_index_disp.f
3032 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3033 int UNUSED written = 0;
3034 IADDR UNUSED pc = abuf->addr;
3035 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3036
3037 {
3038 SI opval = GETMEMUQI (current_cpu, pc, ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))));
3039 * FLD (i_dst) = opval;
3040 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3041 }
3042
3043 return vpc;
3044#undef FLD
3045}
3046
3047/* ldos-offset: ldos $offset, $dst */
3048
3049SEM_PC
3050SEM_FN_NAME (i960base,ldos_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3051{
3052#define FLD(f) abuf->fields.fmt_ldos_offset.f
3053 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3054 int UNUSED written = 0;
3055 IADDR UNUSED pc = abuf->addr;
3056 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3057
3058 {
3059 SI opval = GETMEMUHI (current_cpu, pc, FLD (f_offset));
3060 * FLD (i_dst) = opval;
3061 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3062 }
3063
3064 return vpc;
3065#undef FLD
3066}
3067
3068/* ldos-indirect-offset: ldos $offset($abase), $dst */
3069
3070SEM_PC
3071SEM_FN_NAME (i960base,ldos_indirect_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3072{
3073#define FLD(f) abuf->fields.fmt_ldos_indirect_offset.f
3074 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3075 int UNUSED written = 0;
3076 IADDR UNUSED pc = abuf->addr;
3077 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3078
3079 {
3080 SI opval = GETMEMUHI (current_cpu, pc, ADDSI (FLD (f_offset), * FLD (i_abase)));
3081 * FLD (i_dst) = opval;
3082 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3083 }
3084
3085 return vpc;
3086#undef FLD
3087}
3088
3089/* ldos-indirect: ldos ($abase), $dst */
3090
3091SEM_PC
3092SEM_FN_NAME (i960base,ldos_indirect) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3093{
3094#define FLD(f) abuf->fields.fmt_ldos_indirect.f
3095 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3096 int UNUSED written = 0;
3097 IADDR UNUSED pc = abuf->addr;
3098 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3099
3100 {
3101 SI opval = GETMEMUHI (current_cpu, pc, * FLD (i_abase));
3102 * FLD (i_dst) = opval;
3103 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3104 }
3105
3106 return vpc;
3107#undef FLD
3108}
3109
3110/* ldos-indirect-index: ldos ($abase)[$index*S$scale], $dst */
3111
3112SEM_PC
3113SEM_FN_NAME (i960base,ldos_indirect_index) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3114{
3115#define FLD(f) abuf->fields.fmt_ldos_indirect_index.f
3116 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3117 int UNUSED written = 0;
3118 IADDR UNUSED pc = abuf->addr;
3119 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3120
3121 {
3122 SI opval = GETMEMUHI (current_cpu, pc, ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
3123 * FLD (i_dst) = opval;
3124 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3125 }
3126
3127 return vpc;
3128#undef FLD
3129}
3130
3131/* ldos-disp: ldos $optdisp, $dst */
3132
3133SEM_PC
3134SEM_FN_NAME (i960base,ldos_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3135{
3136#define FLD(f) abuf->fields.fmt_ldos_disp.f
3137 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3138 int UNUSED written = 0;
3139 IADDR UNUSED pc = abuf->addr;
3140 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3141
3142 {
3143 SI opval = GETMEMUHI (current_cpu, pc, FLD (f_optdisp));
3144 * FLD (i_dst) = opval;
3145 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3146 }
3147
3148 return vpc;
3149#undef FLD
3150}
3151
3152/* ldos-indirect-disp: ldos $optdisp($abase), $dst */
3153
3154SEM_PC
3155SEM_FN_NAME (i960base,ldos_indirect_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3156{
3157#define FLD(f) abuf->fields.fmt_ldos_indirect_disp.f
3158 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3159 int UNUSED written = 0;
3160 IADDR UNUSED pc = abuf->addr;
3161 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3162
3163 {
3164 SI opval = GETMEMUHI (current_cpu, pc, ADDSI (FLD (f_optdisp), * FLD (i_abase)));
3165 * FLD (i_dst) = opval;
3166 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3167 }
3168
3169 return vpc;
3170#undef FLD
3171}
3172
3173/* ldos-index-disp: ldos $optdisp[$index*S$scale], $dst */
3174
3175SEM_PC
3176SEM_FN_NAME (i960base,ldos_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3177{
3178#define FLD(f) abuf->fields.fmt_ldos_index_disp.f
3179 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3180 int UNUSED written = 0;
3181 IADDR UNUSED pc = abuf->addr;
3182 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3183
3184 {
3185 SI opval = GETMEMUHI (current_cpu, pc, ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
3186 * FLD (i_dst) = opval;
3187 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3188 }
3189
3190 return vpc;
3191#undef FLD
3192}
3193
3194/* ldos-indirect-index-disp: ldos $optdisp($abase)[$index*S$scale], $dst */
3195
3196SEM_PC
3197SEM_FN_NAME (i960base,ldos_indirect_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3198{
3199#define FLD(f) abuf->fields.fmt_ldos_indirect_index_disp.f
3200 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3201 int UNUSED written = 0;
3202 IADDR UNUSED pc = abuf->addr;
3203 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3204
3205 {
3206 SI opval = GETMEMUHI (current_cpu, pc, ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))));
3207 * FLD (i_dst) = opval;
3208 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3209 }
3210
3211 return vpc;
3212#undef FLD
3213}
3214
3215/* ldib-offset: ldib $offset, $dst */
3216
3217SEM_PC
3218SEM_FN_NAME (i960base,ldib_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3219{
3220#define FLD(f) abuf->fields.fmt_ldib_offset.f
3221 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3222 int UNUSED written = 0;
3223 IADDR UNUSED pc = abuf->addr;
3224 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3225
3226 {
3227 SI opval = GETMEMQI (current_cpu, pc, FLD (f_offset));
3228 * FLD (i_dst) = opval;
3229 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3230 }
3231
3232 return vpc;
3233#undef FLD
3234}
3235
3236/* ldib-indirect-offset: ldib $offset($abase), $dst */
3237
3238SEM_PC
3239SEM_FN_NAME (i960base,ldib_indirect_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3240{
3241#define FLD(f) abuf->fields.fmt_ldib_indirect_offset.f
3242 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3243 int UNUSED written = 0;
3244 IADDR UNUSED pc = abuf->addr;
3245 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3246
3247 {
3248 SI opval = GETMEMQI (current_cpu, pc, ADDSI (FLD (f_offset), * FLD (i_abase)));
3249 * FLD (i_dst) = opval;
3250 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3251 }
3252
3253 return vpc;
3254#undef FLD
3255}
3256
3257/* ldib-indirect: ldib ($abase), $dst */
3258
3259SEM_PC
3260SEM_FN_NAME (i960base,ldib_indirect) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3261{
3262#define FLD(f) abuf->fields.fmt_ldib_indirect.f
3263 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3264 int UNUSED written = 0;
3265 IADDR UNUSED pc = abuf->addr;
3266 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3267
3268 {
3269 SI opval = GETMEMQI (current_cpu, pc, * FLD (i_abase));
3270 * FLD (i_dst) = opval;
3271 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3272 }
3273
3274 return vpc;
3275#undef FLD
3276}
3277
3278/* ldib-indirect-index: ldib ($abase)[$index*S$scale], $dst */
3279
3280SEM_PC
3281SEM_FN_NAME (i960base,ldib_indirect_index) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3282{
3283#define FLD(f) abuf->fields.fmt_ldib_indirect_index.f
3284 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3285 int UNUSED written = 0;
3286 IADDR UNUSED pc = abuf->addr;
3287 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3288
3289 {
3290 SI opval = GETMEMQI (current_cpu, pc, ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
3291 * FLD (i_dst) = opval;
3292 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3293 }
3294
3295 return vpc;
3296#undef FLD
3297}
3298
3299/* ldib-disp: ldib $optdisp, $dst */
3300
3301SEM_PC
3302SEM_FN_NAME (i960base,ldib_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3303{
3304#define FLD(f) abuf->fields.fmt_ldib_disp.f
3305 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3306 int UNUSED written = 0;
3307 IADDR UNUSED pc = abuf->addr;
3308 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3309
3310 {
3311 SI opval = GETMEMQI (current_cpu, pc, FLD (f_optdisp));
3312 * FLD (i_dst) = opval;
3313 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3314 }
3315
3316 return vpc;
3317#undef FLD
3318}
3319
3320/* ldib-indirect-disp: ldib $optdisp($abase), $dst */
3321
3322SEM_PC
3323SEM_FN_NAME (i960base,ldib_indirect_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3324{
3325#define FLD(f) abuf->fields.fmt_ldib_indirect_disp.f
3326 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3327 int UNUSED written = 0;
3328 IADDR UNUSED pc = abuf->addr;
3329 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3330
3331 {
3332 SI opval = GETMEMQI (current_cpu, pc, ADDSI (FLD (f_optdisp), * FLD (i_abase)));
3333 * FLD (i_dst) = opval;
3334 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3335 }
3336
3337 return vpc;
3338#undef FLD
3339}
3340
3341/* ldib-index-disp: ldib $optdisp[$index*S$scale], $dst */
3342
3343SEM_PC
3344SEM_FN_NAME (i960base,ldib_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3345{
3346#define FLD(f) abuf->fields.fmt_ldib_index_disp.f
3347 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3348 int UNUSED written = 0;
3349 IADDR UNUSED pc = abuf->addr;
3350 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3351
3352 {
3353 SI opval = GETMEMQI (current_cpu, pc, ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
3354 * FLD (i_dst) = opval;
3355 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3356 }
3357
3358 return vpc;
3359#undef FLD
3360}
3361
3362/* ldib-indirect-index-disp: ldib $optdisp($abase)[$index*S$scale], $dst */
3363
3364SEM_PC
3365SEM_FN_NAME (i960base,ldib_indirect_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3366{
3367#define FLD(f) abuf->fields.fmt_ldib_indirect_index_disp.f
3368 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3369 int UNUSED written = 0;
3370 IADDR UNUSED pc = abuf->addr;
3371 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3372
3373 {
3374 SI opval = GETMEMQI (current_cpu, pc, ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))));
3375 * FLD (i_dst) = opval;
3376 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3377 }
3378
3379 return vpc;
3380#undef FLD
3381}
3382
3383/* ldis-offset: ldis $offset, $dst */
3384
3385SEM_PC
3386SEM_FN_NAME (i960base,ldis_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3387{
3388#define FLD(f) abuf->fields.fmt_ldis_offset.f
3389 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3390 int UNUSED written = 0;
3391 IADDR UNUSED pc = abuf->addr;
3392 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3393
3394 {
3395 SI opval = GETMEMHI (current_cpu, pc, FLD (f_offset));
3396 * FLD (i_dst) = opval;
3397 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3398 }
3399
3400 return vpc;
3401#undef FLD
3402}
3403
3404/* ldis-indirect-offset: ldis $offset($abase), $dst */
3405
3406SEM_PC
3407SEM_FN_NAME (i960base,ldis_indirect_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3408{
3409#define FLD(f) abuf->fields.fmt_ldis_indirect_offset.f
3410 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3411 int UNUSED written = 0;
3412 IADDR UNUSED pc = abuf->addr;
3413 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3414
3415 {
3416 SI opval = GETMEMHI (current_cpu, pc, ADDSI (FLD (f_offset), * FLD (i_abase)));
3417 * FLD (i_dst) = opval;
3418 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3419 }
3420
3421 return vpc;
3422#undef FLD
3423}
3424
3425/* ldis-indirect: ldis ($abase), $dst */
3426
3427SEM_PC
3428SEM_FN_NAME (i960base,ldis_indirect) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3429{
3430#define FLD(f) abuf->fields.fmt_ldis_indirect.f
3431 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3432 int UNUSED written = 0;
3433 IADDR UNUSED pc = abuf->addr;
3434 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3435
3436 {
3437 SI opval = GETMEMHI (current_cpu, pc, * FLD (i_abase));
3438 * FLD (i_dst) = opval;
3439 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3440 }
3441
3442 return vpc;
3443#undef FLD
3444}
3445
3446/* ldis-indirect-index: ldis ($abase)[$index*S$scale], $dst */
3447
3448SEM_PC
3449SEM_FN_NAME (i960base,ldis_indirect_index) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3450{
3451#define FLD(f) abuf->fields.fmt_ldis_indirect_index.f
3452 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3453 int UNUSED written = 0;
3454 IADDR UNUSED pc = abuf->addr;
3455 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3456
3457 {
3458 SI opval = GETMEMHI (current_cpu, pc, ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
3459 * FLD (i_dst) = opval;
3460 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3461 }
3462
3463 return vpc;
3464#undef FLD
3465}
3466
3467/* ldis-disp: ldis $optdisp, $dst */
3468
3469SEM_PC
3470SEM_FN_NAME (i960base,ldis_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3471{
3472#define FLD(f) abuf->fields.fmt_ldis_disp.f
3473 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3474 int UNUSED written = 0;
3475 IADDR UNUSED pc = abuf->addr;
3476 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3477
3478 {
3479 SI opval = GETMEMHI (current_cpu, pc, FLD (f_optdisp));
3480 * FLD (i_dst) = opval;
3481 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3482 }
3483
3484 return vpc;
3485#undef FLD
3486}
3487
3488/* ldis-indirect-disp: ldis $optdisp($abase), $dst */
3489
3490SEM_PC
3491SEM_FN_NAME (i960base,ldis_indirect_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3492{
3493#define FLD(f) abuf->fields.fmt_ldis_indirect_disp.f
3494 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3495 int UNUSED written = 0;
3496 IADDR UNUSED pc = abuf->addr;
3497 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3498
3499 {
3500 SI opval = GETMEMHI (current_cpu, pc, ADDSI (FLD (f_optdisp), * FLD (i_abase)));
3501 * FLD (i_dst) = opval;
3502 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3503 }
3504
3505 return vpc;
3506#undef FLD
3507}
3508
3509/* ldis-index-disp: ldis $optdisp[$index*S$scale], $dst */
3510
3511SEM_PC
3512SEM_FN_NAME (i960base,ldis_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3513{
3514#define FLD(f) abuf->fields.fmt_ldis_index_disp.f
3515 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3516 int UNUSED written = 0;
3517 IADDR UNUSED pc = abuf->addr;
3518 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3519
3520 {
3521 SI opval = GETMEMHI (current_cpu, pc, ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
3522 * FLD (i_dst) = opval;
3523 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3524 }
3525
3526 return vpc;
3527#undef FLD
3528}
3529
3530/* ldis-indirect-index-disp: ldis $optdisp($abase)[$index*S$scale], $dst */
3531
3532SEM_PC
3533SEM_FN_NAME (i960base,ldis_indirect_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3534{
3535#define FLD(f) abuf->fields.fmt_ldis_indirect_index_disp.f
3536 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3537 int UNUSED written = 0;
3538 IADDR UNUSED pc = abuf->addr;
3539 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3540
3541 {
3542 SI opval = GETMEMHI (current_cpu, pc, ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))));
3543 * FLD (i_dst) = opval;
3544 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3545 }
3546
3547 return vpc;
3548#undef FLD
3549}
3550
3551/* ldl-offset: ldl $offset, $dst */
3552
3553SEM_PC
3554SEM_FN_NAME (i960base,ldl_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3555{
3556#define FLD(f) abuf->fields.fmt_ldl_offset.f
3557 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3558 int UNUSED written = 0;
3559 IADDR UNUSED pc = abuf->addr;
3560 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3561
7a292a7a 3562{
c906108c 3563 SI tmp_temp;
7a292a7a 3564 SI tmp_dregno;
c906108c
SS
3565 tmp_dregno = FLD (f_srcdst);
3566 tmp_temp = FLD (f_offset);
3567 {
3568 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3569 * FLD (i_dst) = opval;
3570 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3571 }
3572 {
3573 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3574 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 3575 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c 3576 }
7a292a7a 3577}
c906108c
SS
3578
3579 return vpc;
3580#undef FLD
3581}
3582
3583/* ldl-indirect-offset: ldl $offset($abase), $dst */
3584
3585SEM_PC
3586SEM_FN_NAME (i960base,ldl_indirect_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3587{
3588#define FLD(f) abuf->fields.fmt_ldl_indirect_offset.f
3589 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3590 int UNUSED written = 0;
3591 IADDR UNUSED pc = abuf->addr;
3592 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3593
7a292a7a 3594{
c906108c 3595 SI tmp_temp;
7a292a7a 3596 SI tmp_dregno;
c906108c
SS
3597 tmp_dregno = FLD (f_srcdst);
3598 tmp_temp = ADDSI (FLD (f_offset), * FLD (i_abase));
3599 {
3600 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3601 * FLD (i_dst) = opval;
3602 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3603 }
3604 {
3605 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3606 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 3607 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c 3608 }
7a292a7a 3609}
c906108c
SS
3610
3611 return vpc;
3612#undef FLD
3613}
3614
3615/* ldl-indirect: ldl ($abase), $dst */
3616
3617SEM_PC
3618SEM_FN_NAME (i960base,ldl_indirect) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3619{
3620#define FLD(f) abuf->fields.fmt_ldl_indirect.f
3621 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3622 int UNUSED written = 0;
3623 IADDR UNUSED pc = abuf->addr;
3624 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3625
7a292a7a 3626{
c906108c 3627 SI tmp_temp;
7a292a7a 3628 SI tmp_dregno;
c906108c
SS
3629 tmp_dregno = FLD (f_srcdst);
3630 tmp_temp = * FLD (i_abase);
3631 {
3632 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3633 * FLD (i_dst) = opval;
3634 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3635 }
3636 {
3637 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3638 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 3639 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c 3640 }
7a292a7a 3641}
c906108c
SS
3642
3643 return vpc;
3644#undef FLD
3645}
3646
3647/* ldl-indirect-index: ldl ($abase)[$index*S$scale], $dst */
3648
3649SEM_PC
3650SEM_FN_NAME (i960base,ldl_indirect_index) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3651{
3652#define FLD(f) abuf->fields.fmt_ldl_indirect_index.f
3653 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3654 int UNUSED written = 0;
3655 IADDR UNUSED pc = abuf->addr;
3656 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3657
7a292a7a 3658{
c906108c 3659 SI tmp_temp;
7a292a7a 3660 SI tmp_dregno;
c906108c
SS
3661 tmp_dregno = FLD (f_srcdst);
3662 tmp_temp = ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))));
3663 {
3664 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3665 * FLD (i_dst) = opval;
3666 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3667 }
3668 {
3669 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3670 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 3671 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c 3672 }
7a292a7a 3673}
c906108c
SS
3674
3675 return vpc;
3676#undef FLD
3677}
3678
3679/* ldl-disp: ldl $optdisp, $dst */
3680
3681SEM_PC
3682SEM_FN_NAME (i960base,ldl_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3683{
3684#define FLD(f) abuf->fields.fmt_ldl_disp.f
3685 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3686 int UNUSED written = 0;
3687 IADDR UNUSED pc = abuf->addr;
3688 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3689
7a292a7a 3690{
c906108c 3691 SI tmp_temp;
7a292a7a 3692 SI tmp_dregno;
c906108c
SS
3693 tmp_dregno = FLD (f_srcdst);
3694 tmp_temp = FLD (f_optdisp);
3695 {
3696 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3697 * FLD (i_dst) = opval;
3698 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3699 }
3700 {
3701 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3702 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 3703 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c 3704 }
7a292a7a 3705}
c906108c
SS
3706
3707 return vpc;
3708#undef FLD
3709}
3710
3711/* ldl-indirect-disp: ldl $optdisp($abase), $dst */
3712
3713SEM_PC
3714SEM_FN_NAME (i960base,ldl_indirect_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3715{
3716#define FLD(f) abuf->fields.fmt_ldl_indirect_disp.f
3717 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3718 int UNUSED written = 0;
3719 IADDR UNUSED pc = abuf->addr;
3720 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3721
7a292a7a 3722{
c906108c 3723 SI tmp_temp;
7a292a7a 3724 SI tmp_dregno;
c906108c
SS
3725 tmp_dregno = FLD (f_srcdst);
3726 tmp_temp = ADDSI (FLD (f_optdisp), * FLD (i_abase));
3727 {
3728 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3729 * FLD (i_dst) = opval;
3730 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3731 }
3732 {
3733 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3734 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 3735 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c 3736 }
7a292a7a 3737}
c906108c
SS
3738
3739 return vpc;
3740#undef FLD
3741}
3742
3743/* ldl-index-disp: ldl $optdisp[$index*S$scale], $dst */
3744
3745SEM_PC
3746SEM_FN_NAME (i960base,ldl_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3747{
3748#define FLD(f) abuf->fields.fmt_ldl_index_disp.f
3749 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3750 int UNUSED written = 0;
3751 IADDR UNUSED pc = abuf->addr;
3752 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3753
7a292a7a 3754{
c906108c 3755 SI tmp_temp;
7a292a7a 3756 SI tmp_dregno;
c906108c
SS
3757 tmp_dregno = FLD (f_srcdst);
3758 tmp_temp = ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))));
3759 {
3760 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3761 * FLD (i_dst) = opval;
3762 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3763 }
3764 {
3765 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3766 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 3767 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c 3768 }
7a292a7a 3769}
c906108c
SS
3770
3771 return vpc;
3772#undef FLD
3773}
3774
3775/* ldl-indirect-index-disp: ldl $optdisp($abase)[$index*S$scale], $dst */
3776
3777SEM_PC
3778SEM_FN_NAME (i960base,ldl_indirect_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3779{
3780#define FLD(f) abuf->fields.fmt_ldl_indirect_index_disp.f
3781 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3782 int UNUSED written = 0;
3783 IADDR UNUSED pc = abuf->addr;
3784 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3785
7a292a7a 3786{
c906108c 3787 SI tmp_temp;
7a292a7a 3788 SI tmp_dregno;
c906108c
SS
3789 tmp_dregno = FLD (f_srcdst);
3790 tmp_temp = ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
3791 {
3792 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3793 * FLD (i_dst) = opval;
3794 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3795 }
3796 {
3797 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3798 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 3799 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c 3800 }
7a292a7a 3801}
c906108c
SS
3802
3803 return vpc;
3804#undef FLD
3805}
3806
3807/* ldt-offset: ldt $offset, $dst */
3808
3809SEM_PC
3810SEM_FN_NAME (i960base,ldt_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3811{
3812#define FLD(f) abuf->fields.fmt_ldt_offset.f
3813 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3814 int UNUSED written = 0;
3815 IADDR UNUSED pc = abuf->addr;
3816 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3817
7a292a7a 3818{
c906108c 3819 SI tmp_temp;
7a292a7a 3820 SI tmp_dregno;
c906108c
SS
3821 tmp_dregno = FLD (f_srcdst);
3822 tmp_temp = FLD (f_offset);
3823 {
3824 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3825 * FLD (i_dst) = opval;
3826 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3827 }
3828 {
3829 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3830 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 3831 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c
SS
3832 }
3833 {
3834 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
3835 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
7a292a7a 3836 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
c906108c 3837 }
7a292a7a 3838}
c906108c
SS
3839
3840 return vpc;
3841#undef FLD
3842}
3843
3844/* ldt-indirect-offset: ldt $offset($abase), $dst */
3845
3846SEM_PC
3847SEM_FN_NAME (i960base,ldt_indirect_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3848{
3849#define FLD(f) abuf->fields.fmt_ldt_indirect_offset.f
3850 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3851 int UNUSED written = 0;
3852 IADDR UNUSED pc = abuf->addr;
3853 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3854
7a292a7a 3855{
c906108c 3856 SI tmp_temp;
7a292a7a 3857 SI tmp_dregno;
c906108c
SS
3858 tmp_dregno = FLD (f_srcdst);
3859 tmp_temp = ADDSI (FLD (f_offset), * FLD (i_abase));
3860 {
3861 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3862 * FLD (i_dst) = opval;
3863 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3864 }
3865 {
3866 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3867 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 3868 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c
SS
3869 }
3870 {
3871 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
3872 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
7a292a7a 3873 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
c906108c 3874 }
7a292a7a 3875}
c906108c
SS
3876
3877 return vpc;
3878#undef FLD
3879}
3880
3881/* ldt-indirect: ldt ($abase), $dst */
3882
3883SEM_PC
3884SEM_FN_NAME (i960base,ldt_indirect) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3885{
3886#define FLD(f) abuf->fields.fmt_ldt_indirect.f
3887 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3888 int UNUSED written = 0;
3889 IADDR UNUSED pc = abuf->addr;
3890 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3891
7a292a7a 3892{
c906108c 3893 SI tmp_temp;
7a292a7a 3894 SI tmp_dregno;
c906108c
SS
3895 tmp_dregno = FLD (f_srcdst);
3896 tmp_temp = * FLD (i_abase);
3897 {
3898 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3899 * FLD (i_dst) = opval;
3900 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3901 }
3902 {
3903 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3904 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 3905 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c
SS
3906 }
3907 {
3908 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
3909 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
7a292a7a 3910 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
c906108c 3911 }
7a292a7a 3912}
c906108c
SS
3913
3914 return vpc;
3915#undef FLD
3916}
3917
3918/* ldt-indirect-index: ldt ($abase)[$index*S$scale], $dst */
3919
3920SEM_PC
3921SEM_FN_NAME (i960base,ldt_indirect_index) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3922{
3923#define FLD(f) abuf->fields.fmt_ldt_indirect_index.f
3924 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3925 int UNUSED written = 0;
3926 IADDR UNUSED pc = abuf->addr;
3927 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3928
7a292a7a 3929{
c906108c 3930 SI tmp_temp;
7a292a7a 3931 SI tmp_dregno;
c906108c
SS
3932 tmp_dregno = FLD (f_srcdst);
3933 tmp_temp = ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))));
3934 {
3935 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3936 * FLD (i_dst) = opval;
3937 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3938 }
3939 {
3940 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3941 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 3942 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c
SS
3943 }
3944 {
3945 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
3946 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
7a292a7a 3947 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
c906108c 3948 }
7a292a7a 3949}
c906108c
SS
3950
3951 return vpc;
3952#undef FLD
3953}
3954
3955/* ldt-disp: ldt $optdisp, $dst */
3956
3957SEM_PC
3958SEM_FN_NAME (i960base,ldt_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3959{
3960#define FLD(f) abuf->fields.fmt_ldt_disp.f
3961 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3962 int UNUSED written = 0;
3963 IADDR UNUSED pc = abuf->addr;
3964 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
3965
7a292a7a 3966{
c906108c 3967 SI tmp_temp;
7a292a7a 3968 SI tmp_dregno;
c906108c
SS
3969 tmp_dregno = FLD (f_srcdst);
3970 tmp_temp = FLD (f_optdisp);
3971 {
3972 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
3973 * FLD (i_dst) = opval;
3974 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
3975 }
3976 {
3977 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
3978 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 3979 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c
SS
3980 }
3981 {
3982 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
3983 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
7a292a7a 3984 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
c906108c 3985 }
7a292a7a 3986}
c906108c
SS
3987
3988 return vpc;
3989#undef FLD
3990}
3991
3992/* ldt-indirect-disp: ldt $optdisp($abase), $dst */
3993
3994SEM_PC
3995SEM_FN_NAME (i960base,ldt_indirect_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3996{
3997#define FLD(f) abuf->fields.fmt_ldt_indirect_disp.f
3998 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3999 int UNUSED written = 0;
4000 IADDR UNUSED pc = abuf->addr;
4001 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4002
7a292a7a 4003{
c906108c 4004 SI tmp_temp;
7a292a7a 4005 SI tmp_dregno;
c906108c
SS
4006 tmp_dregno = FLD (f_srcdst);
4007 tmp_temp = ADDSI (FLD (f_optdisp), * FLD (i_abase));
4008 {
4009 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
4010 * FLD (i_dst) = opval;
4011 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
4012 }
4013 {
4014 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
4015 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 4016 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c
SS
4017 }
4018 {
4019 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4020 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
7a292a7a 4021 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
c906108c 4022 }
7a292a7a 4023}
c906108c
SS
4024
4025 return vpc;
4026#undef FLD
4027}
4028
4029/* ldt-index-disp: ldt $optdisp[$index*S$scale], $dst */
4030
4031SEM_PC
4032SEM_FN_NAME (i960base,ldt_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4033{
4034#define FLD(f) abuf->fields.fmt_ldt_index_disp.f
4035 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4036 int UNUSED written = 0;
4037 IADDR UNUSED pc = abuf->addr;
4038 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4039
7a292a7a 4040{
c906108c 4041 SI tmp_temp;
7a292a7a 4042 SI tmp_dregno;
c906108c
SS
4043 tmp_dregno = FLD (f_srcdst);
4044 tmp_temp = ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))));
4045 {
4046 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
4047 * FLD (i_dst) = opval;
4048 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
4049 }
4050 {
4051 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
4052 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 4053 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c
SS
4054 }
4055 {
4056 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4057 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
7a292a7a 4058 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
c906108c 4059 }
7a292a7a 4060}
c906108c
SS
4061
4062 return vpc;
4063#undef FLD
4064}
4065
4066/* ldt-indirect-index-disp: ldt $optdisp($abase)[$index*S$scale], $dst */
4067
4068SEM_PC
4069SEM_FN_NAME (i960base,ldt_indirect_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4070{
4071#define FLD(f) abuf->fields.fmt_ldt_indirect_index_disp.f
4072 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4073 int UNUSED written = 0;
4074 IADDR UNUSED pc = abuf->addr;
4075 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4076
7a292a7a 4077{
c906108c 4078 SI tmp_temp;
7a292a7a 4079 SI tmp_dregno;
c906108c
SS
4080 tmp_dregno = FLD (f_srcdst);
4081 tmp_temp = ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
4082 {
4083 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
4084 * FLD (i_dst) = opval;
4085 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
4086 }
4087 {
4088 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
4089 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 4090 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c
SS
4091 }
4092 {
4093 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4094 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
7a292a7a 4095 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
c906108c 4096 }
7a292a7a 4097}
c906108c
SS
4098
4099 return vpc;
4100#undef FLD
4101}
4102
4103/* ldq-offset: ldq $offset, $dst */
4104
4105SEM_PC
4106SEM_FN_NAME (i960base,ldq_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4107{
4108#define FLD(f) abuf->fields.fmt_ldq_offset.f
4109 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4110 int UNUSED written = 0;
4111 IADDR UNUSED pc = abuf->addr;
4112 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4113
7a292a7a 4114{
c906108c 4115 SI tmp_temp;
7a292a7a 4116 SI tmp_dregno;
c906108c
SS
4117 tmp_dregno = FLD (f_srcdst);
4118 tmp_temp = FLD (f_offset);
4119 {
4120 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
4121 * FLD (i_dst) = opval;
4122 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
4123 }
4124 {
4125 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
4126 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 4127 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c
SS
4128 }
4129 {
4130 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4131 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
7a292a7a 4132 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
c906108c
SS
4133 }
4134 {
4135 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4136 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
7a292a7a 4137 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-3", 'x', opval);
c906108c 4138 }
7a292a7a 4139}
c906108c
SS
4140
4141 return vpc;
4142#undef FLD
4143}
4144
4145/* ldq-indirect-offset: ldq $offset($abase), $dst */
4146
4147SEM_PC
4148SEM_FN_NAME (i960base,ldq_indirect_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4149{
4150#define FLD(f) abuf->fields.fmt_ldq_indirect_offset.f
4151 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4152 int UNUSED written = 0;
4153 IADDR UNUSED pc = abuf->addr;
4154 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4155
7a292a7a 4156{
c906108c 4157 SI tmp_temp;
7a292a7a 4158 SI tmp_dregno;
c906108c
SS
4159 tmp_dregno = FLD (f_srcdst);
4160 tmp_temp = ADDSI (FLD (f_offset), * FLD (i_abase));
4161 {
4162 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
4163 * FLD (i_dst) = opval;
4164 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
4165 }
4166 {
4167 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
4168 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 4169 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c
SS
4170 }
4171 {
4172 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4173 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
7a292a7a 4174 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
c906108c
SS
4175 }
4176 {
4177 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4178 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
7a292a7a 4179 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-3", 'x', opval);
c906108c 4180 }
7a292a7a 4181}
c906108c
SS
4182
4183 return vpc;
4184#undef FLD
4185}
4186
4187/* ldq-indirect: ldq ($abase), $dst */
4188
4189SEM_PC
4190SEM_FN_NAME (i960base,ldq_indirect) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4191{
4192#define FLD(f) abuf->fields.fmt_ldq_indirect.f
4193 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4194 int UNUSED written = 0;
4195 IADDR UNUSED pc = abuf->addr;
4196 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4197
7a292a7a 4198{
c906108c 4199 SI tmp_temp;
7a292a7a 4200 SI tmp_dregno;
c906108c
SS
4201 tmp_dregno = FLD (f_srcdst);
4202 tmp_temp = * FLD (i_abase);
4203 {
4204 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
4205 * FLD (i_dst) = opval;
4206 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
4207 }
4208 {
4209 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
4210 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 4211 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c
SS
4212 }
4213 {
4214 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4215 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
7a292a7a 4216 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
c906108c
SS
4217 }
4218 {
4219 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4220 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
7a292a7a 4221 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-3", 'x', opval);
c906108c 4222 }
7a292a7a 4223}
c906108c
SS
4224
4225 return vpc;
4226#undef FLD
4227}
4228
4229/* ldq-indirect-index: ldq ($abase)[$index*S$scale], $dst */
4230
4231SEM_PC
4232SEM_FN_NAME (i960base,ldq_indirect_index) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4233{
4234#define FLD(f) abuf->fields.fmt_ldq_indirect_index.f
4235 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4236 int UNUSED written = 0;
4237 IADDR UNUSED pc = abuf->addr;
4238 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4239
7a292a7a 4240{
c906108c 4241 SI tmp_temp;
7a292a7a 4242 SI tmp_dregno;
c906108c
SS
4243 tmp_dregno = FLD (f_srcdst);
4244 tmp_temp = ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))));
4245 {
4246 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
4247 * FLD (i_dst) = opval;
4248 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
4249 }
4250 {
4251 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
4252 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 4253 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c
SS
4254 }
4255 {
4256 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4257 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
7a292a7a 4258 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
c906108c
SS
4259 }
4260 {
4261 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4262 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
7a292a7a 4263 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-3", 'x', opval);
c906108c 4264 }
7a292a7a 4265}
c906108c
SS
4266
4267 return vpc;
4268#undef FLD
4269}
4270
4271/* ldq-disp: ldq $optdisp, $dst */
4272
4273SEM_PC
4274SEM_FN_NAME (i960base,ldq_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4275{
4276#define FLD(f) abuf->fields.fmt_ldq_disp.f
4277 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4278 int UNUSED written = 0;
4279 IADDR UNUSED pc = abuf->addr;
4280 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4281
7a292a7a 4282{
c906108c 4283 SI tmp_temp;
7a292a7a 4284 SI tmp_dregno;
c906108c
SS
4285 tmp_dregno = FLD (f_srcdst);
4286 tmp_temp = FLD (f_optdisp);
4287 {
4288 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
4289 * FLD (i_dst) = opval;
4290 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
4291 }
4292 {
4293 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
4294 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 4295 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c
SS
4296 }
4297 {
4298 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4299 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
7a292a7a 4300 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
c906108c
SS
4301 }
4302 {
4303 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4304 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
7a292a7a 4305 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-3", 'x', opval);
c906108c 4306 }
7a292a7a 4307}
c906108c
SS
4308
4309 return vpc;
4310#undef FLD
4311}
4312
4313/* ldq-indirect-disp: ldq $optdisp($abase), $dst */
4314
4315SEM_PC
4316SEM_FN_NAME (i960base,ldq_indirect_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4317{
4318#define FLD(f) abuf->fields.fmt_ldq_indirect_disp.f
4319 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4320 int UNUSED written = 0;
4321 IADDR UNUSED pc = abuf->addr;
4322 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4323
7a292a7a 4324{
c906108c 4325 SI tmp_temp;
7a292a7a 4326 SI tmp_dregno;
c906108c
SS
4327 tmp_dregno = FLD (f_srcdst);
4328 tmp_temp = ADDSI (FLD (f_optdisp), * FLD (i_abase));
4329 {
4330 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
4331 * FLD (i_dst) = opval;
4332 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
4333 }
4334 {
4335 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
4336 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 4337 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c
SS
4338 }
4339 {
4340 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4341 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
7a292a7a 4342 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
c906108c
SS
4343 }
4344 {
4345 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4346 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
7a292a7a 4347 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-3", 'x', opval);
c906108c 4348 }
7a292a7a 4349}
c906108c
SS
4350
4351 return vpc;
4352#undef FLD
4353}
4354
4355/* ldq-index-disp: ldq $optdisp[$index*S$scale], $dst */
4356
4357SEM_PC
4358SEM_FN_NAME (i960base,ldq_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4359{
4360#define FLD(f) abuf->fields.fmt_ldq_index_disp.f
4361 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4362 int UNUSED written = 0;
4363 IADDR UNUSED pc = abuf->addr;
4364 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4365
7a292a7a 4366{
c906108c 4367 SI tmp_temp;
7a292a7a 4368 SI tmp_dregno;
c906108c
SS
4369 tmp_dregno = FLD (f_srcdst);
4370 tmp_temp = ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))));
4371 {
4372 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
4373 * FLD (i_dst) = opval;
4374 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
4375 }
4376 {
4377 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
4378 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 4379 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c
SS
4380 }
4381 {
4382 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4383 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
7a292a7a 4384 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
c906108c
SS
4385 }
4386 {
4387 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4388 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
7a292a7a 4389 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-3", 'x', opval);
c906108c 4390 }
7a292a7a 4391}
c906108c
SS
4392
4393 return vpc;
4394#undef FLD
4395}
4396
4397/* ldq-indirect-index-disp: ldq $optdisp($abase)[$index*S$scale], $dst */
4398
4399SEM_PC
4400SEM_FN_NAME (i960base,ldq_indirect_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4401{
4402#define FLD(f) abuf->fields.fmt_ldq_indirect_index_disp.f
4403 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4404 int UNUSED written = 0;
4405 IADDR UNUSED pc = abuf->addr;
4406 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4407
7a292a7a 4408{
c906108c 4409 SI tmp_temp;
7a292a7a 4410 SI tmp_dregno;
c906108c
SS
4411 tmp_dregno = FLD (f_srcdst);
4412 tmp_temp = ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))));
4413 {
4414 SI opval = GETMEMSI (current_cpu, pc, tmp_temp);
4415 * FLD (i_dst) = opval;
4416 TRACE_RESULT (current_cpu, abuf, "dst", 'x', opval);
4417 }
4418 {
4419 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 4));
4420 CPU (h_gr[((FLD (f_srcdst)) + (1))]) = opval;
7a292a7a 4421 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
c906108c
SS
4422 }
4423 {
4424 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4425 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
7a292a7a 4426 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
c906108c
SS
4427 }
4428 {
4429 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4430 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
7a292a7a 4431 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-3", 'x', opval);
c906108c 4432 }
7a292a7a 4433}
c906108c
SS
4434
4435 return vpc;
4436#undef FLD
4437}
4438
4439/* st-offset: st $st_src, $offset */
4440
4441SEM_PC
4442SEM_FN_NAME (i960base,st_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4443{
4444#define FLD(f) abuf->fields.fmt_st_offset.f
4445 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4446 int UNUSED written = 0;
4447 IADDR UNUSED pc = abuf->addr;
4448 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4449
4450 {
4451 SI opval = * FLD (i_st_src);
4452 SETMEMSI (current_cpu, pc, FLD (f_offset), opval);
4453 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4454 }
4455
4456 return vpc;
4457#undef FLD
4458}
4459
4460/* st-indirect-offset: st $st_src, $offset($abase) */
4461
4462SEM_PC
4463SEM_FN_NAME (i960base,st_indirect_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4464{
4465#define FLD(f) abuf->fields.fmt_st_indirect_offset.f
4466 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4467 int UNUSED written = 0;
4468 IADDR UNUSED pc = abuf->addr;
4469 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4470
4471 {
4472 SI opval = * FLD (i_st_src);
4473 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_offset), * FLD (i_abase)), opval);
4474 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4475 }
4476
4477 return vpc;
4478#undef FLD
4479}
4480
4481/* st-indirect: st $st_src, ($abase) */
4482
4483SEM_PC
4484SEM_FN_NAME (i960base,st_indirect) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4485{
4486#define FLD(f) abuf->fields.fmt_st_indirect.f
4487 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4488 int UNUSED written = 0;
4489 IADDR UNUSED pc = abuf->addr;
4490 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4491
4492 {
4493 SI opval = * FLD (i_st_src);
4494 SETMEMSI (current_cpu, pc, * FLD (i_abase), opval);
4495 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4496 }
4497
4498 return vpc;
4499#undef FLD
4500}
4501
4502/* st-indirect-index: st $st_src, ($abase)[$index*S$scale] */
4503
4504SEM_PC
4505SEM_FN_NAME (i960base,st_indirect_index) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4506{
4507#define FLD(f) abuf->fields.fmt_st_indirect_index.f
4508 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4509 int UNUSED written = 0;
4510 IADDR UNUSED pc = abuf->addr;
4511 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4512
4513 {
4514 SI opval = * FLD (i_st_src);
4515 SETMEMSI (current_cpu, pc, ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
4516 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4517 }
4518
4519 return vpc;
4520#undef FLD
4521}
4522
4523/* st-disp: st $st_src, $optdisp */
4524
4525SEM_PC
4526SEM_FN_NAME (i960base,st_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4527{
4528#define FLD(f) abuf->fields.fmt_st_disp.f
4529 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4530 int UNUSED written = 0;
4531 IADDR UNUSED pc = abuf->addr;
4532 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4533
4534 {
4535 SI opval = * FLD (i_st_src);
4536 SETMEMSI (current_cpu, pc, FLD (f_optdisp), opval);
4537 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4538 }
4539
4540 return vpc;
4541#undef FLD
4542}
4543
4544/* st-indirect-disp: st $st_src, $optdisp($abase) */
4545
4546SEM_PC
4547SEM_FN_NAME (i960base,st_indirect_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4548{
4549#define FLD(f) abuf->fields.fmt_st_indirect_disp.f
4550 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4551 int UNUSED written = 0;
4552 IADDR UNUSED pc = abuf->addr;
4553 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4554
4555 {
4556 SI opval = * FLD (i_st_src);
4557 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), * FLD (i_abase)), opval);
4558 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4559 }
4560
4561 return vpc;
4562#undef FLD
4563}
4564
4565/* st-index-disp: st $st_src, $optdisp[$index*S$scale */
4566
4567SEM_PC
4568SEM_FN_NAME (i960base,st_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4569{
4570#define FLD(f) abuf->fields.fmt_st_index_disp.f
4571 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4572 int UNUSED written = 0;
4573 IADDR UNUSED pc = abuf->addr;
4574 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4575
4576 {
4577 SI opval = * FLD (i_st_src);
4578 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
4579 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4580 }
4581
4582 return vpc;
4583#undef FLD
4584}
4585
4586/* st-indirect-index-disp: st $st_src, $optdisp($abase)[$index*S$scale] */
4587
4588SEM_PC
4589SEM_FN_NAME (i960base,st_indirect_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4590{
4591#define FLD(f) abuf->fields.fmt_st_indirect_index_disp.f
4592 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4593 int UNUSED written = 0;
4594 IADDR UNUSED pc = abuf->addr;
4595 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4596
4597 {
4598 SI opval = * FLD (i_st_src);
4599 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), opval);
4600 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4601 }
4602
4603 return vpc;
4604#undef FLD
4605}
4606
4607/* stob-offset: stob $st_src, $offset */
4608
4609SEM_PC
4610SEM_FN_NAME (i960base,stob_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4611{
4612#define FLD(f) abuf->fields.fmt_stob_offset.f
4613 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4614 int UNUSED written = 0;
4615 IADDR UNUSED pc = abuf->addr;
4616 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4617
4618 {
4619 QI opval = * FLD (i_st_src);
4620 SETMEMQI (current_cpu, pc, FLD (f_offset), opval);
4621 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4622 }
4623
4624 return vpc;
4625#undef FLD
4626}
4627
4628/* stob-indirect-offset: stob $st_src, $offset($abase) */
4629
4630SEM_PC
4631SEM_FN_NAME (i960base,stob_indirect_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4632{
4633#define FLD(f) abuf->fields.fmt_stob_indirect_offset.f
4634 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4635 int UNUSED written = 0;
4636 IADDR UNUSED pc = abuf->addr;
4637 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4638
4639 {
4640 QI opval = * FLD (i_st_src);
4641 SETMEMQI (current_cpu, pc, ADDSI (FLD (f_offset), * FLD (i_abase)), opval);
4642 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4643 }
4644
4645 return vpc;
4646#undef FLD
4647}
4648
4649/* stob-indirect: stob $st_src, ($abase) */
4650
4651SEM_PC
4652SEM_FN_NAME (i960base,stob_indirect) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4653{
4654#define FLD(f) abuf->fields.fmt_stob_indirect.f
4655 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4656 int UNUSED written = 0;
4657 IADDR UNUSED pc = abuf->addr;
4658 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4659
4660 {
4661 QI opval = * FLD (i_st_src);
4662 SETMEMQI (current_cpu, pc, * FLD (i_abase), opval);
4663 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4664 }
4665
4666 return vpc;
4667#undef FLD
4668}
4669
4670/* stob-indirect-index: stob $st_src, ($abase)[$index*S$scale] */
4671
4672SEM_PC
4673SEM_FN_NAME (i960base,stob_indirect_index) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4674{
4675#define FLD(f) abuf->fields.fmt_stob_indirect_index.f
4676 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4677 int UNUSED written = 0;
4678 IADDR UNUSED pc = abuf->addr;
4679 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4680
4681 {
4682 QI opval = * FLD (i_st_src);
4683 SETMEMQI (current_cpu, pc, ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
4684 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4685 }
4686
4687 return vpc;
4688#undef FLD
4689}
4690
4691/* stob-disp: stob $st_src, $optdisp */
4692
4693SEM_PC
4694SEM_FN_NAME (i960base,stob_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4695{
4696#define FLD(f) abuf->fields.fmt_stob_disp.f
4697 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4698 int UNUSED written = 0;
4699 IADDR UNUSED pc = abuf->addr;
4700 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4701
4702 {
4703 QI opval = * FLD (i_st_src);
4704 SETMEMQI (current_cpu, pc, FLD (f_optdisp), opval);
4705 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4706 }
4707
4708 return vpc;
4709#undef FLD
4710}
4711
4712/* stob-indirect-disp: stob $st_src, $optdisp($abase) */
4713
4714SEM_PC
4715SEM_FN_NAME (i960base,stob_indirect_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4716{
4717#define FLD(f) abuf->fields.fmt_stob_indirect_disp.f
4718 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4719 int UNUSED written = 0;
4720 IADDR UNUSED pc = abuf->addr;
4721 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4722
4723 {
4724 QI opval = * FLD (i_st_src);
4725 SETMEMQI (current_cpu, pc, ADDSI (FLD (f_optdisp), * FLD (i_abase)), opval);
4726 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4727 }
4728
4729 return vpc;
4730#undef FLD
4731}
4732
4733/* stob-index-disp: stob $st_src, $optdisp[$index*S$scale */
4734
4735SEM_PC
4736SEM_FN_NAME (i960base,stob_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4737{
4738#define FLD(f) abuf->fields.fmt_stob_index_disp.f
4739 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4740 int UNUSED written = 0;
4741 IADDR UNUSED pc = abuf->addr;
4742 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4743
4744 {
4745 QI opval = * FLD (i_st_src);
4746 SETMEMQI (current_cpu, pc, ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
4747 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4748 }
4749
4750 return vpc;
4751#undef FLD
4752}
4753
4754/* stob-indirect-index-disp: stob $st_src, $optdisp($abase)[$index*S$scale] */
4755
4756SEM_PC
4757SEM_FN_NAME (i960base,stob_indirect_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4758{
4759#define FLD(f) abuf->fields.fmt_stob_indirect_index_disp.f
4760 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4761 int UNUSED written = 0;
4762 IADDR UNUSED pc = abuf->addr;
4763 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4764
4765 {
4766 QI opval = * FLD (i_st_src);
4767 SETMEMQI (current_cpu, pc, ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), opval);
4768 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4769 }
4770
4771 return vpc;
4772#undef FLD
4773}
4774
4775/* stos-offset: stos $st_src, $offset */
4776
4777SEM_PC
4778SEM_FN_NAME (i960base,stos_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4779{
4780#define FLD(f) abuf->fields.fmt_stos_offset.f
4781 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4782 int UNUSED written = 0;
4783 IADDR UNUSED pc = abuf->addr;
4784 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4785
4786 {
4787 HI opval = * FLD (i_st_src);
4788 SETMEMHI (current_cpu, pc, FLD (f_offset), opval);
4789 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4790 }
4791
4792 return vpc;
4793#undef FLD
4794}
4795
4796/* stos-indirect-offset: stos $st_src, $offset($abase) */
4797
4798SEM_PC
4799SEM_FN_NAME (i960base,stos_indirect_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4800{
4801#define FLD(f) abuf->fields.fmt_stos_indirect_offset.f
4802 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4803 int UNUSED written = 0;
4804 IADDR UNUSED pc = abuf->addr;
4805 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4806
4807 {
4808 HI opval = * FLD (i_st_src);
4809 SETMEMHI (current_cpu, pc, ADDSI (FLD (f_offset), * FLD (i_abase)), opval);
4810 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4811 }
4812
4813 return vpc;
4814#undef FLD
4815}
4816
4817/* stos-indirect: stos $st_src, ($abase) */
4818
4819SEM_PC
4820SEM_FN_NAME (i960base,stos_indirect) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4821{
4822#define FLD(f) abuf->fields.fmt_stos_indirect.f
4823 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4824 int UNUSED written = 0;
4825 IADDR UNUSED pc = abuf->addr;
4826 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4827
4828 {
4829 HI opval = * FLD (i_st_src);
4830 SETMEMHI (current_cpu, pc, * FLD (i_abase), opval);
4831 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4832 }
4833
4834 return vpc;
4835#undef FLD
4836}
4837
4838/* stos-indirect-index: stos $st_src, ($abase)[$index*S$scale] */
4839
4840SEM_PC
4841SEM_FN_NAME (i960base,stos_indirect_index) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4842{
4843#define FLD(f) abuf->fields.fmt_stos_indirect_index.f
4844 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4845 int UNUSED written = 0;
4846 IADDR UNUSED pc = abuf->addr;
4847 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4848
4849 {
4850 HI opval = * FLD (i_st_src);
4851 SETMEMHI (current_cpu, pc, ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
4852 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4853 }
4854
4855 return vpc;
4856#undef FLD
4857}
4858
4859/* stos-disp: stos $st_src, $optdisp */
4860
4861SEM_PC
4862SEM_FN_NAME (i960base,stos_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4863{
4864#define FLD(f) abuf->fields.fmt_stos_disp.f
4865 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4866 int UNUSED written = 0;
4867 IADDR UNUSED pc = abuf->addr;
4868 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4869
4870 {
4871 HI opval = * FLD (i_st_src);
4872 SETMEMHI (current_cpu, pc, FLD (f_optdisp), opval);
4873 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4874 }
4875
4876 return vpc;
4877#undef FLD
4878}
4879
4880/* stos-indirect-disp: stos $st_src, $optdisp($abase) */
4881
4882SEM_PC
4883SEM_FN_NAME (i960base,stos_indirect_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4884{
4885#define FLD(f) abuf->fields.fmt_stos_indirect_disp.f
4886 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4887 int UNUSED written = 0;
4888 IADDR UNUSED pc = abuf->addr;
4889 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4890
4891 {
4892 HI opval = * FLD (i_st_src);
4893 SETMEMHI (current_cpu, pc, ADDSI (FLD (f_optdisp), * FLD (i_abase)), opval);
4894 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4895 }
4896
4897 return vpc;
4898#undef FLD
4899}
4900
4901/* stos-index-disp: stos $st_src, $optdisp[$index*S$scale */
4902
4903SEM_PC
4904SEM_FN_NAME (i960base,stos_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4905{
4906#define FLD(f) abuf->fields.fmt_stos_index_disp.f
4907 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4908 int UNUSED written = 0;
4909 IADDR UNUSED pc = abuf->addr;
4910 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4911
4912 {
4913 HI opval = * FLD (i_st_src);
4914 SETMEMHI (current_cpu, pc, ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
4915 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4916 }
4917
4918 return vpc;
4919#undef FLD
4920}
4921
4922/* stos-indirect-index-disp: stos $st_src, $optdisp($abase)[$index*S$scale] */
4923
4924SEM_PC
4925SEM_FN_NAME (i960base,stos_indirect_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4926{
4927#define FLD(f) abuf->fields.fmt_stos_indirect_index_disp.f
4928 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4929 int UNUSED written = 0;
4930 IADDR UNUSED pc = abuf->addr;
4931 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
4932
4933 {
4934 HI opval = * FLD (i_st_src);
4935 SETMEMHI (current_cpu, pc, ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), opval);
4936 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4937 }
4938
4939 return vpc;
4940#undef FLD
4941}
4942
4943/* stl-offset: stl $st_src, $offset */
4944
4945SEM_PC
4946SEM_FN_NAME (i960base,stl_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4947{
4948#define FLD(f) abuf->fields.fmt_stl_offset.f
4949 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4950 int UNUSED written = 0;
4951 IADDR UNUSED pc = abuf->addr;
4952 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4953
7a292a7a 4954{
c906108c
SS
4955 SI tmp_sregno;
4956 tmp_sregno = FLD (f_srcdst);
4957 {
4958 SI opval = * FLD (i_st_src);
4959 SETMEMSI (current_cpu, pc, FLD (f_offset), opval);
4960 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4961 }
4962 {
4963 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
4964 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_offset), 4), opval);
4965 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4966 }
7a292a7a 4967}
c906108c
SS
4968
4969 return vpc;
4970#undef FLD
4971}
4972
4973/* stl-indirect-offset: stl $st_src, $offset($abase) */
4974
4975SEM_PC
4976SEM_FN_NAME (i960base,stl_indirect_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4977{
4978#define FLD(f) abuf->fields.fmt_stl_indirect_offset.f
4979 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4980 int UNUSED written = 0;
4981 IADDR UNUSED pc = abuf->addr;
4982 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4983
7a292a7a 4984{
c906108c
SS
4985 SI tmp_sregno;
4986 tmp_sregno = FLD (f_srcdst);
4987 {
4988 SI opval = * FLD (i_st_src);
4989 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_offset), * FLD (i_abase)), opval);
4990 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4991 }
4992 {
4993 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
4994 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_offset), * FLD (i_abase)), 4), opval);
4995 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
4996 }
7a292a7a 4997}
c906108c
SS
4998
4999 return vpc;
5000#undef FLD
5001}
5002
5003/* stl-indirect: stl $st_src, ($abase) */
5004
5005SEM_PC
5006SEM_FN_NAME (i960base,stl_indirect) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5007{
5008#define FLD(f) abuf->fields.fmt_stl_indirect.f
5009 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5010 int UNUSED written = 0;
5011 IADDR UNUSED pc = abuf->addr;
5012 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5013
7a292a7a 5014{
c906108c
SS
5015 SI tmp_sregno;
5016 tmp_sregno = FLD (f_srcdst);
5017 {
5018 SI opval = * FLD (i_st_src);
5019 SETMEMSI (current_cpu, pc, * FLD (i_abase), opval);
5020 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5021 }
5022 {
5023 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5024 SETMEMSI (current_cpu, pc, ADDSI (* FLD (i_abase), 4), opval);
5025 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5026 }
7a292a7a 5027}
c906108c
SS
5028
5029 return vpc;
5030#undef FLD
5031}
5032
5033/* stl-indirect-index: stl $st_src, ($abase)[$index*S$scale] */
5034
5035SEM_PC
5036SEM_FN_NAME (i960base,stl_indirect_index) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5037{
5038#define FLD(f) abuf->fields.fmt_stl_indirect_index.f
5039 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5040 int UNUSED written = 0;
5041 IADDR UNUSED pc = abuf->addr;
5042 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5043
7a292a7a 5044{
c906108c
SS
5045 SI tmp_sregno;
5046 tmp_sregno = FLD (f_srcdst);
5047 {
5048 SI opval = * FLD (i_st_src);
5049 SETMEMSI (current_cpu, pc, ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
5050 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5051 }
5052 {
5053 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5054 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 4), opval);
5055 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5056 }
7a292a7a 5057}
c906108c
SS
5058
5059 return vpc;
5060#undef FLD
5061}
5062
5063/* stl-disp: stl $st_src, $optdisp */
5064
5065SEM_PC
5066SEM_FN_NAME (i960base,stl_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5067{
5068#define FLD(f) abuf->fields.fmt_stl_disp.f
5069 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5070 int UNUSED written = 0;
5071 IADDR UNUSED pc = abuf->addr;
5072 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
5073
7a292a7a 5074{
c906108c
SS
5075 SI tmp_sregno;
5076 tmp_sregno = FLD (f_srcdst);
5077 {
5078 SI opval = * FLD (i_st_src);
5079 SETMEMSI (current_cpu, pc, FLD (f_optdisp), opval);
5080 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5081 }
5082 {
5083 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5084 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), 4), opval);
5085 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5086 }
7a292a7a 5087}
c906108c
SS
5088
5089 return vpc;
5090#undef FLD
5091}
5092
5093/* stl-indirect-disp: stl $st_src, $optdisp($abase) */
5094
5095SEM_PC
5096SEM_FN_NAME (i960base,stl_indirect_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5097{
5098#define FLD(f) abuf->fields.fmt_stl_indirect_disp.f
5099 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5100 int UNUSED written = 0;
5101 IADDR UNUSED pc = abuf->addr;
5102 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
5103
7a292a7a 5104{
c906108c
SS
5105 SI tmp_sregno;
5106 tmp_sregno = FLD (f_srcdst);
5107 {
5108 SI opval = * FLD (i_st_src);
5109 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), * FLD (i_abase)), opval);
5110 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5111 }
5112 {
5113 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5114 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), * FLD (i_abase)), 4), opval);
5115 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5116 }
7a292a7a 5117}
c906108c
SS
5118
5119 return vpc;
5120#undef FLD
5121}
5122
5123/* stl-index-disp: stl $st_src, $optdisp[$index*S$scale */
5124
5125SEM_PC
5126SEM_FN_NAME (i960base,stl_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5127{
5128#define FLD(f) abuf->fields.fmt_stl_index_disp.f
5129 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5130 int UNUSED written = 0;
5131 IADDR UNUSED pc = abuf->addr;
5132 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
5133
7a292a7a 5134{
c906108c
SS
5135 SI tmp_sregno;
5136 tmp_sregno = FLD (f_srcdst);
5137 {
5138 SI opval = * FLD (i_st_src);
5139 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
5140 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5141 }
5142 {
5143 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5144 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 4), opval);
5145 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5146 }
7a292a7a 5147}
c906108c
SS
5148
5149 return vpc;
5150#undef FLD
5151}
5152
5153/* stl-indirect-index-disp: stl $st_src, $optdisp($abase)[$index*S$scale] */
5154
5155SEM_PC
5156SEM_FN_NAME (i960base,stl_indirect_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5157{
5158#define FLD(f) abuf->fields.fmt_stl_indirect_index_disp.f
5159 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5160 int UNUSED written = 0;
5161 IADDR UNUSED pc = abuf->addr;
5162 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
5163
7a292a7a 5164{
c906108c
SS
5165 SI tmp_sregno;
5166 tmp_sregno = FLD (f_srcdst);
5167 {
5168 SI opval = * FLD (i_st_src);
5169 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), opval);
5170 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5171 }
5172 {
5173 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5174 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), 4), opval);
5175 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5176 }
7a292a7a 5177}
c906108c
SS
5178
5179 return vpc;
5180#undef FLD
5181}
5182
5183/* stt-offset: stt $st_src, $offset */
5184
5185SEM_PC
5186SEM_FN_NAME (i960base,stt_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5187{
5188#define FLD(f) abuf->fields.fmt_stt_offset.f
5189 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5190 int UNUSED written = 0;
5191 IADDR UNUSED pc = abuf->addr;
5192 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5193
7a292a7a 5194{
c906108c
SS
5195 SI tmp_sregno;
5196 tmp_sregno = FLD (f_srcdst);
5197 {
5198 SI opval = * FLD (i_st_src);
5199 SETMEMSI (current_cpu, pc, FLD (f_offset), opval);
5200 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5201 }
5202 {
5203 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5204 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_offset), 4), opval);
5205 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5206 }
5207 {
5208 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5209 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_offset), 8), opval);
5210 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5211 }
7a292a7a 5212}
c906108c
SS
5213
5214 return vpc;
5215#undef FLD
5216}
5217
5218/* stt-indirect-offset: stt $st_src, $offset($abase) */
5219
5220SEM_PC
5221SEM_FN_NAME (i960base,stt_indirect_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5222{
5223#define FLD(f) abuf->fields.fmt_stt_indirect_offset.f
5224 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5225 int UNUSED written = 0;
5226 IADDR UNUSED pc = abuf->addr;
5227 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5228
7a292a7a 5229{
c906108c
SS
5230 SI tmp_sregno;
5231 tmp_sregno = FLD (f_srcdst);
5232 {
5233 SI opval = * FLD (i_st_src);
5234 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_offset), * FLD (i_abase)), opval);
5235 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5236 }
5237 {
5238 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5239 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_offset), * FLD (i_abase)), 4), opval);
5240 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5241 }
5242 {
5243 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5244 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_offset), * FLD (i_abase)), 8), opval);
5245 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5246 }
7a292a7a 5247}
c906108c
SS
5248
5249 return vpc;
5250#undef FLD
5251}
5252
5253/* stt-indirect: stt $st_src, ($abase) */
5254
5255SEM_PC
5256SEM_FN_NAME (i960base,stt_indirect) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5257{
5258#define FLD(f) abuf->fields.fmt_stt_indirect.f
5259 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5260 int UNUSED written = 0;
5261 IADDR UNUSED pc = abuf->addr;
5262 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5263
7a292a7a 5264{
c906108c
SS
5265 SI tmp_sregno;
5266 tmp_sregno = FLD (f_srcdst);
5267 {
5268 SI opval = * FLD (i_st_src);
5269 SETMEMSI (current_cpu, pc, * FLD (i_abase), opval);
5270 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5271 }
5272 {
5273 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5274 SETMEMSI (current_cpu, pc, ADDSI (* FLD (i_abase), 4), opval);
5275 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5276 }
5277 {
5278 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5279 SETMEMSI (current_cpu, pc, ADDSI (* FLD (i_abase), 8), opval);
5280 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5281 }
7a292a7a 5282}
c906108c
SS
5283
5284 return vpc;
5285#undef FLD
5286}
5287
5288/* stt-indirect-index: stt $st_src, ($abase)[$index*S$scale] */
5289
5290SEM_PC
5291SEM_FN_NAME (i960base,stt_indirect_index) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5292{
5293#define FLD(f) abuf->fields.fmt_stt_indirect_index.f
5294 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5295 int UNUSED written = 0;
5296 IADDR UNUSED pc = abuf->addr;
5297 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5298
7a292a7a 5299{
c906108c
SS
5300 SI tmp_sregno;
5301 tmp_sregno = FLD (f_srcdst);
5302 {
5303 SI opval = * FLD (i_st_src);
5304 SETMEMSI (current_cpu, pc, ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
5305 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5306 }
5307 {
5308 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5309 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 4), opval);
5310 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5311 }
5312 {
5313 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5314 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 8), opval);
5315 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5316 }
7a292a7a 5317}
c906108c
SS
5318
5319 return vpc;
5320#undef FLD
5321}
5322
5323/* stt-disp: stt $st_src, $optdisp */
5324
5325SEM_PC
5326SEM_FN_NAME (i960base,stt_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5327{
5328#define FLD(f) abuf->fields.fmt_stt_disp.f
5329 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5330 int UNUSED written = 0;
5331 IADDR UNUSED pc = abuf->addr;
5332 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
5333
7a292a7a 5334{
c906108c
SS
5335 SI tmp_sregno;
5336 tmp_sregno = FLD (f_srcdst);
5337 {
5338 SI opval = * FLD (i_st_src);
5339 SETMEMSI (current_cpu, pc, FLD (f_optdisp), opval);
5340 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5341 }
5342 {
5343 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5344 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), 4), opval);
5345 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5346 }
5347 {
5348 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5349 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), 8), opval);
5350 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5351 }
7a292a7a 5352}
c906108c
SS
5353
5354 return vpc;
5355#undef FLD
5356}
5357
5358/* stt-indirect-disp: stt $st_src, $optdisp($abase) */
5359
5360SEM_PC
5361SEM_FN_NAME (i960base,stt_indirect_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5362{
5363#define FLD(f) abuf->fields.fmt_stt_indirect_disp.f
5364 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5365 int UNUSED written = 0;
5366 IADDR UNUSED pc = abuf->addr;
5367 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
5368
7a292a7a 5369{
c906108c
SS
5370 SI tmp_sregno;
5371 tmp_sregno = FLD (f_srcdst);
5372 {
5373 SI opval = * FLD (i_st_src);
5374 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), * FLD (i_abase)), opval);
5375 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5376 }
5377 {
5378 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5379 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), * FLD (i_abase)), 4), opval);
5380 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5381 }
5382 {
5383 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5384 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), * FLD (i_abase)), 8), opval);
5385 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5386 }
7a292a7a 5387}
c906108c
SS
5388
5389 return vpc;
5390#undef FLD
5391}
5392
5393/* stt-index-disp: stt $st_src, $optdisp[$index*S$scale */
5394
5395SEM_PC
5396SEM_FN_NAME (i960base,stt_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5397{
5398#define FLD(f) abuf->fields.fmt_stt_index_disp.f
5399 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5400 int UNUSED written = 0;
5401 IADDR UNUSED pc = abuf->addr;
5402 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
5403
7a292a7a 5404{
c906108c
SS
5405 SI tmp_sregno;
5406 tmp_sregno = FLD (f_srcdst);
5407 {
5408 SI opval = * FLD (i_st_src);
5409 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
5410 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5411 }
5412 {
5413 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5414 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 4), opval);
5415 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5416 }
5417 {
5418 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5419 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 8), opval);
5420 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5421 }
7a292a7a 5422}
c906108c
SS
5423
5424 return vpc;
5425#undef FLD
5426}
5427
5428/* stt-indirect-index-disp: stt $st_src, $optdisp($abase)[$index*S$scale] */
5429
5430SEM_PC
5431SEM_FN_NAME (i960base,stt_indirect_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5432{
5433#define FLD(f) abuf->fields.fmt_stt_indirect_index_disp.f
5434 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5435 int UNUSED written = 0;
5436 IADDR UNUSED pc = abuf->addr;
5437 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
5438
7a292a7a 5439{
c906108c
SS
5440 SI tmp_sregno;
5441 tmp_sregno = FLD (f_srcdst);
5442 {
5443 SI opval = * FLD (i_st_src);
5444 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), opval);
5445 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5446 }
5447 {
5448 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5449 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), 4), opval);
5450 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5451 }
5452 {
5453 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5454 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), 8), opval);
5455 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5456 }
7a292a7a 5457}
c906108c
SS
5458
5459 return vpc;
5460#undef FLD
5461}
5462
5463/* stq-offset: stq $st_src, $offset */
5464
5465SEM_PC
5466SEM_FN_NAME (i960base,stq_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5467{
5468#define FLD(f) abuf->fields.fmt_stq_offset.f
5469 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5470 int UNUSED written = 0;
5471 IADDR UNUSED pc = abuf->addr;
5472 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5473
7a292a7a 5474{
c906108c
SS
5475 SI tmp_sregno;
5476 tmp_sregno = FLD (f_srcdst);
5477 {
5478 SI opval = * FLD (i_st_src);
5479 SETMEMSI (current_cpu, pc, FLD (f_offset), opval);
5480 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5481 }
5482 {
5483 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5484 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_offset), 4), opval);
5485 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5486 }
5487 {
5488 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5489 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_offset), 8), opval);
5490 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5491 }
5492 {
5493 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (3))]);
5494 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_offset), 12), opval);
5495 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5496 }
7a292a7a 5497}
c906108c
SS
5498
5499 return vpc;
5500#undef FLD
5501}
5502
5503/* stq-indirect-offset: stq $st_src, $offset($abase) */
5504
5505SEM_PC
5506SEM_FN_NAME (i960base,stq_indirect_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5507{
5508#define FLD(f) abuf->fields.fmt_stq_indirect_offset.f
5509 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5510 int UNUSED written = 0;
5511 IADDR UNUSED pc = abuf->addr;
5512 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5513
7a292a7a 5514{
c906108c
SS
5515 SI tmp_sregno;
5516 tmp_sregno = FLD (f_srcdst);
5517 {
5518 SI opval = * FLD (i_st_src);
5519 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_offset), * FLD (i_abase)), opval);
5520 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5521 }
5522 {
5523 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5524 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_offset), * FLD (i_abase)), 4), opval);
5525 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5526 }
5527 {
5528 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5529 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_offset), * FLD (i_abase)), 8), opval);
5530 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5531 }
5532 {
5533 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (3))]);
5534 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_offset), * FLD (i_abase)), 12), opval);
5535 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5536 }
7a292a7a 5537}
c906108c
SS
5538
5539 return vpc;
5540#undef FLD
5541}
5542
5543/* stq-indirect: stq $st_src, ($abase) */
5544
5545SEM_PC
5546SEM_FN_NAME (i960base,stq_indirect) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5547{
5548#define FLD(f) abuf->fields.fmt_stq_indirect.f
5549 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5550 int UNUSED written = 0;
5551 IADDR UNUSED pc = abuf->addr;
5552 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5553
7a292a7a 5554{
c906108c
SS
5555 SI tmp_sregno;
5556 tmp_sregno = FLD (f_srcdst);
5557 {
5558 SI opval = * FLD (i_st_src);
5559 SETMEMSI (current_cpu, pc, * FLD (i_abase), opval);
5560 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5561 }
5562 {
5563 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5564 SETMEMSI (current_cpu, pc, ADDSI (* FLD (i_abase), 4), opval);
5565 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5566 }
5567 {
5568 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5569 SETMEMSI (current_cpu, pc, ADDSI (* FLD (i_abase), 8), opval);
5570 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5571 }
5572 {
5573 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (3))]);
5574 SETMEMSI (current_cpu, pc, ADDSI (* FLD (i_abase), 12), opval);
5575 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5576 }
7a292a7a 5577}
c906108c
SS
5578
5579 return vpc;
5580#undef FLD
5581}
5582
5583/* stq-indirect-index: stq $st_src, ($abase)[$index*S$scale] */
5584
5585SEM_PC
5586SEM_FN_NAME (i960base,stq_indirect_index) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5587{
5588#define FLD(f) abuf->fields.fmt_stq_indirect_index.f
5589 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5590 int UNUSED written = 0;
5591 IADDR UNUSED pc = abuf->addr;
5592 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5593
7a292a7a 5594{
c906108c
SS
5595 SI tmp_sregno;
5596 tmp_sregno = FLD (f_srcdst);
5597 {
5598 SI opval = * FLD (i_st_src);
5599 SETMEMSI (current_cpu, pc, ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
5600 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5601 }
5602 {
5603 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5604 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 4), opval);
5605 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5606 }
5607 {
5608 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5609 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 8), opval);
5610 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5611 }
5612 {
5613 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (3))]);
5614 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 12), opval);
5615 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5616 }
7a292a7a 5617}
c906108c
SS
5618
5619 return vpc;
5620#undef FLD
5621}
5622
5623/* stq-disp: stq $st_src, $optdisp */
5624
5625SEM_PC
5626SEM_FN_NAME (i960base,stq_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5627{
5628#define FLD(f) abuf->fields.fmt_stq_disp.f
5629 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5630 int UNUSED written = 0;
5631 IADDR UNUSED pc = abuf->addr;
5632 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
5633
7a292a7a 5634{
c906108c
SS
5635 SI tmp_sregno;
5636 tmp_sregno = FLD (f_srcdst);
5637 {
5638 SI opval = * FLD (i_st_src);
5639 SETMEMSI (current_cpu, pc, FLD (f_optdisp), opval);
5640 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5641 }
5642 {
5643 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5644 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), 4), opval);
5645 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5646 }
5647 {
5648 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5649 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), 8), opval);
5650 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5651 }
5652 {
5653 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (3))]);
5654 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), 12), opval);
5655 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5656 }
7a292a7a 5657}
c906108c
SS
5658
5659 return vpc;
5660#undef FLD
5661}
5662
5663/* stq-indirect-disp: stq $st_src, $optdisp($abase) */
5664
5665SEM_PC
5666SEM_FN_NAME (i960base,stq_indirect_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5667{
5668#define FLD(f) abuf->fields.fmt_stq_indirect_disp.f
5669 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5670 int UNUSED written = 0;
5671 IADDR UNUSED pc = abuf->addr;
5672 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
5673
7a292a7a 5674{
c906108c
SS
5675 SI tmp_sregno;
5676 tmp_sregno = FLD (f_srcdst);
5677 {
5678 SI opval = * FLD (i_st_src);
5679 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), * FLD (i_abase)), opval);
5680 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5681 }
5682 {
5683 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5684 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), * FLD (i_abase)), 4), opval);
5685 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5686 }
5687 {
5688 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5689 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), * FLD (i_abase)), 8), opval);
5690 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5691 }
5692 {
5693 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (3))]);
5694 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), * FLD (i_abase)), 12), opval);
5695 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5696 }
7a292a7a 5697}
c906108c
SS
5698
5699 return vpc;
5700#undef FLD
5701}
5702
5703/* stq-index-disp: stq $st_src, $optdisp[$index*S$scale */
5704
5705SEM_PC
5706SEM_FN_NAME (i960base,stq_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5707{
5708#define FLD(f) abuf->fields.fmt_stq_index_disp.f
5709 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5710 int UNUSED written = 0;
5711 IADDR UNUSED pc = abuf->addr;
5712 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
5713
7a292a7a 5714{
c906108c
SS
5715 SI tmp_sregno;
5716 tmp_sregno = FLD (f_srcdst);
5717 {
5718 SI opval = * FLD (i_st_src);
5719 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), opval);
5720 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5721 }
5722 {
5723 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5724 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 4), opval);
5725 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5726 }
5727 {
5728 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5729 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 8), opval);
5730 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5731 }
5732 {
5733 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (3))]);
5734 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale)))), 12), opval);
5735 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5736 }
7a292a7a 5737}
c906108c
SS
5738
5739 return vpc;
5740#undef FLD
5741}
5742
5743/* stq-indirect-index-disp: stq $st_src, $optdisp($abase)[$index*S$scale] */
5744
5745SEM_PC
5746SEM_FN_NAME (i960base,stq_indirect_index_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5747{
5748#define FLD(f) abuf->fields.fmt_stq_indirect_index_disp.f
5749 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5750 int UNUSED written = 0;
5751 IADDR UNUSED pc = abuf->addr;
5752 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
5753
7a292a7a 5754{
c906108c
SS
5755 SI tmp_sregno;
5756 tmp_sregno = FLD (f_srcdst);
5757 {
5758 SI opval = * FLD (i_st_src);
5759 SETMEMSI (current_cpu, pc, ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), opval);
5760 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5761 }
5762 {
5763 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (1))]);
5764 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), 4), opval);
5765 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5766 }
5767 {
5768 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (2))]);
5769 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), 8), opval);
5770 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5771 }
5772 {
5773 SI opval = CPU (h_gr[((FLD (f_srcdst)) + (3))]);
5774 SETMEMSI (current_cpu, pc, ADDSI (ADDSI (FLD (f_optdisp), ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))))), 12), opval);
5775 TRACE_RESULT (current_cpu, abuf, "memory", 'x', opval);
5776 }
7a292a7a 5777}
c906108c
SS
5778
5779 return vpc;
5780#undef FLD
5781}
5782
5783/* cmpobe-reg: cmpobe $br_src1, $br_src2, $br_disp */
5784
5785SEM_PC
5786SEM_FN_NAME (i960base,cmpobe_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5787{
5788#define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
5789 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5790 int UNUSED written = 0;
5791 IADDR UNUSED pc = abuf->addr;
5792 SEM_BRANCH_INIT
5793 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5794
5795if (EQSI (* FLD (i_br_src1), * FLD (i_br_src2))) {
5796 {
5797 USI opval = FLD (i_br_disp);
5798 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5799 written |= (1 << 3);
5800 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5801 }
5802}
5803
5804 abuf->written = written;
5805 SEM_BRANCH_FINI (vpc);
5806 return vpc;
5807#undef FLD
5808}
5809
5810/* cmpobe-lit: cmpobe $br_lit1, $br_src2, $br_disp */
5811
5812SEM_PC
5813SEM_FN_NAME (i960base,cmpobe_lit) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5814{
5815#define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
5816 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5817 int UNUSED written = 0;
5818 IADDR UNUSED pc = abuf->addr;
5819 SEM_BRANCH_INIT
5820 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5821
5822if (EQSI (FLD (f_br_src1), * FLD (i_br_src2))) {
5823 {
5824 USI opval = FLD (i_br_disp);
5825 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5826 written |= (1 << 3);
5827 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5828 }
5829}
5830
5831 abuf->written = written;
5832 SEM_BRANCH_FINI (vpc);
5833 return vpc;
5834#undef FLD
5835}
5836
5837/* cmpobne-reg: cmpobne $br_src1, $br_src2, $br_disp */
5838
5839SEM_PC
5840SEM_FN_NAME (i960base,cmpobne_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5841{
5842#define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
5843 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5844 int UNUSED written = 0;
5845 IADDR UNUSED pc = abuf->addr;
5846 SEM_BRANCH_INIT
5847 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5848
5849if (NESI (* FLD (i_br_src1), * FLD (i_br_src2))) {
5850 {
5851 USI opval = FLD (i_br_disp);
5852 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5853 written |= (1 << 3);
5854 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5855 }
5856}
5857
5858 abuf->written = written;
5859 SEM_BRANCH_FINI (vpc);
5860 return vpc;
5861#undef FLD
5862}
5863
5864/* cmpobne-lit: cmpobne $br_lit1, $br_src2, $br_disp */
5865
5866SEM_PC
5867SEM_FN_NAME (i960base,cmpobne_lit) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5868{
5869#define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
5870 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5871 int UNUSED written = 0;
5872 IADDR UNUSED pc = abuf->addr;
5873 SEM_BRANCH_INIT
5874 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5875
5876if (NESI (FLD (f_br_src1), * FLD (i_br_src2))) {
5877 {
5878 USI opval = FLD (i_br_disp);
5879 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5880 written |= (1 << 3);
5881 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5882 }
5883}
5884
5885 abuf->written = written;
5886 SEM_BRANCH_FINI (vpc);
5887 return vpc;
5888#undef FLD
5889}
5890
5891/* cmpobl-reg: cmpobl $br_src1, $br_src2, $br_disp */
5892
5893SEM_PC
5894SEM_FN_NAME (i960base,cmpobl_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5895{
5896#define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_reg.f
5897 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5898 int UNUSED written = 0;
5899 IADDR UNUSED pc = abuf->addr;
5900 SEM_BRANCH_INIT
5901 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5902
5903if (LTUSI (* FLD (i_br_src1), * FLD (i_br_src2))) {
5904 {
5905 USI opval = FLD (i_br_disp);
5906 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5907 written |= (1 << 3);
5908 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5909 }
5910}
5911
5912 abuf->written = written;
5913 SEM_BRANCH_FINI (vpc);
5914 return vpc;
5915#undef FLD
5916}
5917
5918/* cmpobl-lit: cmpobl $br_lit1, $br_src2, $br_disp */
5919
5920SEM_PC
5921SEM_FN_NAME (i960base,cmpobl_lit) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5922{
5923#define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_lit.f
5924 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5925 int UNUSED written = 0;
5926 IADDR UNUSED pc = abuf->addr;
5927 SEM_BRANCH_INIT
5928 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5929
5930if (LTUSI (FLD (f_br_src1), * FLD (i_br_src2))) {
5931 {
5932 USI opval = FLD (i_br_disp);
5933 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5934 written |= (1 << 3);
5935 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5936 }
5937}
5938
5939 abuf->written = written;
5940 SEM_BRANCH_FINI (vpc);
5941 return vpc;
5942#undef FLD
5943}
5944
5945/* cmpoble-reg: cmpoble $br_src1, $br_src2, $br_disp */
5946
5947SEM_PC
5948SEM_FN_NAME (i960base,cmpoble_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5949{
5950#define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_reg.f
5951 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5952 int UNUSED written = 0;
5953 IADDR UNUSED pc = abuf->addr;
5954 SEM_BRANCH_INIT
5955 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5956
5957if (LEUSI (* FLD (i_br_src1), * FLD (i_br_src2))) {
5958 {
5959 USI opval = FLD (i_br_disp);
5960 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5961 written |= (1 << 3);
5962 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5963 }
5964}
5965
5966 abuf->written = written;
5967 SEM_BRANCH_FINI (vpc);
5968 return vpc;
5969#undef FLD
5970}
5971
5972/* cmpoble-lit: cmpoble $br_lit1, $br_src2, $br_disp */
5973
5974SEM_PC
5975SEM_FN_NAME (i960base,cmpoble_lit) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5976{
5977#define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_lit.f
5978 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5979 int UNUSED written = 0;
5980 IADDR UNUSED pc = abuf->addr;
5981 SEM_BRANCH_INIT
5982 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5983
5984if (LEUSI (FLD (f_br_src1), * FLD (i_br_src2))) {
5985 {
5986 USI opval = FLD (i_br_disp);
5987 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
5988 written |= (1 << 3);
5989 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
5990 }
5991}
5992
5993 abuf->written = written;
5994 SEM_BRANCH_FINI (vpc);
5995 return vpc;
5996#undef FLD
5997}
5998
5999/* cmpobg-reg: cmpobg $br_src1, $br_src2, $br_disp */
6000
6001SEM_PC
6002SEM_FN_NAME (i960base,cmpobg_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6003{
6004#define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_reg.f
6005 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6006 int UNUSED written = 0;
6007 IADDR UNUSED pc = abuf->addr;
6008 SEM_BRANCH_INIT
6009 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6010
6011if (GTUSI (* FLD (i_br_src1), * FLD (i_br_src2))) {
6012 {
6013 USI opval = FLD (i_br_disp);
6014 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6015 written |= (1 << 3);
6016 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6017 }
6018}
6019
6020 abuf->written = written;
6021 SEM_BRANCH_FINI (vpc);
6022 return vpc;
6023#undef FLD
6024}
6025
6026/* cmpobg-lit: cmpobg $br_lit1, $br_src2, $br_disp */
6027
6028SEM_PC
6029SEM_FN_NAME (i960base,cmpobg_lit) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6030{
6031#define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_lit.f
6032 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6033 int UNUSED written = 0;
6034 IADDR UNUSED pc = abuf->addr;
6035 SEM_BRANCH_INIT
6036 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6037
6038if (GTUSI (FLD (f_br_src1), * FLD (i_br_src2))) {
6039 {
6040 USI opval = FLD (i_br_disp);
6041 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6042 written |= (1 << 3);
6043 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6044 }
6045}
6046
6047 abuf->written = written;
6048 SEM_BRANCH_FINI (vpc);
6049 return vpc;
6050#undef FLD
6051}
6052
6053/* cmpobge-reg: cmpobge $br_src1, $br_src2, $br_disp */
6054
6055SEM_PC
6056SEM_FN_NAME (i960base,cmpobge_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6057{
6058#define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_reg.f
6059 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6060 int UNUSED written = 0;
6061 IADDR UNUSED pc = abuf->addr;
6062 SEM_BRANCH_INIT
6063 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6064
6065if (GEUSI (* FLD (i_br_src1), * FLD (i_br_src2))) {
6066 {
6067 USI opval = FLD (i_br_disp);
6068 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6069 written |= (1 << 3);
6070 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6071 }
6072}
6073
6074 abuf->written = written;
6075 SEM_BRANCH_FINI (vpc);
6076 return vpc;
6077#undef FLD
6078}
6079
6080/* cmpobge-lit: cmpobge $br_lit1, $br_src2, $br_disp */
6081
6082SEM_PC
6083SEM_FN_NAME (i960base,cmpobge_lit) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6084{
6085#define FLD(f) abuf->fields.cti.fields.fmt_cmpobl_lit.f
6086 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6087 int UNUSED written = 0;
6088 IADDR UNUSED pc = abuf->addr;
6089 SEM_BRANCH_INIT
6090 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6091
6092if (GEUSI (FLD (f_br_src1), * FLD (i_br_src2))) {
6093 {
6094 USI opval = FLD (i_br_disp);
6095 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6096 written |= (1 << 3);
6097 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6098 }
6099}
6100
6101 abuf->written = written;
6102 SEM_BRANCH_FINI (vpc);
6103 return vpc;
6104#undef FLD
6105}
6106
6107/* cmpibe-reg: cmpibe $br_src1, $br_src2, $br_disp */
6108
6109SEM_PC
6110SEM_FN_NAME (i960base,cmpibe_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6111{
6112#define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
6113 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6114 int UNUSED written = 0;
6115 IADDR UNUSED pc = abuf->addr;
6116 SEM_BRANCH_INIT
6117 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6118
6119if (EQSI (* FLD (i_br_src1), * FLD (i_br_src2))) {
6120 {
6121 USI opval = FLD (i_br_disp);
6122 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6123 written |= (1 << 3);
6124 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6125 }
6126}
6127
6128 abuf->written = written;
6129 SEM_BRANCH_FINI (vpc);
6130 return vpc;
6131#undef FLD
6132}
6133
6134/* cmpibe-lit: cmpibe $br_lit1, $br_src2, $br_disp */
6135
6136SEM_PC
6137SEM_FN_NAME (i960base,cmpibe_lit) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6138{
6139#define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
6140 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6141 int UNUSED written = 0;
6142 IADDR UNUSED pc = abuf->addr;
6143 SEM_BRANCH_INIT
6144 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6145
6146if (EQSI (FLD (f_br_src1), * FLD (i_br_src2))) {
6147 {
6148 USI opval = FLD (i_br_disp);
6149 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6150 written |= (1 << 3);
6151 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6152 }
6153}
6154
6155 abuf->written = written;
6156 SEM_BRANCH_FINI (vpc);
6157 return vpc;
6158#undef FLD
6159}
6160
6161/* cmpibne-reg: cmpibne $br_src1, $br_src2, $br_disp */
6162
6163SEM_PC
6164SEM_FN_NAME (i960base,cmpibne_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6165{
6166#define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
6167 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6168 int UNUSED written = 0;
6169 IADDR UNUSED pc = abuf->addr;
6170 SEM_BRANCH_INIT
6171 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6172
6173if (NESI (* FLD (i_br_src1), * FLD (i_br_src2))) {
6174 {
6175 USI opval = FLD (i_br_disp);
6176 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6177 written |= (1 << 3);
6178 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6179 }
6180}
6181
6182 abuf->written = written;
6183 SEM_BRANCH_FINI (vpc);
6184 return vpc;
6185#undef FLD
6186}
6187
6188/* cmpibne-lit: cmpibne $br_lit1, $br_src2, $br_disp */
6189
6190SEM_PC
6191SEM_FN_NAME (i960base,cmpibne_lit) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6192{
6193#define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
6194 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6195 int UNUSED written = 0;
6196 IADDR UNUSED pc = abuf->addr;
6197 SEM_BRANCH_INIT
6198 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6199
6200if (NESI (FLD (f_br_src1), * FLD (i_br_src2))) {
6201 {
6202 USI opval = FLD (i_br_disp);
6203 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6204 written |= (1 << 3);
6205 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6206 }
6207}
6208
6209 abuf->written = written;
6210 SEM_BRANCH_FINI (vpc);
6211 return vpc;
6212#undef FLD
6213}
6214
6215/* cmpibl-reg: cmpibl $br_src1, $br_src2, $br_disp */
6216
6217SEM_PC
6218SEM_FN_NAME (i960base,cmpibl_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6219{
6220#define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
6221 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6222 int UNUSED written = 0;
6223 IADDR UNUSED pc = abuf->addr;
6224 SEM_BRANCH_INIT
6225 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6226
6227if (LTSI (* FLD (i_br_src1), * FLD (i_br_src2))) {
6228 {
6229 USI opval = FLD (i_br_disp);
6230 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6231 written |= (1 << 3);
6232 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6233 }
6234}
6235
6236 abuf->written = written;
6237 SEM_BRANCH_FINI (vpc);
6238 return vpc;
6239#undef FLD
6240}
6241
6242/* cmpibl-lit: cmpibl $br_lit1, $br_src2, $br_disp */
6243
6244SEM_PC
6245SEM_FN_NAME (i960base,cmpibl_lit) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6246{
6247#define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
6248 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6249 int UNUSED written = 0;
6250 IADDR UNUSED pc = abuf->addr;
6251 SEM_BRANCH_INIT
6252 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6253
6254if (LTSI (FLD (f_br_src1), * FLD (i_br_src2))) {
6255 {
6256 USI opval = FLD (i_br_disp);
6257 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6258 written |= (1 << 3);
6259 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6260 }
6261}
6262
6263 abuf->written = written;
6264 SEM_BRANCH_FINI (vpc);
6265 return vpc;
6266#undef FLD
6267}
6268
6269/* cmpible-reg: cmpible $br_src1, $br_src2, $br_disp */
6270
6271SEM_PC
6272SEM_FN_NAME (i960base,cmpible_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6273{
6274#define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
6275 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6276 int UNUSED written = 0;
6277 IADDR UNUSED pc = abuf->addr;
6278 SEM_BRANCH_INIT
6279 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6280
6281if (LESI (* FLD (i_br_src1), * FLD (i_br_src2))) {
6282 {
6283 USI opval = FLD (i_br_disp);
6284 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6285 written |= (1 << 3);
6286 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6287 }
6288}
6289
6290 abuf->written = written;
6291 SEM_BRANCH_FINI (vpc);
6292 return vpc;
6293#undef FLD
6294}
6295
6296/* cmpible-lit: cmpible $br_lit1, $br_src2, $br_disp */
6297
6298SEM_PC
6299SEM_FN_NAME (i960base,cmpible_lit) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6300{
6301#define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
6302 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6303 int UNUSED written = 0;
6304 IADDR UNUSED pc = abuf->addr;
6305 SEM_BRANCH_INIT
6306 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6307
6308if (LESI (FLD (f_br_src1), * FLD (i_br_src2))) {
6309 {
6310 USI opval = FLD (i_br_disp);
6311 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6312 written |= (1 << 3);
6313 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6314 }
6315}
6316
6317 abuf->written = written;
6318 SEM_BRANCH_FINI (vpc);
6319 return vpc;
6320#undef FLD
6321}
6322
6323/* cmpibg-reg: cmpibg $br_src1, $br_src2, $br_disp */
6324
6325SEM_PC
6326SEM_FN_NAME (i960base,cmpibg_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6327{
6328#define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
6329 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6330 int UNUSED written = 0;
6331 IADDR UNUSED pc = abuf->addr;
6332 SEM_BRANCH_INIT
6333 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6334
6335if (GTSI (* FLD (i_br_src1), * FLD (i_br_src2))) {
6336 {
6337 USI opval = FLD (i_br_disp);
6338 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6339 written |= (1 << 3);
6340 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6341 }
6342}
6343
6344 abuf->written = written;
6345 SEM_BRANCH_FINI (vpc);
6346 return vpc;
6347#undef FLD
6348}
6349
6350/* cmpibg-lit: cmpibg $br_lit1, $br_src2, $br_disp */
6351
6352SEM_PC
6353SEM_FN_NAME (i960base,cmpibg_lit) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6354{
6355#define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
6356 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6357 int UNUSED written = 0;
6358 IADDR UNUSED pc = abuf->addr;
6359 SEM_BRANCH_INIT
6360 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6361
6362if (GTSI (FLD (f_br_src1), * FLD (i_br_src2))) {
6363 {
6364 USI opval = FLD (i_br_disp);
6365 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6366 written |= (1 << 3);
6367 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6368 }
6369}
6370
6371 abuf->written = written;
6372 SEM_BRANCH_FINI (vpc);
6373 return vpc;
6374#undef FLD
6375}
6376
6377/* cmpibge-reg: cmpibge $br_src1, $br_src2, $br_disp */
6378
6379SEM_PC
6380SEM_FN_NAME (i960base,cmpibge_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6381{
6382#define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_reg.f
6383 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6384 int UNUSED written = 0;
6385 IADDR UNUSED pc = abuf->addr;
6386 SEM_BRANCH_INIT
6387 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6388
6389if (GESI (* FLD (i_br_src1), * FLD (i_br_src2))) {
6390 {
6391 USI opval = FLD (i_br_disp);
6392 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6393 written |= (1 << 3);
6394 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6395 }
6396}
6397
6398 abuf->written = written;
6399 SEM_BRANCH_FINI (vpc);
6400 return vpc;
6401#undef FLD
6402}
6403
6404/* cmpibge-lit: cmpibge $br_lit1, $br_src2, $br_disp */
6405
6406SEM_PC
6407SEM_FN_NAME (i960base,cmpibge_lit) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6408{
6409#define FLD(f) abuf->fields.cti.fields.fmt_cmpobe_lit.f
6410 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6411 int UNUSED written = 0;
6412 IADDR UNUSED pc = abuf->addr;
6413 SEM_BRANCH_INIT
6414 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6415
6416if (GESI (FLD (f_br_src1), * FLD (i_br_src2))) {
6417 {
6418 USI opval = FLD (i_br_disp);
6419 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6420 written |= (1 << 3);
6421 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6422 }
6423}
6424
6425 abuf->written = written;
6426 SEM_BRANCH_FINI (vpc);
6427 return vpc;
6428#undef FLD
6429}
6430
6431/* bbc-reg: bbc $br_src1, $br_src2, $br_disp */
6432
6433SEM_PC
6434SEM_FN_NAME (i960base,bbc_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6435{
6436#define FLD(f) abuf->fields.cti.fields.fmt_bbc_reg.f
6437 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6438 int UNUSED written = 0;
6439 IADDR UNUSED pc = abuf->addr;
6440 SEM_BRANCH_INIT
6441 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6442
6443if (EQSI (ANDSI (SLLSI (1, * FLD (i_br_src1)), * FLD (i_br_src2)), 0)) {
6444 {
6445 USI opval = FLD (i_br_disp);
6446 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6447 written |= (1 << 3);
6448 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6449 }
6450}
6451
6452 abuf->written = written;
6453 SEM_BRANCH_FINI (vpc);
6454 return vpc;
6455#undef FLD
6456}
6457
6458/* bbc-lit: bbc $br_lit1, $br_src2, $br_disp */
6459
6460SEM_PC
6461SEM_FN_NAME (i960base,bbc_lit) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6462{
6463#define FLD(f) abuf->fields.cti.fields.fmt_bbc_lit.f
6464 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6465 int UNUSED written = 0;
6466 IADDR UNUSED pc = abuf->addr;
6467 SEM_BRANCH_INIT
6468 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6469
6470if (EQSI (ANDSI (SLLSI (1, FLD (f_br_src1)), * FLD (i_br_src2)), 0)) {
6471 {
6472 USI opval = FLD (i_br_disp);
6473 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6474 written |= (1 << 3);
6475 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6476 }
6477}
6478
6479 abuf->written = written;
6480 SEM_BRANCH_FINI (vpc);
6481 return vpc;
6482#undef FLD
6483}
6484
6485/* bbs-reg: bbs $br_src1, $br_src2, $br_disp */
6486
6487SEM_PC
6488SEM_FN_NAME (i960base,bbs_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6489{
6490#define FLD(f) abuf->fields.cti.fields.fmt_bbc_reg.f
6491 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6492 int UNUSED written = 0;
6493 IADDR UNUSED pc = abuf->addr;
6494 SEM_BRANCH_INIT
6495 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6496
6497if (NESI (ANDSI (SLLSI (1, * FLD (i_br_src1)), * FLD (i_br_src2)), 0)) {
6498 {
6499 USI opval = FLD (i_br_disp);
6500 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6501 written |= (1 << 3);
6502 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6503 }
6504}
6505
6506 abuf->written = written;
6507 SEM_BRANCH_FINI (vpc);
6508 return vpc;
6509#undef FLD
6510}
6511
6512/* bbs-lit: bbs $br_lit1, $br_src2, $br_disp */
6513
6514SEM_PC
6515SEM_FN_NAME (i960base,bbs_lit) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6516{
6517#define FLD(f) abuf->fields.cti.fields.fmt_bbc_lit.f
6518 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6519 int UNUSED written = 0;
6520 IADDR UNUSED pc = abuf->addr;
6521 SEM_BRANCH_INIT
6522 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6523
6524if (NESI (ANDSI (SLLSI (1, FLD (f_br_src1)), * FLD (i_br_src2)), 0)) {
6525 {
6526 USI opval = FLD (i_br_disp);
6527 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6528 written |= (1 << 3);
6529 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6530 }
6531}
6532
6533 abuf->written = written;
6534 SEM_BRANCH_FINI (vpc);
6535 return vpc;
6536#undef FLD
6537}
6538
6539/* cmpi: cmpi $src1, $src2 */
6540
6541SEM_PC
6542SEM_FN_NAME (i960base,cmpi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6543{
6544#define FLD(f) abuf->fields.fmt_cmpi.f
6545 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6546 int UNUSED written = 0;
6547 IADDR UNUSED pc = abuf->addr;
6548 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6549
6550 {
6551 SI opval = (LTSI (* FLD (i_src1), * FLD (i_src2))) ? (4) : (EQSI (* FLD (i_src1), * FLD (i_src2))) ? (2) : (1);
6552 CPU (h_cc) = opval;
7a292a7a 6553 TRACE_RESULT (current_cpu, abuf, "cc", 'x', opval);
c906108c
SS
6554 }
6555
6556 return vpc;
6557#undef FLD
6558}
6559
6560/* cmpi1: cmpi $lit1, $src2 */
6561
6562SEM_PC
6563SEM_FN_NAME (i960base,cmpi1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6564{
6565#define FLD(f) abuf->fields.fmt_cmpi1.f
6566 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6567 int UNUSED written = 0;
6568 IADDR UNUSED pc = abuf->addr;
6569 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6570
6571 {
6572 SI opval = (LTSI (FLD (f_src1), * FLD (i_src2))) ? (4) : (EQSI (FLD (f_src1), * FLD (i_src2))) ? (2) : (1);
6573 CPU (h_cc) = opval;
7a292a7a 6574 TRACE_RESULT (current_cpu, abuf, "cc", 'x', opval);
c906108c
SS
6575 }
6576
6577 return vpc;
6578#undef FLD
6579}
6580
6581/* cmpi2: cmpi $src1, $lit2 */
6582
6583SEM_PC
6584SEM_FN_NAME (i960base,cmpi2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6585{
6586#define FLD(f) abuf->fields.fmt_cmpi2.f
6587 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6588 int UNUSED written = 0;
6589 IADDR UNUSED pc = abuf->addr;
6590 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6591
6592 {
6593 SI opval = (LTSI (* FLD (i_src1), FLD (f_src2))) ? (4) : (EQSI (* FLD (i_src1), FLD (f_src2))) ? (2) : (1);
6594 CPU (h_cc) = opval;
7a292a7a 6595 TRACE_RESULT (current_cpu, abuf, "cc", 'x', opval);
c906108c
SS
6596 }
6597
6598 return vpc;
6599#undef FLD
6600}
6601
6602/* cmpi3: cmpi $lit1, $lit2 */
6603
6604SEM_PC
6605SEM_FN_NAME (i960base,cmpi3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6606{
6607#define FLD(f) abuf->fields.fmt_cmpi3.f
6608 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6609 int UNUSED written = 0;
6610 IADDR UNUSED pc = abuf->addr;
6611 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6612
6613 {
6614 SI opval = (LTSI (FLD (f_src1), FLD (f_src2))) ? (4) : (EQSI (FLD (f_src1), FLD (f_src2))) ? (2) : (1);
6615 CPU (h_cc) = opval;
7a292a7a 6616 TRACE_RESULT (current_cpu, abuf, "cc", 'x', opval);
c906108c
SS
6617 }
6618
6619 return vpc;
6620#undef FLD
6621}
6622
6623/* cmpo: cmpo $src1, $src2 */
6624
6625SEM_PC
6626SEM_FN_NAME (i960base,cmpo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6627{
6628#define FLD(f) abuf->fields.fmt_cmpo.f
6629 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6630 int UNUSED written = 0;
6631 IADDR UNUSED pc = abuf->addr;
6632 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6633
6634 {
6635 SI opval = (LTUSI (* FLD (i_src1), * FLD (i_src2))) ? (4) : (EQSI (* FLD (i_src1), * FLD (i_src2))) ? (2) : (1);
6636 CPU (h_cc) = opval;
7a292a7a 6637 TRACE_RESULT (current_cpu, abuf, "cc", 'x', opval);
c906108c
SS
6638 }
6639
6640 return vpc;
6641#undef FLD
6642}
6643
6644/* cmpo1: cmpo $lit1, $src2 */
6645
6646SEM_PC
6647SEM_FN_NAME (i960base,cmpo1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6648{
6649#define FLD(f) abuf->fields.fmt_cmpo1.f
6650 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6651 int UNUSED written = 0;
6652 IADDR UNUSED pc = abuf->addr;
6653 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6654
6655 {
6656 SI opval = (LTUSI (FLD (f_src1), * FLD (i_src2))) ? (4) : (EQSI (FLD (f_src1), * FLD (i_src2))) ? (2) : (1);
6657 CPU (h_cc) = opval;
7a292a7a 6658 TRACE_RESULT (current_cpu, abuf, "cc", 'x', opval);
c906108c
SS
6659 }
6660
6661 return vpc;
6662#undef FLD
6663}
6664
6665/* cmpo2: cmpo $src1, $lit2 */
6666
6667SEM_PC
6668SEM_FN_NAME (i960base,cmpo2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6669{
6670#define FLD(f) abuf->fields.fmt_cmpo2.f
6671 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6672 int UNUSED written = 0;
6673 IADDR UNUSED pc = abuf->addr;
6674 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6675
6676 {
6677 SI opval = (LTUSI (* FLD (i_src1), FLD (f_src2))) ? (4) : (EQSI (* FLD (i_src1), FLD (f_src2))) ? (2) : (1);
6678 CPU (h_cc) = opval;
7a292a7a 6679 TRACE_RESULT (current_cpu, abuf, "cc", 'x', opval);
c906108c
SS
6680 }
6681
6682 return vpc;
6683#undef FLD
6684}
6685
6686/* cmpo3: cmpo $lit1, $lit2 */
6687
6688SEM_PC
6689SEM_FN_NAME (i960base,cmpo3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6690{
6691#define FLD(f) abuf->fields.fmt_cmpo3.f
6692 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6693 int UNUSED written = 0;
6694 IADDR UNUSED pc = abuf->addr;
6695 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6696
6697 {
6698 SI opval = (LTUSI (FLD (f_src1), FLD (f_src2))) ? (4) : (EQSI (FLD (f_src1), FLD (f_src2))) ? (2) : (1);
6699 CPU (h_cc) = opval;
7a292a7a 6700 TRACE_RESULT (current_cpu, abuf, "cc", 'x', opval);
c906108c
SS
6701 }
6702
6703 return vpc;
6704#undef FLD
6705}
6706
6707/* testno-reg: testno $br_src1 */
6708
6709SEM_PC
6710SEM_FN_NAME (i960base,testno_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6711{
6712#define FLD(f) abuf->fields.fmt_testno_reg.f
6713 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6714 int UNUSED written = 0;
6715 IADDR UNUSED pc = abuf->addr;
6716 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6717
6718 {
6719 SI opval = EQSI (CPU (h_cc), 0);
6720 * FLD (i_br_src1) = opval;
6721 TRACE_RESULT (current_cpu, abuf, "br_src1", 'x', opval);
6722 }
6723
6724 return vpc;
6725#undef FLD
6726}
6727
6728/* testg-reg: testg $br_src1 */
6729
6730SEM_PC
6731SEM_FN_NAME (i960base,testg_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6732{
6733#define FLD(f) abuf->fields.fmt_testno_reg.f
6734 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6735 int UNUSED written = 0;
6736 IADDR UNUSED pc = abuf->addr;
6737 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6738
6739 {
6740 SI opval = NESI (ANDSI (CPU (h_cc), 1), 0);
6741 * FLD (i_br_src1) = opval;
6742 TRACE_RESULT (current_cpu, abuf, "br_src1", 'x', opval);
6743 }
6744
6745 return vpc;
6746#undef FLD
6747}
6748
6749/* teste-reg: teste $br_src1 */
6750
6751SEM_PC
6752SEM_FN_NAME (i960base,teste_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6753{
6754#define FLD(f) abuf->fields.fmt_testno_reg.f
6755 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6756 int UNUSED written = 0;
6757 IADDR UNUSED pc = abuf->addr;
6758 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6759
6760 {
6761 SI opval = NESI (ANDSI (CPU (h_cc), 2), 0);
6762 * FLD (i_br_src1) = opval;
6763 TRACE_RESULT (current_cpu, abuf, "br_src1", 'x', opval);
6764 }
6765
6766 return vpc;
6767#undef FLD
6768}
6769
6770/* testge-reg: testge $br_src1 */
6771
6772SEM_PC
6773SEM_FN_NAME (i960base,testge_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6774{
6775#define FLD(f) abuf->fields.fmt_testno_reg.f
6776 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6777 int UNUSED written = 0;
6778 IADDR UNUSED pc = abuf->addr;
6779 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6780
6781 {
6782 SI opval = NESI (ANDSI (CPU (h_cc), 3), 0);
6783 * FLD (i_br_src1) = opval;
6784 TRACE_RESULT (current_cpu, abuf, "br_src1", 'x', opval);
6785 }
6786
6787 return vpc;
6788#undef FLD
6789}
6790
6791/* testl-reg: testl $br_src1 */
6792
6793SEM_PC
6794SEM_FN_NAME (i960base,testl_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6795{
6796#define FLD(f) abuf->fields.fmt_testno_reg.f
6797 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6798 int UNUSED written = 0;
6799 IADDR UNUSED pc = abuf->addr;
6800 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6801
6802 {
6803 SI opval = NESI (ANDSI (CPU (h_cc), 4), 0);
6804 * FLD (i_br_src1) = opval;
6805 TRACE_RESULT (current_cpu, abuf, "br_src1", 'x', opval);
6806 }
6807
6808 return vpc;
6809#undef FLD
6810}
6811
6812/* testne-reg: testne $br_src1 */
6813
6814SEM_PC
6815SEM_FN_NAME (i960base,testne_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6816{
6817#define FLD(f) abuf->fields.fmt_testno_reg.f
6818 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6819 int UNUSED written = 0;
6820 IADDR UNUSED pc = abuf->addr;
6821 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6822
6823 {
6824 SI opval = NESI (ANDSI (CPU (h_cc), 5), 0);
6825 * FLD (i_br_src1) = opval;
6826 TRACE_RESULT (current_cpu, abuf, "br_src1", 'x', opval);
6827 }
6828
6829 return vpc;
6830#undef FLD
6831}
6832
6833/* testle-reg: testle $br_src1 */
6834
6835SEM_PC
6836SEM_FN_NAME (i960base,testle_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6837{
6838#define FLD(f) abuf->fields.fmt_testno_reg.f
6839 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6840 int UNUSED written = 0;
6841 IADDR UNUSED pc = abuf->addr;
6842 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6843
6844 {
6845 SI opval = NESI (ANDSI (CPU (h_cc), 6), 0);
6846 * FLD (i_br_src1) = opval;
6847 TRACE_RESULT (current_cpu, abuf, "br_src1", 'x', opval);
6848 }
6849
6850 return vpc;
6851#undef FLD
6852}
6853
6854/* testo-reg: testo $br_src1 */
6855
6856SEM_PC
6857SEM_FN_NAME (i960base,testo_reg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6858{
6859#define FLD(f) abuf->fields.fmt_testno_reg.f
6860 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6861 int UNUSED written = 0;
6862 IADDR UNUSED pc = abuf->addr;
6863 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6864
6865 {
6866 SI opval = NESI (ANDSI (CPU (h_cc), 7), 0);
6867 * FLD (i_br_src1) = opval;
6868 TRACE_RESULT (current_cpu, abuf, "br_src1", 'x', opval);
6869 }
6870
6871 return vpc;
6872#undef FLD
6873}
6874
6875/* bno: bno $ctrl_disp */
6876
6877SEM_PC
6878SEM_FN_NAME (i960base,bno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6879{
6880#define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6881 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6882 int UNUSED written = 0;
6883 IADDR UNUSED pc = abuf->addr;
6884 SEM_BRANCH_INIT
6885 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6886
6887if (EQSI (CPU (h_cc), 0)) {
6888 {
6889 USI opval = FLD (i_ctrl_disp);
6890 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6891 written |= (1 << 2);
6892 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6893 }
6894}
6895
6896 abuf->written = written;
6897 SEM_BRANCH_FINI (vpc);
6898 return vpc;
6899#undef FLD
6900}
6901
6902/* bg: bg $ctrl_disp */
6903
6904SEM_PC
6905SEM_FN_NAME (i960base,bg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6906{
6907#define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6908 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6909 int UNUSED written = 0;
6910 IADDR UNUSED pc = abuf->addr;
6911 SEM_BRANCH_INIT
6912 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6913
6914if (NESI (ANDSI (CPU (h_cc), 1), 0)) {
6915 {
6916 USI opval = FLD (i_ctrl_disp);
6917 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6918 written |= (1 << 2);
6919 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6920 }
6921}
6922
6923 abuf->written = written;
6924 SEM_BRANCH_FINI (vpc);
6925 return vpc;
6926#undef FLD
6927}
6928
6929/* be: be $ctrl_disp */
6930
6931SEM_PC
6932SEM_FN_NAME (i960base,be) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6933{
6934#define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6935 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6936 int UNUSED written = 0;
6937 IADDR UNUSED pc = abuf->addr;
6938 SEM_BRANCH_INIT
6939 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6940
6941if (NESI (ANDSI (CPU (h_cc), 2), 0)) {
6942 {
6943 USI opval = FLD (i_ctrl_disp);
6944 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6945 written |= (1 << 2);
6946 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6947 }
6948}
6949
6950 abuf->written = written;
6951 SEM_BRANCH_FINI (vpc);
6952 return vpc;
6953#undef FLD
6954}
6955
6956/* bge: bge $ctrl_disp */
6957
6958SEM_PC
6959SEM_FN_NAME (i960base,bge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6960{
6961#define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6962 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6963 int UNUSED written = 0;
6964 IADDR UNUSED pc = abuf->addr;
6965 SEM_BRANCH_INIT
6966 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6967
6968if (NESI (ANDSI (CPU (h_cc), 3), 0)) {
6969 {
6970 USI opval = FLD (i_ctrl_disp);
6971 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6972 written |= (1 << 2);
6973 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
6974 }
6975}
6976
6977 abuf->written = written;
6978 SEM_BRANCH_FINI (vpc);
6979 return vpc;
6980#undef FLD
6981}
6982
6983/* bl: bl $ctrl_disp */
6984
6985SEM_PC
6986SEM_FN_NAME (i960base,bl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6987{
6988#define FLD(f) abuf->fields.cti.fields.fmt_bno.f
6989 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6990 int UNUSED written = 0;
6991 IADDR UNUSED pc = abuf->addr;
6992 SEM_BRANCH_INIT
6993 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6994
6995if (NESI (ANDSI (CPU (h_cc), 4), 0)) {
6996 {
6997 USI opval = FLD (i_ctrl_disp);
6998 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
6999 written |= (1 << 2);
7000 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7001 }
7002}
7003
7004 abuf->written = written;
7005 SEM_BRANCH_FINI (vpc);
7006 return vpc;
7007#undef FLD
7008}
7009
7010/* bne: bne $ctrl_disp */
7011
7012SEM_PC
7013SEM_FN_NAME (i960base,bne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7014{
7015#define FLD(f) abuf->fields.cti.fields.fmt_bno.f
7016 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7017 int UNUSED written = 0;
7018 IADDR UNUSED pc = abuf->addr;
7019 SEM_BRANCH_INIT
7020 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7021
7022if (NESI (ANDSI (CPU (h_cc), 5), 0)) {
7023 {
7024 USI opval = FLD (i_ctrl_disp);
7025 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
7026 written |= (1 << 2);
7027 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7028 }
7029}
7030
7031 abuf->written = written;
7032 SEM_BRANCH_FINI (vpc);
7033 return vpc;
7034#undef FLD
7035}
7036
7037/* ble: ble $ctrl_disp */
7038
7039SEM_PC
7040SEM_FN_NAME (i960base,ble) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7041{
7042#define FLD(f) abuf->fields.cti.fields.fmt_bno.f
7043 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7044 int UNUSED written = 0;
7045 IADDR UNUSED pc = abuf->addr;
7046 SEM_BRANCH_INIT
7047 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7048
7049if (NESI (ANDSI (CPU (h_cc), 6), 0)) {
7050 {
7051 USI opval = FLD (i_ctrl_disp);
7052 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
7053 written |= (1 << 2);
7054 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7055 }
7056}
7057
7058 abuf->written = written;
7059 SEM_BRANCH_FINI (vpc);
7060 return vpc;
7061#undef FLD
7062}
7063
7064/* bo: bo $ctrl_disp */
7065
7066SEM_PC
7067SEM_FN_NAME (i960base,bo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7068{
7069#define FLD(f) abuf->fields.cti.fields.fmt_bno.f
7070 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7071 int UNUSED written = 0;
7072 IADDR UNUSED pc = abuf->addr;
7073 SEM_BRANCH_INIT
7074 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7075
7076if (NESI (ANDSI (CPU (h_cc), 7), 0)) {
7077 {
7078 USI opval = FLD (i_ctrl_disp);
7079 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
7080 written |= (1 << 2);
7081 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7082 }
7083}
7084
7085 abuf->written = written;
7086 SEM_BRANCH_FINI (vpc);
7087 return vpc;
7088#undef FLD
7089}
7090
7091/* b: b $ctrl_disp */
7092
7093SEM_PC
7094SEM_FN_NAME (i960base,b) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7095{
7096#define FLD(f) abuf->fields.cti.fields.fmt_b.f
7097 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7098 int UNUSED written = 0;
7099 IADDR UNUSED pc = abuf->addr;
7100 SEM_BRANCH_INIT
7101 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7102
7103 {
7104 USI opval = FLD (i_ctrl_disp);
7105 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
7106 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7107 }
7108
7109 SEM_BRANCH_FINI (vpc);
7110 return vpc;
7111#undef FLD
7112}
7113
7114/* bx-indirect-offset: bx $offset($abase) */
7115
7116SEM_PC
7117SEM_FN_NAME (i960base,bx_indirect_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7118{
7119#define FLD(f) abuf->fields.cti.fields.fmt_bx_indirect_offset.f
7120 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7121 int UNUSED written = 0;
7122 IADDR UNUSED pc = abuf->addr;
7123 SEM_BRANCH_INIT
7124 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7125
7126 {
7127 USI opval = ADDSI (FLD (f_offset), * FLD (i_abase));
7128 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7129 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7130 }
7131
7132 SEM_BRANCH_FINI (vpc);
7133 return vpc;
7134#undef FLD
7135}
7136
7137/* bx-indirect: bx ($abase) */
7138
7139SEM_PC
7140SEM_FN_NAME (i960base,bx_indirect) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7141{
7142#define FLD(f) abuf->fields.cti.fields.fmt_bx_indirect.f
7143 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7144 int UNUSED written = 0;
7145 IADDR UNUSED pc = abuf->addr;
7146 SEM_BRANCH_INIT
7147 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7148
7149 {
7150 USI opval = * FLD (i_abase);
7151 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7152 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7153 }
7154
7155 SEM_BRANCH_FINI (vpc);
7156 return vpc;
7157#undef FLD
7158}
7159
7160/* bx-indirect-index: bx ($abase)[$index*S$scale] */
7161
7162SEM_PC
7163SEM_FN_NAME (i960base,bx_indirect_index) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7164{
7165#define FLD(f) abuf->fields.cti.fields.fmt_bx_indirect_index.f
7166 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7167 int UNUSED written = 0;
7168 IADDR UNUSED pc = abuf->addr;
7169 SEM_BRANCH_INIT
7170 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7171
7172 {
7173 USI opval = ADDSI (* FLD (i_abase), MULSI (* FLD (i_index), SLLSI (1, FLD (f_scale))));
7174 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7175 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7176 }
7177
7178 SEM_BRANCH_FINI (vpc);
7179 return vpc;
7180#undef FLD
7181}
7182
7183/* bx-disp: bx $optdisp */
7184
7185SEM_PC
7186SEM_FN_NAME (i960base,bx_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7187{
7188#define FLD(f) abuf->fields.cti.fields.fmt_bx_disp.f
7189 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7190 int UNUSED written = 0;
7191 IADDR UNUSED pc = abuf->addr;
7192 SEM_BRANCH_INIT
7193 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
7194
7195 {
7196 USI opval = FLD (f_optdisp);
7197 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
7198 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7199 }
7200
7201 SEM_BRANCH_FINI (vpc);
7202 return vpc;
7203#undef FLD
7204}
7205
7206/* bx-indirect-disp: bx $optdisp($abase) */
7207
7208SEM_PC
7209SEM_FN_NAME (i960base,bx_indirect_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7210{
7211#define FLD(f) abuf->fields.cti.fields.fmt_bx_indirect_disp.f
7212 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7213 int UNUSED written = 0;
7214 IADDR UNUSED pc = abuf->addr;
7215 SEM_BRANCH_INIT
7216 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
7217
7218 {
7219 USI opval = ADDSI (FLD (f_optdisp), * FLD (i_abase));
7220 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7221 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7222 }
7223
7224 SEM_BRANCH_FINI (vpc);
7225 return vpc;
7226#undef FLD
7227}
7228
7229/* callx-disp: callx $optdisp */
7230
7231SEM_PC
7232SEM_FN_NAME (i960base,callx_disp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7233{
7234#define FLD(f) abuf->fields.cti.fields.fmt_callx_disp.f
7235 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7236 int UNUSED written = 0;
7237 IADDR UNUSED pc = abuf->addr;
7238 SEM_BRANCH_INIT
7239 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 8);
7240
7a292a7a 7241{
c906108c
SS
7242 SI tmp_temp;
7243 tmp_temp = ANDSI (ADDSI (CPU (h_gr[((UINT) 1)]), 63), INVSI (63));
7244 {
7245 SI opval = ADDSI (pc, 8);
7246 CPU (h_gr[((UINT) 2)]) = opval;
7247 TRACE_RESULT (current_cpu, abuf, "gr-2", 'x', opval);
7248 }
7249SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 0), CPU (h_gr[((UINT) 0)]));
7250SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 4), CPU (h_gr[((UINT) 1)]));
7251SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 8), CPU (h_gr[((UINT) 2)]));
7252SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 12), CPU (h_gr[((UINT) 3)]));
7253SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 16), CPU (h_gr[((UINT) 4)]));
7254SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 20), CPU (h_gr[((UINT) 5)]));
7255SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 24), CPU (h_gr[((UINT) 6)]));
7256SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 28), CPU (h_gr[((UINT) 7)]));
7257SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 32), CPU (h_gr[((UINT) 8)]));
7258SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 36), CPU (h_gr[((UINT) 9)]));
7259SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 40), CPU (h_gr[((UINT) 10)]));
7260SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 44), CPU (h_gr[((UINT) 11)]));
7261SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 48), CPU (h_gr[((UINT) 12)]));
7262SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 52), CPU (h_gr[((UINT) 13)]));
7263SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 56), CPU (h_gr[((UINT) 14)]));
7264SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 60), CPU (h_gr[((UINT) 15)]));
7265 {
7266 USI opval = FLD (f_optdisp);
7267 SEM_BRANCH_VIA_CACHE (current_cpu, sem_arg, opval, vpc, SEM_BRANCH_ADDR_CACHE (sem_arg));
7268 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7269 }
7270CPU (h_gr[((UINT) 0)]) = 0xdeadbeef;
7271CPU (h_gr[((UINT) 1)]) = 0xdeadbeef;
7272CPU (h_gr[((UINT) 2)]) = 0xdeadbeef;
7273CPU (h_gr[((UINT) 3)]) = 0xdeadbeef;
7274CPU (h_gr[((UINT) 4)]) = 0xdeadbeef;
7275CPU (h_gr[((UINT) 5)]) = 0xdeadbeef;
7276CPU (h_gr[((UINT) 6)]) = 0xdeadbeef;
7277CPU (h_gr[((UINT) 7)]) = 0xdeadbeef;
7278CPU (h_gr[((UINT) 8)]) = 0xdeadbeef;
7279CPU (h_gr[((UINT) 9)]) = 0xdeadbeef;
7280CPU (h_gr[((UINT) 10)]) = 0xdeadbeef;
7281CPU (h_gr[((UINT) 11)]) = 0xdeadbeef;
7282CPU (h_gr[((UINT) 12)]) = 0xdeadbeef;
7283CPU (h_gr[((UINT) 13)]) = 0xdeadbeef;
7284CPU (h_gr[((UINT) 14)]) = 0xdeadbeef;
7285CPU (h_gr[((UINT) 15)]) = 0xdeadbeef;
7286 {
7287 SI opval = CPU (h_gr[((UINT) 31)]);
7288 CPU (h_gr[((UINT) 0)]) = opval;
7289 TRACE_RESULT (current_cpu, abuf, "gr-0", 'x', opval);
7290 }
7291 {
7292 SI opval = tmp_temp;
7293 CPU (h_gr[((UINT) 31)]) = opval;
7294 TRACE_RESULT (current_cpu, abuf, "gr-31", 'x', opval);
7295 }
7296 {
7297 SI opval = ADDSI (tmp_temp, 64);
7298 CPU (h_gr[((UINT) 1)]) = opval;
7299 TRACE_RESULT (current_cpu, abuf, "gr-1", 'x', opval);
7300 }
7a292a7a 7301}
c906108c
SS
7302
7303 SEM_BRANCH_FINI (vpc);
7304 return vpc;
7305#undef FLD
7306}
7307
7308/* callx-indirect: callx ($abase) */
7309
7310SEM_PC
7311SEM_FN_NAME (i960base,callx_indirect) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7312{
7313#define FLD(f) abuf->fields.cti.fields.fmt_callx_indirect.f
7314 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7315 int UNUSED written = 0;
7316 IADDR UNUSED pc = abuf->addr;
7317 SEM_BRANCH_INIT
7318 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7319
7a292a7a 7320{
c906108c
SS
7321 SI tmp_temp;
7322 tmp_temp = ANDSI (ADDSI (CPU (h_gr[((UINT) 1)]), 63), INVSI (63));
7323 {
7324 SI opval = ADDSI (pc, 4);
7325 CPU (h_gr[((UINT) 2)]) = opval;
7326 TRACE_RESULT (current_cpu, abuf, "gr-2", 'x', opval);
7327 }
7328SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 0), CPU (h_gr[((UINT) 0)]));
7329SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 4), CPU (h_gr[((UINT) 1)]));
7330SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 8), CPU (h_gr[((UINT) 2)]));
7331SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 12), CPU (h_gr[((UINT) 3)]));
7332SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 16), CPU (h_gr[((UINT) 4)]));
7333SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 20), CPU (h_gr[((UINT) 5)]));
7334SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 24), CPU (h_gr[((UINT) 6)]));
7335SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 28), CPU (h_gr[((UINT) 7)]));
7336SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 32), CPU (h_gr[((UINT) 8)]));
7337SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 36), CPU (h_gr[((UINT) 9)]));
7338SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 40), CPU (h_gr[((UINT) 10)]));
7339SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 44), CPU (h_gr[((UINT) 11)]));
7340SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 48), CPU (h_gr[((UINT) 12)]));
7341SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 52), CPU (h_gr[((UINT) 13)]));
7342SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 56), CPU (h_gr[((UINT) 14)]));
7343SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 60), CPU (h_gr[((UINT) 15)]));
7344 {
7345 USI opval = * FLD (i_abase);
7346 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7347 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7348 }
7349CPU (h_gr[((UINT) 0)]) = 0xdeadbeef;
7350CPU (h_gr[((UINT) 1)]) = 0xdeadbeef;
7351CPU (h_gr[((UINT) 2)]) = 0xdeadbeef;
7352CPU (h_gr[((UINT) 3)]) = 0xdeadbeef;
7353CPU (h_gr[((UINT) 4)]) = 0xdeadbeef;
7354CPU (h_gr[((UINT) 5)]) = 0xdeadbeef;
7355CPU (h_gr[((UINT) 6)]) = 0xdeadbeef;
7356CPU (h_gr[((UINT) 7)]) = 0xdeadbeef;
7357CPU (h_gr[((UINT) 8)]) = 0xdeadbeef;
7358CPU (h_gr[((UINT) 9)]) = 0xdeadbeef;
7359CPU (h_gr[((UINT) 10)]) = 0xdeadbeef;
7360CPU (h_gr[((UINT) 11)]) = 0xdeadbeef;
7361CPU (h_gr[((UINT) 12)]) = 0xdeadbeef;
7362CPU (h_gr[((UINT) 13)]) = 0xdeadbeef;
7363CPU (h_gr[((UINT) 14)]) = 0xdeadbeef;
7364CPU (h_gr[((UINT) 15)]) = 0xdeadbeef;
7365 {
7366 SI opval = CPU (h_gr[((UINT) 31)]);
7367 CPU (h_gr[((UINT) 0)]) = opval;
7368 TRACE_RESULT (current_cpu, abuf, "gr-0", 'x', opval);
7369 }
7370 {
7371 SI opval = tmp_temp;
7372 CPU (h_gr[((UINT) 31)]) = opval;
7373 TRACE_RESULT (current_cpu, abuf, "gr-31", 'x', opval);
7374 }
7375 {
7376 SI opval = ADDSI (tmp_temp, 64);
7377 CPU (h_gr[((UINT) 1)]) = opval;
7378 TRACE_RESULT (current_cpu, abuf, "gr-1", 'x', opval);
7379 }
7a292a7a 7380}
c906108c
SS
7381
7382 SEM_BRANCH_FINI (vpc);
7383 return vpc;
7384#undef FLD
7385}
7386
7387/* callx-indirect-offset: callx $offset($abase) */
7388
7389SEM_PC
7390SEM_FN_NAME (i960base,callx_indirect_offset) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7391{
7392#define FLD(f) abuf->fields.cti.fields.fmt_callx_indirect_offset.f
7393 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7394 int UNUSED written = 0;
7395 IADDR UNUSED pc = abuf->addr;
7396 SEM_BRANCH_INIT
7397 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7398
7a292a7a 7399{
c906108c
SS
7400 SI tmp_temp;
7401 tmp_temp = ANDSI (ADDSI (CPU (h_gr[((UINT) 1)]), 63), INVSI (63));
7402 {
7403 SI opval = ADDSI (pc, 4);
7404 CPU (h_gr[((UINT) 2)]) = opval;
7405 TRACE_RESULT (current_cpu, abuf, "gr-2", 'x', opval);
7406 }
7407SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 0), CPU (h_gr[((UINT) 0)]));
7408SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 4), CPU (h_gr[((UINT) 1)]));
7409SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 8), CPU (h_gr[((UINT) 2)]));
7410SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 12), CPU (h_gr[((UINT) 3)]));
7411SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 16), CPU (h_gr[((UINT) 4)]));
7412SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 20), CPU (h_gr[((UINT) 5)]));
7413SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 24), CPU (h_gr[((UINT) 6)]));
7414SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 28), CPU (h_gr[((UINT) 7)]));
7415SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 32), CPU (h_gr[((UINT) 8)]));
7416SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 36), CPU (h_gr[((UINT) 9)]));
7417SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 40), CPU (h_gr[((UINT) 10)]));
7418SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 44), CPU (h_gr[((UINT) 11)]));
7419SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 48), CPU (h_gr[((UINT) 12)]));
7420SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 52), CPU (h_gr[((UINT) 13)]));
7421SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 56), CPU (h_gr[((UINT) 14)]));
7422SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 60), CPU (h_gr[((UINT) 15)]));
7423 {
7424 USI opval = ADDSI (FLD (f_offset), * FLD (i_abase));
7425 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7426 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7427 }
7428CPU (h_gr[((UINT) 0)]) = 0xdeadbeef;
7429CPU (h_gr[((UINT) 1)]) = 0xdeadbeef;
7430CPU (h_gr[((UINT) 2)]) = 0xdeadbeef;
7431CPU (h_gr[((UINT) 3)]) = 0xdeadbeef;
7432CPU (h_gr[((UINT) 4)]) = 0xdeadbeef;
7433CPU (h_gr[((UINT) 5)]) = 0xdeadbeef;
7434CPU (h_gr[((UINT) 6)]) = 0xdeadbeef;
7435CPU (h_gr[((UINT) 7)]) = 0xdeadbeef;
7436CPU (h_gr[((UINT) 8)]) = 0xdeadbeef;
7437CPU (h_gr[((UINT) 9)]) = 0xdeadbeef;
7438CPU (h_gr[((UINT) 10)]) = 0xdeadbeef;
7439CPU (h_gr[((UINT) 11)]) = 0xdeadbeef;
7440CPU (h_gr[((UINT) 12)]) = 0xdeadbeef;
7441CPU (h_gr[((UINT) 13)]) = 0xdeadbeef;
7442CPU (h_gr[((UINT) 14)]) = 0xdeadbeef;
7443CPU (h_gr[((UINT) 15)]) = 0xdeadbeef;
7444 {
7445 SI opval = CPU (h_gr[((UINT) 31)]);
7446 CPU (h_gr[((UINT) 0)]) = opval;
7447 TRACE_RESULT (current_cpu, abuf, "gr-0", 'x', opval);
7448 }
7449 {
7450 SI opval = tmp_temp;
7451 CPU (h_gr[((UINT) 31)]) = opval;
7452 TRACE_RESULT (current_cpu, abuf, "gr-31", 'x', opval);
7453 }
7454 {
7455 SI opval = ADDSI (tmp_temp, 64);
7456 CPU (h_gr[((UINT) 1)]) = opval;
7457 TRACE_RESULT (current_cpu, abuf, "gr-1", 'x', opval);
7458 }
7a292a7a 7459}
c906108c
SS
7460
7461 SEM_BRANCH_FINI (vpc);
7462 return vpc;
7463#undef FLD
7464}
7465
7466/* ret: ret */
7467
7468SEM_PC
7469SEM_FN_NAME (i960base,ret) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7470{
7471#define FLD(f) abuf->fields.cti.fields.fmt_ret.f
7472 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7473 int UNUSED written = 0;
7474 IADDR UNUSED pc = abuf->addr;
7475 SEM_BRANCH_INIT
7476 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7477
7a292a7a 7478{
c906108c
SS
7479 {
7480 SI opval = CPU (h_gr[((UINT) 0)]);
7481 CPU (h_gr[((UINT) 31)]) = opval;
7482 TRACE_RESULT (current_cpu, abuf, "gr-31", 'x', opval);
7483 }
7484CPU (h_gr[((UINT) 0)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 0));
7485CPU (h_gr[((UINT) 1)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 4));
7486CPU (h_gr[((UINT) 2)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 8));
7487CPU (h_gr[((UINT) 3)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 12));
7488CPU (h_gr[((UINT) 4)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 16));
7489CPU (h_gr[((UINT) 5)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 20));
7490CPU (h_gr[((UINT) 6)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 24));
7491CPU (h_gr[((UINT) 7)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 28));
7492CPU (h_gr[((UINT) 8)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 32));
7493CPU (h_gr[((UINT) 9)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 36));
7494CPU (h_gr[((UINT) 10)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 40));
7495CPU (h_gr[((UINT) 11)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 44));
7496CPU (h_gr[((UINT) 12)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 48));
7497CPU (h_gr[((UINT) 13)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 52));
7498CPU (h_gr[((UINT) 14)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 56));
7499CPU (h_gr[((UINT) 15)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 60));
7500 {
7501 USI opval = CPU (h_gr[((UINT) 2)]);
7502 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7503 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7504 }
7a292a7a 7505}
c906108c
SS
7506
7507 SEM_BRANCH_FINI (vpc);
7508 return vpc;
7509#undef FLD
7510}
7511
7512/* calls: calls $src1 */
7513
7514SEM_PC
7515SEM_FN_NAME (i960base,calls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7516{
7517#define FLD(f) abuf->fields.cti.fields.fmt_calls.f
7518 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7519 int UNUSED written = 0;
7520 IADDR UNUSED pc = abuf->addr;
7521 SEM_BRANCH_INIT
7522 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7523
7524 {
7525 SI opval = i960_trap (current_cpu, pc, * FLD (i_src1));
7526 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7527 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7528 }
7529
7530 SEM_BRANCH_FINI (vpc);
7531 return vpc;
7532#undef FLD
7533}
7534
7535/* fmark: fmark */
7536
7537SEM_PC
7538SEM_FN_NAME (i960base,fmark) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7539{
7540#define FLD(f) abuf->fields.cti.fields.fmt_fmark.f
7541 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7542 int UNUSED written = 0;
7543 IADDR UNUSED pc = abuf->addr;
7544 SEM_BRANCH_INIT
7545 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7546
7547 {
7548 SI opval = i960_breakpoint (current_cpu, pc);
7549 SEM_BRANCH_VIA_ADDR (current_cpu, sem_arg, opval, vpc);
7550 TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7551 }
7552
7553 SEM_BRANCH_FINI (vpc);
7554 return vpc;
7555#undef FLD
7556}
7557
7558/* flushreg: flushreg */
7559
7560SEM_PC
7561SEM_FN_NAME (i960base,flushreg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7562{
7563#define FLD(f) abuf->fields.fmt_flushreg.f
7564 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7565 int UNUSED written = 0;
7566 IADDR UNUSED pc = abuf->addr;
7567 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7568
7569do { } while (0); /*nop*/
7570
7571 return vpc;
7572#undef FLD
7573}
7574
This page took 0.304694 seconds and 4 git commands to generate.