import gdb-1999-08-09 snapshot
[deliverable/binutils-gdb.git] / sim / i960 / cpu.h
index 98879067e0e795b9ccd70623199135e90b9bffa8..17701d3a37a3ac9d0128d332f4b7416afc4f7aae 100644 (file)
@@ -72,1485 +72,208 @@ typedef struct {
   int empty;
 } MODEL_I960CA_DATA;
 
+/* Instruction argument buffer.  */
+
 union sem_fields {
-    struct { /* empty sformat for unspecified field list */
-      int empty;
-    } fmt_empty;
-    struct { /* e.g. mulo $src1, $src2, $dst */
-      SI * i_src1;
-      SI * i_src2;
-      SI * i_dst;
-      unsigned char in_src1;
-      unsigned char in_src2;
-      unsigned char out_dst;
-    } fmt_mulo;
-    struct { /* e.g. mulo $lit1, $src2, $dst */
-      UINT f_src1;
-      SI * i_src2;
-      SI * i_dst;
-      unsigned char in_src2;
-      unsigned char out_dst;
-    } fmt_mulo1;
-    struct { /* e.g. mulo $src1, $lit2, $dst */
-      UINT f_src2;
-      SI * i_src1;
-      SI * i_dst;
-      unsigned char in_src1;
-      unsigned char out_dst;
-    } fmt_mulo2;
-    struct { /* e.g. mulo $lit1, $lit2, $dst */
-      UINT f_src1;
-      UINT f_src2;
-      SI * i_dst;
-      unsigned char out_dst;
-    } fmt_mulo3;
-    struct { /* e.g. notbit $src1, $src2, $dst */
-      SI * i_src1;
-      SI * i_src2;
-      SI * i_dst;
-      unsigned char in_src1;
-      unsigned char in_src2;
-      unsigned char out_dst;
-    } fmt_notbit;
-    struct { /* e.g. notbit $lit1, $src2, $dst */
-      UINT f_src1;
-      SI * i_src2;
-      SI * i_dst;
-      unsigned char in_src2;
-      unsigned char out_dst;
-    } fmt_notbit1;
-    struct { /* e.g. notbit $src1, $lit2, $dst */
-      UINT f_src2;
-      SI * i_src1;
-      SI * i_dst;
-      unsigned char in_src1;
-      unsigned char out_dst;
-    } fmt_notbit2;
-    struct { /* e.g. notbit $lit1, $lit2, $dst */
-      UINT f_src1;
-      UINT f_src2;
-      SI * i_dst;
-      unsigned char out_dst;
-    } fmt_notbit3;
-    struct { /* e.g. not $src1, $src2, $dst */
-      SI * i_src1;
-      SI * i_dst;
-      unsigned char in_src1;
-      unsigned char out_dst;
-    } fmt_not;
-    struct { /* e.g. not $lit1, $src2, $dst */
-      UINT f_src1;
-      SI * i_dst;
-      unsigned char out_dst;
-    } fmt_not1;
-    struct { /* e.g. not $src1, $lit2, $dst */
-      SI * i_src1;
-      SI * i_dst;
-      unsigned char in_src1;
-      unsigned char out_dst;
-    } fmt_not2;
-    struct { /* e.g. not $lit1, $lit2, $dst */
-      UINT f_src1;
-      SI * i_dst;
-      unsigned char out_dst;
-    } fmt_not3;
-    struct { /* e.g. shlo $src1, $src2, $dst */
-      SI * i_src1;
-      SI * i_src2;
-      SI * i_dst;
-      unsigned char in_src1;
-      unsigned char in_src2;
-      unsigned char out_dst;
-    } fmt_shlo;
-    struct { /* e.g. shlo $lit1, $src2, $dst */
-      UINT f_src1;
-      SI * i_src2;
-      SI * i_dst;
-      unsigned char in_src2;
-      unsigned char out_dst;
-    } fmt_shlo1;
-    struct { /* e.g. shlo $src1, $lit2, $dst */
-      UINT f_src2;
-      SI * i_src1;
-      SI * i_dst;
-      unsigned char in_src1;
-      unsigned char out_dst;
-    } fmt_shlo2;
-    struct { /* e.g. shlo $lit1, $lit2, $dst */
-      UINT f_src1;
-      UINT f_src2;
-      SI * i_dst;
-      unsigned char out_dst;
-    } fmt_shlo3;
-    struct { /* e.g. emul $src1, $src2, $dst */
-      UINT f_srcdst;
-      SI * i_src1;
-      SI * i_src2;
-      SI * i_dst;
-      unsigned char in_src1;
-      unsigned char in_src2;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-    } fmt_emul;
-    struct { /* e.g. emul $lit1, $src2, $dst */
-      UINT f_srcdst;
-      UINT f_src1;
-      SI * i_src2;
-      SI * i_dst;
-      unsigned char in_src2;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-    } fmt_emul1;
-    struct { /* e.g. emul $src1, $lit2, $dst */
-      UINT f_srcdst;
-      UINT f_src2;
-      SI * i_src1;
-      SI * i_dst;
-      unsigned char in_src1;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-    } fmt_emul2;
-    struct { /* e.g. emul $lit1, $lit2, $dst */
-      UINT f_srcdst;
-      UINT f_src1;
-      UINT f_src2;
-      SI * i_dst;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-    } fmt_emul3;
-    struct { /* e.g. movl $src1, $dst */
-      UINT f_src1;
-      UINT f_srcdst;
-      SI * i_src1;
-      SI * i_dst;
-      unsigned char in_h_gr_add__VM_index_of_src1_1;
-      unsigned char in_src1;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-    } fmt_movl;
-    struct { /* e.g. movl $lit1, $dst */
-      UINT f_srcdst;
-      UINT f_src1;
-      SI * i_dst;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-    } fmt_movl1;
-    struct { /* e.g. movt $src1, $dst */
-      UINT f_src1;
-      UINT f_srcdst;
-      SI * i_src1;
-      SI * i_dst;
-      unsigned char in_h_gr_add__VM_index_of_src1_1;
-      unsigned char in_h_gr_add__VM_index_of_src1_2;
-      unsigned char in_src1;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-      unsigned char out_h_gr_add__VM_index_of_dst_2;
-    } fmt_movt;
-    struct { /* e.g. movt $lit1, $dst */
-      UINT f_srcdst;
-      UINT f_src1;
-      SI * i_dst;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-      unsigned char out_h_gr_add__VM_index_of_dst_2;
-    } fmt_movt1;
-    struct { /* e.g. movq $src1, $dst */
-      UINT f_src1;
-      UINT f_srcdst;
-      SI * i_src1;
-      SI * i_dst;
-      unsigned char in_h_gr_add__VM_index_of_src1_1;
-      unsigned char in_h_gr_add__VM_index_of_src1_2;
-      unsigned char in_h_gr_add__VM_index_of_src1_3;
-      unsigned char in_src1;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-      unsigned char out_h_gr_add__VM_index_of_dst_2;
-      unsigned char out_h_gr_add__VM_index_of_dst_3;
-    } fmt_movq;
-    struct { /* e.g. movq $lit1, $dst */
-      UINT f_srcdst;
-      UINT f_src1;
-      SI * i_dst;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-      unsigned char out_h_gr_add__VM_index_of_dst_2;
-      unsigned char out_h_gr_add__VM_index_of_dst_3;
-    } fmt_movq1;
-    struct { /* e.g. modpc $src1, $src2, $dst */
-      SI * i_src2;
-      SI * i_dst;
-      unsigned char in_src2;
-      unsigned char out_dst;
-    } fmt_modpc;
-    struct { /* e.g. lda $offset, $dst */
-      UINT f_offset;
-      SI * i_dst;
-      unsigned char out_dst;
-    } fmt_lda_offset;
-    struct { /* e.g. lda $offset($abase), $dst */
-      UINT f_offset;
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-    } fmt_lda_indirect_offset;
-    struct { /* e.g. lda ($abase), $dst */
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-    } fmt_lda_indirect;
-    struct { /* e.g. lda ($abase)[$index*S$scale], $dst */
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char out_dst;
-    } fmt_lda_indirect_index;
-    struct { /* e.g. lda $optdisp, $dst */
-      UINT f_optdisp;
-      SI * i_dst;
-      unsigned char out_dst;
-    } fmt_lda_disp;
-    struct { /* e.g. lda $optdisp($abase), $dst */
-      UINT f_optdisp;
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-    } fmt_lda_indirect_disp;
-    struct { /* e.g. lda $optdisp[$index*S$scale], $dst */
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_index;
-      unsigned char out_dst;
-    } fmt_lda_index_disp;
-    struct { /* e.g. lda $optdisp($abase)[$index*S$scale], $dst */
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char out_dst;
-    } fmt_lda_indirect_index_disp;
-    struct { /* e.g. ld $offset, $dst */
-      UINT f_offset;
-      SI * i_dst;
-      unsigned char out_dst;
-    } fmt_ld_offset;
-    struct { /* e.g. ld $offset($abase), $dst */
-      UINT f_offset;
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-    } fmt_ld_indirect_offset;
-    struct { /* e.g. ld ($abase), $dst */
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-    } fmt_ld_indirect;
-    struct { /* e.g. ld ($abase)[$index*S$scale], $dst */
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char out_dst;
-    } fmt_ld_indirect_index;
-    struct { /* e.g. ld $optdisp, $dst */
-      UINT f_optdisp;
-      SI * i_dst;
-      unsigned char out_dst;
-    } fmt_ld_disp;
-    struct { /* e.g. ld $optdisp($abase), $dst */
-      UINT f_optdisp;
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-    } fmt_ld_indirect_disp;
-    struct { /* e.g. ld $optdisp[$index*S$scale], $dst */
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_index;
-      unsigned char out_dst;
-    } fmt_ld_index_disp;
-    struct { /* e.g. ld $optdisp($abase)[$index*S$scale], $dst */
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char out_dst;
-    } fmt_ld_indirect_index_disp;
-    struct { /* e.g. ldob $offset, $dst */
-      UINT f_offset;
-      SI * i_dst;
-      unsigned char out_dst;
-    } fmt_ldob_offset;
-    struct { /* e.g. ldob $offset($abase), $dst */
-      UINT f_offset;
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-    } fmt_ldob_indirect_offset;
-    struct { /* e.g. ldob ($abase), $dst */
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-    } fmt_ldob_indirect;
-    struct { /* e.g. ldob ($abase)[$index*S$scale], $dst */
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char out_dst;
-    } fmt_ldob_indirect_index;
-    struct { /* e.g. ldob $optdisp, $dst */
-      UINT f_optdisp;
-      SI * i_dst;
-      unsigned char out_dst;
-    } fmt_ldob_disp;
-    struct { /* e.g. ldob $optdisp($abase), $dst */
-      UINT f_optdisp;
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-    } fmt_ldob_indirect_disp;
-    struct { /* e.g. ldob $optdisp[$index*S$scale], $dst */
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_index;
-      unsigned char out_dst;
-    } fmt_ldob_index_disp;
-    struct { /* e.g. ldob $optdisp($abase)[$index*S$scale], $dst */
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char out_dst;
-    } fmt_ldob_indirect_index_disp;
-    struct { /* e.g. ldos $offset, $dst */
-      UINT f_offset;
-      SI * i_dst;
-      unsigned char out_dst;
-    } fmt_ldos_offset;
-    struct { /* e.g. ldos $offset($abase), $dst */
-      UINT f_offset;
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-    } fmt_ldos_indirect_offset;
-    struct { /* e.g. ldos ($abase), $dst */
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-    } fmt_ldos_indirect;
-    struct { /* e.g. ldos ($abase)[$index*S$scale], $dst */
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char out_dst;
-    } fmt_ldos_indirect_index;
-    struct { /* e.g. ldos $optdisp, $dst */
-      UINT f_optdisp;
-      SI * i_dst;
-      unsigned char out_dst;
-    } fmt_ldos_disp;
-    struct { /* e.g. ldos $optdisp($abase), $dst */
-      UINT f_optdisp;
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-    } fmt_ldos_indirect_disp;
-    struct { /* e.g. ldos $optdisp[$index*S$scale], $dst */
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_index;
-      unsigned char out_dst;
-    } fmt_ldos_index_disp;
-    struct { /* e.g. ldos $optdisp($abase)[$index*S$scale], $dst */
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char out_dst;
-    } fmt_ldos_indirect_index_disp;
-    struct { /* e.g. ldib $offset, $dst */
-      UINT f_offset;
-      SI * i_dst;
-      unsigned char out_dst;
-    } fmt_ldib_offset;
-    struct { /* e.g. ldib $offset($abase), $dst */
-      UINT f_offset;
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-    } fmt_ldib_indirect_offset;
-    struct { /* e.g. ldib ($abase), $dst */
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-    } fmt_ldib_indirect;
-    struct { /* e.g. ldib ($abase)[$index*S$scale], $dst */
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char out_dst;
-    } fmt_ldib_indirect_index;
-    struct { /* e.g. ldib $optdisp, $dst */
-      UINT f_optdisp;
-      SI * i_dst;
-      unsigned char out_dst;
-    } fmt_ldib_disp;
-    struct { /* e.g. ldib $optdisp($abase), $dst */
-      UINT f_optdisp;
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-    } fmt_ldib_indirect_disp;
-    struct { /* e.g. ldib $optdisp[$index*S$scale], $dst */
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_index;
-      unsigned char out_dst;
-    } fmt_ldib_index_disp;
-    struct { /* e.g. ldib $optdisp($abase)[$index*S$scale], $dst */
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char out_dst;
-    } fmt_ldib_indirect_index_disp;
-    struct { /* e.g. ldis $offset, $dst */
-      UINT f_offset;
-      SI * i_dst;
-      unsigned char out_dst;
-    } fmt_ldis_offset;
-    struct { /* e.g. ldis $offset($abase), $dst */
-      UINT f_offset;
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-    } fmt_ldis_indirect_offset;
-    struct { /* e.g. ldis ($abase), $dst */
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-    } fmt_ldis_indirect;
-    struct { /* e.g. ldis ($abase)[$index*S$scale], $dst */
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char out_dst;
-    } fmt_ldis_indirect_index;
-    struct { /* e.g. ldis $optdisp, $dst */
-      UINT f_optdisp;
-      SI * i_dst;
-      unsigned char out_dst;
-    } fmt_ldis_disp;
-    struct { /* e.g. ldis $optdisp($abase), $dst */
-      UINT f_optdisp;
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-    } fmt_ldis_indirect_disp;
-    struct { /* e.g. ldis $optdisp[$index*S$scale], $dst */
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_index;
-      unsigned char out_dst;
-    } fmt_ldis_index_disp;
-    struct { /* e.g. ldis $optdisp($abase)[$index*S$scale], $dst */
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char out_dst;
-    } fmt_ldis_indirect_index_disp;
-    struct { /* e.g. ldl $offset, $dst */
-      UINT f_srcdst;
-      UINT f_offset;
-      SI * i_dst;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-    } fmt_ldl_offset;
-    struct { /* e.g. ldl $offset($abase), $dst */
-      UINT f_srcdst;
-      UINT f_offset;
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-    } fmt_ldl_indirect_offset;
-    struct { /* e.g. ldl ($abase), $dst */
-      UINT f_srcdst;
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-    } fmt_ldl_indirect;
-    struct { /* e.g. ldl ($abase)[$index*S$scale], $dst */
-      UINT f_srcdst;
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-    } fmt_ldl_indirect_index;
-    struct { /* e.g. ldl $optdisp, $dst */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      SI * i_dst;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-    } fmt_ldl_disp;
-    struct { /* e.g. ldl $optdisp($abase), $dst */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-    } fmt_ldl_indirect_disp;
-    struct { /* e.g. ldl $optdisp[$index*S$scale], $dst */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_index;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-    } fmt_ldl_index_disp;
-    struct { /* e.g. ldl $optdisp($abase)[$index*S$scale], $dst */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-    } fmt_ldl_indirect_index_disp;
-    struct { /* e.g. ldt $offset, $dst */
-      UINT f_srcdst;
-      UINT f_offset;
-      SI * i_dst;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-      unsigned char out_h_gr_add__VM_index_of_dst_2;
-    } fmt_ldt_offset;
-    struct { /* e.g. ldt $offset($abase), $dst */
-      UINT f_srcdst;
-      UINT f_offset;
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-      unsigned char out_h_gr_add__VM_index_of_dst_2;
-    } fmt_ldt_indirect_offset;
-    struct { /* e.g. ldt ($abase), $dst */
-      UINT f_srcdst;
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-      unsigned char out_h_gr_add__VM_index_of_dst_2;
-    } fmt_ldt_indirect;
-    struct { /* e.g. ldt ($abase)[$index*S$scale], $dst */
-      UINT f_srcdst;
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-      unsigned char out_h_gr_add__VM_index_of_dst_2;
-    } fmt_ldt_indirect_index;
-    struct { /* e.g. ldt $optdisp, $dst */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      SI * i_dst;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-      unsigned char out_h_gr_add__VM_index_of_dst_2;
-    } fmt_ldt_disp;
-    struct { /* e.g. ldt $optdisp($abase), $dst */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-      unsigned char out_h_gr_add__VM_index_of_dst_2;
-    } fmt_ldt_indirect_disp;
-    struct { /* e.g. ldt $optdisp[$index*S$scale], $dst */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_index;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-      unsigned char out_h_gr_add__VM_index_of_dst_2;
-    } fmt_ldt_index_disp;
-    struct { /* e.g. ldt $optdisp($abase)[$index*S$scale], $dst */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-      unsigned char out_h_gr_add__VM_index_of_dst_2;
-    } fmt_ldt_indirect_index_disp;
-    struct { /* e.g. ldq $offset, $dst */
-      UINT f_srcdst;
-      UINT f_offset;
-      SI * i_dst;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-      unsigned char out_h_gr_add__VM_index_of_dst_2;
-      unsigned char out_h_gr_add__VM_index_of_dst_3;
-    } fmt_ldq_offset;
-    struct { /* e.g. ldq $offset($abase), $dst */
-      UINT f_srcdst;
-      UINT f_offset;
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-      unsigned char out_h_gr_add__VM_index_of_dst_2;
-      unsigned char out_h_gr_add__VM_index_of_dst_3;
-    } fmt_ldq_indirect_offset;
-    struct { /* e.g. ldq ($abase), $dst */
-      UINT f_srcdst;
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-      unsigned char out_h_gr_add__VM_index_of_dst_2;
-      unsigned char out_h_gr_add__VM_index_of_dst_3;
-    } fmt_ldq_indirect;
-    struct { /* e.g. ldq ($abase)[$index*S$scale], $dst */
-      UINT f_srcdst;
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-      unsigned char out_h_gr_add__VM_index_of_dst_2;
-      unsigned char out_h_gr_add__VM_index_of_dst_3;
-    } fmt_ldq_indirect_index;
-    struct { /* e.g. ldq $optdisp, $dst */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      SI * i_dst;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-      unsigned char out_h_gr_add__VM_index_of_dst_2;
-      unsigned char out_h_gr_add__VM_index_of_dst_3;
-    } fmt_ldq_disp;
-    struct { /* e.g. ldq $optdisp($abase), $dst */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      SI * i_abase;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-      unsigned char out_h_gr_add__VM_index_of_dst_2;
-      unsigned char out_h_gr_add__VM_index_of_dst_3;
-    } fmt_ldq_indirect_disp;
-    struct { /* e.g. ldq $optdisp[$index*S$scale], $dst */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_index;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-      unsigned char out_h_gr_add__VM_index_of_dst_2;
-      unsigned char out_h_gr_add__VM_index_of_dst_3;
-    } fmt_ldq_index_disp;
-    struct { /* e.g. ldq $optdisp($abase)[$index*S$scale], $dst */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_dst;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char out_dst;
-      unsigned char out_h_gr_add__VM_index_of_dst_1;
-      unsigned char out_h_gr_add__VM_index_of_dst_2;
-      unsigned char out_h_gr_add__VM_index_of_dst_3;
-    } fmt_ldq_indirect_index_disp;
-    struct { /* e.g. st $st_src, $offset */
-      UINT f_offset;
-      SI * i_st_src;
-      unsigned char in_st_src;
-    } fmt_st_offset;
-    struct { /* e.g. st $st_src, $offset($abase) */
-      UINT f_offset;
-      SI * i_abase;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_st_src;
-    } fmt_st_indirect_offset;
-    struct { /* e.g. st $st_src, ($abase) */
-      SI * i_abase;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_st_src;
-    } fmt_st_indirect;
-    struct { /* e.g. st $st_src, ($abase)[$index*S$scale] */
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char in_st_src;
-    } fmt_st_indirect_index;
-    struct { /* e.g. st $st_src, $optdisp */
-      UINT f_optdisp;
-      SI * i_st_src;
-      unsigned char in_st_src;
-    } fmt_st_disp;
-    struct { /* e.g. st $st_src, $optdisp($abase) */
-      UINT f_optdisp;
-      SI * i_abase;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_st_src;
-    } fmt_st_indirect_disp;
-    struct { /* e.g. st $st_src, $optdisp[$index*S$scale */
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_index;
-      SI * i_st_src;
-      unsigned char in_index;
-      unsigned char in_st_src;
-    } fmt_st_index_disp;
-    struct { /* e.g. st $st_src, $optdisp($abase)[$index*S$scale] */
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char in_st_src;
-    } fmt_st_indirect_index_disp;
-    struct { /* e.g. stob $st_src, $offset */
-      UINT f_offset;
-      SI * i_st_src;
-      unsigned char in_st_src;
-    } fmt_stob_offset;
-    struct { /* e.g. stob $st_src, $offset($abase) */
-      UINT f_offset;
-      SI * i_abase;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_st_src;
-    } fmt_stob_indirect_offset;
-    struct { /* e.g. stob $st_src, ($abase) */
-      SI * i_abase;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_st_src;
-    } fmt_stob_indirect;
-    struct { /* e.g. stob $st_src, ($abase)[$index*S$scale] */
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char in_st_src;
-    } fmt_stob_indirect_index;
-    struct { /* e.g. stob $st_src, $optdisp */
-      UINT f_optdisp;
-      SI * i_st_src;
-      unsigned char in_st_src;
-    } fmt_stob_disp;
-    struct { /* e.g. stob $st_src, $optdisp($abase) */
-      UINT f_optdisp;
-      SI * i_abase;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_st_src;
-    } fmt_stob_indirect_disp;
-    struct { /* e.g. stob $st_src, $optdisp[$index*S$scale */
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_index;
-      SI * i_st_src;
-      unsigned char in_index;
-      unsigned char in_st_src;
-    } fmt_stob_index_disp;
-    struct { /* e.g. stob $st_src, $optdisp($abase)[$index*S$scale] */
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char in_st_src;
-    } fmt_stob_indirect_index_disp;
-    struct { /* e.g. stos $st_src, $offset */
-      UINT f_offset;
-      SI * i_st_src;
-      unsigned char in_st_src;
-    } fmt_stos_offset;
-    struct { /* e.g. stos $st_src, $offset($abase) */
-      UINT f_offset;
-      SI * i_abase;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_st_src;
-    } fmt_stos_indirect_offset;
-    struct { /* e.g. stos $st_src, ($abase) */
-      SI * i_abase;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_st_src;
-    } fmt_stos_indirect;
-    struct { /* e.g. stos $st_src, ($abase)[$index*S$scale] */
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char in_st_src;
-    } fmt_stos_indirect_index;
-    struct { /* e.g. stos $st_src, $optdisp */
-      UINT f_optdisp;
-      SI * i_st_src;
-      unsigned char in_st_src;
-    } fmt_stos_disp;
-    struct { /* e.g. stos $st_src, $optdisp($abase) */
-      UINT f_optdisp;
-      SI * i_abase;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_st_src;
-    } fmt_stos_indirect_disp;
-    struct { /* e.g. stos $st_src, $optdisp[$index*S$scale */
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_index;
-      SI * i_st_src;
-      unsigned char in_index;
-      unsigned char in_st_src;
-    } fmt_stos_index_disp;
-    struct { /* e.g. stos $st_src, $optdisp($abase)[$index*S$scale] */
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_index;
-      unsigned char in_st_src;
-    } fmt_stos_indirect_index_disp;
-    struct { /* e.g. stl $st_src, $offset */
-      UINT f_srcdst;
-      UINT f_offset;
-      SI * i_st_src;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_st_src;
-    } fmt_stl_offset;
-    struct { /* e.g. stl $st_src, $offset($abase) */
-      UINT f_srcdst;
-      UINT f_offset;
-      SI * i_abase;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_st_src;
-    } fmt_stl_indirect_offset;
-    struct { /* e.g. stl $st_src, ($abase) */
-      UINT f_srcdst;
-      SI * i_abase;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_st_src;
-    } fmt_stl_indirect;
-    struct { /* e.g. stl $st_src, ($abase)[$index*S$scale] */
-      UINT f_srcdst;
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_index;
-      unsigned char in_st_src;
-    } fmt_stl_indirect_index;
-    struct { /* e.g. stl $st_src, $optdisp */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      SI * i_st_src;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_st_src;
-    } fmt_stl_disp;
-    struct { /* e.g. stl $st_src, $optdisp($abase) */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      SI * i_abase;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_st_src;
-    } fmt_stl_indirect_disp;
-    struct { /* e.g. stl $st_src, $optdisp[$index*S$scale */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_index;
-      SI * i_st_src;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_index;
-      unsigned char in_st_src;
-    } fmt_stl_index_disp;
-    struct { /* e.g. stl $st_src, $optdisp($abase)[$index*S$scale] */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_index;
-      unsigned char in_st_src;
-    } fmt_stl_indirect_index_disp;
-    struct { /* e.g. stt $st_src, $offset */
-      UINT f_srcdst;
-      UINT f_offset;
-      SI * i_st_src;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_h_gr_add__VM_index_of_st_src_2;
-      unsigned char in_st_src;
-    } fmt_stt_offset;
-    struct { /* e.g. stt $st_src, $offset($abase) */
-      UINT f_srcdst;
-      UINT f_offset;
-      SI * i_abase;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_h_gr_add__VM_index_of_st_src_2;
-      unsigned char in_st_src;
-    } fmt_stt_indirect_offset;
-    struct { /* e.g. stt $st_src, ($abase) */
-      UINT f_srcdst;
-      SI * i_abase;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_h_gr_add__VM_index_of_st_src_2;
-      unsigned char in_st_src;
-    } fmt_stt_indirect;
-    struct { /* e.g. stt $st_src, ($abase)[$index*S$scale] */
-      UINT f_srcdst;
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_h_gr_add__VM_index_of_st_src_2;
-      unsigned char in_index;
-      unsigned char in_st_src;
-    } fmt_stt_indirect_index;
-    struct { /* e.g. stt $st_src, $optdisp */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      SI * i_st_src;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_h_gr_add__VM_index_of_st_src_2;
-      unsigned char in_st_src;
-    } fmt_stt_disp;
-    struct { /* e.g. stt $st_src, $optdisp($abase) */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      SI * i_abase;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_h_gr_add__VM_index_of_st_src_2;
-      unsigned char in_st_src;
-    } fmt_stt_indirect_disp;
-    struct { /* e.g. stt $st_src, $optdisp[$index*S$scale */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_index;
-      SI * i_st_src;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_h_gr_add__VM_index_of_st_src_2;
-      unsigned char in_index;
-      unsigned char in_st_src;
-    } fmt_stt_index_disp;
-    struct { /* e.g. stt $st_src, $optdisp($abase)[$index*S$scale] */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_h_gr_add__VM_index_of_st_src_2;
-      unsigned char in_index;
-      unsigned char in_st_src;
-    } fmt_stt_indirect_index_disp;
-    struct { /* e.g. stq $st_src, $offset */
-      UINT f_srcdst;
-      UINT f_offset;
-      SI * i_st_src;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_h_gr_add__VM_index_of_st_src_2;
-      unsigned char in_h_gr_add__VM_index_of_st_src_3;
-      unsigned char in_st_src;
-    } fmt_stq_offset;
-    struct { /* e.g. stq $st_src, $offset($abase) */
-      UINT f_srcdst;
-      UINT f_offset;
-      SI * i_abase;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_h_gr_add__VM_index_of_st_src_2;
-      unsigned char in_h_gr_add__VM_index_of_st_src_3;
-      unsigned char in_st_src;
-    } fmt_stq_indirect_offset;
-    struct { /* e.g. stq $st_src, ($abase) */
-      UINT f_srcdst;
-      SI * i_abase;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_h_gr_add__VM_index_of_st_src_2;
-      unsigned char in_h_gr_add__VM_index_of_st_src_3;
-      unsigned char in_st_src;
-    } fmt_stq_indirect;
-    struct { /* e.g. stq $st_src, ($abase)[$index*S$scale] */
-      UINT f_srcdst;
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_h_gr_add__VM_index_of_st_src_2;
-      unsigned char in_h_gr_add__VM_index_of_st_src_3;
-      unsigned char in_index;
-      unsigned char in_st_src;
-    } fmt_stq_indirect_index;
-    struct { /* e.g. stq $st_src, $optdisp */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      SI * i_st_src;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_h_gr_add__VM_index_of_st_src_2;
-      unsigned char in_h_gr_add__VM_index_of_st_src_3;
-      unsigned char in_st_src;
-    } fmt_stq_disp;
-    struct { /* e.g. stq $st_src, $optdisp($abase) */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      SI * i_abase;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_h_gr_add__VM_index_of_st_src_2;
-      unsigned char in_h_gr_add__VM_index_of_st_src_3;
-      unsigned char in_st_src;
-    } fmt_stq_indirect_disp;
-    struct { /* e.g. stq $st_src, $optdisp[$index*S$scale */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_index;
-      SI * i_st_src;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_h_gr_add__VM_index_of_st_src_2;
-      unsigned char in_h_gr_add__VM_index_of_st_src_3;
-      unsigned char in_index;
-      unsigned char in_st_src;
-    } fmt_stq_index_disp;
-    struct { /* e.g. stq $st_src, $optdisp($abase)[$index*S$scale] */
-      UINT f_srcdst;
-      UINT f_optdisp;
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      SI * i_st_src;
-      unsigned char in_abase;
-      unsigned char in_h_gr_add__VM_index_of_st_src_1;
-      unsigned char in_h_gr_add__VM_index_of_st_src_2;
-      unsigned char in_h_gr_add__VM_index_of_st_src_3;
-      unsigned char in_index;
-      unsigned char in_st_src;
-    } fmt_stq_indirect_index_disp;
-    struct { /* e.g. cmpi $src1, $src2 */
-      SI * i_src1;
-      SI * i_src2;
-      unsigned char in_src1;
-      unsigned char in_src2;
-    } fmt_cmpi;
-    struct { /* e.g. cmpi $lit1, $src2 */
-      UINT f_src1;
-      SI * i_src2;
-      unsigned char in_src2;
-    } fmt_cmpi1;
-    struct { /* e.g. cmpi $src1, $lit2 */
-      UINT f_src2;
-      SI * i_src1;
-      unsigned char in_src1;
-    } fmt_cmpi2;
-    struct { /* e.g. cmpi $lit1, $lit2 */
-      UINT f_src1;
-      UINT f_src2;
-    } fmt_cmpi3;
-    struct { /* e.g. cmpo $src1, $src2 */
-      SI * i_src1;
-      SI * i_src2;
-      unsigned char in_src1;
-      unsigned char in_src2;
-    } fmt_cmpo;
-    struct { /* e.g. cmpo $lit1, $src2 */
-      UINT f_src1;
-      SI * i_src2;
-      unsigned char in_src2;
-    } fmt_cmpo1;
-    struct { /* e.g. cmpo $src1, $lit2 */
-      UINT f_src2;
-      SI * i_src1;
-      unsigned char in_src1;
-    } fmt_cmpo2;
-    struct { /* e.g. cmpo $lit1, $lit2 */
-      UINT f_src1;
-      UINT f_src2;
-    } fmt_cmpo3;
-    struct { /* e.g. testno $br_src1 */
-      SI * i_br_src1;
-      unsigned char out_br_src1;
-    } fmt_testno_reg;
-    struct { /* e.g. flushreg */
-      int empty;
-    } fmt_flushreg;
-  /* cti insns, kept separately so addr_cache is in fixed place */
-  struct {
-    union {
-    struct { /* e.g. cmpobe $br_src1, $br_src2, $br_disp */
-      IADDR i_br_disp;
-      SI * i_br_src1;
-      SI * i_br_src2;
-      unsigned char in_br_src1;
-      unsigned char in_br_src2;
-    } fmt_cmpobe_reg;
-    struct { /* e.g. cmpobe $br_lit1, $br_src2, $br_disp */
-      UINT f_br_src1;
-      IADDR i_br_disp;
-      SI * i_br_src2;
-      unsigned char in_br_src2;
-    } fmt_cmpobe_lit;
-    struct { /* e.g. cmpobl $br_src1, $br_src2, $br_disp */
-      IADDR i_br_disp;
-      SI * i_br_src1;
-      SI * i_br_src2;
-      unsigned char in_br_src1;
-      unsigned char in_br_src2;
-    } fmt_cmpobl_reg;
-    struct { /* e.g. cmpobl $br_lit1, $br_src2, $br_disp */
-      UINT f_br_src1;
-      IADDR i_br_disp;
-      SI * i_br_src2;
-      unsigned char in_br_src2;
-    } fmt_cmpobl_lit;
-    struct { /* e.g. bbc $br_src1, $br_src2, $br_disp */
-      IADDR i_br_disp;
-      SI * i_br_src1;
-      SI * i_br_src2;
-      unsigned char in_br_src1;
-      unsigned char in_br_src2;
-    } fmt_bbc_reg;
-    struct { /* e.g. bbc $br_lit1, $br_src2, $br_disp */
-      UINT f_br_src1;
-      IADDR i_br_disp;
-      SI * i_br_src2;
-      unsigned char in_br_src2;
-    } fmt_bbc_lit;
-    struct { /* e.g. bno $ctrl_disp */
-      IADDR i_ctrl_disp;
-    } fmt_bno;
-    struct { /* e.g. b $ctrl_disp */
-      IADDR i_ctrl_disp;
-    } fmt_b;
-    struct { /* e.g. bx $offset($abase) */
-      UINT f_offset;
-      SI * i_abase;
-      unsigned char in_abase;
-    } fmt_bx_indirect_offset;
-    struct { /* e.g. bx ($abase) */
-      SI * i_abase;
-      unsigned char in_abase;
-    } fmt_bx_indirect;
-    struct { /* e.g. bx ($abase)[$index*S$scale] */
-      UINT f_scale;
-      SI * i_abase;
-      SI * i_index;
-      unsigned char in_abase;
-      unsigned char in_index;
-    } fmt_bx_indirect_index;
-    struct { /* e.g. bx $optdisp */
-      UINT f_optdisp;
-    } fmt_bx_disp;
-    struct { /* e.g. bx $optdisp($abase) */
-      UINT f_optdisp;
-      SI * i_abase;
-      unsigned char in_abase;
-    } fmt_bx_indirect_disp;
-    struct { /* e.g. callx $optdisp */
-      UINT f_optdisp;
-      unsigned char in_h_gr_0;
-      unsigned char in_h_gr_1;
-      unsigned char in_h_gr_10;
-      unsigned char in_h_gr_11;
-      unsigned char in_h_gr_12;
-      unsigned char in_h_gr_13;
-      unsigned char in_h_gr_14;
-      unsigned char in_h_gr_15;
-      unsigned char in_h_gr_2;
-      unsigned char in_h_gr_3;
-      unsigned char in_h_gr_31;
-      unsigned char in_h_gr_4;
-      unsigned char in_h_gr_5;
-      unsigned char in_h_gr_6;
-      unsigned char in_h_gr_7;
-      unsigned char in_h_gr_8;
-      unsigned char in_h_gr_9;
-      unsigned char out_h_gr_0;
-      unsigned char out_h_gr_1;
-      unsigned char out_h_gr_10;
-      unsigned char out_h_gr_11;
-      unsigned char out_h_gr_12;
-      unsigned char out_h_gr_13;
-      unsigned char out_h_gr_14;
-      unsigned char out_h_gr_15;
-      unsigned char out_h_gr_2;
-      unsigned char out_h_gr_3;
-      unsigned char out_h_gr_31;
-      unsigned char out_h_gr_4;
-      unsigned char out_h_gr_5;
-      unsigned char out_h_gr_6;
-      unsigned char out_h_gr_7;
-      unsigned char out_h_gr_8;
-      unsigned char out_h_gr_9;
-    } fmt_callx_disp;
-    struct { /* e.g. callx ($abase) */
-      SI * i_abase;
-      unsigned char in_abase;
-      unsigned char in_h_gr_0;
-      unsigned char in_h_gr_1;
-      unsigned char in_h_gr_10;
-      unsigned char in_h_gr_11;
-      unsigned char in_h_gr_12;
-      unsigned char in_h_gr_13;
-      unsigned char in_h_gr_14;
-      unsigned char in_h_gr_15;
-      unsigned char in_h_gr_2;
-      unsigned char in_h_gr_3;
-      unsigned char in_h_gr_31;
-      unsigned char in_h_gr_4;
-      unsigned char in_h_gr_5;
-      unsigned char in_h_gr_6;
-      unsigned char in_h_gr_7;
-      unsigned char in_h_gr_8;
-      unsigned char in_h_gr_9;
-      unsigned char out_h_gr_0;
-      unsigned char out_h_gr_1;
-      unsigned char out_h_gr_10;
-      unsigned char out_h_gr_11;
-      unsigned char out_h_gr_12;
-      unsigned char out_h_gr_13;
-      unsigned char out_h_gr_14;
-      unsigned char out_h_gr_15;
-      unsigned char out_h_gr_2;
-      unsigned char out_h_gr_3;
-      unsigned char out_h_gr_31;
-      unsigned char out_h_gr_4;
-      unsigned char out_h_gr_5;
-      unsigned char out_h_gr_6;
-      unsigned char out_h_gr_7;
-      unsigned char out_h_gr_8;
-      unsigned char out_h_gr_9;
-    } fmt_callx_indirect;
-    struct { /* e.g. callx $offset($abase) */
-      UINT f_offset;
-      SI * i_abase;
-      unsigned char in_abase;
-      unsigned char in_h_gr_0;
-      unsigned char in_h_gr_1;
-      unsigned char in_h_gr_10;
-      unsigned char in_h_gr_11;
-      unsigned char in_h_gr_12;
-      unsigned char in_h_gr_13;
-      unsigned char in_h_gr_14;
-      unsigned char in_h_gr_15;
-      unsigned char in_h_gr_2;
-      unsigned char in_h_gr_3;
-      unsigned char in_h_gr_31;
-      unsigned char in_h_gr_4;
-      unsigned char in_h_gr_5;
-      unsigned char in_h_gr_6;
-      unsigned char in_h_gr_7;
-      unsigned char in_h_gr_8;
-      unsigned char in_h_gr_9;
-      unsigned char out_h_gr_0;
-      unsigned char out_h_gr_1;
-      unsigned char out_h_gr_10;
-      unsigned char out_h_gr_11;
-      unsigned char out_h_gr_12;
-      unsigned char out_h_gr_13;
-      unsigned char out_h_gr_14;
-      unsigned char out_h_gr_15;
-      unsigned char out_h_gr_2;
-      unsigned char out_h_gr_3;
-      unsigned char out_h_gr_31;
-      unsigned char out_h_gr_4;
-      unsigned char out_h_gr_5;
-      unsigned char out_h_gr_6;
-      unsigned char out_h_gr_7;
-      unsigned char out_h_gr_8;
-      unsigned char out_h_gr_9;
-    } fmt_callx_indirect_offset;
-    struct { /* e.g. ret */
-      int empty;
-      unsigned char in_h_gr_0;
-      unsigned char in_h_gr_2;
-      unsigned char in_h_gr_31;
-      unsigned char out_h_gr_0;
-      unsigned char out_h_gr_1;
-      unsigned char out_h_gr_10;
-      unsigned char out_h_gr_11;
-      unsigned char out_h_gr_12;
-      unsigned char out_h_gr_13;
-      unsigned char out_h_gr_14;
-      unsigned char out_h_gr_15;
-      unsigned char out_h_gr_2;
-      unsigned char out_h_gr_3;
-      unsigned char out_h_gr_31;
-      unsigned char out_h_gr_4;
-      unsigned char out_h_gr_5;
-      unsigned char out_h_gr_6;
-      unsigned char out_h_gr_7;
-      unsigned char out_h_gr_8;
-      unsigned char out_h_gr_9;
-    } fmt_ret;
-    struct { /* e.g. calls $src1 */
-      SI * i_src1;
-      unsigned char in_src1;
-    } fmt_calls;
-    struct { /* e.g. fmark */
-      int empty;
-    } fmt_fmark;
-    } fields;
-#if WITH_SCACHE_PBB
-    SEM_PC addr_cache;
-#endif
-  } cti;
+  struct { /* no operands */
+    int empty;
+  } fmt_empty;
+  struct { /*  */
+    IADDR i_ctrl_disp;
+  } sfmt_bno;
+  struct { /*  */
+    SI* i_br_src1;
+    unsigned char out_br_src1;
+  } sfmt_testno_reg;
+  struct { /*  */
+    IADDR i_br_disp;
+    SI* i_br_src2;
+    UINT f_br_src1;
+    unsigned char in_br_src2;
+  } sfmt_cmpobe_lit;
+  struct { /*  */
+    IADDR i_br_disp;
+    SI* i_br_src1;
+    SI* i_br_src2;
+    unsigned char in_br_src1;
+    unsigned char in_br_src2;
+  } sfmt_cmpobe_reg;
+  struct { /*  */
+    SI* i_dst;
+    UINT f_src1;
+    UINT f_src2;
+    UINT f_srcdst;
+    unsigned char out_dst;
+    unsigned char out_h_gr_add__VM_index_of_dst_1;
+  } sfmt_emul3;
+  struct { /*  */
+    SI* i_dst;
+    SI* i_src1;
+    UINT f_src2;
+    UINT f_srcdst;
+    unsigned char in_src1;
+    unsigned char out_dst;
+    unsigned char out_h_gr_add__VM_index_of_dst_1;
+  } sfmt_emul2;
+  struct { /*  */
+    SI* i_dst;
+    SI* i_src2;
+    UINT f_src1;
+    UINT f_srcdst;
+    unsigned char in_src2;
+    unsigned char out_dst;
+    unsigned char out_h_gr_add__VM_index_of_dst_1;
+  } sfmt_emul1;
+  struct { /*  */
+    SI* i_dst;
+    SI* i_src1;
+    SI* i_src2;
+    UINT f_srcdst;
+    unsigned char in_src1;
+    unsigned char in_src2;
+    unsigned char out_dst;
+    unsigned char out_h_gr_add__VM_index_of_dst_1;
+  } sfmt_emul;
+  struct { /*  */
+    SI* i_abase;
+    SI* i_st_src;
+    UINT f_offset;
+    UINT f_srcdst;
+    unsigned char in_abase;
+    unsigned char in_h_gr_add__VM_index_of_st_src_1;
+    unsigned char in_h_gr_add__VM_index_of_st_src_2;
+    unsigned char in_h_gr_add__VM_index_of_st_src_3;
+    unsigned char in_st_src;
+  } sfmt_stq_indirect_offset;
+  struct { /*  */
+    SI* i_abase;
+    SI* i_dst;
+    UINT f_offset;
+    UINT f_srcdst;
+    unsigned char in_abase;
+    unsigned char out_dst;
+    unsigned char out_h_gr_add__VM_index_of_dst_1;
+    unsigned char out_h_gr_add__VM_index_of_dst_2;
+    unsigned char out_h_gr_add__VM_index_of_dst_3;
+  } sfmt_ldq_indirect_offset;
+  struct { /*  */
+    SI* i_abase;
+    SI* i_index;
+    SI* i_st_src;
+    UINT f_optdisp;
+    UINT f_scale;
+    UINT f_srcdst;
+    unsigned char in_abase;
+    unsigned char in_h_gr_add__VM_index_of_st_src_1;
+    unsigned char in_h_gr_add__VM_index_of_st_src_2;
+    unsigned char in_h_gr_add__VM_index_of_st_src_3;
+    unsigned char in_index;
+    unsigned char in_st_src;
+  } sfmt_stq_indirect_index_disp;
+  struct { /*  */
+    SI* i_abase;
+    SI* i_dst;
+    SI* i_index;
+    UINT f_optdisp;
+    UINT f_scale;
+    UINT f_srcdst;
+    unsigned char in_abase;
+    unsigned char in_index;
+    unsigned char out_dst;
+    unsigned char out_h_gr_add__VM_index_of_dst_1;
+    unsigned char out_h_gr_add__VM_index_of_dst_2;
+    unsigned char out_h_gr_add__VM_index_of_dst_3;
+  } sfmt_ldq_indirect_index_disp;
+  struct { /*  */
+    SI* i_dst;
+    SI* i_src1;
+    UINT f_src1;
+    UINT f_srcdst;
+    unsigned char in_h_gr_add__VM_index_of_src1_1;
+    unsigned char in_h_gr_add__VM_index_of_src1_2;
+    unsigned char in_h_gr_add__VM_index_of_src1_3;
+    unsigned char in_src1;
+    unsigned char out_dst;
+    unsigned char out_h_gr_add__VM_index_of_dst_1;
+    unsigned char out_h_gr_add__VM_index_of_dst_2;
+    unsigned char out_h_gr_add__VM_index_of_dst_3;
+  } sfmt_movq;
+  struct { /*  */
+    UINT f_optdisp;
+    unsigned char in_h_gr_0;
+    unsigned char in_h_gr_1;
+    unsigned char in_h_gr_10;
+    unsigned char in_h_gr_11;
+    unsigned char in_h_gr_12;
+    unsigned char in_h_gr_13;
+    unsigned char in_h_gr_14;
+    unsigned char in_h_gr_15;
+    unsigned char in_h_gr_2;
+    unsigned char in_h_gr_3;
+    unsigned char in_h_gr_31;
+    unsigned char in_h_gr_4;
+    unsigned char in_h_gr_5;
+    unsigned char in_h_gr_6;
+    unsigned char in_h_gr_7;
+    unsigned char in_h_gr_8;
+    unsigned char in_h_gr_9;
+    unsigned char out_h_gr_0;
+    unsigned char out_h_gr_1;
+    unsigned char out_h_gr_10;
+    unsigned char out_h_gr_11;
+    unsigned char out_h_gr_12;
+    unsigned char out_h_gr_13;
+    unsigned char out_h_gr_14;
+    unsigned char out_h_gr_15;
+    unsigned char out_h_gr_2;
+    unsigned char out_h_gr_3;
+    unsigned char out_h_gr_31;
+    unsigned char out_h_gr_4;
+    unsigned char out_h_gr_5;
+    unsigned char out_h_gr_6;
+    unsigned char out_h_gr_7;
+    unsigned char out_h_gr_8;
+    unsigned char out_h_gr_9;
+  } sfmt_callx_disp;
+  struct { /*  */
+    SI* i_abase;
+    UINT f_offset;
+    unsigned char in_abase;
+    unsigned char in_h_gr_0;
+    unsigned char in_h_gr_1;
+    unsigned char in_h_gr_10;
+    unsigned char in_h_gr_11;
+    unsigned char in_h_gr_12;
+    unsigned char in_h_gr_13;
+    unsigned char in_h_gr_14;
+    unsigned char in_h_gr_15;
+    unsigned char in_h_gr_2;
+    unsigned char in_h_gr_3;
+    unsigned char in_h_gr_31;
+    unsigned char in_h_gr_4;
+    unsigned char in_h_gr_5;
+    unsigned char in_h_gr_6;
+    unsigned char in_h_gr_7;
+    unsigned char in_h_gr_8;
+    unsigned char in_h_gr_9;
+    unsigned char out_h_gr_0;
+    unsigned char out_h_gr_1;
+    unsigned char out_h_gr_10;
+    unsigned char out_h_gr_11;
+    unsigned char out_h_gr_12;
+    unsigned char out_h_gr_13;
+    unsigned char out_h_gr_14;
+    unsigned char out_h_gr_15;
+    unsigned char out_h_gr_2;
+    unsigned char out_h_gr_3;
+    unsigned char out_h_gr_31;
+    unsigned char out_h_gr_4;
+    unsigned char out_h_gr_5;
+    unsigned char out_h_gr_6;
+    unsigned char out_h_gr_7;
+    unsigned char out_h_gr_8;
+    unsigned char out_h_gr_9;
+  } sfmt_callx_indirect_offset;
 #if WITH_SCACHE_PBB
   /* Writeback handler.  */
   struct {
@@ -1572,6 +295,7 @@ union sem_fields {
     int insn_count;
     /* Next pbb to execute.  */
     SCACHE *next;
+    SCACHE *branch_target;
   } chain;
 #endif
 };
@@ -1583,6 +307,9 @@ struct argbuf {
   const IDESC *idesc;
   char trace_p;
   char profile_p;
+  /* ??? Temporary hack for skip insns.  */
+  char skip_count;
+  char unused;
   /* cpu specific data follows */
   union sem semantic;
   int written;
@@ -1603,13 +330,11 @@ struct scache {
    These define and assign the local vars that contain the insn's fields.  */
 
 #define EXTRACT_IFMT_EMPTY_VARS \
-  /* Instruction fields.  */ \
   unsigned int length;
 #define EXTRACT_IFMT_EMPTY_CODE \
   length = 0; \
 
 #define EXTRACT_IFMT_MULO_VARS \
-  /* Instruction fields.  */ \
   UINT f_opcode; \
   UINT f_srcdst; \
   UINT f_src2; \
@@ -1622,18 +347,17 @@ struct scache {
   unsigned int length;
 #define EXTRACT_IFMT_MULO_CODE \
   length = 4; \
-  f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
-  f_srcdst = EXTRACT_UINT (insn, 32, 8, 5); \
-  f_src2 = EXTRACT_UINT (insn, 32, 13, 5); \
-  f_m3 = EXTRACT_UINT (insn, 32, 18, 1); \
-  f_m2 = EXTRACT_UINT (insn, 32, 19, 1); \
-  f_m1 = EXTRACT_UINT (insn, 32, 20, 1); \
-  f_opcode2 = EXTRACT_UINT (insn, 32, 21, 4); \
-  f_zero = EXTRACT_UINT (insn, 32, 25, 2); \
-  f_src1 = EXTRACT_UINT (insn, 32, 27, 5); \
+  f_opcode = EXTRACT_MSB0_UINT (insn, 32, 0, 8); \
+  f_srcdst = EXTRACT_MSB0_UINT (insn, 32, 8, 5); \
+  f_src2 = EXTRACT_MSB0_UINT (insn, 32, 13, 5); \
+  f_m3 = EXTRACT_MSB0_UINT (insn, 32, 18, 1); \
+  f_m2 = EXTRACT_MSB0_UINT (insn, 32, 19, 1); \
+  f_m1 = EXTRACT_MSB0_UINT (insn, 32, 20, 1); \
+  f_opcode2 = EXTRACT_MSB0_UINT (insn, 32, 21, 4); \
+  f_zero = EXTRACT_MSB0_UINT (insn, 32, 25, 2); \
+  f_src1 = EXTRACT_MSB0_UINT (insn, 32, 27, 5); \
 
 #define EXTRACT_IFMT_MULO1_VARS \
-  /* Instruction fields.  */ \
   UINT f_opcode; \
   UINT f_srcdst; \
   UINT f_src2; \
@@ -1646,18 +370,17 @@ struct scache {
   unsigned int length;
 #define EXTRACT_IFMT_MULO1_CODE \
   length = 4; \
-  f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
-  f_srcdst = EXTRACT_UINT (insn, 32, 8, 5); \
-  f_src2 = EXTRACT_UINT (insn, 32, 13, 5); \
-  f_m3 = EXTRACT_UINT (insn, 32, 18, 1); \
-  f_m2 = EXTRACT_UINT (insn, 32, 19, 1); \
-  f_m1 = EXTRACT_UINT (insn, 32, 20, 1); \
-  f_opcode2 = EXTRACT_UINT (insn, 32, 21, 4); \
-  f_zero = EXTRACT_UINT (insn, 32, 25, 2); \
-  f_src1 = EXTRACT_UINT (insn, 32, 27, 5); \
+  f_opcode = EXTRACT_MSB0_UINT (insn, 32, 0, 8); \
+  f_srcdst = EXTRACT_MSB0_UINT (insn, 32, 8, 5); \
+  f_src2 = EXTRACT_MSB0_UINT (insn, 32, 13, 5); \
+  f_m3 = EXTRACT_MSB0_UINT (insn, 32, 18, 1); \
+  f_m2 = EXTRACT_MSB0_UINT (insn, 32, 19, 1); \
+  f_m1 = EXTRACT_MSB0_UINT (insn, 32, 20, 1); \
+  f_opcode2 = EXTRACT_MSB0_UINT (insn, 32, 21, 4); \
+  f_zero = EXTRACT_MSB0_UINT (insn, 32, 25, 2); \
+  f_src1 = EXTRACT_MSB0_UINT (insn, 32, 27, 5); \
 
 #define EXTRACT_IFMT_MULO2_VARS \
-  /* Instruction fields.  */ \
   UINT f_opcode; \
   UINT f_srcdst; \
   UINT f_src2; \
@@ -1670,18 +393,17 @@ struct scache {
   unsigned int length;
 #define EXTRACT_IFMT_MULO2_CODE \
   length = 4; \
-  f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
-  f_srcdst = EXTRACT_UINT (insn, 32, 8, 5); \
-  f_src2 = EXTRACT_UINT (insn, 32, 13, 5); \
-  f_m3 = EXTRACT_UINT (insn, 32, 18, 1); \
-  f_m2 = EXTRACT_UINT (insn, 32, 19, 1); \
-  f_m1 = EXTRACT_UINT (insn, 32, 20, 1); \
-  f_opcode2 = EXTRACT_UINT (insn, 32, 21, 4); \
-  f_zero = EXTRACT_UINT (insn, 32, 25, 2); \
-  f_src1 = EXTRACT_UINT (insn, 32, 27, 5); \
+  f_opcode = EXTRACT_MSB0_UINT (insn, 32, 0, 8); \
+  f_srcdst = EXTRACT_MSB0_UINT (insn, 32, 8, 5); \
+  f_src2 = EXTRACT_MSB0_UINT (insn, 32, 13, 5); \
+  f_m3 = EXTRACT_MSB0_UINT (insn, 32, 18, 1); \
+  f_m2 = EXTRACT_MSB0_UINT (insn, 32, 19, 1); \
+  f_m1 = EXTRACT_MSB0_UINT (insn, 32, 20, 1); \
+  f_opcode2 = EXTRACT_MSB0_UINT (insn, 32, 21, 4); \
+  f_zero = EXTRACT_MSB0_UINT (insn, 32, 25, 2); \
+  f_src1 = EXTRACT_MSB0_UINT (insn, 32, 27, 5); \
 
 #define EXTRACT_IFMT_MULO3_VARS \
-  /* Instruction fields.  */ \
   UINT f_opcode; \
   UINT f_srcdst; \
   UINT f_src2; \
@@ -1694,18 +416,17 @@ struct scache {
   unsigned int length;
 #define EXTRACT_IFMT_MULO3_CODE \
   length = 4; \
-  f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
-  f_srcdst = EXTRACT_UINT (insn, 32, 8, 5); \
-  f_src2 = EXTRACT_UINT (insn, 32, 13, 5); \
-  f_m3 = EXTRACT_UINT (insn, 32, 18, 1); \
-  f_m2 = EXTRACT_UINT (insn, 32, 19, 1); \
-  f_m1 = EXTRACT_UINT (insn, 32, 20, 1); \
-  f_opcode2 = EXTRACT_UINT (insn, 32, 21, 4); \
-  f_zero = EXTRACT_UINT (insn, 32, 25, 2); \
-  f_src1 = EXTRACT_UINT (insn, 32, 27, 5); \
+  f_opcode = EXTRACT_MSB0_UINT (insn, 32, 0, 8); \
+  f_srcdst = EXTRACT_MSB0_UINT (insn, 32, 8, 5); \
+  f_src2 = EXTRACT_MSB0_UINT (insn, 32, 13, 5); \
+  f_m3 = EXTRACT_MSB0_UINT (insn, 32, 18, 1); \
+  f_m2 = EXTRACT_MSB0_UINT (insn, 32, 19, 1); \
+  f_m1 = EXTRACT_MSB0_UINT (insn, 32, 20, 1); \
+  f_opcode2 = EXTRACT_MSB0_UINT (insn, 32, 21, 4); \
+  f_zero = EXTRACT_MSB0_UINT (insn, 32, 25, 2); \
+  f_src1 = EXTRACT_MSB0_UINT (insn, 32, 27, 5); \
 
 #define EXTRACT_IFMT_LDA_OFFSET_VARS \
-  /* Instruction fields.  */ \
   UINT f_opcode; \
   UINT f_srcdst; \
   UINT f_abase; \
@@ -1715,15 +436,14 @@ struct scache {
   unsigned int length;
 #define EXTRACT_IFMT_LDA_OFFSET_CODE \
   length = 4; \
-  f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
-  f_srcdst = EXTRACT_UINT (insn, 32, 8, 5); \
-  f_abase = EXTRACT_UINT (insn, 32, 13, 5); \
-  f_modea = EXTRACT_UINT (insn, 32, 18, 1); \
-  f_zeroa = EXTRACT_UINT (insn, 32, 19, 1); \
-  f_offset = EXTRACT_UINT (insn, 32, 20, 12); \
+  f_opcode = EXTRACT_MSB0_UINT (insn, 32, 0, 8); \
+  f_srcdst = EXTRACT_MSB0_UINT (insn, 32, 8, 5); \
+  f_abase = EXTRACT_MSB0_UINT (insn, 32, 13, 5); \
+  f_modea = EXTRACT_MSB0_UINT (insn, 32, 18, 1); \
+  f_zeroa = EXTRACT_MSB0_UINT (insn, 32, 19, 1); \
+  f_offset = EXTRACT_MSB0_UINT (insn, 32, 20, 12); \
 
 #define EXTRACT_IFMT_LDA_INDIRECT_VARS \
-  /* Instruction fields.  */ \
   UINT f_opcode; \
   UINT f_srcdst; \
   UINT f_abase; \
@@ -1734,16 +454,15 @@ struct scache {
   unsigned int length;
 #define EXTRACT_IFMT_LDA_INDIRECT_CODE \
   length = 4; \
-  f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
-  f_srcdst = EXTRACT_UINT (insn, 32, 8, 5); \
-  f_abase = EXTRACT_UINT (insn, 32, 13, 5); \
-  f_modeb = EXTRACT_UINT (insn, 32, 18, 4); \
-  f_scale = EXTRACT_UINT (insn, 32, 22, 3); \
-  f_zerob = EXTRACT_UINT (insn, 32, 25, 2); \
-  f_index = EXTRACT_UINT (insn, 32, 27, 5); \
+  f_opcode = EXTRACT_MSB0_UINT (insn, 32, 0, 8); \
+  f_srcdst = EXTRACT_MSB0_UINT (insn, 32, 8, 5); \
+  f_abase = EXTRACT_MSB0_UINT (insn, 32, 13, 5); \
+  f_modeb = EXTRACT_MSB0_UINT (insn, 32, 18, 4); \
+  f_scale = EXTRACT_MSB0_UINT (insn, 32, 22, 3); \
+  f_zerob = EXTRACT_MSB0_UINT (insn, 32, 25, 2); \
+  f_index = EXTRACT_MSB0_UINT (insn, 32, 27, 5); \
 
 #define EXTRACT_IFMT_LDA_DISP_VARS \
-  /* Instruction fields.  */ \
   UINT f_opcode; \
   UINT f_optdisp; \
   UINT f_srcdst; \
@@ -1758,17 +477,16 @@ struct scache {
 #define EXTRACT_IFMT_LDA_DISP_CODE \
   length = 8; \
   word_1 = GETIMEMUSI (current_cpu, pc + 4); \
-  f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
-  f_optdisp = (0|(EXTRACT_UINT (word_1, 32, 0, 32) << 0)); \
-  f_srcdst = EXTRACT_UINT (insn, 32, 8, 5); \
-  f_abase = EXTRACT_UINT (insn, 32, 13, 5); \
-  f_modeb = EXTRACT_UINT (insn, 32, 18, 4); \
-  f_scale = EXTRACT_UINT (insn, 32, 22, 3); \
-  f_zerob = EXTRACT_UINT (insn, 32, 25, 2); \
-  f_index = EXTRACT_UINT (insn, 32, 27, 5); \
+  f_opcode = EXTRACT_MSB0_UINT (insn, 32, 0, 8); \
+  f_optdisp = (0|(EXTRACT_MSB0_UINT (word_1, 32, 0, 32) << 0)); \
+  f_srcdst = EXTRACT_MSB0_UINT (insn, 32, 8, 5); \
+  f_abase = EXTRACT_MSB0_UINT (insn, 32, 13, 5); \
+  f_modeb = EXTRACT_MSB0_UINT (insn, 32, 18, 4); \
+  f_scale = EXTRACT_MSB0_UINT (insn, 32, 22, 3); \
+  f_zerob = EXTRACT_MSB0_UINT (insn, 32, 25, 2); \
+  f_index = EXTRACT_MSB0_UINT (insn, 32, 27, 5); \
 
 #define EXTRACT_IFMT_ST_OFFSET_VARS \
-  /* Instruction fields.  */ \
   UINT f_opcode; \
   UINT f_srcdst; \
   UINT f_abase; \
@@ -1778,15 +496,14 @@ struct scache {
   unsigned int length;
 #define EXTRACT_IFMT_ST_OFFSET_CODE \
   length = 4; \
-  f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
-  f_srcdst = EXTRACT_UINT (insn, 32, 8, 5); \
-  f_abase = EXTRACT_UINT (insn, 32, 13, 5); \
-  f_modea = EXTRACT_UINT (insn, 32, 18, 1); \
-  f_zeroa = EXTRACT_UINT (insn, 32, 19, 1); \
-  f_offset = EXTRACT_UINT (insn, 32, 20, 12); \
+  f_opcode = EXTRACT_MSB0_UINT (insn, 32, 0, 8); \
+  f_srcdst = EXTRACT_MSB0_UINT (insn, 32, 8, 5); \
+  f_abase = EXTRACT_MSB0_UINT (insn, 32, 13, 5); \
+  f_modea = EXTRACT_MSB0_UINT (insn, 32, 18, 1); \
+  f_zeroa = EXTRACT_MSB0_UINT (insn, 32, 19, 1); \
+  f_offset = EXTRACT_MSB0_UINT (insn, 32, 20, 12); \
 
 #define EXTRACT_IFMT_ST_INDIRECT_VARS \
-  /* Instruction fields.  */ \
   UINT f_opcode; \
   UINT f_srcdst; \
   UINT f_abase; \
@@ -1797,16 +514,15 @@ struct scache {
   unsigned int length;
 #define EXTRACT_IFMT_ST_INDIRECT_CODE \
   length = 4; \
-  f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
-  f_srcdst = EXTRACT_UINT (insn, 32, 8, 5); \
-  f_abase = EXTRACT_UINT (insn, 32, 13, 5); \
-  f_modeb = EXTRACT_UINT (insn, 32, 18, 4); \
-  f_scale = EXTRACT_UINT (insn, 32, 22, 3); \
-  f_zerob = EXTRACT_UINT (insn, 32, 25, 2); \
-  f_index = EXTRACT_UINT (insn, 32, 27, 5); \
+  f_opcode = EXTRACT_MSB0_UINT (insn, 32, 0, 8); \
+  f_srcdst = EXTRACT_MSB0_UINT (insn, 32, 8, 5); \
+  f_abase = EXTRACT_MSB0_UINT (insn, 32, 13, 5); \
+  f_modeb = EXTRACT_MSB0_UINT (insn, 32, 18, 4); \
+  f_scale = EXTRACT_MSB0_UINT (insn, 32, 22, 3); \
+  f_zerob = EXTRACT_MSB0_UINT (insn, 32, 25, 2); \
+  f_index = EXTRACT_MSB0_UINT (insn, 32, 27, 5); \
 
 #define EXTRACT_IFMT_ST_DISP_VARS \
-  /* Instruction fields.  */ \
   UINT f_opcode; \
   UINT f_optdisp; \
   UINT f_srcdst; \
@@ -1821,17 +537,16 @@ struct scache {
 #define EXTRACT_IFMT_ST_DISP_CODE \
   length = 8; \
   word_1 = GETIMEMUSI (current_cpu, pc + 4); \
-  f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
-  f_optdisp = (0|(EXTRACT_UINT (word_1, 32, 0, 32) << 0)); \
-  f_srcdst = EXTRACT_UINT (insn, 32, 8, 5); \
-  f_abase = EXTRACT_UINT (insn, 32, 13, 5); \
-  f_modeb = EXTRACT_UINT (insn, 32, 18, 4); \
-  f_scale = EXTRACT_UINT (insn, 32, 22, 3); \
-  f_zerob = EXTRACT_UINT (insn, 32, 25, 2); \
-  f_index = EXTRACT_UINT (insn, 32, 27, 5); \
+  f_opcode = EXTRACT_MSB0_UINT (insn, 32, 0, 8); \
+  f_optdisp = (0|(EXTRACT_MSB0_UINT (word_1, 32, 0, 32) << 0)); \
+  f_srcdst = EXTRACT_MSB0_UINT (insn, 32, 8, 5); \
+  f_abase = EXTRACT_MSB0_UINT (insn, 32, 13, 5); \
+  f_modeb = EXTRACT_MSB0_UINT (insn, 32, 18, 4); \
+  f_scale = EXTRACT_MSB0_UINT (insn, 32, 22, 3); \
+  f_zerob = EXTRACT_MSB0_UINT (insn, 32, 25, 2); \
+  f_index = EXTRACT_MSB0_UINT (insn, 32, 27, 5); \
 
 #define EXTRACT_IFMT_CMPOBE_REG_VARS \
-  /* Instruction fields.  */ \
   UINT f_opcode; \
   UINT f_br_src1; \
   UINT f_br_src2; \
@@ -1841,15 +556,14 @@ struct scache {
   unsigned int length;
 #define EXTRACT_IFMT_CMPOBE_REG_CODE \
   length = 4; \
-  f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
-  f_br_src1 = EXTRACT_UINT (insn, 32, 8, 5); \
-  f_br_src2 = EXTRACT_UINT (insn, 32, 13, 5); \
-  f_br_m1 = EXTRACT_UINT (insn, 32, 18, 1); \
-  f_br_disp = ((((EXTRACT_INT (insn, 32, 19, 11)) << (2))) + (pc)); \
-  f_br_zero = EXTRACT_UINT (insn, 32, 30, 2); \
+  f_opcode = EXTRACT_MSB0_UINT (insn, 32, 0, 8); \
+  f_br_src1 = EXTRACT_MSB0_UINT (insn, 32, 8, 5); \
+  f_br_src2 = EXTRACT_MSB0_UINT (insn, 32, 13, 5); \
+  f_br_m1 = EXTRACT_MSB0_UINT (insn, 32, 18, 1); \
+  f_br_disp = ((((EXTRACT_MSB0_INT (insn, 32, 19, 11)) << (2))) + (pc)); \
+  f_br_zero = EXTRACT_MSB0_UINT (insn, 32, 30, 2); \
 
 #define EXTRACT_IFMT_CMPOBE_LIT_VARS \
-  /* Instruction fields.  */ \
   UINT f_opcode; \
   UINT f_br_src1; \
   UINT f_br_src2; \
@@ -1859,24 +573,23 @@ struct scache {
   unsigned int length;
 #define EXTRACT_IFMT_CMPOBE_LIT_CODE \
   length = 4; \
-  f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
-  f_br_src1 = EXTRACT_UINT (insn, 32, 8, 5); \
-  f_br_src2 = EXTRACT_UINT (insn, 32, 13, 5); \
-  f_br_m1 = EXTRACT_UINT (insn, 32, 18, 1); \
-  f_br_disp = ((((EXTRACT_INT (insn, 32, 19, 11)) << (2))) + (pc)); \
-  f_br_zero = EXTRACT_UINT (insn, 32, 30, 2); \
+  f_opcode = EXTRACT_MSB0_UINT (insn, 32, 0, 8); \
+  f_br_src1 = EXTRACT_MSB0_UINT (insn, 32, 8, 5); \
+  f_br_src2 = EXTRACT_MSB0_UINT (insn, 32, 13, 5); \
+  f_br_m1 = EXTRACT_MSB0_UINT (insn, 32, 18, 1); \
+  f_br_disp = ((((EXTRACT_MSB0_INT (insn, 32, 19, 11)) << (2))) + (pc)); \
+  f_br_zero = EXTRACT_MSB0_UINT (insn, 32, 30, 2); \
 
 #define EXTRACT_IFMT_BNO_VARS \
-  /* Instruction fields.  */ \
   UINT f_opcode; \
   SI f_ctrl_disp; \
   UINT f_ctrl_zero; \
   unsigned int length;
 #define EXTRACT_IFMT_BNO_CODE \
   length = 4; \
-  f_opcode = EXTRACT_UINT (insn, 32, 0, 8); \
-  f_ctrl_disp = ((((EXTRACT_INT (insn, 32, 8, 22)) << (2))) + (pc)); \
-  f_ctrl_zero = EXTRACT_UINT (insn, 32, 30, 2); \
+  f_opcode = EXTRACT_MSB0_UINT (insn, 32, 0, 8); \
+  f_ctrl_disp = ((((EXTRACT_MSB0_INT (insn, 32, 8, 22)) << (2))) + (pc)); \
+  f_ctrl_zero = EXTRACT_MSB0_UINT (insn, 32, 30, 2); \
 
 /* Collection of various things for the trace handler to use.  */
 
This page took 0.042814 seconds and 4 git commands to generate.