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