1 /* CPU family header for i960base.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
7 This file is part of the GNU Simulators.
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2, or (at your option)
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License along
20 with this program; if not, write to the Free Software Foundation, Inc.,
21 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
25 #ifndef CPU_I960BASE_H
26 #define CPU_I960BASE_H
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
32 /* Maximum number of instructions that can be executed in parallel. */
33 #define MAX_PARALLEL_INSNS 1
35 /* CPU state information. */
37 /* Hardware elements. */
41 #define GET_H_PC() CPU (h_pc)
42 #define SET_H_PC(x) (CPU (h_pc) = (x))
43 /* general registers */
45 #define GET_H_GR(a1) CPU (h_gr)[a1]
46 #define SET_H_GR(a1, x) (CPU (h_gr)[a1] = (x))
49 #define GET_H_CC() CPU (h_cc)
50 #define SET_H_CC(x) (CPU (h_cc) = (x))
52 #define CPU_CGEN_HW(cpu) (& (cpu)->cpu_data.hardware)
55 /* Cover fns for register access. */
56 USI
i960base_h_pc_get (SIM_CPU
*);
57 void i960base_h_pc_set (SIM_CPU
*, USI
);
58 SI
i960base_h_gr_get (SIM_CPU
*, UINT
);
59 void i960base_h_gr_set (SIM_CPU
*, UINT
, SI
);
60 SI
i960base_h_cc_get (SIM_CPU
*);
61 void i960base_h_cc_set (SIM_CPU
*, SI
);
63 /* These must be hand-written. */
64 extern CPUREG_FETCH_FN i960base_fetch_register
;
65 extern CPUREG_STORE_FN i960base_store_register
;
76 struct { /* empty sformat for unspecified field list */
79 struct { /* e.g. mulo $src1, $src2, $dst */
83 unsigned char in_src1
;
84 unsigned char in_src2
;
85 unsigned char out_dst
;
87 struct { /* e.g. mulo $lit1, $src2, $dst */
91 unsigned char in_src2
;
92 unsigned char out_dst
;
94 struct { /* e.g. mulo $src1, $lit2, $dst */
98 unsigned char in_src1
;
99 unsigned char out_dst
;
101 struct { /* e.g. mulo $lit1, $lit2, $dst */
105 unsigned char out_dst
;
107 struct { /* e.g. notbit $src1, $src2, $dst */
111 unsigned char in_src1
;
112 unsigned char in_src2
;
113 unsigned char out_dst
;
115 struct { /* e.g. notbit $lit1, $src2, $dst */
119 unsigned char in_src2
;
120 unsigned char out_dst
;
122 struct { /* e.g. notbit $src1, $lit2, $dst */
126 unsigned char in_src1
;
127 unsigned char out_dst
;
129 struct { /* e.g. notbit $lit1, $lit2, $dst */
133 unsigned char out_dst
;
135 struct { /* e.g. not $src1, $src2, $dst */
138 unsigned char in_src1
;
139 unsigned char out_dst
;
141 struct { /* e.g. not $lit1, $src2, $dst */
144 unsigned char out_dst
;
146 struct { /* e.g. not $src1, $lit2, $dst */
149 unsigned char in_src1
;
150 unsigned char out_dst
;
152 struct { /* e.g. not $lit1, $lit2, $dst */
155 unsigned char out_dst
;
157 struct { /* e.g. shlo $src1, $src2, $dst */
161 unsigned char in_src1
;
162 unsigned char in_src2
;
163 unsigned char out_dst
;
165 struct { /* e.g. shlo $lit1, $src2, $dst */
169 unsigned char in_src2
;
170 unsigned char out_dst
;
172 struct { /* e.g. shlo $src1, $lit2, $dst */
176 unsigned char in_src1
;
177 unsigned char out_dst
;
179 struct { /* e.g. shlo $lit1, $lit2, $dst */
183 unsigned char out_dst
;
185 struct { /* e.g. emul $src1, $src2, $dst */
190 unsigned char in_src1
;
191 unsigned char in_src2
;
192 unsigned char out_dst
;
193 unsigned char out_h_gr_add__VM_index_of_dst_1
;
195 struct { /* e.g. emul $lit1, $src2, $dst */
200 unsigned char in_src2
;
201 unsigned char out_dst
;
202 unsigned char out_h_gr_add__VM_index_of_dst_1
;
204 struct { /* e.g. emul $src1, $lit2, $dst */
209 unsigned char in_src1
;
210 unsigned char out_dst
;
211 unsigned char out_h_gr_add__VM_index_of_dst_1
;
213 struct { /* e.g. emul $lit1, $lit2, $dst */
218 unsigned char out_dst
;
219 unsigned char out_h_gr_add__VM_index_of_dst_1
;
221 struct { /* e.g. movl $src1, $dst */
226 unsigned char in_h_gr_add__VM_index_of_src1_1
;
227 unsigned char in_src1
;
228 unsigned char out_dst
;
229 unsigned char out_h_gr_add__VM_index_of_dst_1
;
231 struct { /* e.g. movl $lit1, $dst */
235 unsigned char out_dst
;
236 unsigned char out_h_gr_add__VM_index_of_dst_1
;
238 struct { /* e.g. movt $src1, $dst */
243 unsigned char in_h_gr_add__VM_index_of_src1_1
;
244 unsigned char in_h_gr_add__VM_index_of_src1_2
;
245 unsigned char in_src1
;
246 unsigned char out_dst
;
247 unsigned char out_h_gr_add__VM_index_of_dst_1
;
248 unsigned char out_h_gr_add__VM_index_of_dst_2
;
250 struct { /* e.g. movt $lit1, $dst */
254 unsigned char out_dst
;
255 unsigned char out_h_gr_add__VM_index_of_dst_1
;
256 unsigned char out_h_gr_add__VM_index_of_dst_2
;
258 struct { /* e.g. movq $src1, $dst */
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
;
266 unsigned char in_src1
;
267 unsigned char out_dst
;
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
;
272 struct { /* e.g. movq $lit1, $dst */
276 unsigned char out_dst
;
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
;
281 struct { /* e.g. modpc $src1, $src2, $dst */
284 unsigned char in_src2
;
285 unsigned char out_dst
;
287 struct { /* e.g. lda $offset, $dst */
290 unsigned char out_dst
;
292 struct { /* e.g. lda $offset($abase), $dst */
296 unsigned char in_abase
;
297 unsigned char out_dst
;
298 } fmt_lda_indirect_offset
;
299 struct { /* e.g. lda ($abase), $dst */
302 unsigned char in_abase
;
303 unsigned char out_dst
;
305 struct { /* e.g. lda ($abase)[$index*S$scale], $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 */
317 unsigned char out_dst
;
319 struct { /* e.g. lda $optdisp($abase), $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 */
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 */
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 */
347 unsigned char out_dst
;
349 struct { /* e.g. ld $offset($abase), $dst */
353 unsigned char in_abase
;
354 unsigned char out_dst
;
355 } fmt_ld_indirect_offset
;
356 struct { /* e.g. ld ($abase), $dst */
359 unsigned char in_abase
;
360 unsigned char out_dst
;
362 struct { /* e.g. ld ($abase)[$index*S$scale], $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 */
374 unsigned char out_dst
;
376 struct { /* e.g. ld $optdisp($abase), $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 */
388 unsigned char in_index
;
389 unsigned char out_dst
;
391 struct { /* e.g. ld $optdisp($abase)[$index*S$scale], $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 */
404 unsigned char out_dst
;
406 struct { /* e.g. ldob $offset($abase), $dst */
410 unsigned char in_abase
;
411 unsigned char out_dst
;
412 } fmt_ldob_indirect_offset
;
413 struct { /* e.g. ldob ($abase), $dst */
416 unsigned char in_abase
;
417 unsigned char out_dst
;
419 struct { /* e.g. ldob ($abase)[$index*S$scale], $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 */
431 unsigned char out_dst
;
433 struct { /* e.g. ldob $optdisp($abase), $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 */
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 */
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 */
461 unsigned char out_dst
;
463 struct { /* e.g. ldos $offset($abase), $dst */
467 unsigned char in_abase
;
468 unsigned char out_dst
;
469 } fmt_ldos_indirect_offset
;
470 struct { /* e.g. ldos ($abase), $dst */
473 unsigned char in_abase
;
474 unsigned char out_dst
;
476 struct { /* e.g. ldos ($abase)[$index*S$scale], $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 */
488 unsigned char out_dst
;
490 struct { /* e.g. ldos $optdisp($abase), $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 */
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 */
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 */
518 unsigned char out_dst
;
520 struct { /* e.g. ldib $offset($abase), $dst */
524 unsigned char in_abase
;
525 unsigned char out_dst
;
526 } fmt_ldib_indirect_offset
;
527 struct { /* e.g. ldib ($abase), $dst */
530 unsigned char in_abase
;
531 unsigned char out_dst
;
533 struct { /* e.g. ldib ($abase)[$index*S$scale], $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 */
545 unsigned char out_dst
;
547 struct { /* e.g. ldib $optdisp($abase), $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 */
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 */
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 */
575 unsigned char out_dst
;
577 struct { /* e.g. ldis $offset($abase), $dst */
581 unsigned char in_abase
;
582 unsigned char out_dst
;
583 } fmt_ldis_indirect_offset
;
584 struct { /* e.g. ldis ($abase), $dst */
587 unsigned char in_abase
;
588 unsigned char out_dst
;
590 struct { /* e.g. ldis ($abase)[$index*S$scale], $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 */
602 unsigned char out_dst
;
604 struct { /* e.g. ldis $optdisp($abase), $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 */
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 */
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 */
633 unsigned char out_dst
;
634 unsigned char out_h_gr_add__VM_index_of_dst_1
;
636 struct { /* e.g. ldl $offset($abase), $dst */
641 unsigned char in_abase
;
642 unsigned char out_dst
;
643 unsigned char out_h_gr_add__VM_index_of_dst_1
;
644 } fmt_ldl_indirect_offset
;
645 struct { /* e.g. ldl ($abase), $dst */
649 unsigned char in_abase
;
650 unsigned char out_dst
;
651 unsigned char out_h_gr_add__VM_index_of_dst_1
;
653 struct { /* e.g. ldl ($abase)[$index*S$scale], $dst */
659 unsigned char in_abase
;
660 unsigned char in_index
;
661 unsigned char out_dst
;
662 unsigned char out_h_gr_add__VM_index_of_dst_1
;
663 } fmt_ldl_indirect_index
;
664 struct { /* e.g. ldl $optdisp, $dst */
668 unsigned char out_dst
;
669 unsigned char out_h_gr_add__VM_index_of_dst_1
;
671 struct { /* e.g. ldl $optdisp($abase), $dst */
676 unsigned char in_abase
;
677 unsigned char out_dst
;
678 unsigned char out_h_gr_add__VM_index_of_dst_1
;
679 } fmt_ldl_indirect_disp
;
680 struct { /* e.g. ldl $optdisp[$index*S$scale], $dst */
686 unsigned char in_index
;
687 unsigned char out_dst
;
688 unsigned char out_h_gr_add__VM_index_of_dst_1
;
689 } fmt_ldl_index_disp
;
690 struct { /* e.g. ldl $optdisp($abase)[$index*S$scale], $dst */
697 unsigned char in_abase
;
698 unsigned char in_index
;
699 unsigned char out_dst
;
700 unsigned char out_h_gr_add__VM_index_of_dst_1
;
701 } fmt_ldl_indirect_index_disp
;
702 struct { /* e.g. ldt $offset, $dst */
706 unsigned char out_dst
;
707 unsigned char out_h_gr_add__VM_index_of_dst_1
;
708 unsigned char out_h_gr_add__VM_index_of_dst_2
;
710 struct { /* e.g. ldt $offset($abase), $dst */
715 unsigned char in_abase
;
716 unsigned char out_dst
;
717 unsigned char out_h_gr_add__VM_index_of_dst_1
;
718 unsigned char out_h_gr_add__VM_index_of_dst_2
;
719 } fmt_ldt_indirect_offset
;
720 struct { /* e.g. ldt ($abase), $dst */
724 unsigned char in_abase
;
725 unsigned char out_dst
;
726 unsigned char out_h_gr_add__VM_index_of_dst_1
;
727 unsigned char out_h_gr_add__VM_index_of_dst_2
;
729 struct { /* e.g. ldt ($abase)[$index*S$scale], $dst */
735 unsigned char in_abase
;
736 unsigned char in_index
;
737 unsigned char out_dst
;
738 unsigned char out_h_gr_add__VM_index_of_dst_1
;
739 unsigned char out_h_gr_add__VM_index_of_dst_2
;
740 } fmt_ldt_indirect_index
;
741 struct { /* e.g. ldt $optdisp, $dst */
745 unsigned char out_dst
;
746 unsigned char out_h_gr_add__VM_index_of_dst_1
;
747 unsigned char out_h_gr_add__VM_index_of_dst_2
;
749 struct { /* e.g. ldt $optdisp($abase), $dst */
754 unsigned char in_abase
;
755 unsigned char out_dst
;
756 unsigned char out_h_gr_add__VM_index_of_dst_1
;
757 unsigned char out_h_gr_add__VM_index_of_dst_2
;
758 } fmt_ldt_indirect_disp
;
759 struct { /* e.g. ldt $optdisp[$index*S$scale], $dst */
765 unsigned char in_index
;
766 unsigned char out_dst
;
767 unsigned char out_h_gr_add__VM_index_of_dst_1
;
768 unsigned char out_h_gr_add__VM_index_of_dst_2
;
769 } fmt_ldt_index_disp
;
770 struct { /* e.g. ldt $optdisp($abase)[$index*S$scale], $dst */
777 unsigned char in_abase
;
778 unsigned char in_index
;
779 unsigned char out_dst
;
780 unsigned char out_h_gr_add__VM_index_of_dst_1
;
781 unsigned char out_h_gr_add__VM_index_of_dst_2
;
782 } fmt_ldt_indirect_index_disp
;
783 struct { /* e.g. ldq $offset, $dst */
787 unsigned char out_dst
;
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
;
792 struct { /* e.g. ldq $offset($abase), $dst */
797 unsigned char in_abase
;
798 unsigned char out_dst
;
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
;
802 } fmt_ldq_indirect_offset
;
803 struct { /* e.g. ldq ($abase), $dst */
807 unsigned char in_abase
;
808 unsigned char out_dst
;
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
;
813 struct { /* e.g. ldq ($abase)[$index*S$scale], $dst */
819 unsigned char in_abase
;
820 unsigned char in_index
;
821 unsigned char out_dst
;
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
;
825 } fmt_ldq_indirect_index
;
826 struct { /* e.g. ldq $optdisp, $dst */
830 unsigned char out_dst
;
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
;
835 struct { /* e.g. ldq $optdisp($abase), $dst */
840 unsigned char in_abase
;
841 unsigned char out_dst
;
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
;
845 } fmt_ldq_indirect_disp
;
846 struct { /* e.g. ldq $optdisp[$index*S$scale], $dst */
852 unsigned char in_index
;
853 unsigned char out_dst
;
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
;
857 } fmt_ldq_index_disp
;
858 struct { /* e.g. ldq $optdisp($abase)[$index*S$scale], $dst */
865 unsigned char in_abase
;
866 unsigned char in_index
;
867 unsigned char out_dst
;
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
;
871 } fmt_ldq_indirect_index_disp
;
872 struct { /* e.g. st $st_src, $offset */
875 unsigned char in_st_src
;
877 struct { /* e.g. st $st_src, $offset($abase) */
881 unsigned char in_abase
;
882 unsigned char in_st_src
;
883 } fmt_st_indirect_offset
;
884 struct { /* e.g. st $st_src, ($abase) */
887 unsigned char in_abase
;
888 unsigned char in_st_src
;
890 struct { /* e.g. st $st_src, ($abase)[$index*S$scale] */
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 */
902 unsigned char in_st_src
;
904 struct { /* e.g. st $st_src, $optdisp($abase) */
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 */
916 unsigned char in_index
;
917 unsigned char in_st_src
;
919 struct { /* e.g. st $st_src, $optdisp($abase)[$index*S$scale] */
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 */
932 unsigned char in_st_src
;
934 struct { /* e.g. stob $st_src, $offset($abase) */
938 unsigned char in_abase
;
939 unsigned char in_st_src
;
940 } fmt_stob_indirect_offset
;
941 struct { /* e.g. stob $st_src, ($abase) */
944 unsigned char in_abase
;
945 unsigned char in_st_src
;
947 struct { /* e.g. stob $st_src, ($abase)[$index*S$scale] */
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 */
959 unsigned char in_st_src
;
961 struct { /* e.g. stob $st_src, $optdisp($abase) */
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 */
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] */
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 */
989 unsigned char in_st_src
;
991 struct { /* e.g. stos $st_src, $offset($abase) */
995 unsigned char in_abase
;
996 unsigned char in_st_src
;
997 } fmt_stos_indirect_offset
;
998 struct { /* e.g. stos $st_src, ($abase) */
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] */
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 */
1016 unsigned char in_st_src
;
1018 struct { /* e.g. stos $st_src, $optdisp($abase) */
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 */
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] */
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 */
1047 unsigned char in_h_gr_add__VM_index_of_st_src_1
;
1048 unsigned char in_st_src
;
1050 struct { /* e.g. stl $st_src, $offset($abase) */
1055 unsigned char in_abase
;
1056 unsigned char in_h_gr_add__VM_index_of_st_src_1
;
1057 unsigned char in_st_src
;
1058 } fmt_stl_indirect_offset
;
1059 struct { /* e.g. stl $st_src, ($abase) */
1063 unsigned char in_abase
;
1064 unsigned char in_h_gr_add__VM_index_of_st_src_1
;
1065 unsigned char in_st_src
;
1067 struct { /* e.g. stl $st_src, ($abase)[$index*S$scale] */
1073 unsigned char in_abase
;
1074 unsigned char in_h_gr_add__VM_index_of_st_src_1
;
1075 unsigned char in_index
;
1076 unsigned char in_st_src
;
1077 } fmt_stl_indirect_index
;
1078 struct { /* e.g. stl $st_src, $optdisp */
1082 unsigned char in_h_gr_add__VM_index_of_st_src_1
;
1083 unsigned char in_st_src
;
1085 struct { /* e.g. stl $st_src, $optdisp($abase) */
1090 unsigned char in_abase
;
1091 unsigned char in_h_gr_add__VM_index_of_st_src_1
;
1092 unsigned char in_st_src
;
1093 } fmt_stl_indirect_disp
;
1094 struct { /* e.g. stl $st_src, $optdisp[$index*S$scale */
1100 unsigned char in_h_gr_add__VM_index_of_st_src_1
;
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] */
1111 unsigned char in_abase
;
1112 unsigned char in_h_gr_add__VM_index_of_st_src_1
;
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 */
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
;
1122 unsigned char in_st_src
;
1124 struct { /* e.g. stt $st_src, $offset($abase) */
1129 unsigned char in_abase
;
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
;
1132 unsigned char in_st_src
;
1133 } fmt_stt_indirect_offset
;
1134 struct { /* e.g. stt $st_src, ($abase) */
1138 unsigned char in_abase
;
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
;
1141 unsigned char in_st_src
;
1143 struct { /* e.g. stt $st_src, ($abase)[$index*S$scale] */
1149 unsigned char in_abase
;
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
;
1152 unsigned char in_index
;
1153 unsigned char in_st_src
;
1154 } fmt_stt_indirect_index
;
1155 struct { /* e.g. stt $st_src, $optdisp */
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
;
1161 unsigned char in_st_src
;
1163 struct { /* e.g. stt $st_src, $optdisp($abase) */
1168 unsigned char in_abase
;
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
;
1171 unsigned char in_st_src
;
1172 } fmt_stt_indirect_disp
;
1173 struct { /* e.g. stt $st_src, $optdisp[$index*S$scale */
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
;
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] */
1191 unsigned char in_abase
;
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
;
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 */
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
;
1204 unsigned char in_st_src
;
1206 struct { /* e.g. stq $st_src, $offset($abase) */
1211 unsigned char in_abase
;
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
;
1215 unsigned char in_st_src
;
1216 } fmt_stq_indirect_offset
;
1217 struct { /* e.g. stq $st_src, ($abase) */
1221 unsigned char in_abase
;
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
;
1225 unsigned char in_st_src
;
1227 struct { /* e.g. stq $st_src, ($abase)[$index*S$scale] */
1233 unsigned char in_abase
;
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
;
1237 unsigned char in_index
;
1238 unsigned char in_st_src
;
1239 } fmt_stq_indirect_index
;
1240 struct { /* e.g. stq $st_src, $optdisp */
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
;
1247 unsigned char in_st_src
;
1249 struct { /* e.g. stq $st_src, $optdisp($abase) */
1254 unsigned char in_abase
;
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
;
1258 unsigned char in_st_src
;
1259 } fmt_stq_indirect_disp
;
1260 struct { /* e.g. stq $st_src, $optdisp[$index*S$scale */
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
;
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] */
1279 unsigned char in_abase
;
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
;
1283 unsigned char in_index
;
1284 unsigned char in_st_src
;
1285 } fmt_stq_indirect_index_disp
;
1286 struct { /* e.g. cmpi $src1, $src2 */
1289 unsigned char in_src1
;
1290 unsigned char in_src2
;
1292 struct { /* e.g. cmpi $lit1, $src2 */
1295 unsigned char in_src2
;
1297 struct { /* e.g. cmpi $src1, $lit2 */
1300 unsigned char in_src1
;
1302 struct { /* e.g. cmpi $lit1, $lit2 */
1306 struct { /* e.g. cmpo $src1, $src2 */
1309 unsigned char in_src1
;
1310 unsigned char in_src2
;
1312 struct { /* e.g. cmpo $lit1, $src2 */
1315 unsigned char in_src2
;
1317 struct { /* e.g. cmpo $src1, $lit2 */
1320 unsigned char in_src1
;
1322 struct { /* e.g. cmpo $lit1, $lit2 */
1326 struct { /* e.g. testno $br_src1 */
1328 unsigned char out_br_src1
;
1330 struct { /* e.g. flushreg */
1333 /* cti insns, kept separately so addr_cache is in fixed place */
1336 struct { /* e.g. cmpobe $br_src1, $br_src2, $br_disp */
1340 unsigned char in_br_src1
;
1341 unsigned char in_br_src2
;
1343 struct { /* e.g. cmpobe $br_lit1, $br_src2, $br_disp */
1347 unsigned char in_br_src2
;
1349 struct { /* e.g. cmpobl $br_src1, $br_src2, $br_disp */
1353 unsigned char in_br_src1
;
1354 unsigned char in_br_src2
;
1356 struct { /* e.g. cmpobl $br_lit1, $br_src2, $br_disp */
1360 unsigned char in_br_src2
;
1362 struct { /* e.g. bbc $br_src1, $br_src2, $br_disp */
1366 unsigned char in_br_src1
;
1367 unsigned char in_br_src2
;
1369 struct { /* e.g. bbc $br_lit1, $br_src2, $br_disp */
1373 unsigned char in_br_src2
;
1375 struct { /* e.g. bno $ctrl_disp */
1378 struct { /* e.g. b $ctrl_disp */
1381 struct { /* e.g. bx $offset($abase) */
1384 unsigned char in_abase
;
1385 } fmt_bx_indirect_offset
;
1386 struct { /* e.g. bx ($abase) */
1388 unsigned char in_abase
;
1390 struct { /* e.g. bx ($abase)[$index*S$scale] */
1394 unsigned char in_abase
;
1395 unsigned char in_index
;
1396 } fmt_bx_indirect_index
;
1397 struct { /* e.g. bx $optdisp */
1400 struct { /* e.g. bx $optdisp($abase) */
1403 unsigned char in_abase
;
1404 } fmt_bx_indirect_disp
;
1405 struct { /* e.g. callx $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
;
1442 struct { /* e.g. callx ($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) */
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 */
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
;
1542 struct { /* e.g. calls $src1 */
1544 unsigned char in_src1
;
1546 struct { /* e.g. fmark */
1555 /* Writeback handler. */
1557 /* Pointer to argbuf entry for insn whose results need writing back. */
1558 const struct argbuf
*abuf
;
1560 /* x-before handler */
1562 /*const SCACHE *insns[MAX_PARALLEL_INSNS];*/
1565 /* x-after handler */
1569 /* This entry is used to terminate each pbb. */
1571 /* Number of insns in pbb. */
1573 /* Next pbb to execute. */
1579 /* The ARGBUF struct. */
1581 /* These are the baseclass definitions. */
1586 /* cpu specific data follows */
1589 union sem_fields fields
;
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. */
1599 struct argbuf argbuf
;
1602 /* Macros to simplify extraction, reading and semantic code.
1603 These define and assign the local vars that contain the insn's fields. */
1605 #define EXTRACT_IFMT_EMPTY_VARS \
1606 /* Instruction fields. */ \
1607 unsigned int length;
1608 #define EXTRACT_IFMT_EMPTY_CODE \
1611 #define EXTRACT_IFMT_MULO_VARS \
1612 /* Instruction fields. */ \
1622 unsigned int length;
1623 #define EXTRACT_IFMT_MULO_CODE \
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); \
1635 #define EXTRACT_IFMT_MULO1_VARS \
1636 /* Instruction fields. */ \
1646 unsigned int length;
1647 #define EXTRACT_IFMT_MULO1_CODE \
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); \
1659 #define EXTRACT_IFMT_MULO2_VARS \
1660 /* Instruction fields. */ \
1670 unsigned int length;
1671 #define EXTRACT_IFMT_MULO2_CODE \
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); \
1683 #define EXTRACT_IFMT_MULO3_VARS \
1684 /* Instruction fields. */ \
1694 unsigned int length;
1695 #define EXTRACT_IFMT_MULO3_CODE \
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); \
1707 #define EXTRACT_IFMT_LDA_OFFSET_VARS \
1708 /* Instruction fields. */ \
1715 unsigned int length;
1716 #define EXTRACT_IFMT_LDA_OFFSET_CODE \
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); \
1725 #define EXTRACT_IFMT_LDA_INDIRECT_VARS \
1726 /* Instruction fields. */ \
1734 unsigned int length;
1735 #define EXTRACT_IFMT_LDA_INDIRECT_CODE \
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); \
1745 #define EXTRACT_IFMT_LDA_DISP_VARS \
1746 /* Instruction fields. */ \
1755 /* Contents of trailing part of insn. */ \
1757 unsigned int length;
1758 #define EXTRACT_IFMT_LDA_DISP_CODE \
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); \
1770 #define EXTRACT_IFMT_ST_OFFSET_VARS \
1771 /* Instruction fields. */ \
1778 unsigned int length;
1779 #define EXTRACT_IFMT_ST_OFFSET_CODE \
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); \
1788 #define EXTRACT_IFMT_ST_INDIRECT_VARS \
1789 /* Instruction fields. */ \
1797 unsigned int length;
1798 #define EXTRACT_IFMT_ST_INDIRECT_CODE \
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); \
1808 #define EXTRACT_IFMT_ST_DISP_VARS \
1809 /* Instruction fields. */ \
1818 /* Contents of trailing part of insn. */ \
1820 unsigned int length;
1821 #define EXTRACT_IFMT_ST_DISP_CODE \
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); \
1833 #define EXTRACT_IFMT_CMPOBE_REG_VARS \
1834 /* Instruction fields. */ \
1841 unsigned int length;
1842 #define EXTRACT_IFMT_CMPOBE_REG_CODE \
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); \
1851 #define EXTRACT_IFMT_CMPOBE_LIT_VARS \
1852 /* Instruction fields. */ \
1859 unsigned int length;
1860 #define EXTRACT_IFMT_CMPOBE_LIT_CODE \
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); \
1869 #define EXTRACT_IFMT_BNO_VARS \
1870 /* Instruction fields. */ \
1874 unsigned int length;
1875 #define EXTRACT_IFMT_BNO_CODE \
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); \
1881 /* Collection of various things for the trace handler to use. */
1883 typedef struct trace_record
{
1888 #endif /* CPU_I960BASE_H */