* Makefile.am: Rename .dep* files to DEP*. Change DEP variable to
[deliverable/binutils-gdb.git] / sim / i960 / sem.c
1 /* Simulator instruction semantics for i960base.
2
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5 Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
6
7 This file is part of the GNU Simulators.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2, or (at your option)
12 any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License along
20 with this program; if not, write to the Free Software Foundation, Inc.,
21 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
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
37 SEM_PC
38 SEM_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
62 SEM_PC
63 SEM_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
83 SEM_PC
84 SEM_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
104 SEM_PC
105 SEM_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
134 SEM_PC
135 SEM_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
158 SEM_PC
159 SEM_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
185 SEM_PC
186 SEM_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
206 SEM_PC
207 SEM_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
227 SEM_PC
228 SEM_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
248 SEM_PC
249 SEM_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
269 SEM_PC
270 SEM_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
290 SEM_PC
291 SEM_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
311 SEM_PC
312 SEM_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
332 SEM_PC
333 SEM_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
353 SEM_PC
354 SEM_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
374 SEM_PC
375 SEM_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
395 SEM_PC
396 SEM_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
416 SEM_PC
417 SEM_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
437 SEM_PC
438 SEM_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
458 SEM_PC
459 SEM_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
479 SEM_PC
480 SEM_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
500 SEM_PC
501 SEM_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
521 SEM_PC
522 SEM_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
542 SEM_PC
543 SEM_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
563 SEM_PC
564 SEM_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
584 SEM_PC
585 SEM_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
605 SEM_PC
606 SEM_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
626 SEM_PC
627 SEM_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
647 SEM_PC
648 SEM_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
668 SEM_PC
669 SEM_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
689 SEM_PC
690 SEM_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
710 SEM_PC
711 SEM_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
731 SEM_PC
732 SEM_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
752 SEM_PC
753 SEM_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
773 SEM_PC
774 SEM_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
794 SEM_PC
795 SEM_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
815 SEM_PC
816 SEM_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
836 SEM_PC
837 SEM_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
857 SEM_PC
858 SEM_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
878 SEM_PC
879 SEM_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
899 SEM_PC
900 SEM_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
920 SEM_PC
921 SEM_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
941 SEM_PC
942 SEM_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
962 SEM_PC
963 SEM_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
983 SEM_PC
984 SEM_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
1004 SEM_PC
1005 SEM_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
1025 SEM_PC
1026 SEM_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
1046 SEM_PC
1047 SEM_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
1067 SEM_PC
1068 SEM_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
1088 SEM_PC
1089 SEM_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
1109 SEM_PC
1110 SEM_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
1130 SEM_PC
1131 SEM_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
1151 SEM_PC
1152 SEM_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
1172 SEM_PC
1173 SEM_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
1193 SEM_PC
1194 SEM_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
1214 SEM_PC
1215 SEM_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
1235 SEM_PC
1236 SEM_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
1256 SEM_PC
1257 SEM_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
1277 SEM_PC
1278 SEM_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
1298 SEM_PC
1299 SEM_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
1319 SEM_PC
1320 SEM_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
1340 SEM_PC
1341 SEM_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
1361 SEM_PC
1362 SEM_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
1382 SEM_PC
1383 SEM_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
1403 SEM_PC
1404 SEM_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
1424 SEM_PC
1425 SEM_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
1443 /* xnor: xnor $src1, $src2, $dst */
1444
1445 SEM_PC
1446 SEM_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
1466 SEM_PC
1467 SEM_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
1487 SEM_PC
1488 SEM_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
1508 SEM_PC
1509 SEM_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
1527 /* not: not $src1, $src2, $dst */
1528
1529 SEM_PC
1530 SEM_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
1550 SEM_PC
1551 SEM_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
1571 SEM_PC
1572 SEM_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
1592 SEM_PC
1593 SEM_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
1611 /* ornot: ornot $src1, $src2, $dst */
1612
1613 SEM_PC
1614 SEM_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
1634 SEM_PC
1635 SEM_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
1655 SEM_PC
1656 SEM_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
1676 SEM_PC
1677 SEM_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
1695 /* clrbit: clrbit $src1, $src2, $dst */
1696
1697 SEM_PC
1698 SEM_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
1718 SEM_PC
1719 SEM_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
1739 SEM_PC
1740 SEM_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
1760 SEM_PC
1761 SEM_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
1781 SEM_PC
1782 SEM_FN_NAME (i960base,shlo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1783 {
1784 #define FLD(f) abuf->fields.fmt_shlo.f
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 {
1791 SI opval = (GEUSI (* FLD (i_src1), 32)) ? (0) : (SLLSI (* FLD (i_src2), * FLD (i_src1)));
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
1802 SEM_PC
1803 SEM_FN_NAME (i960base,shlo1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1804 {
1805 #define FLD(f) abuf->fields.fmt_shlo1.f
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 {
1812 SI opval = (GEUSI (FLD (f_src1), 32)) ? (0) : (SLLSI (* FLD (i_src2), FLD (f_src1)));
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
1823 SEM_PC
1824 SEM_FN_NAME (i960base,shlo2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1825 {
1826 #define FLD(f) abuf->fields.fmt_shlo2.f
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 {
1833 SI opval = (GEUSI (* FLD (i_src1), 32)) ? (0) : (SLLSI (FLD (f_src2), * FLD (i_src1)));
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
1844 SEM_PC
1845 SEM_FN_NAME (i960base,shlo3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1846 {
1847 #define FLD(f) abuf->fields.fmt_shlo3.f
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 {
1854 SI opval = (GEUSI (FLD (f_src1), 32)) ? (0) : (SLLSI (FLD (f_src2), FLD (f_src1)));
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
1865 SEM_PC
1866 SEM_FN_NAME (i960base,shro) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1867 {
1868 #define FLD(f) abuf->fields.fmt_shlo.f
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 {
1875 SI opval = (GEUSI (* FLD (i_src1), 32)) ? (0) : (SRLSI (* FLD (i_src2), * FLD (i_src1)));
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
1886 SEM_PC
1887 SEM_FN_NAME (i960base,shro1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1888 {
1889 #define FLD(f) abuf->fields.fmt_shlo1.f
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 {
1896 SI opval = (GEUSI (FLD (f_src1), 32)) ? (0) : (SRLSI (* FLD (i_src2), FLD (f_src1)));
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
1907 SEM_PC
1908 SEM_FN_NAME (i960base,shro2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1909 {
1910 #define FLD(f) abuf->fields.fmt_shlo2.f
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 {
1917 SI opval = (GEUSI (* FLD (i_src1), 32)) ? (0) : (SRLSI (FLD (f_src2), * FLD (i_src1)));
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
1928 SEM_PC
1929 SEM_FN_NAME (i960base,shro3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1930 {
1931 #define FLD(f) abuf->fields.fmt_shlo3.f
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 {
1938 SI opval = (GEUSI (FLD (f_src1), 32)) ? (0) : (SRLSI (FLD (f_src2), FLD (f_src1)));
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
1949 SEM_PC
1950 SEM_FN_NAME (i960base,shli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1951 {
1952 #define FLD(f) abuf->fields.fmt_shlo.f
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 {
1959 SI opval = (GEUSI (* FLD (i_src1), 32)) ? (0) : (SLLSI (* FLD (i_src2), * FLD (i_src1)));
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
1970 SEM_PC
1971 SEM_FN_NAME (i960base,shli1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1972 {
1973 #define FLD(f) abuf->fields.fmt_shlo1.f
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 {
1980 SI opval = (GEUSI (FLD (f_src1), 32)) ? (0) : (SLLSI (* FLD (i_src2), FLD (f_src1)));
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
1991 SEM_PC
1992 SEM_FN_NAME (i960base,shli2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1993 {
1994 #define FLD(f) abuf->fields.fmt_shlo2.f
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 {
2001 SI opval = (GEUSI (* FLD (i_src1), 32)) ? (0) : (SLLSI (FLD (f_src2), * FLD (i_src1)));
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
2012 SEM_PC
2013 SEM_FN_NAME (i960base,shli3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2014 {
2015 #define FLD(f) abuf->fields.fmt_shlo3.f
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 {
2022 SI opval = (GEUSI (FLD (f_src1), 32)) ? (0) : (SLLSI (FLD (f_src2), FLD (f_src1)));
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
2033 SEM_PC
2034 SEM_FN_NAME (i960base,shri) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2035 {
2036 #define FLD(f) abuf->fields.fmt_shlo.f
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 {
2043 SI opval = (GEUSI (* FLD (i_src1), 32)) ? (SRASI (* FLD (i_src2), 31)) : (SRASI (* FLD (i_src2), * FLD (i_src1)));
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
2054 SEM_PC
2055 SEM_FN_NAME (i960base,shri1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2056 {
2057 #define FLD(f) abuf->fields.fmt_shlo1.f
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 {
2064 SI opval = (GEUSI (FLD (f_src1), 32)) ? (SRASI (* FLD (i_src2), 31)) : (SRASI (* FLD (i_src2), FLD (f_src1)));
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
2075 SEM_PC
2076 SEM_FN_NAME (i960base,shri2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2077 {
2078 #define FLD(f) abuf->fields.fmt_shlo2.f
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 {
2085 SI opval = (GEUSI (* FLD (i_src1), 32)) ? (SRASI (FLD (f_src2), 31)) : (SRASI (FLD (f_src2), * FLD (i_src1)));
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
2096 SEM_PC
2097 SEM_FN_NAME (i960base,shri3) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2098 {
2099 #define FLD(f) abuf->fields.fmt_shlo3.f
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 {
2106 SI opval = (GEUSI (FLD (f_src1), 32)) ? (SRASI (FLD (f_src2), 31)) : (SRASI (FLD (f_src2), FLD (f_src1)));
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
2117 SEM_PC
2118 SEM_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
2126 {
2127 DI tmp_temp;
2128 SI tmp_dregno;
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;
2139 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
2140 }
2141 }
2142
2143 return vpc;
2144 #undef FLD
2145 }
2146
2147 /* emul1: emul $lit1, $src2, $dst */
2148
2149 SEM_PC
2150 SEM_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
2158 {
2159 DI tmp_temp;
2160 SI tmp_dregno;
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;
2171 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
2172 }
2173 }
2174
2175 return vpc;
2176 #undef FLD
2177 }
2178
2179 /* emul2: emul $src1, $lit2, $dst */
2180
2181 SEM_PC
2182 SEM_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
2190 {
2191 DI tmp_temp;
2192 SI tmp_dregno;
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;
2203 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
2204 }
2205 }
2206
2207 return vpc;
2208 #undef FLD
2209 }
2210
2211 /* emul3: emul $lit1, $lit2, $dst */
2212
2213 SEM_PC
2214 SEM_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
2222 {
2223 DI tmp_temp;
2224 SI tmp_dregno;
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;
2235 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
2236 }
2237 }
2238
2239 return vpc;
2240 #undef FLD
2241 }
2242
2243 /* mov: mov $src1, $dst */
2244
2245 SEM_PC
2246 SEM_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
2266 SEM_PC
2267 SEM_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
2287 SEM_PC
2288 SEM_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
2296 {
2297 SI tmp_dregno;
2298 SI tmp_sregno;
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;
2309 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
2310 }
2311 }
2312
2313 return vpc;
2314 #undef FLD
2315 }
2316
2317 /* movl1: movl $lit1, $dst */
2318
2319 SEM_PC
2320 SEM_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
2328 {
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;
2339 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
2340 }
2341 }
2342
2343 return vpc;
2344 #undef FLD
2345 }
2346
2347 /* movt: movt $src1, $dst */
2348
2349 SEM_PC
2350 SEM_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
2358 {
2359 SI tmp_dregno;
2360 SI tmp_sregno;
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;
2371 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
2372 }
2373 {
2374 SI opval = CPU (h_gr[((FLD (f_src1)) + (2))]);
2375 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
2376 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
2377 }
2378 }
2379
2380 return vpc;
2381 #undef FLD
2382 }
2383
2384 /* movt1: movt $lit1, $dst */
2385
2386 SEM_PC
2387 SEM_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
2395 {
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;
2406 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
2407 }
2408 {
2409 SI opval = 0;
2410 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
2411 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
2412 }
2413 }
2414
2415 return vpc;
2416 #undef FLD
2417 }
2418
2419 /* movq: movq $src1, $dst */
2420
2421 SEM_PC
2422 SEM_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
2430 {
2431 SI tmp_dregno;
2432 SI tmp_sregno;
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;
2443 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
2444 }
2445 {
2446 SI opval = CPU (h_gr[((FLD (f_src1)) + (2))]);
2447 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
2448 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
2449 }
2450 {
2451 SI opval = CPU (h_gr[((FLD (f_src1)) + (3))]);
2452 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
2453 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-3", 'x', opval);
2454 }
2455 }
2456
2457 return vpc;
2458 #undef FLD
2459 }
2460
2461 /* movq1: movq $lit1, $dst */
2462
2463 SEM_PC
2464 SEM_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
2472 {
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;
2483 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
2484 }
2485 {
2486 SI opval = 0;
2487 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
2488 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
2489 }
2490 {
2491 SI opval = 0;
2492 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
2493 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-3", 'x', opval);
2494 }
2495 }
2496
2497 return vpc;
2498 #undef FLD
2499 }
2500
2501 /* modpc: modpc $src1, $src2, $dst */
2502
2503 SEM_PC
2504 SEM_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
2524 SEM_PC
2525 SEM_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
2545 SEM_PC
2546 SEM_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
2566 SEM_PC
2567 SEM_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
2587 SEM_PC
2588 SEM_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
2608 SEM_PC
2609 SEM_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
2629 SEM_PC
2630 SEM_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
2650 SEM_PC
2651 SEM_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
2671 SEM_PC
2672 SEM_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
2692 SEM_PC
2693 SEM_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
2713 SEM_PC
2714 SEM_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
2734 SEM_PC
2735 SEM_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
2755 SEM_PC
2756 SEM_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
2776 SEM_PC
2777 SEM_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
2797 SEM_PC
2798 SEM_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
2818 SEM_PC
2819 SEM_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
2839 SEM_PC
2840 SEM_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
2860 SEM_PC
2861 SEM_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
2881 SEM_PC
2882 SEM_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
2902 SEM_PC
2903 SEM_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
2923 SEM_PC
2924 SEM_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
2944 SEM_PC
2945 SEM_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
2965 SEM_PC
2966 SEM_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
2986 SEM_PC
2987 SEM_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
3007 SEM_PC
3008 SEM_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
3028 SEM_PC
3029 SEM_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
3049 SEM_PC
3050 SEM_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
3070 SEM_PC
3071 SEM_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
3091 SEM_PC
3092 SEM_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
3112 SEM_PC
3113 SEM_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
3133 SEM_PC
3134 SEM_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
3154 SEM_PC
3155 SEM_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
3175 SEM_PC
3176 SEM_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
3196 SEM_PC
3197 SEM_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
3217 SEM_PC
3218 SEM_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
3238 SEM_PC
3239 SEM_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
3259 SEM_PC
3260 SEM_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
3280 SEM_PC
3281 SEM_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
3301 SEM_PC
3302 SEM_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
3322 SEM_PC
3323 SEM_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
3343 SEM_PC
3344 SEM_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
3364 SEM_PC
3365 SEM_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
3385 SEM_PC
3386 SEM_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
3406 SEM_PC
3407 SEM_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
3427 SEM_PC
3428 SEM_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
3448 SEM_PC
3449 SEM_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
3469 SEM_PC
3470 SEM_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
3490 SEM_PC
3491 SEM_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
3511 SEM_PC
3512 SEM_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
3532 SEM_PC
3533 SEM_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
3553 SEM_PC
3554 SEM_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
3562 {
3563 SI tmp_temp;
3564 SI tmp_dregno;
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;
3575 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
3576 }
3577 }
3578
3579 return vpc;
3580 #undef FLD
3581 }
3582
3583 /* ldl-indirect-offset: ldl $offset($abase), $dst */
3584
3585 SEM_PC
3586 SEM_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
3594 {
3595 SI tmp_temp;
3596 SI tmp_dregno;
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;
3607 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
3608 }
3609 }
3610
3611 return vpc;
3612 #undef FLD
3613 }
3614
3615 /* ldl-indirect: ldl ($abase), $dst */
3616
3617 SEM_PC
3618 SEM_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
3626 {
3627 SI tmp_temp;
3628 SI tmp_dregno;
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;
3639 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
3640 }
3641 }
3642
3643 return vpc;
3644 #undef FLD
3645 }
3646
3647 /* ldl-indirect-index: ldl ($abase)[$index*S$scale], $dst */
3648
3649 SEM_PC
3650 SEM_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
3658 {
3659 SI tmp_temp;
3660 SI tmp_dregno;
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;
3671 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
3672 }
3673 }
3674
3675 return vpc;
3676 #undef FLD
3677 }
3678
3679 /* ldl-disp: ldl $optdisp, $dst */
3680
3681 SEM_PC
3682 SEM_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
3690 {
3691 SI tmp_temp;
3692 SI tmp_dregno;
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;
3703 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
3704 }
3705 }
3706
3707 return vpc;
3708 #undef FLD
3709 }
3710
3711 /* ldl-indirect-disp: ldl $optdisp($abase), $dst */
3712
3713 SEM_PC
3714 SEM_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
3722 {
3723 SI tmp_temp;
3724 SI tmp_dregno;
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;
3735 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
3736 }
3737 }
3738
3739 return vpc;
3740 #undef FLD
3741 }
3742
3743 /* ldl-index-disp: ldl $optdisp[$index*S$scale], $dst */
3744
3745 SEM_PC
3746 SEM_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
3754 {
3755 SI tmp_temp;
3756 SI tmp_dregno;
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;
3767 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
3768 }
3769 }
3770
3771 return vpc;
3772 #undef FLD
3773 }
3774
3775 /* ldl-indirect-index-disp: ldl $optdisp($abase)[$index*S$scale], $dst */
3776
3777 SEM_PC
3778 SEM_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
3786 {
3787 SI tmp_temp;
3788 SI tmp_dregno;
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;
3799 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
3800 }
3801 }
3802
3803 return vpc;
3804 #undef FLD
3805 }
3806
3807 /* ldt-offset: ldt $offset, $dst */
3808
3809 SEM_PC
3810 SEM_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
3818 {
3819 SI tmp_temp;
3820 SI tmp_dregno;
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;
3831 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
3832 }
3833 {
3834 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
3835 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
3836 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
3837 }
3838 }
3839
3840 return vpc;
3841 #undef FLD
3842 }
3843
3844 /* ldt-indirect-offset: ldt $offset($abase), $dst */
3845
3846 SEM_PC
3847 SEM_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
3855 {
3856 SI tmp_temp;
3857 SI tmp_dregno;
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;
3868 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
3869 }
3870 {
3871 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
3872 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
3873 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
3874 }
3875 }
3876
3877 return vpc;
3878 #undef FLD
3879 }
3880
3881 /* ldt-indirect: ldt ($abase), $dst */
3882
3883 SEM_PC
3884 SEM_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
3892 {
3893 SI tmp_temp;
3894 SI tmp_dregno;
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;
3905 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
3906 }
3907 {
3908 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
3909 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
3910 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
3911 }
3912 }
3913
3914 return vpc;
3915 #undef FLD
3916 }
3917
3918 /* ldt-indirect-index: ldt ($abase)[$index*S$scale], $dst */
3919
3920 SEM_PC
3921 SEM_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
3929 {
3930 SI tmp_temp;
3931 SI tmp_dregno;
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;
3942 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
3943 }
3944 {
3945 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
3946 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
3947 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
3948 }
3949 }
3950
3951 return vpc;
3952 #undef FLD
3953 }
3954
3955 /* ldt-disp: ldt $optdisp, $dst */
3956
3957 SEM_PC
3958 SEM_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
3966 {
3967 SI tmp_temp;
3968 SI tmp_dregno;
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;
3979 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
3980 }
3981 {
3982 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
3983 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
3984 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
3985 }
3986 }
3987
3988 return vpc;
3989 #undef FLD
3990 }
3991
3992 /* ldt-indirect-disp: ldt $optdisp($abase), $dst */
3993
3994 SEM_PC
3995 SEM_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
4003 {
4004 SI tmp_temp;
4005 SI tmp_dregno;
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;
4016 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
4017 }
4018 {
4019 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4020 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
4021 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
4022 }
4023 }
4024
4025 return vpc;
4026 #undef FLD
4027 }
4028
4029 /* ldt-index-disp: ldt $optdisp[$index*S$scale], $dst */
4030
4031 SEM_PC
4032 SEM_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
4040 {
4041 SI tmp_temp;
4042 SI tmp_dregno;
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;
4053 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
4054 }
4055 {
4056 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4057 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
4058 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
4059 }
4060 }
4061
4062 return vpc;
4063 #undef FLD
4064 }
4065
4066 /* ldt-indirect-index-disp: ldt $optdisp($abase)[$index*S$scale], $dst */
4067
4068 SEM_PC
4069 SEM_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
4077 {
4078 SI tmp_temp;
4079 SI tmp_dregno;
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;
4090 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
4091 }
4092 {
4093 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4094 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
4095 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
4096 }
4097 }
4098
4099 return vpc;
4100 #undef FLD
4101 }
4102
4103 /* ldq-offset: ldq $offset, $dst */
4104
4105 SEM_PC
4106 SEM_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
4114 {
4115 SI tmp_temp;
4116 SI tmp_dregno;
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;
4127 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
4128 }
4129 {
4130 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4131 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
4132 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
4133 }
4134 {
4135 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4136 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
4137 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-3", 'x', opval);
4138 }
4139 }
4140
4141 return vpc;
4142 #undef FLD
4143 }
4144
4145 /* ldq-indirect-offset: ldq $offset($abase), $dst */
4146
4147 SEM_PC
4148 SEM_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
4156 {
4157 SI tmp_temp;
4158 SI tmp_dregno;
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;
4169 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
4170 }
4171 {
4172 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4173 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
4174 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
4175 }
4176 {
4177 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4178 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
4179 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-3", 'x', opval);
4180 }
4181 }
4182
4183 return vpc;
4184 #undef FLD
4185 }
4186
4187 /* ldq-indirect: ldq ($abase), $dst */
4188
4189 SEM_PC
4190 SEM_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
4198 {
4199 SI tmp_temp;
4200 SI tmp_dregno;
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;
4211 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
4212 }
4213 {
4214 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4215 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
4216 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
4217 }
4218 {
4219 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4220 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
4221 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-3", 'x', opval);
4222 }
4223 }
4224
4225 return vpc;
4226 #undef FLD
4227 }
4228
4229 /* ldq-indirect-index: ldq ($abase)[$index*S$scale], $dst */
4230
4231 SEM_PC
4232 SEM_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
4240 {
4241 SI tmp_temp;
4242 SI tmp_dregno;
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;
4253 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
4254 }
4255 {
4256 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4257 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
4258 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
4259 }
4260 {
4261 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4262 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
4263 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-3", 'x', opval);
4264 }
4265 }
4266
4267 return vpc;
4268 #undef FLD
4269 }
4270
4271 /* ldq-disp: ldq $optdisp, $dst */
4272
4273 SEM_PC
4274 SEM_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
4282 {
4283 SI tmp_temp;
4284 SI tmp_dregno;
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;
4295 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
4296 }
4297 {
4298 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4299 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
4300 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
4301 }
4302 {
4303 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4304 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
4305 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-3", 'x', opval);
4306 }
4307 }
4308
4309 return vpc;
4310 #undef FLD
4311 }
4312
4313 /* ldq-indirect-disp: ldq $optdisp($abase), $dst */
4314
4315 SEM_PC
4316 SEM_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
4324 {
4325 SI tmp_temp;
4326 SI tmp_dregno;
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;
4337 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
4338 }
4339 {
4340 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4341 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
4342 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
4343 }
4344 {
4345 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4346 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
4347 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-3", 'x', opval);
4348 }
4349 }
4350
4351 return vpc;
4352 #undef FLD
4353 }
4354
4355 /* ldq-index-disp: ldq $optdisp[$index*S$scale], $dst */
4356
4357 SEM_PC
4358 SEM_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
4366 {
4367 SI tmp_temp;
4368 SI tmp_dregno;
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;
4379 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
4380 }
4381 {
4382 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4383 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
4384 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
4385 }
4386 {
4387 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4388 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
4389 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-3", 'x', opval);
4390 }
4391 }
4392
4393 return vpc;
4394 #undef FLD
4395 }
4396
4397 /* ldq-indirect-index-disp: ldq $optdisp($abase)[$index*S$scale], $dst */
4398
4399 SEM_PC
4400 SEM_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
4408 {
4409 SI tmp_temp;
4410 SI tmp_dregno;
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;
4421 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-1", 'x', opval);
4422 }
4423 {
4424 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 8));
4425 CPU (h_gr[((FLD (f_srcdst)) + (2))]) = opval;
4426 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-2", 'x', opval);
4427 }
4428 {
4429 SI opval = GETMEMSI (current_cpu, pc, ADDSI (tmp_temp, 12));
4430 CPU (h_gr[((FLD (f_srcdst)) + (3))]) = opval;
4431 TRACE_RESULT (current_cpu, abuf, "gr-add:-VM-index-of-dst-3", 'x', opval);
4432 }
4433 }
4434
4435 return vpc;
4436 #undef FLD
4437 }
4438
4439 /* st-offset: st $st_src, $offset */
4440
4441 SEM_PC
4442 SEM_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
4462 SEM_PC
4463 SEM_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
4483 SEM_PC
4484 SEM_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
4504 SEM_PC
4505 SEM_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
4525 SEM_PC
4526 SEM_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
4546 SEM_PC
4547 SEM_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
4567 SEM_PC
4568 SEM_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
4588 SEM_PC
4589 SEM_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
4609 SEM_PC
4610 SEM_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
4630 SEM_PC
4631 SEM_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
4651 SEM_PC
4652 SEM_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
4672 SEM_PC
4673 SEM_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
4693 SEM_PC
4694 SEM_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
4714 SEM_PC
4715 SEM_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
4735 SEM_PC
4736 SEM_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
4756 SEM_PC
4757 SEM_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
4777 SEM_PC
4778 SEM_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
4798 SEM_PC
4799 SEM_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
4819 SEM_PC
4820 SEM_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
4840 SEM_PC
4841 SEM_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
4861 SEM_PC
4862 SEM_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
4882 SEM_PC
4883 SEM_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
4903 SEM_PC
4904 SEM_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
4924 SEM_PC
4925 SEM_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
4945 SEM_PC
4946 SEM_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
4954 {
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 }
4967 }
4968
4969 return vpc;
4970 #undef FLD
4971 }
4972
4973 /* stl-indirect-offset: stl $st_src, $offset($abase) */
4974
4975 SEM_PC
4976 SEM_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
4984 {
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 }
4997 }
4998
4999 return vpc;
5000 #undef FLD
5001 }
5002
5003 /* stl-indirect: stl $st_src, ($abase) */
5004
5005 SEM_PC
5006 SEM_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
5014 {
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 }
5027 }
5028
5029 return vpc;
5030 #undef FLD
5031 }
5032
5033 /* stl-indirect-index: stl $st_src, ($abase)[$index*S$scale] */
5034
5035 SEM_PC
5036 SEM_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
5044 {
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 }
5057 }
5058
5059 return vpc;
5060 #undef FLD
5061 }
5062
5063 /* stl-disp: stl $st_src, $optdisp */
5064
5065 SEM_PC
5066 SEM_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
5074 {
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 }
5087 }
5088
5089 return vpc;
5090 #undef FLD
5091 }
5092
5093 /* stl-indirect-disp: stl $st_src, $optdisp($abase) */
5094
5095 SEM_PC
5096 SEM_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
5104 {
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 }
5117 }
5118
5119 return vpc;
5120 #undef FLD
5121 }
5122
5123 /* stl-index-disp: stl $st_src, $optdisp[$index*S$scale */
5124
5125 SEM_PC
5126 SEM_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
5134 {
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 }
5147 }
5148
5149 return vpc;
5150 #undef FLD
5151 }
5152
5153 /* stl-indirect-index-disp: stl $st_src, $optdisp($abase)[$index*S$scale] */
5154
5155 SEM_PC
5156 SEM_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
5164 {
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 }
5177 }
5178
5179 return vpc;
5180 #undef FLD
5181 }
5182
5183 /* stt-offset: stt $st_src, $offset */
5184
5185 SEM_PC
5186 SEM_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
5194 {
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 }
5212 }
5213
5214 return vpc;
5215 #undef FLD
5216 }
5217
5218 /* stt-indirect-offset: stt $st_src, $offset($abase) */
5219
5220 SEM_PC
5221 SEM_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
5229 {
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 }
5247 }
5248
5249 return vpc;
5250 #undef FLD
5251 }
5252
5253 /* stt-indirect: stt $st_src, ($abase) */
5254
5255 SEM_PC
5256 SEM_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
5264 {
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 }
5282 }
5283
5284 return vpc;
5285 #undef FLD
5286 }
5287
5288 /* stt-indirect-index: stt $st_src, ($abase)[$index*S$scale] */
5289
5290 SEM_PC
5291 SEM_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
5299 {
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 }
5317 }
5318
5319 return vpc;
5320 #undef FLD
5321 }
5322
5323 /* stt-disp: stt $st_src, $optdisp */
5324
5325 SEM_PC
5326 SEM_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
5334 {
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 }
5352 }
5353
5354 return vpc;
5355 #undef FLD
5356 }
5357
5358 /* stt-indirect-disp: stt $st_src, $optdisp($abase) */
5359
5360 SEM_PC
5361 SEM_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
5369 {
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 }
5387 }
5388
5389 return vpc;
5390 #undef FLD
5391 }
5392
5393 /* stt-index-disp: stt $st_src, $optdisp[$index*S$scale */
5394
5395 SEM_PC
5396 SEM_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
5404 {
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 }
5422 }
5423
5424 return vpc;
5425 #undef FLD
5426 }
5427
5428 /* stt-indirect-index-disp: stt $st_src, $optdisp($abase)[$index*S$scale] */
5429
5430 SEM_PC
5431 SEM_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
5439 {
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 }
5457 }
5458
5459 return vpc;
5460 #undef FLD
5461 }
5462
5463 /* stq-offset: stq $st_src, $offset */
5464
5465 SEM_PC
5466 SEM_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
5474 {
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 }
5497 }
5498
5499 return vpc;
5500 #undef FLD
5501 }
5502
5503 /* stq-indirect-offset: stq $st_src, $offset($abase) */
5504
5505 SEM_PC
5506 SEM_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
5514 {
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 }
5537 }
5538
5539 return vpc;
5540 #undef FLD
5541 }
5542
5543 /* stq-indirect: stq $st_src, ($abase) */
5544
5545 SEM_PC
5546 SEM_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
5554 {
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 }
5577 }
5578
5579 return vpc;
5580 #undef FLD
5581 }
5582
5583 /* stq-indirect-index: stq $st_src, ($abase)[$index*S$scale] */
5584
5585 SEM_PC
5586 SEM_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
5594 {
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 }
5617 }
5618
5619 return vpc;
5620 #undef FLD
5621 }
5622
5623 /* stq-disp: stq $st_src, $optdisp */
5624
5625 SEM_PC
5626 SEM_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
5634 {
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 }
5657 }
5658
5659 return vpc;
5660 #undef FLD
5661 }
5662
5663 /* stq-indirect-disp: stq $st_src, $optdisp($abase) */
5664
5665 SEM_PC
5666 SEM_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
5674 {
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 }
5697 }
5698
5699 return vpc;
5700 #undef FLD
5701 }
5702
5703 /* stq-index-disp: stq $st_src, $optdisp[$index*S$scale */
5704
5705 SEM_PC
5706 SEM_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
5714 {
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 }
5737 }
5738
5739 return vpc;
5740 #undef FLD
5741 }
5742
5743 /* stq-indirect-index-disp: stq $st_src, $optdisp($abase)[$index*S$scale] */
5744
5745 SEM_PC
5746 SEM_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
5754 {
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 }
5777 }
5778
5779 return vpc;
5780 #undef FLD
5781 }
5782
5783 /* cmpobe-reg: cmpobe $br_src1, $br_src2, $br_disp */
5784
5785 SEM_PC
5786 SEM_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
5795 if (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
5812 SEM_PC
5813 SEM_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
5822 if (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
5839 SEM_PC
5840 SEM_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
5849 if (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
5866 SEM_PC
5867 SEM_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
5876 if (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
5893 SEM_PC
5894 SEM_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
5903 if (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
5920 SEM_PC
5921 SEM_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
5930 if (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
5947 SEM_PC
5948 SEM_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
5957 if (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
5974 SEM_PC
5975 SEM_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
5984 if (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
6001 SEM_PC
6002 SEM_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
6011 if (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
6028 SEM_PC
6029 SEM_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
6038 if (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
6055 SEM_PC
6056 SEM_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
6065 if (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
6082 SEM_PC
6083 SEM_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
6092 if (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
6109 SEM_PC
6110 SEM_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
6119 if (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
6136 SEM_PC
6137 SEM_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
6146 if (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
6163 SEM_PC
6164 SEM_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
6173 if (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
6190 SEM_PC
6191 SEM_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
6200 if (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
6217 SEM_PC
6218 SEM_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
6227 if (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
6244 SEM_PC
6245 SEM_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
6254 if (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
6271 SEM_PC
6272 SEM_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
6281 if (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
6298 SEM_PC
6299 SEM_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
6308 if (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
6325 SEM_PC
6326 SEM_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
6335 if (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
6352 SEM_PC
6353 SEM_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
6362 if (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
6379 SEM_PC
6380 SEM_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
6389 if (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
6406 SEM_PC
6407 SEM_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
6416 if (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
6433 SEM_PC
6434 SEM_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
6443 if (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
6460 SEM_PC
6461 SEM_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
6470 if (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
6487 SEM_PC
6488 SEM_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
6497 if (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
6514 SEM_PC
6515 SEM_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
6524 if (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
6541 SEM_PC
6542 SEM_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;
6553 TRACE_RESULT (current_cpu, abuf, "cc", 'x', opval);
6554 }
6555
6556 return vpc;
6557 #undef FLD
6558 }
6559
6560 /* cmpi1: cmpi $lit1, $src2 */
6561
6562 SEM_PC
6563 SEM_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;
6574 TRACE_RESULT (current_cpu, abuf, "cc", 'x', opval);
6575 }
6576
6577 return vpc;
6578 #undef FLD
6579 }
6580
6581 /* cmpi2: cmpi $src1, $lit2 */
6582
6583 SEM_PC
6584 SEM_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;
6595 TRACE_RESULT (current_cpu, abuf, "cc", 'x', opval);
6596 }
6597
6598 return vpc;
6599 #undef FLD
6600 }
6601
6602 /* cmpi3: cmpi $lit1, $lit2 */
6603
6604 SEM_PC
6605 SEM_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;
6616 TRACE_RESULT (current_cpu, abuf, "cc", 'x', opval);
6617 }
6618
6619 return vpc;
6620 #undef FLD
6621 }
6622
6623 /* cmpo: cmpo $src1, $src2 */
6624
6625 SEM_PC
6626 SEM_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;
6637 TRACE_RESULT (current_cpu, abuf, "cc", 'x', opval);
6638 }
6639
6640 return vpc;
6641 #undef FLD
6642 }
6643
6644 /* cmpo1: cmpo $lit1, $src2 */
6645
6646 SEM_PC
6647 SEM_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;
6658 TRACE_RESULT (current_cpu, abuf, "cc", 'x', opval);
6659 }
6660
6661 return vpc;
6662 #undef FLD
6663 }
6664
6665 /* cmpo2: cmpo $src1, $lit2 */
6666
6667 SEM_PC
6668 SEM_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;
6679 TRACE_RESULT (current_cpu, abuf, "cc", 'x', opval);
6680 }
6681
6682 return vpc;
6683 #undef FLD
6684 }
6685
6686 /* cmpo3: cmpo $lit1, $lit2 */
6687
6688 SEM_PC
6689 SEM_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;
6700 TRACE_RESULT (current_cpu, abuf, "cc", 'x', opval);
6701 }
6702
6703 return vpc;
6704 #undef FLD
6705 }
6706
6707 /* testno-reg: testno $br_src1 */
6708
6709 SEM_PC
6710 SEM_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
6730 SEM_PC
6731 SEM_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
6751 SEM_PC
6752 SEM_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
6772 SEM_PC
6773 SEM_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
6793 SEM_PC
6794 SEM_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
6814 SEM_PC
6815 SEM_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
6835 SEM_PC
6836 SEM_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
6856 SEM_PC
6857 SEM_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
6877 SEM_PC
6878 SEM_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
6887 if (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
6904 SEM_PC
6905 SEM_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
6914 if (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
6931 SEM_PC
6932 SEM_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
6941 if (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
6958 SEM_PC
6959 SEM_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
6968 if (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
6985 SEM_PC
6986 SEM_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
6995 if (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
7012 SEM_PC
7013 SEM_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
7022 if (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
7039 SEM_PC
7040 SEM_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
7049 if (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
7066 SEM_PC
7067 SEM_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
7076 if (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
7093 SEM_PC
7094 SEM_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
7116 SEM_PC
7117 SEM_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
7139 SEM_PC
7140 SEM_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
7162 SEM_PC
7163 SEM_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
7185 SEM_PC
7186 SEM_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
7208 SEM_PC
7209 SEM_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
7231 SEM_PC
7232 SEM_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
7241 {
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 }
7249 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 0), CPU (h_gr[((UINT) 0)]));
7250 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 4), CPU (h_gr[((UINT) 1)]));
7251 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 8), CPU (h_gr[((UINT) 2)]));
7252 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 12), CPU (h_gr[((UINT) 3)]));
7253 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 16), CPU (h_gr[((UINT) 4)]));
7254 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 20), CPU (h_gr[((UINT) 5)]));
7255 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 24), CPU (h_gr[((UINT) 6)]));
7256 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 28), CPU (h_gr[((UINT) 7)]));
7257 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 32), CPU (h_gr[((UINT) 8)]));
7258 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 36), CPU (h_gr[((UINT) 9)]));
7259 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 40), CPU (h_gr[((UINT) 10)]));
7260 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 44), CPU (h_gr[((UINT) 11)]));
7261 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 48), CPU (h_gr[((UINT) 12)]));
7262 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 52), CPU (h_gr[((UINT) 13)]));
7263 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 56), CPU (h_gr[((UINT) 14)]));
7264 SETMEMSI (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 }
7270 CPU (h_gr[((UINT) 0)]) = 0xdeadbeef;
7271 CPU (h_gr[((UINT) 1)]) = 0xdeadbeef;
7272 CPU (h_gr[((UINT) 2)]) = 0xdeadbeef;
7273 CPU (h_gr[((UINT) 3)]) = 0xdeadbeef;
7274 CPU (h_gr[((UINT) 4)]) = 0xdeadbeef;
7275 CPU (h_gr[((UINT) 5)]) = 0xdeadbeef;
7276 CPU (h_gr[((UINT) 6)]) = 0xdeadbeef;
7277 CPU (h_gr[((UINT) 7)]) = 0xdeadbeef;
7278 CPU (h_gr[((UINT) 8)]) = 0xdeadbeef;
7279 CPU (h_gr[((UINT) 9)]) = 0xdeadbeef;
7280 CPU (h_gr[((UINT) 10)]) = 0xdeadbeef;
7281 CPU (h_gr[((UINT) 11)]) = 0xdeadbeef;
7282 CPU (h_gr[((UINT) 12)]) = 0xdeadbeef;
7283 CPU (h_gr[((UINT) 13)]) = 0xdeadbeef;
7284 CPU (h_gr[((UINT) 14)]) = 0xdeadbeef;
7285 CPU (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 }
7301 }
7302
7303 SEM_BRANCH_FINI (vpc);
7304 return vpc;
7305 #undef FLD
7306 }
7307
7308 /* callx-indirect: callx ($abase) */
7309
7310 SEM_PC
7311 SEM_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
7320 {
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 }
7328 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 0), CPU (h_gr[((UINT) 0)]));
7329 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 4), CPU (h_gr[((UINT) 1)]));
7330 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 8), CPU (h_gr[((UINT) 2)]));
7331 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 12), CPU (h_gr[((UINT) 3)]));
7332 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 16), CPU (h_gr[((UINT) 4)]));
7333 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 20), CPU (h_gr[((UINT) 5)]));
7334 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 24), CPU (h_gr[((UINT) 6)]));
7335 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 28), CPU (h_gr[((UINT) 7)]));
7336 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 32), CPU (h_gr[((UINT) 8)]));
7337 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 36), CPU (h_gr[((UINT) 9)]));
7338 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 40), CPU (h_gr[((UINT) 10)]));
7339 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 44), CPU (h_gr[((UINT) 11)]));
7340 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 48), CPU (h_gr[((UINT) 12)]));
7341 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 52), CPU (h_gr[((UINT) 13)]));
7342 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 56), CPU (h_gr[((UINT) 14)]));
7343 SETMEMSI (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 }
7349 CPU (h_gr[((UINT) 0)]) = 0xdeadbeef;
7350 CPU (h_gr[((UINT) 1)]) = 0xdeadbeef;
7351 CPU (h_gr[((UINT) 2)]) = 0xdeadbeef;
7352 CPU (h_gr[((UINT) 3)]) = 0xdeadbeef;
7353 CPU (h_gr[((UINT) 4)]) = 0xdeadbeef;
7354 CPU (h_gr[((UINT) 5)]) = 0xdeadbeef;
7355 CPU (h_gr[((UINT) 6)]) = 0xdeadbeef;
7356 CPU (h_gr[((UINT) 7)]) = 0xdeadbeef;
7357 CPU (h_gr[((UINT) 8)]) = 0xdeadbeef;
7358 CPU (h_gr[((UINT) 9)]) = 0xdeadbeef;
7359 CPU (h_gr[((UINT) 10)]) = 0xdeadbeef;
7360 CPU (h_gr[((UINT) 11)]) = 0xdeadbeef;
7361 CPU (h_gr[((UINT) 12)]) = 0xdeadbeef;
7362 CPU (h_gr[((UINT) 13)]) = 0xdeadbeef;
7363 CPU (h_gr[((UINT) 14)]) = 0xdeadbeef;
7364 CPU (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 }
7380 }
7381
7382 SEM_BRANCH_FINI (vpc);
7383 return vpc;
7384 #undef FLD
7385 }
7386
7387 /* callx-indirect-offset: callx $offset($abase) */
7388
7389 SEM_PC
7390 SEM_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
7399 {
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 }
7407 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 0), CPU (h_gr[((UINT) 0)]));
7408 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 4), CPU (h_gr[((UINT) 1)]));
7409 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 8), CPU (h_gr[((UINT) 2)]));
7410 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 12), CPU (h_gr[((UINT) 3)]));
7411 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 16), CPU (h_gr[((UINT) 4)]));
7412 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 20), CPU (h_gr[((UINT) 5)]));
7413 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 24), CPU (h_gr[((UINT) 6)]));
7414 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 28), CPU (h_gr[((UINT) 7)]));
7415 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 32), CPU (h_gr[((UINT) 8)]));
7416 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 36), CPU (h_gr[((UINT) 9)]));
7417 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 40), CPU (h_gr[((UINT) 10)]));
7418 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 44), CPU (h_gr[((UINT) 11)]));
7419 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 48), CPU (h_gr[((UINT) 12)]));
7420 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 52), CPU (h_gr[((UINT) 13)]));
7421 SETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 56), CPU (h_gr[((UINT) 14)]));
7422 SETMEMSI (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 }
7428 CPU (h_gr[((UINT) 0)]) = 0xdeadbeef;
7429 CPU (h_gr[((UINT) 1)]) = 0xdeadbeef;
7430 CPU (h_gr[((UINT) 2)]) = 0xdeadbeef;
7431 CPU (h_gr[((UINT) 3)]) = 0xdeadbeef;
7432 CPU (h_gr[((UINT) 4)]) = 0xdeadbeef;
7433 CPU (h_gr[((UINT) 5)]) = 0xdeadbeef;
7434 CPU (h_gr[((UINT) 6)]) = 0xdeadbeef;
7435 CPU (h_gr[((UINT) 7)]) = 0xdeadbeef;
7436 CPU (h_gr[((UINT) 8)]) = 0xdeadbeef;
7437 CPU (h_gr[((UINT) 9)]) = 0xdeadbeef;
7438 CPU (h_gr[((UINT) 10)]) = 0xdeadbeef;
7439 CPU (h_gr[((UINT) 11)]) = 0xdeadbeef;
7440 CPU (h_gr[((UINT) 12)]) = 0xdeadbeef;
7441 CPU (h_gr[((UINT) 13)]) = 0xdeadbeef;
7442 CPU (h_gr[((UINT) 14)]) = 0xdeadbeef;
7443 CPU (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 }
7459 }
7460
7461 SEM_BRANCH_FINI (vpc);
7462 return vpc;
7463 #undef FLD
7464 }
7465
7466 /* ret: ret */
7467
7468 SEM_PC
7469 SEM_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
7478 {
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 }
7484 CPU (h_gr[((UINT) 0)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 0));
7485 CPU (h_gr[((UINT) 1)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 4));
7486 CPU (h_gr[((UINT) 2)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 8));
7487 CPU (h_gr[((UINT) 3)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 12));
7488 CPU (h_gr[((UINT) 4)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 16));
7489 CPU (h_gr[((UINT) 5)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 20));
7490 CPU (h_gr[((UINT) 6)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 24));
7491 CPU (h_gr[((UINT) 7)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 28));
7492 CPU (h_gr[((UINT) 8)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 32));
7493 CPU (h_gr[((UINT) 9)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 36));
7494 CPU (h_gr[((UINT) 10)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 40));
7495 CPU (h_gr[((UINT) 11)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 44));
7496 CPU (h_gr[((UINT) 12)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 48));
7497 CPU (h_gr[((UINT) 13)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 52));
7498 CPU (h_gr[((UINT) 14)]) = GETMEMSI (current_cpu, pc, ADDSI (CPU (h_gr[((UINT) 31)]), 56));
7499 CPU (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 }
7505 }
7506
7507 SEM_BRANCH_FINI (vpc);
7508 return vpc;
7509 #undef FLD
7510 }
7511
7512 /* calls: calls $src1 */
7513
7514 SEM_PC
7515 SEM_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
7537 SEM_PC
7538 SEM_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
7560 SEM_PC
7561 SEM_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
7569 do { } while (0); /*nop*/
7570
7571 return vpc;
7572 #undef FLD
7573 }
7574
This page took 0.202994 seconds and 4 git commands to generate.