]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - sim/i960/cpu.h
import gdb-19990422 snapshot
[thirdparty/binutils-gdb.git] / sim / i960 / cpu.h
CommitLineData
c906108c
SS
1/* CPU family header for i960base.
2
3THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
6
7This file is part of the GNU Simulators.
8
9This program is free software; you can redistribute it and/or modify
10it under the terms of the GNU General Public License as published by
11the Free Software Foundation; either version 2, or (at your option)
12any later version.
13
14This program is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17GNU General Public License for more details.
18
19You should have received a copy of the GNU General Public License along
20with this program; if not, write to the Free Software Foundation, Inc.,
2159 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22
23*/
24
25#ifndef CPU_I960BASE_H
26#define CPU_I960BASE_H
27
28/* Maximum number of instructions that are fetched at a time.
29 This is for LIW type instructions sets (e.g. m32r). */
30#define MAX_LIW_INSNS 1
31
32/* Maximum number of instructions that can be executed in parallel. */
33#define MAX_PARALLEL_INSNS 1
34
35/* CPU state information. */
36typedef struct {
37 /* Hardware elements. */
38 struct {
39 /* program counter */
40 USI h_pc;
41#define GET_H_PC() CPU (h_pc)
42#define SET_H_PC(x) (CPU (h_pc) = (x))
43 /* general registers */
44 SI h_gr[32];
45#define GET_H_GR(a1) CPU (h_gr)[a1]
46#define SET_H_GR(a1, x) (CPU (h_gr)[a1] = (x))
47 /* condition code */
48 SI h_cc;
49#define GET_H_CC() CPU (h_cc)
50#define SET_H_CC(x) (CPU (h_cc) = (x))
51 } hardware;
52#define CPU_CGEN_HW(cpu) (& (cpu)->cpu_data.hardware)
53} I960BASE_CPU_DATA;
54
55/* Cover fns for register access. */
56USI i960base_h_pc_get (SIM_CPU *);
57void i960base_h_pc_set (SIM_CPU *, USI);
58SI i960base_h_gr_get (SIM_CPU *, UINT);
59void i960base_h_gr_set (SIM_CPU *, UINT, SI);
60SI i960base_h_cc_get (SIM_CPU *);
61void i960base_h_cc_set (SIM_CPU *, SI);
62
63/* These must be hand-written. */
64extern CPUREG_FETCH_FN i960base_fetch_register;
65extern CPUREG_STORE_FN i960base_store_register;
66
67typedef struct {
68 int empty;
69} MODEL_I960KA_DATA;
70
71typedef struct {
72 int empty;
73} MODEL_I960CA_DATA;
74
75union sem_fields {
76 struct { /* empty sformat for unspecified field list */
77 int empty;
78 } fmt_empty;
79 struct { /* e.g. mulo $src1, $src2, $dst */
80 SI * i_src1;
81 SI * i_src2;
82 SI * i_dst;
83 unsigned char in_src1;
84 unsigned char in_src2;
85 unsigned char out_dst;
86 } fmt_mulo;
87 struct { /* e.g. mulo $lit1, $src2, $dst */
88 UINT f_src1;
89 SI * i_src2;
90 SI * i_dst;
91 unsigned char in_src2;
92 unsigned char out_dst;
93 } fmt_mulo1;
94 struct { /* e.g. mulo $src1, $lit2, $dst */
95 UINT f_src2;
96 SI * i_src1;
97 SI * i_dst;
98 unsigned char in_src1;
99 unsigned char out_dst;
100 } fmt_mulo2;
101 struct { /* e.g. mulo $lit1, $lit2, $dst */
102 UINT f_src1;
103 UINT f_src2;
104 SI * i_dst;
105 unsigned char out_dst;
106 } fmt_mulo3;
107 struct { /* e.g. notbit $src1, $src2, $dst */
108 SI * i_src1;
109 SI * i_src2;
110 SI * i_dst;
111 unsigned char in_src1;
112 unsigned char in_src2;
113 unsigned char out_dst;
114 } fmt_notbit;
115 struct { /* e.g. notbit $lit1, $src2, $dst */
116 UINT f_src1;
117 SI * i_src2;
118 SI * i_dst;
119 unsigned char in_src2;
120 unsigned char out_dst;
121 } fmt_notbit1;
122 struct { /* e.g. notbit $src1, $lit2, $dst */
123 UINT f_src2;
124 SI * i_src1;
125 SI * i_dst;
126 unsigned char in_src1;
127 unsigned char out_dst;
128 } fmt_notbit2;
129 struct { /* e.g. notbit $lit1, $lit2, $dst */
130 UINT f_src1;
131 UINT f_src2;
132 SI * i_dst;
133 unsigned char out_dst;
134 } fmt_notbit3;
135 struct { /* e.g. not $src1, $src2, $dst */
136 SI * i_src1;
137 SI * i_dst;
138 unsigned char in_src1;
139 unsigned char out_dst;
140 } fmt_not;
141 struct { /* e.g. not $lit1, $src2, $dst */
142 UINT f_src1;
143 SI * i_dst;
144 unsigned char out_dst;
145 } fmt_not1;
146 struct { /* e.g. not $src1, $lit2, $dst */
147 SI * i_src1;
148 SI * i_dst;
149 unsigned char in_src1;
150 unsigned char out_dst;
151 } fmt_not2;
152 struct { /* e.g. not $lit1, $lit2, $dst */
153 UINT f_src1;
154 SI * i_dst;
155 unsigned char out_dst;
156 } fmt_not3;
7a292a7a
SS
157 struct { /* e.g. shlo $src1, $src2, $dst */
158 SI * i_src1;
159 SI * i_src2;
160 SI * i_dst;
161 unsigned char in_src1;
162 unsigned char in_src2;
163 unsigned char out_dst;
164 } fmt_shlo;
165 struct { /* e.g. shlo $lit1, $src2, $dst */
166 UINT f_src1;
167 SI * i_src2;
168 SI * i_dst;
169 unsigned char in_src2;
170 unsigned char out_dst;
171 } fmt_shlo1;
172 struct { /* e.g. shlo $src1, $lit2, $dst */
173 UINT f_src2;
174 SI * i_src1;
175 SI * i_dst;
176 unsigned char in_src1;
177 unsigned char out_dst;
178 } fmt_shlo2;
179 struct { /* e.g. shlo $lit1, $lit2, $dst */
180 UINT f_src1;
181 UINT f_src2;
182 SI * i_dst;
183 unsigned char out_dst;
184 } fmt_shlo3;
c906108c
SS
185 struct { /* e.g. emul $src1, $src2, $dst */
186 UINT f_srcdst;
187 SI * i_src1;
188 SI * i_src2;
189 SI * i_dst;
190 unsigned char in_src1;
191 unsigned char in_src2;
192 unsigned char out_dst;
7a292a7a 193 unsigned char out_h_gr_add__VM_index_of_dst_1;
c906108c
SS
194 } fmt_emul;
195 struct { /* e.g. emul $lit1, $src2, $dst */
196 UINT f_srcdst;
197 UINT f_src1;
198 SI * i_src2;
199 SI * i_dst;
200 unsigned char in_src2;
201 unsigned char out_dst;
7a292a7a 202 unsigned char out_h_gr_add__VM_index_of_dst_1;
c906108c
SS
203 } fmt_emul1;
204 struct { /* e.g. emul $src1, $lit2, $dst */
205 UINT f_srcdst;
206 UINT f_src2;
207 SI * i_src1;
208 SI * i_dst;
209 unsigned char in_src1;
210 unsigned char out_dst;
7a292a7a 211 unsigned char out_h_gr_add__VM_index_of_dst_1;
c906108c
SS
212 } fmt_emul2;
213 struct { /* e.g. emul $lit1, $lit2, $dst */
214 UINT f_srcdst;
215 UINT f_src1;
216 UINT f_src2;
217 SI * i_dst;
218 unsigned char out_dst;
7a292a7a 219 unsigned char out_h_gr_add__VM_index_of_dst_1;
c906108c
SS
220 } fmt_emul3;
221 struct { /* e.g. movl $src1, $dst */
222 UINT f_src1;
223 UINT f_srcdst;
224 SI * i_src1;
225 SI * i_dst;
7a292a7a 226 unsigned char in_h_gr_add__VM_index_of_src1_1;
c906108c
SS
227 unsigned char in_src1;
228 unsigned char out_dst;
7a292a7a 229 unsigned char out_h_gr_add__VM_index_of_dst_1;
c906108c
SS
230 } fmt_movl;
231 struct { /* e.g. movl $lit1, $dst */
232 UINT f_srcdst;
233 UINT f_src1;
234 SI * i_dst;
235 unsigned char out_dst;
7a292a7a 236 unsigned char out_h_gr_add__VM_index_of_dst_1;
c906108c
SS
237 } fmt_movl1;
238 struct { /* e.g. movt $src1, $dst */
239 UINT f_src1;
240 UINT f_srcdst;
241 SI * i_src1;
242 SI * i_dst;
7a292a7a
SS
243 unsigned char in_h_gr_add__VM_index_of_src1_1;
244 unsigned char in_h_gr_add__VM_index_of_src1_2;
c906108c
SS
245 unsigned char in_src1;
246 unsigned char out_dst;
7a292a7a
SS
247 unsigned char out_h_gr_add__VM_index_of_dst_1;
248 unsigned char out_h_gr_add__VM_index_of_dst_2;
c906108c
SS
249 } fmt_movt;
250 struct { /* e.g. movt $lit1, $dst */
251 UINT f_srcdst;
252 UINT f_src1;
253 SI * i_dst;
254 unsigned char out_dst;
7a292a7a
SS
255 unsigned char out_h_gr_add__VM_index_of_dst_1;
256 unsigned char out_h_gr_add__VM_index_of_dst_2;
c906108c
SS
257 } fmt_movt1;
258 struct { /* e.g. movq $src1, $dst */
259 UINT f_src1;
260 UINT f_srcdst;
261 SI * i_src1;
262 SI * i_dst;
7a292a7a
SS
263 unsigned char in_h_gr_add__VM_index_of_src1_1;
264 unsigned char in_h_gr_add__VM_index_of_src1_2;
265 unsigned char in_h_gr_add__VM_index_of_src1_3;
c906108c
SS
266 unsigned char in_src1;
267 unsigned char out_dst;
7a292a7a
SS
268 unsigned char out_h_gr_add__VM_index_of_dst_1;
269 unsigned char out_h_gr_add__VM_index_of_dst_2;
270 unsigned char out_h_gr_add__VM_index_of_dst_3;
c906108c
SS
271 } fmt_movq;
272 struct { /* e.g. movq $lit1, $dst */
273 UINT f_srcdst;
274 UINT f_src1;
275 SI * i_dst;
276 unsigned char out_dst;
7a292a7a
SS
277 unsigned char out_h_gr_add__VM_index_of_dst_1;
278 unsigned char out_h_gr_add__VM_index_of_dst_2;
279 unsigned char out_h_gr_add__VM_index_of_dst_3;
c906108c
SS
280 } fmt_movq1;
281 struct { /* e.g. modpc $src1, $src2, $dst */
282 SI * i_src2;
283 SI * i_dst;
284 unsigned char in_src2;
285 unsigned char out_dst;
286 } fmt_modpc;
287 struct { /* e.g. lda $offset, $dst */
288 UINT f_offset;
289 SI * i_dst;
290 unsigned char out_dst;
291 } fmt_lda_offset;
292 struct { /* e.g. lda $offset($abase), $dst */
293 UINT f_offset;
294 SI * i_abase;
295 SI * i_dst;
296 unsigned char in_abase;
297 unsigned char out_dst;
298 } fmt_lda_indirect_offset;
299 struct { /* e.g. lda ($abase), $dst */
300 SI * i_abase;
301 SI * i_dst;
302 unsigned char in_abase;
303 unsigned char out_dst;
304 } fmt_lda_indirect;
305 struct { /* e.g. lda ($abase)[$index*S$scale], $dst */
306 UINT f_scale;
307 SI * i_abase;
308 SI * i_index;
309 SI * i_dst;
310 unsigned char in_abase;
311 unsigned char in_index;
312 unsigned char out_dst;
313 } fmt_lda_indirect_index;
314 struct { /* e.g. lda $optdisp, $dst */
315 UINT f_optdisp;
316 SI * i_dst;
317 unsigned char out_dst;
318 } fmt_lda_disp;
319 struct { /* e.g. lda $optdisp($abase), $dst */
320 UINT f_optdisp;
321 SI * i_abase;
322 SI * i_dst;
323 unsigned char in_abase;
324 unsigned char out_dst;
325 } fmt_lda_indirect_disp;
326 struct { /* e.g. lda $optdisp[$index*S$scale], $dst */
327 UINT f_optdisp;
328 UINT f_scale;
329 SI * i_index;
330 SI * i_dst;
331 unsigned char in_index;
332 unsigned char out_dst;
333 } fmt_lda_index_disp;
334 struct { /* e.g. lda $optdisp($abase)[$index*S$scale], $dst */
335 UINT f_optdisp;
336 UINT f_scale;
337 SI * i_abase;
338 SI * i_index;
339 SI * i_dst;
340 unsigned char in_abase;
341 unsigned char in_index;
342 unsigned char out_dst;
343 } fmt_lda_indirect_index_disp;
344 struct { /* e.g. ld $offset, $dst */
345 UINT f_offset;
346 SI * i_dst;
347 unsigned char out_dst;
348 } fmt_ld_offset;
349 struct { /* e.g. ld $offset($abase), $dst */
350 UINT f_offset;
351 SI * i_abase;
352 SI * i_dst;
353 unsigned char in_abase;
354 unsigned char out_dst;
355 } fmt_ld_indirect_offset;
356 struct { /* e.g. ld ($abase), $dst */
357 SI * i_abase;
358 SI * i_dst;
359 unsigned char in_abase;
360 unsigned char out_dst;
361 } fmt_ld_indirect;
362 struct { /* e.g. ld ($abase)[$index*S$scale], $dst */
363 UINT f_scale;
364 SI * i_abase;
365 SI * i_index;
366 SI * i_dst;
367 unsigned char in_abase;
368 unsigned char in_index;
369 unsigned char out_dst;
370 } fmt_ld_indirect_index;
371 struct { /* e.g. ld $optdisp, $dst */
372 UINT f_optdisp;
373 SI * i_dst;
374 unsigned char out_dst;
375 } fmt_ld_disp;
376 struct { /* e.g. ld $optdisp($abase), $dst */
377 UINT f_optdisp;
378 SI * i_abase;
379 SI * i_dst;
380 unsigned char in_abase;
381 unsigned char out_dst;
382 } fmt_ld_indirect_disp;
383 struct { /* e.g. ld $optdisp[$index*S$scale], $dst */
384 UINT f_optdisp;
385 UINT f_scale;
386 SI * i_index;
387 SI * i_dst;
388 unsigned char in_index;
389 unsigned char out_dst;
390 } fmt_ld_index_disp;
391 struct { /* e.g. ld $optdisp($abase)[$index*S$scale], $dst */
392 UINT f_optdisp;
393 UINT f_scale;
394 SI * i_abase;
395 SI * i_index;
396 SI * i_dst;
397 unsigned char in_abase;
398 unsigned char in_index;
399 unsigned char out_dst;
400 } fmt_ld_indirect_index_disp;
401 struct { /* e.g. ldob $offset, $dst */
402 UINT f_offset;
403 SI * i_dst;
404 unsigned char out_dst;
405 } fmt_ldob_offset;
406 struct { /* e.g. ldob $offset($abase), $dst */
407 UINT f_offset;
408 SI * i_abase;
409 SI * i_dst;
410 unsigned char in_abase;
411 unsigned char out_dst;
412 } fmt_ldob_indirect_offset;
413 struct { /* e.g. ldob ($abase), $dst */
414 SI * i_abase;
415 SI * i_dst;
416 unsigned char in_abase;
417 unsigned char out_dst;
418 } fmt_ldob_indirect;
419 struct { /* e.g. ldob ($abase)[$index*S$scale], $dst */
420 UINT f_scale;
421 SI * i_abase;
422 SI * i_index;
423 SI * i_dst;
424 unsigned char in_abase;
425 unsigned char in_index;
426 unsigned char out_dst;
427 } fmt_ldob_indirect_index;
428 struct { /* e.g. ldob $optdisp, $dst */
429 UINT f_optdisp;
430 SI * i_dst;
431 unsigned char out_dst;
432 } fmt_ldob_disp;
433 struct { /* e.g. ldob $optdisp($abase), $dst */
434 UINT f_optdisp;
435 SI * i_abase;
436 SI * i_dst;
437 unsigned char in_abase;
438 unsigned char out_dst;
439 } fmt_ldob_indirect_disp;
440 struct { /* e.g. ldob $optdisp[$index*S$scale], $dst */
441 UINT f_optdisp;
442 UINT f_scale;
443 SI * i_index;
444 SI * i_dst;
445 unsigned char in_index;
446 unsigned char out_dst;
447 } fmt_ldob_index_disp;
448 struct { /* e.g. ldob $optdisp($abase)[$index*S$scale], $dst */
449 UINT f_optdisp;
450 UINT f_scale;
451 SI * i_abase;
452 SI * i_index;
453 SI * i_dst;
454 unsigned char in_abase;
455 unsigned char in_index;
456 unsigned char out_dst;
457 } fmt_ldob_indirect_index_disp;
458 struct { /* e.g. ldos $offset, $dst */
459 UINT f_offset;
460 SI * i_dst;
461 unsigned char out_dst;
462 } fmt_ldos_offset;
463 struct { /* e.g. ldos $offset($abase), $dst */
464 UINT f_offset;
465 SI * i_abase;
466 SI * i_dst;
467 unsigned char in_abase;
468 unsigned char out_dst;
469 } fmt_ldos_indirect_offset;
470 struct { /* e.g. ldos ($abase), $dst */
471 SI * i_abase;
472 SI * i_dst;
473 unsigned char in_abase;
474 unsigned char out_dst;
475 } fmt_ldos_indirect;
476 struct { /* e.g. ldos ($abase)[$index*S$scale], $dst */
477 UINT f_scale;
478 SI * i_abase;
479 SI * i_index;
480 SI * i_dst;
481 unsigned char in_abase;
482 unsigned char in_index;
483 unsigned char out_dst;
484 } fmt_ldos_indirect_index;
485 struct { /* e.g. ldos $optdisp, $dst */
486 UINT f_optdisp;
487 SI * i_dst;
488 unsigned char out_dst;
489 } fmt_ldos_disp;
490 struct { /* e.g. ldos $optdisp($abase), $dst */
491 UINT f_optdisp;
492 SI * i_abase;
493 SI * i_dst;
494 unsigned char in_abase;
495 unsigned char out_dst;
496 } fmt_ldos_indirect_disp;
497 struct { /* e.g. ldos $optdisp[$index*S$scale], $dst */
498 UINT f_optdisp;
499 UINT f_scale;
500 SI * i_index;
501 SI * i_dst;
502 unsigned char in_index;
503 unsigned char out_dst;
504 } fmt_ldos_index_disp;
505 struct { /* e.g. ldos $optdisp($abase)[$index*S$scale], $dst */
506 UINT f_optdisp;
507 UINT f_scale;
508 SI * i_abase;
509 SI * i_index;
510 SI * i_dst;
511 unsigned char in_abase;
512 unsigned char in_index;
513 unsigned char out_dst;
514 } fmt_ldos_indirect_index_disp;
515 struct { /* e.g. ldib $offset, $dst */
516 UINT f_offset;
517 SI * i_dst;
518 unsigned char out_dst;
519 } fmt_ldib_offset;
520 struct { /* e.g. ldib $offset($abase), $dst */
521 UINT f_offset;
522 SI * i_abase;
523 SI * i_dst;
524 unsigned char in_abase;
525 unsigned char out_dst;
526 } fmt_ldib_indirect_offset;
527 struct { /* e.g. ldib ($abase), $dst */
528 SI * i_abase;
529 SI * i_dst;
530 unsigned char in_abase;
531 unsigned char out_dst;
532 } fmt_ldib_indirect;
533 struct { /* e.g. ldib ($abase)[$index*S$scale], $dst */
534 UINT f_scale;
535 SI * i_abase;
536 SI * i_index;
537 SI * i_dst;
538 unsigned char in_abase;
539 unsigned char in_index;
540 unsigned char out_dst;
541 } fmt_ldib_indirect_index;
542 struct { /* e.g. ldib $optdisp, $dst */
543 UINT f_optdisp;
544 SI * i_dst;
545 unsigned char out_dst;
546 } fmt_ldib_disp;
547 struct { /* e.g. ldib $optdisp($abase), $dst */
548 UINT f_optdisp;
549 SI * i_abase;
550 SI * i_dst;
551 unsigned char in_abase;
552 unsigned char out_dst;
553 } fmt_ldib_indirect_disp;
554 struct { /* e.g. ldib $optdisp[$index*S$scale], $dst */
555 UINT f_optdisp;
556 UINT f_scale;
557 SI * i_index;
558 SI * i_dst;
559 unsigned char in_index;
560 unsigned char out_dst;
561 } fmt_ldib_index_disp;
562 struct { /* e.g. ldib $optdisp($abase)[$index*S$scale], $dst */
563 UINT f_optdisp;
564 UINT f_scale;
565 SI * i_abase;
566 SI * i_index;
567 SI * i_dst;
568 unsigned char in_abase;
569 unsigned char in_index;
570 unsigned char out_dst;
571 } fmt_ldib_indirect_index_disp;
572 struct { /* e.g. ldis $offset, $dst */
573 UINT f_offset;
574 SI * i_dst;
575 unsigned char out_dst;
576 } fmt_ldis_offset;
577 struct { /* e.g. ldis $offset($abase), $dst */
578 UINT f_offset;
579 SI * i_abase;
580 SI * i_dst;
581 unsigned char in_abase;
582 unsigned char out_dst;
583 } fmt_ldis_indirect_offset;
584 struct { /* e.g. ldis ($abase), $dst */
585 SI * i_abase;
586 SI * i_dst;
587 unsigned char in_abase;
588 unsigned char out_dst;
589 } fmt_ldis_indirect;
590 struct { /* e.g. ldis ($abase)[$index*S$scale], $dst */
591 UINT f_scale;
592 SI * i_abase;
593 SI * i_index;
594 SI * i_dst;
595 unsigned char in_abase;
596 unsigned char in_index;
597 unsigned char out_dst;
598 } fmt_ldis_indirect_index;
599 struct { /* e.g. ldis $optdisp, $dst */
600 UINT f_optdisp;
601 SI * i_dst;
602 unsigned char out_dst;
603 } fmt_ldis_disp;
604 struct { /* e.g. ldis $optdisp($abase), $dst */
605 UINT f_optdisp;
606 SI * i_abase;
607 SI * i_dst;
608 unsigned char in_abase;
609 unsigned char out_dst;
610 } fmt_ldis_indirect_disp;
611 struct { /* e.g. ldis $optdisp[$index*S$scale], $dst */
612 UINT f_optdisp;
613 UINT f_scale;
614 SI * i_index;
615 SI * i_dst;
616 unsigned char in_index;
617 unsigned char out_dst;
618 } fmt_ldis_index_disp;
619 struct { /* e.g. ldis $optdisp($abase)[$index*S$scale], $dst */
620 UINT f_optdisp;
621 UINT f_scale;
622 SI * i_abase;
623 SI * i_index;
624 SI * i_dst;
625 unsigned char in_abase;
626 unsigned char in_index;
627 unsigned char out_dst;
628 } fmt_ldis_indirect_index_disp;
629 struct { /* e.g. ldl $offset, $dst */
630 UINT f_srcdst;
631 UINT f_offset;
632 SI * i_dst;
633 unsigned char out_dst;
7a292a7a 634 unsigned char out_h_gr_add__VM_index_of_dst_1;
c906108c
SS
635 } fmt_ldl_offset;
636 struct { /* e.g. ldl $offset($abase), $dst */
637 UINT f_srcdst;
638 UINT f_offset;
639 SI * i_abase;
640 SI * i_dst;
641 unsigned char in_abase;
642 unsigned char out_dst;
7a292a7a 643 unsigned char out_h_gr_add__VM_index_of_dst_1;
c906108c
SS
644 } fmt_ldl_indirect_offset;
645 struct { /* e.g. ldl ($abase), $dst */
646 UINT f_srcdst;
647 SI * i_abase;
648 SI * i_dst;
649 unsigned char in_abase;
650 unsigned char out_dst;
7a292a7a 651 unsigned char out_h_gr_add__VM_index_of_dst_1;
c906108c
SS
652 } fmt_ldl_indirect;
653 struct { /* e.g. ldl ($abase)[$index*S$scale], $dst */
654 UINT f_srcdst;
655 UINT f_scale;
656 SI * i_abase;
657 SI * i_index;
658 SI * i_dst;
659 unsigned char in_abase;
660 unsigned char in_index;
661 unsigned char out_dst;
7a292a7a 662 unsigned char out_h_gr_add__VM_index_of_dst_1;
c906108c
SS
663 } fmt_ldl_indirect_index;
664 struct { /* e.g. ldl $optdisp, $dst */
665 UINT f_srcdst;
666 UINT f_optdisp;
667 SI * i_dst;
668 unsigned char out_dst;
7a292a7a 669 unsigned char out_h_gr_add__VM_index_of_dst_1;
c906108c
SS
670 } fmt_ldl_disp;
671 struct { /* e.g. ldl $optdisp($abase), $dst */
672 UINT f_srcdst;
673 UINT f_optdisp;
674 SI * i_abase;
675 SI * i_dst;
676 unsigned char in_abase;
677 unsigned char out_dst;
7a292a7a 678 unsigned char out_h_gr_add__VM_index_of_dst_1;
c906108c
SS
679 } fmt_ldl_indirect_disp;
680 struct { /* e.g. ldl $optdisp[$index*S$scale], $dst */
681 UINT f_srcdst;
682 UINT f_optdisp;
683 UINT f_scale;
684 SI * i_index;
685 SI * i_dst;
686 unsigned char in_index;
687 unsigned char out_dst;
7a292a7a 688 unsigned char out_h_gr_add__VM_index_of_dst_1;
c906108c
SS
689 } fmt_ldl_index_disp;
690 struct { /* e.g. ldl $optdisp($abase)[$index*S$scale], $dst */
691 UINT f_srcdst;
692 UINT f_optdisp;
693 UINT f_scale;
694 SI * i_abase;
695 SI * i_index;
696 SI * i_dst;
697 unsigned char in_abase;
698 unsigned char in_index;
699 unsigned char out_dst;
7a292a7a 700 unsigned char out_h_gr_add__VM_index_of_dst_1;
c906108c
SS
701 } fmt_ldl_indirect_index_disp;
702 struct { /* e.g. ldt $offset, $dst */
703 UINT f_srcdst;
704 UINT f_offset;
705 SI * i_dst;
706 unsigned char out_dst;
7a292a7a
SS
707 unsigned char out_h_gr_add__VM_index_of_dst_1;
708 unsigned char out_h_gr_add__VM_index_of_dst_2;
c906108c
SS
709 } fmt_ldt_offset;
710 struct { /* e.g. ldt $offset($abase), $dst */
711 UINT f_srcdst;
712 UINT f_offset;
713 SI * i_abase;
714 SI * i_dst;
715 unsigned char in_abase;
716 unsigned char out_dst;
7a292a7a
SS
717 unsigned char out_h_gr_add__VM_index_of_dst_1;
718 unsigned char out_h_gr_add__VM_index_of_dst_2;
c906108c
SS
719 } fmt_ldt_indirect_offset;
720 struct { /* e.g. ldt ($abase), $dst */
721 UINT f_srcdst;
722 SI * i_abase;
723 SI * i_dst;
724 unsigned char in_abase;
725 unsigned char out_dst;
7a292a7a
SS
726 unsigned char out_h_gr_add__VM_index_of_dst_1;
727 unsigned char out_h_gr_add__VM_index_of_dst_2;
c906108c
SS
728 } fmt_ldt_indirect;
729 struct { /* e.g. ldt ($abase)[$index*S$scale], $dst */
730 UINT f_srcdst;
731 UINT f_scale;
732 SI * i_abase;
733 SI * i_index;
734 SI * i_dst;
735 unsigned char in_abase;
736 unsigned char in_index;
737 unsigned char out_dst;
7a292a7a
SS
738 unsigned char out_h_gr_add__VM_index_of_dst_1;
739 unsigned char out_h_gr_add__VM_index_of_dst_2;
c906108c
SS
740 } fmt_ldt_indirect_index;
741 struct { /* e.g. ldt $optdisp, $dst */
742 UINT f_srcdst;
743 UINT f_optdisp;
744 SI * i_dst;
745 unsigned char out_dst;
7a292a7a
SS
746 unsigned char out_h_gr_add__VM_index_of_dst_1;
747 unsigned char out_h_gr_add__VM_index_of_dst_2;
c906108c
SS
748 } fmt_ldt_disp;
749 struct { /* e.g. ldt $optdisp($abase), $dst */
750 UINT f_srcdst;
751 UINT f_optdisp;
752 SI * i_abase;
753 SI * i_dst;
754 unsigned char in_abase;
755 unsigned char out_dst;
7a292a7a
SS
756 unsigned char out_h_gr_add__VM_index_of_dst_1;
757 unsigned char out_h_gr_add__VM_index_of_dst_2;
c906108c
SS
758 } fmt_ldt_indirect_disp;
759 struct { /* e.g. ldt $optdisp[$index*S$scale], $dst */
760 UINT f_srcdst;
761 UINT f_optdisp;
762 UINT f_scale;
763 SI * i_index;
764 SI * i_dst;
765 unsigned char in_index;
766 unsigned char out_dst;
7a292a7a
SS
767 unsigned char out_h_gr_add__VM_index_of_dst_1;
768 unsigned char out_h_gr_add__VM_index_of_dst_2;
c906108c
SS
769 } fmt_ldt_index_disp;
770 struct { /* e.g. ldt $optdisp($abase)[$index*S$scale], $dst */
771 UINT f_srcdst;
772 UINT f_optdisp;
773 UINT f_scale;
774 SI * i_abase;
775 SI * i_index;
776 SI * i_dst;
777 unsigned char in_abase;
778 unsigned char in_index;
779 unsigned char out_dst;
7a292a7a
SS
780 unsigned char out_h_gr_add__VM_index_of_dst_1;
781 unsigned char out_h_gr_add__VM_index_of_dst_2;
c906108c
SS
782 } fmt_ldt_indirect_index_disp;
783 struct { /* e.g. ldq $offset, $dst */
784 UINT f_srcdst;
785 UINT f_offset;
786 SI * i_dst;
787 unsigned char out_dst;
7a292a7a
SS
788 unsigned char out_h_gr_add__VM_index_of_dst_1;
789 unsigned char out_h_gr_add__VM_index_of_dst_2;
790 unsigned char out_h_gr_add__VM_index_of_dst_3;
c906108c
SS
791 } fmt_ldq_offset;
792 struct { /* e.g. ldq $offset($abase), $dst */
793 UINT f_srcdst;
794 UINT f_offset;
795 SI * i_abase;
796 SI * i_dst;
797 unsigned char in_abase;
798 unsigned char out_dst;
7a292a7a
SS
799 unsigned char out_h_gr_add__VM_index_of_dst_1;
800 unsigned char out_h_gr_add__VM_index_of_dst_2;
801 unsigned char out_h_gr_add__VM_index_of_dst_3;
c906108c
SS
802 } fmt_ldq_indirect_offset;
803 struct { /* e.g. ldq ($abase), $dst */
804 UINT f_srcdst;
805 SI * i_abase;
806 SI * i_dst;
807 unsigned char in_abase;
808 unsigned char out_dst;
7a292a7a
SS
809 unsigned char out_h_gr_add__VM_index_of_dst_1;
810 unsigned char out_h_gr_add__VM_index_of_dst_2;
811 unsigned char out_h_gr_add__VM_index_of_dst_3;
c906108c
SS
812 } fmt_ldq_indirect;
813 struct { /* e.g. ldq ($abase)[$index*S$scale], $dst */
814 UINT f_srcdst;
815 UINT f_scale;
816 SI * i_abase;
817 SI * i_index;
818 SI * i_dst;
819 unsigned char in_abase;
820 unsigned char in_index;
821 unsigned char out_dst;
7a292a7a
SS
822 unsigned char out_h_gr_add__VM_index_of_dst_1;
823 unsigned char out_h_gr_add__VM_index_of_dst_2;
824 unsigned char out_h_gr_add__VM_index_of_dst_3;
c906108c
SS
825 } fmt_ldq_indirect_index;
826 struct { /* e.g. ldq $optdisp, $dst */
827 UINT f_srcdst;
828 UINT f_optdisp;
829 SI * i_dst;
830 unsigned char out_dst;
7a292a7a
SS
831 unsigned char out_h_gr_add__VM_index_of_dst_1;
832 unsigned char out_h_gr_add__VM_index_of_dst_2;
833 unsigned char out_h_gr_add__VM_index_of_dst_3;
c906108c
SS
834 } fmt_ldq_disp;
835 struct { /* e.g. ldq $optdisp($abase), $dst */
836 UINT f_srcdst;
837 UINT f_optdisp;
838 SI * i_abase;
839 SI * i_dst;
840 unsigned char in_abase;
841 unsigned char out_dst;
7a292a7a
SS
842 unsigned char out_h_gr_add__VM_index_of_dst_1;
843 unsigned char out_h_gr_add__VM_index_of_dst_2;
844 unsigned char out_h_gr_add__VM_index_of_dst_3;
c906108c
SS
845 } fmt_ldq_indirect_disp;
846 struct { /* e.g. ldq $optdisp[$index*S$scale], $dst */
847 UINT f_srcdst;
848 UINT f_optdisp;
849 UINT f_scale;
850 SI * i_index;
851 SI * i_dst;
852 unsigned char in_index;
853 unsigned char out_dst;
7a292a7a
SS
854 unsigned char out_h_gr_add__VM_index_of_dst_1;
855 unsigned char out_h_gr_add__VM_index_of_dst_2;
856 unsigned char out_h_gr_add__VM_index_of_dst_3;
c906108c
SS
857 } fmt_ldq_index_disp;
858 struct { /* e.g. ldq $optdisp($abase)[$index*S$scale], $dst */
859 UINT f_srcdst;
860 UINT f_optdisp;
861 UINT f_scale;
862 SI * i_abase;
863 SI * i_index;
864 SI * i_dst;
865 unsigned char in_abase;
866 unsigned char in_index;
867 unsigned char out_dst;
7a292a7a
SS
868 unsigned char out_h_gr_add__VM_index_of_dst_1;
869 unsigned char out_h_gr_add__VM_index_of_dst_2;
870 unsigned char out_h_gr_add__VM_index_of_dst_3;
c906108c
SS
871 } fmt_ldq_indirect_index_disp;
872 struct { /* e.g. st $st_src, $offset */
873 UINT f_offset;
874 SI * i_st_src;
875 unsigned char in_st_src;
876 } fmt_st_offset;
877 struct { /* e.g. st $st_src, $offset($abase) */
878 UINT f_offset;
879 SI * i_abase;
880 SI * i_st_src;
881 unsigned char in_abase;
882 unsigned char in_st_src;
883 } fmt_st_indirect_offset;
884 struct { /* e.g. st $st_src, ($abase) */
885 SI * i_abase;
886 SI * i_st_src;
887 unsigned char in_abase;
888 unsigned char in_st_src;
889 } fmt_st_indirect;
890 struct { /* e.g. st $st_src, ($abase)[$index*S$scale] */
891 UINT f_scale;
892 SI * i_abase;
893 SI * i_index;
894 SI * i_st_src;
895 unsigned char in_abase;
896 unsigned char in_index;
897 unsigned char in_st_src;
898 } fmt_st_indirect_index;
899 struct { /* e.g. st $st_src, $optdisp */
900 UINT f_optdisp;
901 SI * i_st_src;
902 unsigned char in_st_src;
903 } fmt_st_disp;
904 struct { /* e.g. st $st_src, $optdisp($abase) */
905 UINT f_optdisp;
906 SI * i_abase;
907 SI * i_st_src;
908 unsigned char in_abase;
909 unsigned char in_st_src;
910 } fmt_st_indirect_disp;
911 struct { /* e.g. st $st_src, $optdisp[$index*S$scale */
912 UINT f_optdisp;
913 UINT f_scale;
914 SI * i_index;
915 SI * i_st_src;
916 unsigned char in_index;
917 unsigned char in_st_src;
918 } fmt_st_index_disp;
919 struct { /* e.g. st $st_src, $optdisp($abase)[$index*S$scale] */
920 UINT f_optdisp;
921 UINT f_scale;
922 SI * i_abase;
923 SI * i_index;
924 SI * i_st_src;
925 unsigned char in_abase;
926 unsigned char in_index;
927 unsigned char in_st_src;
928 } fmt_st_indirect_index_disp;
929 struct { /* e.g. stob $st_src, $offset */
930 UINT f_offset;
931 SI * i_st_src;
932 unsigned char in_st_src;
933 } fmt_stob_offset;
934 struct { /* e.g. stob $st_src, $offset($abase) */
935 UINT f_offset;
936 SI * i_abase;
937 SI * i_st_src;
938 unsigned char in_abase;
939 unsigned char in_st_src;
940 } fmt_stob_indirect_offset;
941 struct { /* e.g. stob $st_src, ($abase) */
942 SI * i_abase;
943 SI * i_st_src;
944 unsigned char in_abase;
945 unsigned char in_st_src;
946 } fmt_stob_indirect;
947 struct { /* e.g. stob $st_src, ($abase)[$index*S$scale] */
948 UINT f_scale;
949 SI * i_abase;
950 SI * i_index;
951 SI * i_st_src;
952 unsigned char in_abase;
953 unsigned char in_index;
954 unsigned char in_st_src;
955 } fmt_stob_indirect_index;
956 struct { /* e.g. stob $st_src, $optdisp */
957 UINT f_optdisp;
958 SI * i_st_src;
959 unsigned char in_st_src;
960 } fmt_stob_disp;
961 struct { /* e.g. stob $st_src, $optdisp($abase) */
962 UINT f_optdisp;
963 SI * i_abase;
964 SI * i_st_src;
965 unsigned char in_abase;
966 unsigned char in_st_src;
967 } fmt_stob_indirect_disp;
968 struct { /* e.g. stob $st_src, $optdisp[$index*S$scale */
969 UINT f_optdisp;
970 UINT f_scale;
971 SI * i_index;
972 SI * i_st_src;
973 unsigned char in_index;
974 unsigned char in_st_src;
975 } fmt_stob_index_disp;
976 struct { /* e.g. stob $st_src, $optdisp($abase)[$index*S$scale] */
977 UINT f_optdisp;
978 UINT f_scale;
979 SI * i_abase;
980 SI * i_index;
981 SI * i_st_src;
982 unsigned char in_abase;
983 unsigned char in_index;
984 unsigned char in_st_src;
985 } fmt_stob_indirect_index_disp;
986 struct { /* e.g. stos $st_src, $offset */
987 UINT f_offset;
988 SI * i_st_src;
989 unsigned char in_st_src;
990 } fmt_stos_offset;
991 struct { /* e.g. stos $st_src, $offset($abase) */
992 UINT f_offset;
993 SI * i_abase;
994 SI * i_st_src;
995 unsigned char in_abase;
996 unsigned char in_st_src;
997 } fmt_stos_indirect_offset;
998 struct { /* e.g. stos $st_src, ($abase) */
999 SI * i_abase;
1000 SI * i_st_src;
1001 unsigned char in_abase;
1002 unsigned char in_st_src;
1003 } fmt_stos_indirect;
1004 struct { /* e.g. stos $st_src, ($abase)[$index*S$scale] */
1005 UINT f_scale;
1006 SI * i_abase;
1007 SI * i_index;
1008 SI * i_st_src;
1009 unsigned char in_abase;
1010 unsigned char in_index;
1011 unsigned char in_st_src;
1012 } fmt_stos_indirect_index;
1013 struct { /* e.g. stos $st_src, $optdisp */
1014 UINT f_optdisp;
1015 SI * i_st_src;
1016 unsigned char in_st_src;
1017 } fmt_stos_disp;
1018 struct { /* e.g. stos $st_src, $optdisp($abase) */
1019 UINT f_optdisp;
1020 SI * i_abase;
1021 SI * i_st_src;
1022 unsigned char in_abase;
1023 unsigned char in_st_src;
1024 } fmt_stos_indirect_disp;
1025 struct { /* e.g. stos $st_src, $optdisp[$index*S$scale */
1026 UINT f_optdisp;
1027 UINT f_scale;
1028 SI * i_index;
1029 SI * i_st_src;
1030 unsigned char in_index;
1031 unsigned char in_st_src;
1032 } fmt_stos_index_disp;
1033 struct { /* e.g. stos $st_src, $optdisp($abase)[$index*S$scale] */
1034 UINT f_optdisp;
1035 UINT f_scale;
1036 SI * i_abase;
1037 SI * i_index;
1038 SI * i_st_src;
1039 unsigned char in_abase;
1040 unsigned char in_index;
1041 unsigned char in_st_src;
1042 } fmt_stos_indirect_index_disp;
1043 struct { /* e.g. stl $st_src, $offset */
1044 UINT f_srcdst;
1045 UINT f_offset;
1046 SI * i_st_src;
7a292a7a 1047 unsigned char in_h_gr_add__VM_index_of_st_src_1;
c906108c
SS
1048 unsigned char in_st_src;
1049 } fmt_stl_offset;
1050 struct { /* e.g. stl $st_src, $offset($abase) */
1051 UINT f_srcdst;
1052 UINT f_offset;
1053 SI * i_abase;
1054 SI * i_st_src;
1055 unsigned char in_abase;
7a292a7a 1056 unsigned char in_h_gr_add__VM_index_of_st_src_1;
c906108c
SS
1057 unsigned char in_st_src;
1058 } fmt_stl_indirect_offset;
1059 struct { /* e.g. stl $st_src, ($abase) */
1060 UINT f_srcdst;
1061 SI * i_abase;
1062 SI * i_st_src;
1063 unsigned char in_abase;
7a292a7a 1064 unsigned char in_h_gr_add__VM_index_of_st_src_1;
c906108c
SS
1065 unsigned char in_st_src;
1066 } fmt_stl_indirect;
1067 struct { /* e.g. stl $st_src, ($abase)[$index*S$scale] */
1068 UINT f_srcdst;
1069 UINT f_scale;
1070 SI * i_abase;
1071 SI * i_index;
1072 SI * i_st_src;
1073 unsigned char in_abase;
7a292a7a 1074 unsigned char in_h_gr_add__VM_index_of_st_src_1;
c906108c
SS
1075 unsigned char in_index;
1076 unsigned char in_st_src;
1077 } fmt_stl_indirect_index;
1078 struct { /* e.g. stl $st_src, $optdisp */
1079 UINT f_srcdst;
1080 UINT f_optdisp;
1081 SI * i_st_src;
7a292a7a 1082 unsigned char in_h_gr_add__VM_index_of_st_src_1;
c906108c
SS
1083 unsigned char in_st_src;
1084 } fmt_stl_disp;
1085 struct { /* e.g. stl $st_src, $optdisp($abase) */
1086 UINT f_srcdst;
1087 UINT f_optdisp;
1088 SI * i_abase;
1089 SI * i_st_src;
1090 unsigned char in_abase;
7a292a7a 1091 unsigned char in_h_gr_add__VM_index_of_st_src_1;
c906108c
SS
1092 unsigned char in_st_src;
1093 } fmt_stl_indirect_disp;
1094 struct { /* e.g. stl $st_src, $optdisp[$index*S$scale */
1095 UINT f_srcdst;
1096 UINT f_optdisp;
1097 UINT f_scale;
1098 SI * i_index;
1099 SI * i_st_src;
7a292a7a 1100 unsigned char in_h_gr_add__VM_index_of_st_src_1;
c906108c
SS
1101 unsigned char in_index;
1102 unsigned char in_st_src;
1103 } fmt_stl_index_disp;
1104 struct { /* e.g. stl $st_src, $optdisp($abase)[$index*S$scale] */
1105 UINT f_srcdst;
1106 UINT f_optdisp;
1107 UINT f_scale;
1108 SI * i_abase;
1109 SI * i_index;
1110 SI * i_st_src;
1111 unsigned char in_abase;
7a292a7a 1112 unsigned char in_h_gr_add__VM_index_of_st_src_1;
c906108c
SS
1113 unsigned char in_index;
1114 unsigned char in_st_src;
1115 } fmt_stl_indirect_index_disp;
1116 struct { /* e.g. stt $st_src, $offset */
1117 UINT f_srcdst;
1118 UINT f_offset;
1119 SI * i_st_src;
7a292a7a
SS
1120 unsigned char in_h_gr_add__VM_index_of_st_src_1;
1121 unsigned char in_h_gr_add__VM_index_of_st_src_2;
c906108c
SS
1122 unsigned char in_st_src;
1123 } fmt_stt_offset;
1124 struct { /* e.g. stt $st_src, $offset($abase) */
1125 UINT f_srcdst;
1126 UINT f_offset;
1127 SI * i_abase;
1128 SI * i_st_src;
1129 unsigned char in_abase;
7a292a7a
SS
1130 unsigned char in_h_gr_add__VM_index_of_st_src_1;
1131 unsigned char in_h_gr_add__VM_index_of_st_src_2;
c906108c
SS
1132 unsigned char in_st_src;
1133 } fmt_stt_indirect_offset;
1134 struct { /* e.g. stt $st_src, ($abase) */
1135 UINT f_srcdst;
1136 SI * i_abase;
1137 SI * i_st_src;
1138 unsigned char in_abase;
7a292a7a
SS
1139 unsigned char in_h_gr_add__VM_index_of_st_src_1;
1140 unsigned char in_h_gr_add__VM_index_of_st_src_2;
c906108c
SS
1141 unsigned char in_st_src;
1142 } fmt_stt_indirect;
1143 struct { /* e.g. stt $st_src, ($abase)[$index*S$scale] */
1144 UINT f_srcdst;
1145 UINT f_scale;
1146 SI * i_abase;
1147 SI * i_index;
1148 SI * i_st_src;
1149 unsigned char in_abase;
7a292a7a
SS
1150 unsigned char in_h_gr_add__VM_index_of_st_src_1;
1151 unsigned char in_h_gr_add__VM_index_of_st_src_2;
c906108c
SS
1152 unsigned char in_index;
1153 unsigned char in_st_src;
1154 } fmt_stt_indirect_index;
1155 struct { /* e.g. stt $st_src, $optdisp */
1156 UINT f_srcdst;
1157 UINT f_optdisp;
1158 SI * i_st_src;
7a292a7a
SS
1159 unsigned char in_h_gr_add__VM_index_of_st_src_1;
1160 unsigned char in_h_gr_add__VM_index_of_st_src_2;
c906108c
SS
1161 unsigned char in_st_src;
1162 } fmt_stt_disp;
1163 struct { /* e.g. stt $st_src, $optdisp($abase) */
1164 UINT f_srcdst;
1165 UINT f_optdisp;
1166 SI * i_abase;
1167 SI * i_st_src;
1168 unsigned char in_abase;
7a292a7a
SS
1169 unsigned char in_h_gr_add__VM_index_of_st_src_1;
1170 unsigned char in_h_gr_add__VM_index_of_st_src_2;
c906108c
SS
1171 unsigned char in_st_src;
1172 } fmt_stt_indirect_disp;
1173 struct { /* e.g. stt $st_src, $optdisp[$index*S$scale */
1174 UINT f_srcdst;
1175 UINT f_optdisp;
1176 UINT f_scale;
1177 SI * i_index;
1178 SI * i_st_src;
7a292a7a
SS
1179 unsigned char in_h_gr_add__VM_index_of_st_src_1;
1180 unsigned char in_h_gr_add__VM_index_of_st_src_2;
c906108c
SS
1181 unsigned char in_index;
1182 unsigned char in_st_src;
1183 } fmt_stt_index_disp;
1184 struct { /* e.g. stt $st_src, $optdisp($abase)[$index*S$scale] */
1185 UINT f_srcdst;
1186 UINT f_optdisp;
1187 UINT f_scale;
1188 SI * i_abase;
1189 SI * i_index;
1190 SI * i_st_src;
1191 unsigned char in_abase;
7a292a7a
SS
1192 unsigned char in_h_gr_add__VM_index_of_st_src_1;
1193 unsigned char in_h_gr_add__VM_index_of_st_src_2;
c906108c
SS
1194 unsigned char in_index;
1195 unsigned char in_st_src;
1196 } fmt_stt_indirect_index_disp;
1197 struct { /* e.g. stq $st_src, $offset */
1198 UINT f_srcdst;
1199 UINT f_offset;
1200 SI * i_st_src;
7a292a7a
SS
1201 unsigned char in_h_gr_add__VM_index_of_st_src_1;
1202 unsigned char in_h_gr_add__VM_index_of_st_src_2;
1203 unsigned char in_h_gr_add__VM_index_of_st_src_3;
c906108c
SS
1204 unsigned char in_st_src;
1205 } fmt_stq_offset;
1206 struct { /* e.g. stq $st_src, $offset($abase) */
1207 UINT f_srcdst;
1208 UINT f_offset;
1209 SI * i_abase;
1210 SI * i_st_src;
1211 unsigned char in_abase;
7a292a7a
SS
1212 unsigned char in_h_gr_add__VM_index_of_st_src_1;
1213 unsigned char in_h_gr_add__VM_index_of_st_src_2;
1214 unsigned char in_h_gr_add__VM_index_of_st_src_3;
c906108c
SS
1215 unsigned char in_st_src;
1216 } fmt_stq_indirect_offset;
1217 struct { /* e.g. stq $st_src, ($abase) */
1218 UINT f_srcdst;
1219 SI * i_abase;
1220 SI * i_st_src;
1221 unsigned char in_abase;
7a292a7a
SS
1222 unsigned char in_h_gr_add__VM_index_of_st_src_1;
1223 unsigned char in_h_gr_add__VM_index_of_st_src_2;
1224 unsigned char in_h_gr_add__VM_index_of_st_src_3;
c906108c
SS
1225 unsigned char in_st_src;
1226 } fmt_stq_indirect;
1227 struct { /* e.g. stq $st_src, ($abase)[$index*S$scale] */
1228 UINT f_srcdst;
1229 UINT f_scale;
1230 SI * i_abase;
1231 SI * i_index;
1232 SI * i_st_src;
1233 unsigned char in_abase;
7a292a7a
SS
1234 unsigned char in_h_gr_add__VM_index_of_st_src_1;
1235 unsigned char in_h_gr_add__VM_index_of_st_src_2;
1236 unsigned char in_h_gr_add__VM_index_of_st_src_3;
c906108c
SS
1237 unsigned char in_index;
1238 unsigned char in_st_src;
1239 } fmt_stq_indirect_index;
1240 struct { /* e.g. stq $st_src, $optdisp */
1241 UINT f_srcdst;
1242 UINT f_optdisp;
1243 SI * i_st_src;
7a292a7a
SS
1244 unsigned char in_h_gr_add__VM_index_of_st_src_1;
1245 unsigned char in_h_gr_add__VM_index_of_st_src_2;
1246 unsigned char in_h_gr_add__VM_index_of_st_src_3;
c906108c
SS
1247 unsigned char in_st_src;
1248 } fmt_stq_disp;
1249 struct { /* e.g. stq $st_src, $optdisp($abase) */
1250 UINT f_srcdst;
1251 UINT f_optdisp;
1252 SI * i_abase;
1253 SI * i_st_src;
1254 unsigned char in_abase;
7a292a7a
SS
1255 unsigned char in_h_gr_add__VM_index_of_st_src_1;
1256 unsigned char in_h_gr_add__VM_index_of_st_src_2;
1257 unsigned char in_h_gr_add__VM_index_of_st_src_3;
c906108c
SS
1258 unsigned char in_st_src;
1259 } fmt_stq_indirect_disp;
1260 struct { /* e.g. stq $st_src, $optdisp[$index*S$scale */
1261 UINT f_srcdst;
1262 UINT f_optdisp;
1263 UINT f_scale;
1264 SI * i_index;
1265 SI * i_st_src;
7a292a7a
SS
1266 unsigned char in_h_gr_add__VM_index_of_st_src_1;
1267 unsigned char in_h_gr_add__VM_index_of_st_src_2;
1268 unsigned char in_h_gr_add__VM_index_of_st_src_3;
c906108c
SS
1269 unsigned char in_index;
1270 unsigned char in_st_src;
1271 } fmt_stq_index_disp;
1272 struct { /* e.g. stq $st_src, $optdisp($abase)[$index*S$scale] */
1273 UINT f_srcdst;
1274 UINT f_optdisp;
1275 UINT f_scale;
1276 SI * i_abase;
1277 SI * i_index;
1278 SI * i_st_src;
1279 unsigned char in_abase;
7a292a7a
SS
1280 unsigned char in_h_gr_add__VM_index_of_st_src_1;
1281 unsigned char in_h_gr_add__VM_index_of_st_src_2;
1282 unsigned char in_h_gr_add__VM_index_of_st_src_3;
c906108c
SS
1283 unsigned char in_index;
1284 unsigned char in_st_src;
1285 } fmt_stq_indirect_index_disp;
1286 struct { /* e.g. cmpi $src1, $src2 */
1287 SI * i_src1;
1288 SI * i_src2;
1289 unsigned char in_src1;
1290 unsigned char in_src2;
1291 } fmt_cmpi;
1292 struct { /* e.g. cmpi $lit1, $src2 */
1293 UINT f_src1;
1294 SI * i_src2;
1295 unsigned char in_src2;
1296 } fmt_cmpi1;
1297 struct { /* e.g. cmpi $src1, $lit2 */
1298 UINT f_src2;
1299 SI * i_src1;
1300 unsigned char in_src1;
1301 } fmt_cmpi2;
1302 struct { /* e.g. cmpi $lit1, $lit2 */
1303 UINT f_src1;
1304 UINT f_src2;
1305 } fmt_cmpi3;
1306 struct { /* e.g. cmpo $src1, $src2 */
1307 SI * i_src1;
1308 SI * i_src2;
1309 unsigned char in_src1;
1310 unsigned char in_src2;
1311 } fmt_cmpo;
1312 struct { /* e.g. cmpo $lit1, $src2 */
1313 UINT f_src1;
1314 SI * i_src2;
1315 unsigned char in_src2;
1316 } fmt_cmpo1;
1317 struct { /* e.g. cmpo $src1, $lit2 */
1318 UINT f_src2;
1319 SI * i_src1;
1320 unsigned char in_src1;
1321 } fmt_cmpo2;
1322 struct { /* e.g. cmpo $lit1, $lit2 */
1323 UINT f_src1;
1324 UINT f_src2;
1325 } fmt_cmpo3;
1326 struct { /* e.g. testno $br_src1 */
1327 SI * i_br_src1;
1328 unsigned char out_br_src1;
1329 } fmt_testno_reg;
1330 struct { /* e.g. flushreg */
1331 int empty;
1332 } fmt_flushreg;
1333 /* cti insns, kept separately so addr_cache is in fixed place */
1334 struct {
1335 union {
1336 struct { /* e.g. cmpobe $br_src1, $br_src2, $br_disp */
1337 IADDR i_br_disp;
1338 SI * i_br_src1;
1339 SI * i_br_src2;
1340 unsigned char in_br_src1;
1341 unsigned char in_br_src2;
1342 } fmt_cmpobe_reg;
1343 struct { /* e.g. cmpobe $br_lit1, $br_src2, $br_disp */
1344 UINT f_br_src1;
1345 IADDR i_br_disp;
1346 SI * i_br_src2;
1347 unsigned char in_br_src2;
1348 } fmt_cmpobe_lit;
1349 struct { /* e.g. cmpobl $br_src1, $br_src2, $br_disp */
1350 IADDR i_br_disp;
1351 SI * i_br_src1;
1352 SI * i_br_src2;
1353 unsigned char in_br_src1;
1354 unsigned char in_br_src2;
1355 } fmt_cmpobl_reg;
1356 struct { /* e.g. cmpobl $br_lit1, $br_src2, $br_disp */
1357 UINT f_br_src1;
1358 IADDR i_br_disp;
1359 SI * i_br_src2;
1360 unsigned char in_br_src2;
1361 } fmt_cmpobl_lit;
1362 struct { /* e.g. bbc $br_src1, $br_src2, $br_disp */
1363 IADDR i_br_disp;
1364 SI * i_br_src1;
1365 SI * i_br_src2;
1366 unsigned char in_br_src1;
1367 unsigned char in_br_src2;
1368 } fmt_bbc_reg;
1369 struct { /* e.g. bbc $br_lit1, $br_src2, $br_disp */
1370 UINT f_br_src1;
1371 IADDR i_br_disp;
1372 SI * i_br_src2;
1373 unsigned char in_br_src2;
1374 } fmt_bbc_lit;
1375 struct { /* e.g. bno $ctrl_disp */
1376 IADDR i_ctrl_disp;
1377 } fmt_bno;
1378 struct { /* e.g. b $ctrl_disp */
1379 IADDR i_ctrl_disp;
1380 } fmt_b;
1381 struct { /* e.g. bx $offset($abase) */
1382 UINT f_offset;
1383 SI * i_abase;
1384 unsigned char in_abase;
1385 } fmt_bx_indirect_offset;
1386 struct { /* e.g. bx ($abase) */
1387 SI * i_abase;
1388 unsigned char in_abase;
1389 } fmt_bx_indirect;
1390 struct { /* e.g. bx ($abase)[$index*S$scale] */
1391 UINT f_scale;
1392 SI * i_abase;
1393 SI * i_index;
1394 unsigned char in_abase;
1395 unsigned char in_index;
1396 } fmt_bx_indirect_index;
1397 struct { /* e.g. bx $optdisp */
1398 UINT f_optdisp;
1399 } fmt_bx_disp;
1400 struct { /* e.g. bx $optdisp($abase) */
1401 UINT f_optdisp;
1402 SI * i_abase;
1403 unsigned char in_abase;
1404 } fmt_bx_indirect_disp;
1405 struct { /* e.g. callx $optdisp */
1406 UINT f_optdisp;
1407 unsigned char in_h_gr_0;
1408 unsigned char in_h_gr_1;
1409 unsigned char in_h_gr_10;
1410 unsigned char in_h_gr_11;
1411 unsigned char in_h_gr_12;
1412 unsigned char in_h_gr_13;
1413 unsigned char in_h_gr_14;
1414 unsigned char in_h_gr_15;
1415 unsigned char in_h_gr_2;
1416 unsigned char in_h_gr_3;
1417 unsigned char in_h_gr_31;
1418 unsigned char in_h_gr_4;
1419 unsigned char in_h_gr_5;
1420 unsigned char in_h_gr_6;
1421 unsigned char in_h_gr_7;
1422 unsigned char in_h_gr_8;
1423 unsigned char in_h_gr_9;
1424 unsigned char out_h_gr_0;
1425 unsigned char out_h_gr_1;
1426 unsigned char out_h_gr_10;
1427 unsigned char out_h_gr_11;
1428 unsigned char out_h_gr_12;
1429 unsigned char out_h_gr_13;
1430 unsigned char out_h_gr_14;
1431 unsigned char out_h_gr_15;
1432 unsigned char out_h_gr_2;
1433 unsigned char out_h_gr_3;
1434 unsigned char out_h_gr_31;
1435 unsigned char out_h_gr_4;
1436 unsigned char out_h_gr_5;
1437 unsigned char out_h_gr_6;
1438 unsigned char out_h_gr_7;
1439 unsigned char out_h_gr_8;
1440 unsigned char out_h_gr_9;
1441 } fmt_callx_disp;
1442 struct { /* e.g. callx ($abase) */
1443 SI * i_abase;
1444 unsigned char in_abase;
1445 unsigned char in_h_gr_0;
1446 unsigned char in_h_gr_1;
1447 unsigned char in_h_gr_10;
1448 unsigned char in_h_gr_11;
1449 unsigned char in_h_gr_12;
1450 unsigned char in_h_gr_13;
1451 unsigned char in_h_gr_14;
1452 unsigned char in_h_gr_15;
1453 unsigned char in_h_gr_2;
1454 unsigned char in_h_gr_3;
1455 unsigned char in_h_gr_31;
1456 unsigned char in_h_gr_4;
1457 unsigned char in_h_gr_5;
1458 unsigned char in_h_gr_6;
1459 unsigned char in_h_gr_7;
1460 unsigned char in_h_gr_8;
1461 unsigned char in_h_gr_9;
1462 unsigned char out_h_gr_0;
1463 unsigned char out_h_gr_1;
1464 unsigned char out_h_gr_10;
1465 unsigned char out_h_gr_11;
1466 unsigned char out_h_gr_12;
1467 unsigned char out_h_gr_13;
1468 unsigned char out_h_gr_14;
1469 unsigned char out_h_gr_15;
1470 unsigned char out_h_gr_2;
1471 unsigned char out_h_gr_3;
1472 unsigned char out_h_gr_31;
1473 unsigned char out_h_gr_4;
1474 unsigned char out_h_gr_5;
1475 unsigned char out_h_gr_6;
1476 unsigned char out_h_gr_7;
1477 unsigned char out_h_gr_8;
1478 unsigned char out_h_gr_9;
1479 } fmt_callx_indirect;
1480 struct { /* e.g. callx $offset($abase) */
1481 UINT f_offset;
1482 SI * i_abase;
1483 unsigned char in_abase;
1484 unsigned char in_h_gr_0;
1485 unsigned char in_h_gr_1;
1486 unsigned char in_h_gr_10;
1487 unsigned char in_h_gr_11;
1488 unsigned char in_h_gr_12;
1489 unsigned char in_h_gr_13;
1490 unsigned char in_h_gr_14;
1491 unsigned char in_h_gr_15;
1492 unsigned char in_h_gr_2;
1493 unsigned char in_h_gr_3;
1494 unsigned char in_h_gr_31;
1495 unsigned char in_h_gr_4;
1496 unsigned char in_h_gr_5;
1497 unsigned char in_h_gr_6;
1498 unsigned char in_h_gr_7;
1499 unsigned char in_h_gr_8;
1500 unsigned char in_h_gr_9;
1501 unsigned char out_h_gr_0;
1502 unsigned char out_h_gr_1;
1503 unsigned char out_h_gr_10;
1504 unsigned char out_h_gr_11;
1505 unsigned char out_h_gr_12;
1506 unsigned char out_h_gr_13;
1507 unsigned char out_h_gr_14;
1508 unsigned char out_h_gr_15;
1509 unsigned char out_h_gr_2;
1510 unsigned char out_h_gr_3;
1511 unsigned char out_h_gr_31;
1512 unsigned char out_h_gr_4;
1513 unsigned char out_h_gr_5;
1514 unsigned char out_h_gr_6;
1515 unsigned char out_h_gr_7;
1516 unsigned char out_h_gr_8;
1517 unsigned char out_h_gr_9;
1518 } fmt_callx_indirect_offset;
1519 struct { /* e.g. ret */
1520 int empty;
1521 unsigned char in_h_gr_0;
1522 unsigned char in_h_gr_2;
1523 unsigned char in_h_gr_31;
1524 unsigned char out_h_gr_0;
1525 unsigned char out_h_gr_1;
1526 unsigned char out_h_gr_10;
1527 unsigned char out_h_gr_11;
1528 unsigned char out_h_gr_12;
1529 unsigned char out_h_gr_13;
1530 unsigned char out_h_gr_14;
1531 unsigned char out_h_gr_15;
1532 unsigned char out_h_gr_2;
1533 unsigned char out_h_gr_3;
1534 unsigned char out_h_gr_31;
1535 unsigned char out_h_gr_4;
1536 unsigned char out_h_gr_5;
1537 unsigned char out_h_gr_6;
1538 unsigned char out_h_gr_7;
1539 unsigned char out_h_gr_8;
1540 unsigned char out_h_gr_9;
1541 } fmt_ret;
1542 struct { /* e.g. calls $src1 */
1543 SI * i_src1;
1544 unsigned char in_src1;
1545 } fmt_calls;
1546 struct { /* e.g. fmark */
1547 int empty;
1548 } fmt_fmark;
1549 } fields;
1550#if WITH_SCACHE_PBB
1551 SEM_PC addr_cache;
1552#endif
1553 } cti;
1554#if WITH_SCACHE_PBB
1555 /* Writeback handler. */
1556 struct {
1557 /* Pointer to argbuf entry for insn whose results need writing back. */
1558 const struct argbuf *abuf;
1559 } write;
1560 /* x-before handler */
1561 struct {
1562 /*const SCACHE *insns[MAX_PARALLEL_INSNS];*/
1563 int first_p;
1564 } before;
1565 /* x-after handler */
1566 struct {
1567 int empty;
1568 } after;
1569 /* This entry is used to terminate each pbb. */
1570 struct {
1571 /* Number of insns in pbb. */
1572 int insn_count;
1573 /* Next pbb to execute. */
1574 SCACHE *next;
1575 } chain;
1576#endif
1577};
1578
1579/* The ARGBUF struct. */
1580struct argbuf {
1581 /* These are the baseclass definitions. */
1582 IADDR addr;
1583 const IDESC *idesc;
1584 char trace_p;
1585 char profile_p;
1586 /* cpu specific data follows */
1587 union sem semantic;
1588 int written;
1589 union sem_fields fields;
1590};
1591
1592/* A cached insn.
1593
1594 ??? SCACHE used to contain more than just argbuf. We could delete the
1595 type entirely and always just use ARGBUF, but for future concerns and as
1596 a level of abstraction it is left in. */
1597
1598struct scache {
1599 struct argbuf argbuf;
1600};
1601
1602/* Macros to simplify extraction, reading and semantic code.
1603 These define and assign the local vars that contain the insn's fields. */
1604
1605#define EXTRACT_IFMT_EMPTY_VARS \
1606 /* Instruction fields. */ \
1607 unsigned int length;
1608#define EXTRACT_IFMT_EMPTY_CODE \
1609 length = 0; \
1610
1611#define EXTRACT_IFMT_MULO_VARS \
1612 /* Instruction fields. */ \
1613 UINT f_opcode; \
1614 UINT f_srcdst; \
1615 UINT f_src2; \
1616 UINT f_m3; \
1617 UINT f_m2; \
1618 UINT f_m1; \
1619 UINT f_opcode2; \
1620 UINT f_zero; \
1621 UINT f_src1; \
1622 unsigned int length;
1623#define EXTRACT_IFMT_MULO_CODE \
1624 length = 4; \
1625 f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
1626 f_srcdst = EXTRACT_UINT (insn, 32, 8, 5); \
1627 f_src2 = EXTRACT_UINT (insn, 32, 13, 5); \
1628 f_m3 = EXTRACT_UINT (insn, 32, 18, 1); \
1629 f_m2 = EXTRACT_UINT (insn, 32, 19, 1); \
1630 f_m1 = EXTRACT_UINT (insn, 32, 20, 1); \
1631 f_opcode2 = EXTRACT_UINT (insn, 32, 21, 4); \
1632 f_zero = EXTRACT_UINT (insn, 32, 25, 2); \
1633 f_src1 = EXTRACT_UINT (insn, 32, 27, 5); \
1634
1635#define EXTRACT_IFMT_MULO1_VARS \
1636 /* Instruction fields. */ \
1637 UINT f_opcode; \
1638 UINT f_srcdst; \
1639 UINT f_src2; \
1640 UINT f_m3; \
1641 UINT f_m2; \
1642 UINT f_m1; \
1643 UINT f_opcode2; \
1644 UINT f_zero; \
1645 UINT f_src1; \
1646 unsigned int length;
1647#define EXTRACT_IFMT_MULO1_CODE \
1648 length = 4; \
1649 f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
1650 f_srcdst = EXTRACT_UINT (insn, 32, 8, 5); \
1651 f_src2 = EXTRACT_UINT (insn, 32, 13, 5); \
1652 f_m3 = EXTRACT_UINT (insn, 32, 18, 1); \
1653 f_m2 = EXTRACT_UINT (insn, 32, 19, 1); \
1654 f_m1 = EXTRACT_UINT (insn, 32, 20, 1); \
1655 f_opcode2 = EXTRACT_UINT (insn, 32, 21, 4); \
1656 f_zero = EXTRACT_UINT (insn, 32, 25, 2); \
1657 f_src1 = EXTRACT_UINT (insn, 32, 27, 5); \
1658
1659#define EXTRACT_IFMT_MULO2_VARS \
1660 /* Instruction fields. */ \
1661 UINT f_opcode; \
1662 UINT f_srcdst; \
1663 UINT f_src2; \
1664 UINT f_m3; \
1665 UINT f_m2; \
1666 UINT f_m1; \
1667 UINT f_opcode2; \
1668 UINT f_zero; \
1669 UINT f_src1; \
1670 unsigned int length;
1671#define EXTRACT_IFMT_MULO2_CODE \
1672 length = 4; \
1673 f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
1674 f_srcdst = EXTRACT_UINT (insn, 32, 8, 5); \
1675 f_src2 = EXTRACT_UINT (insn, 32, 13, 5); \
1676 f_m3 = EXTRACT_UINT (insn, 32, 18, 1); \
1677 f_m2 = EXTRACT_UINT (insn, 32, 19, 1); \
1678 f_m1 = EXTRACT_UINT (insn, 32, 20, 1); \
1679 f_opcode2 = EXTRACT_UINT (insn, 32, 21, 4); \
1680 f_zero = EXTRACT_UINT (insn, 32, 25, 2); \
1681 f_src1 = EXTRACT_UINT (insn, 32, 27, 5); \
1682
1683#define EXTRACT_IFMT_MULO3_VARS \
1684 /* Instruction fields. */ \
1685 UINT f_opcode; \
1686 UINT f_srcdst; \
1687 UINT f_src2; \
1688 UINT f_m3; \
1689 UINT f_m2; \
1690 UINT f_m1; \
1691 UINT f_opcode2; \
1692 UINT f_zero; \
1693 UINT f_src1; \
1694 unsigned int length;
1695#define EXTRACT_IFMT_MULO3_CODE \
1696 length = 4; \
1697 f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
1698 f_srcdst = EXTRACT_UINT (insn, 32, 8, 5); \
1699 f_src2 = EXTRACT_UINT (insn, 32, 13, 5); \
1700 f_m3 = EXTRACT_UINT (insn, 32, 18, 1); \
1701 f_m2 = EXTRACT_UINT (insn, 32, 19, 1); \
1702 f_m1 = EXTRACT_UINT (insn, 32, 20, 1); \
1703 f_opcode2 = EXTRACT_UINT (insn, 32, 21, 4); \
1704 f_zero = EXTRACT_UINT (insn, 32, 25, 2); \
1705 f_src1 = EXTRACT_UINT (insn, 32, 27, 5); \
1706
1707#define EXTRACT_IFMT_LDA_OFFSET_VARS \
1708 /* Instruction fields. */ \
1709 UINT f_opcode; \
1710 UINT f_srcdst; \
1711 UINT f_abase; \
1712 UINT f_modea; \
1713 UINT f_zeroa; \
1714 UINT f_offset; \
1715 unsigned int length;
1716#define EXTRACT_IFMT_LDA_OFFSET_CODE \
1717 length = 4; \
1718 f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
1719 f_srcdst = EXTRACT_UINT (insn, 32, 8, 5); \
1720 f_abase = EXTRACT_UINT (insn, 32, 13, 5); \
1721 f_modea = EXTRACT_UINT (insn, 32, 18, 1); \
1722 f_zeroa = EXTRACT_UINT (insn, 32, 19, 1); \
1723 f_offset = EXTRACT_UINT (insn, 32, 20, 12); \
1724
1725#define EXTRACT_IFMT_LDA_INDIRECT_VARS \
1726 /* Instruction fields. */ \
1727 UINT f_opcode; \
1728 UINT f_srcdst; \
1729 UINT f_abase; \
1730 UINT f_modeb; \
1731 UINT f_scale; \
1732 UINT f_zerob; \
1733 UINT f_index; \
1734 unsigned int length;
1735#define EXTRACT_IFMT_LDA_INDIRECT_CODE \
1736 length = 4; \
1737 f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
1738 f_srcdst = EXTRACT_UINT (insn, 32, 8, 5); \
1739 f_abase = EXTRACT_UINT (insn, 32, 13, 5); \
1740 f_modeb = EXTRACT_UINT (insn, 32, 18, 4); \
1741 f_scale = EXTRACT_UINT (insn, 32, 22, 3); \
1742 f_zerob = EXTRACT_UINT (insn, 32, 25, 2); \
1743 f_index = EXTRACT_UINT (insn, 32, 27, 5); \
1744
1745#define EXTRACT_IFMT_LDA_DISP_VARS \
1746 /* Instruction fields. */ \
1747 UINT f_opcode; \
1748 UINT f_optdisp; \
1749 UINT f_srcdst; \
1750 UINT f_abase; \
1751 UINT f_modeb; \
1752 UINT f_scale; \
1753 UINT f_zerob; \
1754 UINT f_index; \
1755 /* Contents of trailing part of insn. */ \
1756 UINT word_1; \
1757 unsigned int length;
1758#define EXTRACT_IFMT_LDA_DISP_CODE \
1759 length = 8; \
1760 word_1 = GETIMEMUSI (current_cpu, pc + 4); \
1761 f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
1762 f_optdisp = (0|(EXTRACT_UINT (word_1, 32, 0, 32) << 0)); \
1763 f_srcdst = EXTRACT_UINT (insn, 32, 8, 5); \
1764 f_abase = EXTRACT_UINT (insn, 32, 13, 5); \
1765 f_modeb = EXTRACT_UINT (insn, 32, 18, 4); \
1766 f_scale = EXTRACT_UINT (insn, 32, 22, 3); \
1767 f_zerob = EXTRACT_UINT (insn, 32, 25, 2); \
1768 f_index = EXTRACT_UINT (insn, 32, 27, 5); \
1769
1770#define EXTRACT_IFMT_ST_OFFSET_VARS \
1771 /* Instruction fields. */ \
1772 UINT f_opcode; \
1773 UINT f_srcdst; \
1774 UINT f_abase; \
1775 UINT f_modea; \
1776 UINT f_zeroa; \
1777 UINT f_offset; \
1778 unsigned int length;
1779#define EXTRACT_IFMT_ST_OFFSET_CODE \
1780 length = 4; \
1781 f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
1782 f_srcdst = EXTRACT_UINT (insn, 32, 8, 5); \
1783 f_abase = EXTRACT_UINT (insn, 32, 13, 5); \
1784 f_modea = EXTRACT_UINT (insn, 32, 18, 1); \
1785 f_zeroa = EXTRACT_UINT (insn, 32, 19, 1); \
1786 f_offset = EXTRACT_UINT (insn, 32, 20, 12); \
1787
1788#define EXTRACT_IFMT_ST_INDIRECT_VARS \
1789 /* Instruction fields. */ \
1790 UINT f_opcode; \
1791 UINT f_srcdst; \
1792 UINT f_abase; \
1793 UINT f_modeb; \
1794 UINT f_scale; \
1795 UINT f_zerob; \
1796 UINT f_index; \
1797 unsigned int length;
1798#define EXTRACT_IFMT_ST_INDIRECT_CODE \
1799 length = 4; \
1800 f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
1801 f_srcdst = EXTRACT_UINT (insn, 32, 8, 5); \
1802 f_abase = EXTRACT_UINT (insn, 32, 13, 5); \
1803 f_modeb = EXTRACT_UINT (insn, 32, 18, 4); \
1804 f_scale = EXTRACT_UINT (insn, 32, 22, 3); \
1805 f_zerob = EXTRACT_UINT (insn, 32, 25, 2); \
1806 f_index = EXTRACT_UINT (insn, 32, 27, 5); \
1807
1808#define EXTRACT_IFMT_ST_DISP_VARS \
1809 /* Instruction fields. */ \
1810 UINT f_opcode; \
1811 UINT f_optdisp; \
1812 UINT f_srcdst; \
1813 UINT f_abase; \
1814 UINT f_modeb; \
1815 UINT f_scale; \
1816 UINT f_zerob; \
1817 UINT f_index; \
1818 /* Contents of trailing part of insn. */ \
1819 UINT word_1; \
1820 unsigned int length;
1821#define EXTRACT_IFMT_ST_DISP_CODE \
1822 length = 8; \
1823 word_1 = GETIMEMUSI (current_cpu, pc + 4); \
1824 f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
1825 f_optdisp = (0|(EXTRACT_UINT (word_1, 32, 0, 32) << 0)); \
1826 f_srcdst = EXTRACT_UINT (insn, 32, 8, 5); \
1827 f_abase = EXTRACT_UINT (insn, 32, 13, 5); \
1828 f_modeb = EXTRACT_UINT (insn, 32, 18, 4); \
1829 f_scale = EXTRACT_UINT (insn, 32, 22, 3); \
1830 f_zerob = EXTRACT_UINT (insn, 32, 25, 2); \
1831 f_index = EXTRACT_UINT (insn, 32, 27, 5); \
1832
1833#define EXTRACT_IFMT_CMPOBE_REG_VARS \
1834 /* Instruction fields. */ \
1835 UINT f_opcode; \
1836 UINT f_br_src1; \
1837 UINT f_br_src2; \
1838 UINT f_br_m1; \
1839 SI f_br_disp; \
1840 UINT f_br_zero; \
1841 unsigned int length;
1842#define EXTRACT_IFMT_CMPOBE_REG_CODE \
1843 length = 4; \
1844 f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
1845 f_br_src1 = EXTRACT_UINT (insn, 32, 8, 5); \
1846 f_br_src2 = EXTRACT_UINT (insn, 32, 13, 5); \
1847 f_br_m1 = EXTRACT_UINT (insn, 32, 18, 1); \
1848 f_br_disp = ((((EXTRACT_INT (insn, 32, 19, 11)) << (2))) + (pc)); \
1849 f_br_zero = EXTRACT_UINT (insn, 32, 30, 2); \
1850
1851#define EXTRACT_IFMT_CMPOBE_LIT_VARS \
1852 /* Instruction fields. */ \
1853 UINT f_opcode; \
1854 UINT f_br_src1; \
1855 UINT f_br_src2; \
1856 UINT f_br_m1; \
1857 SI f_br_disp; \
1858 UINT f_br_zero; \
1859 unsigned int length;
1860#define EXTRACT_IFMT_CMPOBE_LIT_CODE \
1861 length = 4; \
1862 f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
1863 f_br_src1 = EXTRACT_UINT (insn, 32, 8, 5); \
1864 f_br_src2 = EXTRACT_UINT (insn, 32, 13, 5); \
1865 f_br_m1 = EXTRACT_UINT (insn, 32, 18, 1); \
1866 f_br_disp = ((((EXTRACT_INT (insn, 32, 19, 11)) << (2))) + (pc)); \
1867 f_br_zero = EXTRACT_UINT (insn, 32, 30, 2); \
1868
1869#define EXTRACT_IFMT_BNO_VARS \
1870 /* Instruction fields. */ \
1871 UINT f_opcode; \
1872 SI f_ctrl_disp; \
1873 UINT f_ctrl_zero; \
1874 unsigned int length;
1875#define EXTRACT_IFMT_BNO_CODE \
1876 length = 4; \
1877 f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
1878 f_ctrl_disp = ((((EXTRACT_INT (insn, 32, 8, 22)) << (2))) + (pc)); \
1879 f_ctrl_zero = EXTRACT_UINT (insn, 32, 30, 2); \
1880
1881/* Collection of various things for the trace handler to use. */
1882
1883typedef struct trace_record {
1884 IADDR pc;
1885 /* FIXME:wip */
1886} TRACE_RECORD;
1887
1888#endif /* CPU_I960BASE_H */