Home | History | Annotate | Download | only in opcode
      1 /* bfin.h -- Header file for ADI Blackfin opcode table
      2    Copyright (C) 2005-2016 Free Software Foundation, Inc.
      3 
      4    This file is part of GDB, GAS, and the GNU binutils.
      5 
      6    GDB, GAS, and the GNU binutils are free software; you can redistribute
      7    them and/or modify them under the terms of the GNU General Public
      8    License as published by the Free Software Foundation; either version 3,
      9    or (at your option) any later version.
     10 
     11    GDB, GAS, and the GNU binutils are distributed in the hope that they
     12    will be useful, but WITHOUT ANY WARRANTY; without even the implied
     13    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
     14    the GNU General Public License for more details.
     15 
     16    You should have received a copy of the GNU General Public License
     17    along with this file; see the file COPYING3.  If not, write to the Free
     18    Software Foundation, 51 Franklin Street - Fifth Floor, Boston,
     19    MA 02110-1301, USA.  */
     20 
     21 #ifndef OPCODE_BFIN_H
     22 #define OPCODE_BFIN_H
     23 
     24 /* Common to all DSP32 instructions.  */
     25 #define BIT_MULTI_INS 0x0800
     26 
     27 /* This just sets the multi instruction bit of a DSP32 instruction.  */
     28 #define SET_MULTI_INSTRUCTION_BIT(x) x->value |=  BIT_MULTI_INS;
     29 
     30 
     31 /* DSP instructions (32 bit) */
     32 
     33 /* mmod field.  */
     34 #define M_S2RND 1
     35 #define M_T     2
     36 #define M_W32   3
     37 #define M_FU    4
     38 #define M_TFU   6
     39 #define M_IS    8
     40 #define M_ISS2  9
     41 #define M_IH    11
     42 #define M_IU    12
     43 
     44 static inline int is_macmod_pmove (int x)
     45 {
     46   return (x == 0) || (x == M_IS) || (x == M_FU) || (x == M_S2RND)
     47          || (x == M_ISS2) || (x == M_IU);
     48 }
     49 
     50 static inline int is_macmod_hmove (int x)
     51 {
     52   return (x == 0) || (x == M_IS) || (x == M_FU) || (x == M_IU) || (x == M_T)
     53          || (x == M_TFU) || (x == M_S2RND) || (x == M_ISS2) || (x == M_IH);
     54 }
     55 
     56 static inline int is_macmod_signed (int x)
     57 {
     58   return (x == 0) || (x == M_IS) || (x == M_T) || (x == M_S2RND)
     59          || (x == M_ISS2) || (x == M_IH) || (x == M_W32);
     60 }
     61 
     62 /*   dsp32mac
     63 +----+----+---+---|---+----+----+---|---+---+---+---|---+---+---+---+
     64 | 1  | 1  | 0 | 0 |.M.| 0  | 0  |.mmod..........|.MM|.P.|.w1|.op1...|
     65 |.h01|.h11|.w0|.op0...|.h00|.h10|.dst.......|.src0......|.src1......|
     66 +----+----+---+---|---+----+----+---|---+---+---+---|---+---+---+---+
     67 */
     68 
     69 typedef struct
     70 {
     71   unsigned long opcode;
     72   int bits_src1;
     73   int mask_src1;
     74   int bits_src0;
     75   int mask_src0;
     76   int bits_dst;
     77   int mask_dst;
     78   int bits_h10;
     79   int mask_h10;
     80   int bits_h00;
     81   int mask_h00;
     82   int bits_op0;
     83   int mask_op0;
     84   int bits_w0;
     85   int mask_w0;
     86   int bits_h11;
     87   int mask_h11;
     88   int bits_h01;
     89   int mask_h01;
     90   int bits_op1;
     91   int mask_op1;
     92   int bits_w1;
     93   int mask_w1;
     94   int bits_P;
     95   int mask_P;
     96   int bits_MM;
     97   int mask_MM;
     98   int bits_mmod;
     99   int mask_mmod;
    100   int bits_code2;
    101   int mask_code2;
    102   int bits_M;
    103   int mask_M;
    104   int bits_code;
    105   int mask_code;
    106 } DSP32Mac;
    107 
    108 #define DSP32Mac_opcode			0xc0000000
    109 #define DSP32Mac_src1_bits		0
    110 #define DSP32Mac_src1_mask		0x7
    111 #define DSP32Mac_src0_bits		3
    112 #define DSP32Mac_src0_mask		0x7
    113 #define DSP32Mac_dst_bits		6
    114 #define DSP32Mac_dst_mask		0x7
    115 #define DSP32Mac_h10_bits		9
    116 #define DSP32Mac_h10_mask		0x1
    117 #define DSP32Mac_h00_bits		10
    118 #define DSP32Mac_h00_mask		0x1
    119 #define DSP32Mac_op0_bits		11
    120 #define DSP32Mac_op0_mask		0x3
    121 #define DSP32Mac_w0_bits		13
    122 #define DSP32Mac_w0_mask		0x1
    123 #define DSP32Mac_h11_bits		14
    124 #define DSP32Mac_h11_mask		0x1
    125 #define DSP32Mac_h01_bits		15
    126 #define DSP32Mac_h01_mask		0x1
    127 #define DSP32Mac_op1_bits		16
    128 #define DSP32Mac_op1_mask		0x3
    129 #define DSP32Mac_w1_bits		18
    130 #define DSP32Mac_w1_mask		0x1
    131 #define DSP32Mac_p_bits			19
    132 #define DSP32Mac_p_mask			0x1
    133 #define DSP32Mac_MM_bits		20
    134 #define DSP32Mac_MM_mask		0x1
    135 #define DSP32Mac_mmod_bits		21
    136 #define DSP32Mac_mmod_mask		0xf
    137 #define DSP32Mac_code2_bits		25
    138 #define DSP32Mac_code2_mask		0x3
    139 #define DSP32Mac_M_bits			27
    140 #define DSP32Mac_M_mask			0x1
    141 #define DSP32Mac_code_bits		28
    142 #define DSP32Mac_code_mask		0xf
    143 
    144 #define init_DSP32Mac				\
    145 {						\
    146   DSP32Mac_opcode,				\
    147   DSP32Mac_src1_bits,	DSP32Mac_src1_mask,	\
    148   DSP32Mac_src0_bits,	DSP32Mac_src0_mask,	\
    149   DSP32Mac_dst_bits,	DSP32Mac_dst_mask,	\
    150   DSP32Mac_h10_bits,	DSP32Mac_h10_mask,	\
    151   DSP32Mac_h00_bits,	DSP32Mac_h00_mask,	\
    152   DSP32Mac_op0_bits,	DSP32Mac_op0_mask,	\
    153   DSP32Mac_w0_bits,	DSP32Mac_w0_mask,	\
    154   DSP32Mac_h11_bits,	DSP32Mac_h11_mask,	\
    155   DSP32Mac_h01_bits,	DSP32Mac_h01_mask,	\
    156   DSP32Mac_op1_bits,	DSP32Mac_op1_mask,	\
    157   DSP32Mac_w1_bits,	DSP32Mac_w1_mask,	\
    158   DSP32Mac_p_bits,	DSP32Mac_p_mask,	\
    159   DSP32Mac_MM_bits,	DSP32Mac_MM_mask,	\
    160   DSP32Mac_mmod_bits,	DSP32Mac_mmod_mask,	\
    161   DSP32Mac_code2_bits,	DSP32Mac_code2_mask,	\
    162   DSP32Mac_M_bits,	DSP32Mac_M_mask,	\
    163   DSP32Mac_code_bits,	DSP32Mac_code_mask	\
    164 };
    165 
    166 /*  dsp32mult
    167 +----+----+---+---|---+----+----+---|---+---+---+---|---+---+---+---+
    168 | 1  | 1  | 0 | 0 |.M.| 0  | 1  |.mmod..........|.MM|.P.|.w1|.op1...|
    169 |.h01|.h11|.w0|.op0...|.h00|.h10|.dst.......|.src0......|.src1......|
    170 +----+----+---+---|---+----+----+---|---+---+---+---|---+---+---+---+
    171 */
    172 
    173 typedef DSP32Mac DSP32Mult;
    174 #define DSP32Mult_opcode 	0xc2000000
    175 
    176 #define init_DSP32Mult				\
    177 {						\
    178   DSP32Mult_opcode,				\
    179   DSP32Mac_src1_bits,	DSP32Mac_src1_mask,	\
    180   DSP32Mac_src0_bits,	DSP32Mac_src0_mask,	\
    181   DSP32Mac_dst_bits,	DSP32Mac_dst_mask,	\
    182   DSP32Mac_h10_bits,	DSP32Mac_h10_mask,	\
    183   DSP32Mac_h00_bits,	DSP32Mac_h00_mask,	\
    184   DSP32Mac_op0_bits,	DSP32Mac_op0_mask,	\
    185   DSP32Mac_w0_bits,	DSP32Mac_w0_mask,	\
    186   DSP32Mac_h11_bits,	DSP32Mac_h11_mask,	\
    187   DSP32Mac_h01_bits,	DSP32Mac_h01_mask,	\
    188   DSP32Mac_op1_bits,	DSP32Mac_op1_mask,	\
    189   DSP32Mac_w1_bits,	DSP32Mac_w1_mask,	\
    190   DSP32Mac_p_bits,	DSP32Mac_p_mask,	\
    191   DSP32Mac_MM_bits,	DSP32Mac_MM_mask,	\
    192   DSP32Mac_mmod_bits,	DSP32Mac_mmod_mask,	\
    193   DSP32Mac_code2_bits,	DSP32Mac_code2_mask,	\
    194   DSP32Mac_M_bits,	DSP32Mac_M_mask,	\
    195   DSP32Mac_code_bits,	DSP32Mac_code_mask	\
    196 };
    197 
    198 /*  dsp32alu
    199 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    200 | 1 | 1 | 0 | 0 |.M.| 1 | 0 | - | - | - |.HL|.aopcde............|
    201 |.aop...|.s.|.x.|.dst0......|.dst1......|.src0......|.src1......|
    202 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    203 */
    204 
    205 typedef struct
    206 {
    207   unsigned long opcode;
    208   int bits_src1;
    209   int mask_src1;
    210   int bits_src0;
    211   int mask_src0;
    212   int bits_dst1;
    213   int mask_dst1;
    214   int bits_dst0;
    215   int mask_dst0;
    216   int bits_x;
    217   int mask_x;
    218   int bits_s;
    219   int mask_s;
    220   int bits_aop;
    221   int mask_aop;
    222   int bits_aopcde;
    223   int mask_aopcde;
    224   int bits_HL;
    225   int mask_HL;
    226   int bits_dontcare;
    227   int mask_dontcare;
    228   int bits_code2;
    229   int mask_code2;
    230   int bits_M;
    231   int mask_M;
    232   int bits_code;
    233   int mask_code;
    234 } DSP32Alu;
    235 
    236 #define DSP32Alu_opcode		0xc4000000
    237 #define DSP32Alu_src1_bits	0
    238 #define DSP32Alu_src1_mask	0x7
    239 #define DSP32Alu_src0_bits	3
    240 #define DSP32Alu_src0_mask	0x7
    241 #define DSP32Alu_dst1_bits	6
    242 #define DSP32Alu_dst1_mask	0x7
    243 #define DSP32Alu_dst0_bits	9
    244 #define DSP32Alu_dst0_mask	0x7
    245 #define DSP32Alu_x_bits		12
    246 #define DSP32Alu_x_mask		0x1
    247 #define DSP32Alu_s_bits		13
    248 #define DSP32Alu_s_mask		0x1
    249 #define DSP32Alu_aop_bits	14
    250 #define DSP32Alu_aop_mask	0x3
    251 #define DSP32Alu_aopcde_bits	16
    252 #define DSP32Alu_aopcde_mask	0x1f
    253 #define DSP32Alu_HL_bits	21
    254 #define DSP32Alu_HL_mask	0x1
    255 #define DSP32Alu_dontcare_bits	22
    256 #define DSP32Alu_dontcare_mask	0x7
    257 #define DSP32Alu_code2_bits	25
    258 #define DSP32Alu_code2_mask	0x3
    259 #define DSP32Alu_M_bits		27
    260 #define DSP32Alu_M_mask		0x1
    261 #define DSP32Alu_code_bits	28
    262 #define DSP32Alu_code_mask	0xf
    263 
    264 #define init_DSP32Alu 					\
    265 {							\
    266   DSP32Alu_opcode,					\
    267   DSP32Alu_src1_bits,		DSP32Alu_src1_mask,	\
    268   DSP32Alu_src0_bits,		DSP32Alu_src0_mask,	\
    269   DSP32Alu_dst1_bits,		DSP32Alu_dst1_mask,	\
    270   DSP32Alu_dst0_bits,		DSP32Alu_dst0_mask,	\
    271   DSP32Alu_x_bits,		DSP32Alu_x_mask,	\
    272   DSP32Alu_s_bits,		DSP32Alu_s_mask,	\
    273   DSP32Alu_aop_bits,		DSP32Alu_aop_mask,	\
    274   DSP32Alu_aopcde_bits,		DSP32Alu_aopcde_mask,	\
    275   DSP32Alu_HL_bits,		DSP32Alu_HL_mask,	\
    276   DSP32Alu_dontcare_bits,	DSP32Alu_dontcare_mask,	\
    277   DSP32Alu_code2_bits,		DSP32Alu_code2_mask,	\
    278   DSP32Alu_M_bits,		DSP32Alu_M_mask,	\
    279   DSP32Alu_code_bits,		DSP32Alu_code_mask 	\
    280 };
    281 
    282 /*  dsp32shift
    283 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    284 | 1 | 1 | 0 | 0 |.M.| 1 | 1 | 0 | 0 | - | - |.sopcde............|
    285 |.sop...|.HLs...|.dst0......| - | - | - |.src0......|.src1......|
    286 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    287 */
    288 
    289 typedef struct
    290 {
    291   unsigned long opcode;
    292   int bits_src1;
    293   int mask_src1;
    294   int bits_src0;
    295   int mask_src0;
    296   int bits_dst1;
    297   int mask_dst1;
    298   int bits_dst0;
    299   int mask_dst0;
    300   int bits_HLs;
    301   int mask_HLs;
    302   int bits_sop;
    303   int mask_sop;
    304   int bits_sopcde;
    305   int mask_sopcde;
    306   int bits_dontcare;
    307   int mask_dontcare;
    308   int bits_code2;
    309   int mask_code2;
    310   int bits_M;
    311   int mask_M;
    312   int bits_code;
    313   int mask_code;
    314 } DSP32Shift;
    315 
    316 #define DSP32Shift_opcode		0xc6000000
    317 #define DSP32Shift_src1_bits		0
    318 #define DSP32Shift_src1_mask		0x7
    319 #define DSP32Shift_src0_bits		3
    320 #define DSP32Shift_src0_mask		0x7
    321 #define DSP32Shift_dst1_bits		6
    322 #define DSP32Shift_dst1_mask		0x7
    323 #define DSP32Shift_dst0_bits		9
    324 #define DSP32Shift_dst0_mask		0x7
    325 #define DSP32Shift_HLs_bits		12
    326 #define DSP32Shift_HLs_mask		0x3
    327 #define DSP32Shift_sop_bits		14
    328 #define DSP32Shift_sop_mask		0x3
    329 #define DSP32Shift_sopcde_bits		16
    330 #define DSP32Shift_sopcde_mask		0x1f
    331 #define DSP32Shift_dontcare_bits	21
    332 #define DSP32Shift_dontcare_mask	0x3
    333 #define DSP32Shift_code2_bits		23
    334 #define DSP32Shift_code2_mask		0xf
    335 #define DSP32Shift_M_bits		27
    336 #define DSP32Shift_M_mask		0x1
    337 #define DSP32Shift_code_bits		28
    338 #define DSP32Shift_code_mask		0xf
    339 
    340 #define init_DSP32Shift						\
    341 {								\
    342   DSP32Shift_opcode,						\
    343   DSP32Shift_src1_bits,		DSP32Shift_src1_mask,		\
    344   DSP32Shift_src0_bits,		DSP32Shift_src0_mask,		\
    345   DSP32Shift_dst1_bits,		DSP32Shift_dst1_mask,		\
    346   DSP32Shift_dst0_bits,		DSP32Shift_dst0_mask,		\
    347   DSP32Shift_HLs_bits,		DSP32Shift_HLs_mask,		\
    348   DSP32Shift_sop_bits,		DSP32Shift_sop_mask,		\
    349   DSP32Shift_sopcde_bits,	DSP32Shift_sopcde_mask,		\
    350   DSP32Shift_dontcare_bits,	DSP32Shift_dontcare_mask,	\
    351   DSP32Shift_code2_bits,	DSP32Shift_code2_mask,		\
    352   DSP32Shift_M_bits,		DSP32Shift_M_mask,		\
    353   DSP32Shift_code_bits,		DSP32Shift_code_mask		\
    354 };
    355 
    356 /*  dsp32shiftimm
    357 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    358 | 1 | 1 | 0 | 0 |.M.| 1 | 1 | 0 | 1 | - | - |.sopcde............|
    359 |.sop...|.HLs...|.dst0......|.immag.................|.src1......|
    360 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    361 */
    362 
    363 typedef struct
    364 {
    365   unsigned long opcode;
    366   int bits_src1;
    367   int mask_src1;
    368   int bits_immag;
    369   int mask_immag;
    370   int bits_dst0;
    371   int mask_dst0;
    372   int bits_HLs;
    373   int mask_HLs;
    374   int bits_sop;
    375   int mask_sop;
    376   int bits_sopcde;
    377   int mask_sopcde;
    378   int bits_dontcare;
    379   int mask_dontcare;
    380   int bits_code2;
    381   int mask_code2;
    382   int bits_M;
    383   int mask_M;
    384   int bits_code;
    385   int mask_code;
    386 } DSP32ShiftImm;
    387 
    388 #define DSP32ShiftImm_opcode		0xc6800000
    389 #define DSP32ShiftImm_src1_bits		0
    390 #define DSP32ShiftImm_src1_mask		0x7
    391 #define DSP32ShiftImm_immag_bits	3
    392 #define DSP32ShiftImm_immag_mask	0x3f
    393 #define DSP32ShiftImm_dst0_bits		9
    394 #define DSP32ShiftImm_dst0_mask		0x7
    395 #define DSP32ShiftImm_HLs_bits		12
    396 #define DSP32ShiftImm_HLs_mask		0x3
    397 #define DSP32ShiftImm_sop_bits		14
    398 #define DSP32ShiftImm_sop_mask		0x3
    399 #define DSP32ShiftImm_sopcde_bits	16
    400 #define DSP32ShiftImm_sopcde_mask	0x1f
    401 #define DSP32ShiftImm_dontcare_bits	21
    402 #define DSP32ShiftImm_dontcare_mask	0x3
    403 #define DSP32ShiftImm_code2_bits	23
    404 #define DSP32ShiftImm_code2_mask	0xf
    405 #define DSP32ShiftImm_M_bits		27
    406 #define DSP32ShiftImm_M_mask		0x1
    407 #define DSP32ShiftImm_code_bits		28
    408 #define DSP32ShiftImm_code_mask		0xf
    409 
    410 #define init_DSP32ShiftImm					\
    411 {								\
    412   DSP32ShiftImm_opcode,						\
    413   DSP32ShiftImm_src1_bits,	DSP32ShiftImm_src1_mask,	\
    414   DSP32ShiftImm_immag_bits,	DSP32ShiftImm_immag_mask,	\
    415   DSP32ShiftImm_dst0_bits,	DSP32ShiftImm_dst0_mask,	\
    416   DSP32ShiftImm_HLs_bits,	DSP32ShiftImm_HLs_mask,		\
    417   DSP32ShiftImm_sop_bits,	DSP32ShiftImm_sop_mask,		\
    418   DSP32ShiftImm_sopcde_bits,	DSP32ShiftImm_sopcde_mask,	\
    419   DSP32ShiftImm_dontcare_bits,	DSP32ShiftImm_dontcare_mask,	\
    420   DSP32ShiftImm_code2_bits,	DSP32ShiftImm_code2_mask,	\
    421   DSP32ShiftImm_M_bits,		DSP32ShiftImm_M_mask,		\
    422   DSP32ShiftImm_code_bits,	DSP32ShiftImm_code_mask		\
    423 };
    424 
    425 /* LOAD / STORE  */
    426 
    427 /*  LDSTidxI
    428 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    429 | 1 | 1 | 1 | 0 | 0 | 1 |.W.|.Z.|.sz....|.ptr.......|.reg.......|
    430 |.offset........................................................|
    431 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    432 */
    433 
    434 typedef struct
    435 {
    436   unsigned long opcode;
    437   int bits_offset;
    438   int mask_offset;
    439   int bits_reg;
    440   int mask_reg;
    441   int bits_ptr;
    442   int mask_ptr;
    443   int bits_sz;
    444   int mask_sz;
    445   int bits_Z;
    446   int mask_Z;
    447   int bits_W;
    448   int mask_W;
    449   int bits_code;
    450   int mask_code;
    451 } LDSTidxI;
    452 
    453 #define LDSTidxI_opcode		0xe4000000
    454 #define LDSTidxI_offset_bits	0
    455 #define LDSTidxI_offset_mask	0xffff
    456 #define LDSTidxI_reg_bits	16
    457 #define LDSTidxI_reg_mask	0x7
    458 #define LDSTidxI_ptr_bits	19
    459 #define LDSTidxI_ptr_mask	0x7
    460 #define LDSTidxI_sz_bits	22
    461 #define LDSTidxI_sz_mask	0x3
    462 #define LDSTidxI_Z_bits		24
    463 #define LDSTidxI_Z_mask		0x1
    464 #define LDSTidxI_W_bits		25
    465 #define LDSTidxI_W_mask		0x1
    466 #define LDSTidxI_code_bits	26
    467 #define LDSTidxI_code_mask	0x3f
    468 
    469 #define init_LDSTidxI				\
    470 {						\
    471   LDSTidxI_opcode,				\
    472   LDSTidxI_offset_bits, LDSTidxI_offset_mask,	\
    473   LDSTidxI_reg_bits, LDSTidxI_reg_mask,		\
    474   LDSTidxI_ptr_bits, LDSTidxI_ptr_mask,		\
    475   LDSTidxI_sz_bits, LDSTidxI_sz_mask,		\
    476   LDSTidxI_Z_bits, LDSTidxI_Z_mask,		\
    477   LDSTidxI_W_bits, LDSTidxI_W_mask,		\
    478   LDSTidxI_code_bits, LDSTidxI_code_mask	\
    479 };
    480 
    481 
    482 /*  LDST
    483 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    484 | 1 | 0 | 0 | 1 |.sz....|.W.|.aop...|.Z.|.ptr.......|.reg.......|
    485 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    486 */
    487 
    488 typedef struct
    489 {
    490   unsigned short opcode;
    491   int bits_reg;
    492   int mask_reg;
    493   int bits_ptr;
    494   int mask_ptr;
    495   int bits_Z;
    496   int mask_Z;
    497   int bits_aop;
    498   int mask_aop;
    499   int bits_W;
    500   int mask_W;
    501   int bits_sz;
    502   int mask_sz;
    503   int bits_code;
    504   int mask_code;
    505 } LDST;
    506 
    507 #define LDST_opcode		0x9000
    508 #define LDST_reg_bits		0
    509 #define LDST_reg_mask		0x7
    510 #define LDST_ptr_bits		3
    511 #define LDST_ptr_mask		0x7
    512 #define LDST_Z_bits		6
    513 #define LDST_Z_mask		0x1
    514 #define LDST_aop_bits		7
    515 #define LDST_aop_mask		0x3
    516 #define LDST_W_bits		9
    517 #define LDST_W_mask		0x1
    518 #define LDST_sz_bits		10
    519 #define LDST_sz_mask		0x3
    520 #define LDST_code_bits		12
    521 #define LDST_code_mask		0xf
    522 
    523 #define init_LDST			\
    524 {					\
    525   LDST_opcode,				\
    526   LDST_reg_bits,	LDST_reg_mask,	\
    527   LDST_ptr_bits,	LDST_ptr_mask,	\
    528   LDST_Z_bits,		LDST_Z_mask,	\
    529   LDST_aop_bits,	LDST_aop_mask,	\
    530   LDST_W_bits,		LDST_W_mask,	\
    531   LDST_sz_bits,		LDST_sz_mask,	\
    532   LDST_code_bits,	LDST_code_mask	\
    533 };
    534 
    535 /*  LDSTii
    536 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    537 | 1 | 0 | 1 |.W.|.op....|.offset........|.ptr.......|.reg.......|
    538 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    539 */
    540 
    541 typedef struct
    542 {
    543   unsigned short opcode;
    544   int bits_reg;
    545   int mask_reg;
    546   int bits_ptr;
    547   int mask_ptr;
    548   int bits_offset;
    549   int mask_offset;
    550   int bits_op;
    551   int mask_op;
    552   int bits_W;
    553   int mask_W;
    554   int bits_code;
    555   int mask_code;
    556 } LDSTii;
    557 
    558 #define LDSTii_opcode		0xa000
    559 #define LDSTii_reg_bit		0
    560 #define LDSTii_reg_mask		0x7
    561 #define LDSTii_ptr_bit		3
    562 #define LDSTii_ptr_mask		0x7
    563 #define LDSTii_offset_bit	6
    564 #define LDSTii_offset_mask	0xf
    565 #define LDSTii_op_bit		10
    566 #define LDSTii_op_mask		0x3
    567 #define LDSTii_W_bit		12
    568 #define LDSTii_W_mask		0x1
    569 #define LDSTii_code_bit		13
    570 #define LDSTii_code_mask	0x7
    571 
    572 #define init_LDSTii 				\
    573 {						\
    574   LDSTii_opcode,				\
    575   LDSTii_reg_bit,	LDSTii_reg_mask,	\
    576   LDSTii_ptr_bit,	LDSTii_ptr_mask,	\
    577   LDSTii_offset_bit,    LDSTii_offset_mask, 	\
    578   LDSTii_op_bit,        LDSTii_op_mask,		\
    579   LDSTii_W_bit,		LDSTii_W_mask,		\
    580   LDSTii_code_bit,	LDSTii_code_mask	\
    581 };
    582 
    583 
    584 /*  LDSTiiFP
    585 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    586 | 1 | 0 | 1 | 1 | 1 | 0 |.W.|.offset............|.reg...........|
    587 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    588 */
    589 
    590 typedef struct
    591 {
    592   unsigned short opcode;
    593   int bits_reg;
    594   int mask_reg;
    595   int bits_offset;
    596   int mask_offset;
    597   int bits_W;
    598   int mask_W;
    599   int bits_code;
    600   int mask_code;
    601 } LDSTiiFP;
    602 
    603 #define LDSTiiFP_opcode		0xb800
    604 #define LDSTiiFP_reg_bits	0
    605 #define LDSTiiFP_reg_mask	0xf
    606 #define LDSTiiFP_offset_bits	4
    607 #define LDSTiiFP_offset_mask	0x1f
    608 #define LDSTiiFP_W_bits		9
    609 #define LDSTiiFP_W_mask		0x1
    610 #define LDSTiiFP_code_bits	10
    611 #define LDSTiiFP_code_mask	0x3f
    612 
    613 #define init_LDSTiiFP				\
    614 {						\
    615   LDSTiiFP_opcode,				\
    616   LDSTiiFP_reg_bits,	LDSTiiFP_reg_mask,	\
    617   LDSTiiFP_offset_bits, LDSTiiFP_offset_mask,	\
    618   LDSTiiFP_W_bits,	LDSTiiFP_W_mask,	\
    619   LDSTiiFP_code_bits,	LDSTiiFP_code_mask	\
    620 };
    621 
    622 /*  dspLDST
    623 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    624 | 1 | 0 | 0 | 1 | 1 | 1 |.W.|.aop...|.m.....|.i.....|.reg.......|
    625 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    626 */
    627 
    628 typedef struct
    629 {
    630   unsigned short opcode;
    631   int bits_reg;
    632   int mask_reg;
    633   int bits_i;
    634   int mask_i;
    635   int bits_m;
    636   int mask_m;
    637   int bits_aop;
    638   int mask_aop;
    639   int bits_W;
    640   int mask_W;
    641   int bits_code;
    642   int mask_code;
    643 } DspLDST;
    644 
    645 #define DspLDST_opcode		0x9c00
    646 #define DspLDST_reg_bits	0
    647 #define DspLDST_reg_mask	0x7
    648 #define DspLDST_i_bits		3
    649 #define DspLDST_i_mask		0x3
    650 #define DspLDST_m_bits		5
    651 #define DspLDST_m_mask		0x3
    652 #define DspLDST_aop_bits	7
    653 #define DspLDST_aop_mask	0x3
    654 #define DspLDST_W_bits		9
    655 #define DspLDST_W_mask		0x1
    656 #define DspLDST_code_bits	10
    657 #define DspLDST_code_mask	0x3f
    658 
    659 #define init_DspLDST				\
    660 {						\
    661   DspLDST_opcode,				\
    662   DspLDST_reg_bits,	DspLDST_reg_mask,	\
    663   DspLDST_i_bits,	DspLDST_i_mask,		\
    664   DspLDST_m_bits,	DspLDST_m_mask,		\
    665   DspLDST_aop_bits,	DspLDST_aop_mask,	\
    666   DspLDST_W_bits,	DspLDST_W_mask,		\
    667   DspLDST_code_bits,	DspLDST_code_mask	\
    668 };
    669 
    670 
    671 /*  LDSTpmod
    672 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    673 | 1 | 0 | 0 | 0 |.W.|.aop...|.reg.......|.idx.......|.ptr.......|
    674 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    675 */
    676 
    677 typedef struct
    678 {
    679   unsigned short opcode;
    680   int bits_ptr;
    681   int mask_ptr;
    682   int bits_idx;
    683   int mask_idx;
    684   int bits_reg;
    685   int mask_reg;
    686   int bits_aop;
    687   int mask_aop;
    688   int bits_W;
    689   int mask_W;
    690   int bits_code;
    691   int mask_code;
    692 } LDSTpmod;
    693 
    694 #define LDSTpmod_opcode		0x8000
    695 #define LDSTpmod_ptr_bits	0
    696 #define LDSTpmod_ptr_mask	0x7
    697 #define LDSTpmod_idx_bits	3
    698 #define LDSTpmod_idx_mask	0x7
    699 #define LDSTpmod_reg_bits	6
    700 #define LDSTpmod_reg_mask	0x7
    701 #define LDSTpmod_aop_bits	9
    702 #define LDSTpmod_aop_mask	0x3
    703 #define LDSTpmod_W_bits		11
    704 #define LDSTpmod_W_mask		0x1
    705 #define LDSTpmod_code_bits	12
    706 #define LDSTpmod_code_mask	0xf
    707 
    708 #define init_LDSTpmod				\
    709 {						\
    710   LDSTpmod_opcode,				\
    711   LDSTpmod_ptr_bits, 	LDSTpmod_ptr_mask,	\
    712   LDSTpmod_idx_bits,	LDSTpmod_idx_mask,	\
    713   LDSTpmod_reg_bits,	LDSTpmod_reg_mask,	\
    714   LDSTpmod_aop_bits,	LDSTpmod_aop_mask,	\
    715   LDSTpmod_W_bits,	LDSTpmod_W_mask,	\
    716   LDSTpmod_code_bits,	LDSTpmod_code_mask	\
    717 };
    718 
    719 
    720 /*  LOGI2op
    721 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    722 | 0 | 1 | 0 | 0 | 1 |.opc.......|.src...............|.dst.......|
    723 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    724 */
    725 
    726 typedef struct
    727 {
    728   unsigned short opcode;
    729   int bits_dst;
    730   int mask_dst;
    731   int bits_src;
    732   int mask_src;
    733   int bits_opc;
    734   int mask_opc;
    735   int bits_code;
    736   int mask_code;
    737 } LOGI2op;
    738 
    739 #define LOGI2op_opcode		0x4800
    740 #define LOGI2op_dst_bits	0
    741 #define LOGI2op_dst_mask	0x7
    742 #define LOGI2op_src_bits	3
    743 #define LOGI2op_src_mask	0x1f
    744 #define LOGI2op_opc_bits	8
    745 #define LOGI2op_opc_mask	0x7
    746 #define LOGI2op_code_bits	11
    747 #define LOGI2op_code_mask	0x1f
    748 
    749 #define init_LOGI2op				\
    750 {						\
    751   LOGI2op_opcode,				\
    752   LOGI2op_dst_bits, 	LOGI2op_dst_mask,	\
    753   LOGI2op_src_bits,	LOGI2op_src_mask,	\
    754   LOGI2op_opc_bits,	LOGI2op_opc_mask,	\
    755   LOGI2op_code_bits,	LOGI2op_code_mask	\
    756 };
    757 
    758 
    759 /*  ALU2op
    760 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    761 | 0 | 1 | 0 | 0 | 0 | 0 |.opc...........|.src.......|.dst.......|
    762 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    763 */
    764 
    765 typedef struct
    766 {
    767   unsigned short opcode;
    768   int bits_dst;
    769   int mask_dst;
    770   int bits_src;
    771   int mask_src;
    772   int bits_opc;
    773   int mask_opc;
    774   int bits_code;
    775   int mask_code;
    776 } ALU2op;
    777 
    778 #define ALU2op_opcode 		0x4000
    779 #define ALU2op_dst_bits		0
    780 #define ALU2op_dst_mask		0x7
    781 #define ALU2op_src_bits		3
    782 #define ALU2op_src_mask		0x7
    783 #define ALU2op_opc_bits		6
    784 #define ALU2op_opc_mask		0xf
    785 #define ALU2op_code_bits	10
    786 #define ALU2op_code_mask	0x3f
    787 
    788 #define init_ALU2op				\
    789 {						\
    790   ALU2op_opcode,				\
    791   ALU2op_dst_bits,	ALU2op_dst_mask,	\
    792   ALU2op_src_bits,	ALU2op_src_mask,	\
    793   ALU2op_opc_bits,	ALU2op_opc_mask,	\
    794   ALU2op_code_bits,	ALU2op_code_mask	\
    795 };
    796 
    797 
    798 /*  BRCC
    799 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    800 | 0 | 0 | 0 | 1 |.T.|.B.|.offset................................|
    801 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    802 */
    803 
    804 typedef struct
    805 {
    806   unsigned short opcode;
    807   int bits_offset;
    808   int mask_offset;
    809   int bits_B;
    810   int mask_B;
    811   int bits_T;
    812   int mask_T;
    813   int bits_code;
    814   int mask_code;
    815 } BRCC;
    816 
    817 #define BRCC_opcode		0x1000
    818 #define BRCC_offset_bits	0
    819 #define BRCC_offset_mask	0x3ff
    820 #define BRCC_B_bits		10
    821 #define BRCC_B_mask		0x1
    822 #define BRCC_T_bits		11
    823 #define BRCC_T_mask		0x1
    824 #define BRCC_code_bits		12
    825 #define BRCC_code_mask		0xf
    826 
    827 #define init_BRCC				\
    828 {						\
    829   BRCC_opcode,					\
    830   BRCC_offset_bits,	BRCC_offset_mask,	\
    831   BRCC_B_bits,		BRCC_B_mask,		\
    832   BRCC_T_bits,		BRCC_T_mask,		\
    833   BRCC_code_bits,	BRCC_code_mask		\
    834 };
    835 
    836 
    837 /*  UJUMP
    838 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    839 | 0 | 0 | 1 | 0 |.offset........................................|
    840 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    841 */
    842 
    843 typedef struct
    844 {
    845   unsigned short opcode;
    846   int bits_offset;
    847   int mask_offset;
    848   int bits_code;
    849   int mask_code;
    850 } UJump;
    851 
    852 #define UJump_opcode		0x2000
    853 #define UJump_offset_bits	0
    854 #define UJump_offset_mask	0xfff
    855 #define UJump_code_bits		12
    856 #define UJump_code_mask		0xf
    857 
    858 #define init_UJump				\
    859 {						\
    860   UJump_opcode,					\
    861   UJump_offset_bits,	UJump_offset_mask,	\
    862   UJump_code_bits,	UJump_code_mask		\
    863 };
    864 
    865 
    866 /*  ProgCtrl
    867 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    868 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |.prgfunc.......|.poprnd........|
    869 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    870 */
    871 
    872 typedef struct
    873 {
    874   unsigned short opcode;
    875   int bits_poprnd;
    876   int mask_poprnd;
    877   int bits_prgfunc;
    878   int mask_prgfunc;
    879   int bits_code;
    880   int mask_code;
    881 } ProgCtrl;
    882 
    883 #define ProgCtrl_opcode		0x0000
    884 #define ProgCtrl_poprnd_bits	0
    885 #define ProgCtrl_poprnd_mask	0xf
    886 #define ProgCtrl_prgfunc_bits	4
    887 #define ProgCtrl_prgfunc_mask	0xf
    888 #define ProgCtrl_code_bits	8
    889 #define ProgCtrl_code_mask	0xff
    890 
    891 #define init_ProgCtrl					\
    892 {							\
    893   ProgCtrl_opcode,					\
    894   ProgCtrl_poprnd_bits,		ProgCtrl_poprnd_mask,	\
    895   ProgCtrl_prgfunc_bits,	ProgCtrl_prgfunc_mask,	\
    896   ProgCtrl_code_bits,		ProgCtrl_code_mask	\
    897 };
    898 
    899 /*  CALLa
    900 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    901 | 1 | 1 | 1 | 0 | 0 | 0 | 1 |.S.|.msw...........................|
    902 |.lsw...........................................................|
    903 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    904 */
    905 
    906 
    907 typedef struct
    908 {
    909   unsigned long opcode;
    910   int bits_addr;
    911   int mask_addr;
    912   int bits_S;
    913   int mask_S;
    914   int bits_code;
    915   int mask_code;
    916 } CALLa;
    917 
    918 #define CALLa_opcode	0xe2000000
    919 #define CALLa_addr_bits	0
    920 #define CALLa_addr_mask	0xffffff
    921 #define CALLa_S_bits	24
    922 #define CALLa_S_mask	0x1
    923 #define CALLa_code_bits	25
    924 #define CALLa_code_mask	0x7f
    925 
    926 #define init_CALLa				\
    927 {						\
    928   CALLa_opcode,					\
    929   CALLa_addr_bits,	CALLa_addr_mask,	\
    930   CALLa_S_bits,		CALLa_S_mask,		\
    931   CALLa_code_bits,	CALLa_code_mask		\
    932 };
    933 
    934 
    935 /*  pseudoDEBUG
    936 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    937 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 |.fn....|.grp.......|.reg.......|
    938 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    939 */
    940 
    941 typedef struct
    942 {
    943   unsigned short opcode;
    944   int bits_reg;
    945   int mask_reg;
    946   int bits_grp;
    947   int mask_grp;
    948   int bits_fn;
    949   int mask_fn;
    950   int bits_code;
    951   int mask_code;
    952 } PseudoDbg;
    953 
    954 #define PseudoDbg_opcode	0xf800
    955 #define PseudoDbg_reg_bits	0
    956 #define PseudoDbg_reg_mask	0x7
    957 #define PseudoDbg_grp_bits	3
    958 #define PseudoDbg_grp_mask	0x7
    959 #define PseudoDbg_fn_bits	6
    960 #define PseudoDbg_fn_mask	0x3
    961 #define PseudoDbg_code_bits	8
    962 #define PseudoDbg_code_mask	0xff
    963 
    964 #define init_PseudoDbg				\
    965 {						\
    966   PseudoDbg_opcode,				\
    967   PseudoDbg_reg_bits,	PseudoDbg_reg_mask,	\
    968   PseudoDbg_grp_bits,	PseudoDbg_grp_mask,	\
    969   PseudoDbg_fn_bits,	PseudoDbg_fn_mask,	\
    970   PseudoDbg_code_bits,	PseudoDbg_code_mask	\
    971 };
    972 
    973 /*  PseudoDbg_assert
    974 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    975 | 1 | 1 | 1 | 1 | 0 | - | - | - | dbgop |.grp.......|.regtest...|
    976 |.expected......................................................|
    977 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
    978 */
    979 
    980 typedef struct
    981 {
    982   unsigned long opcode;
    983   int bits_expected;
    984   int mask_expected;
    985   int bits_regtest;
    986   int mask_regtest;
    987   int bits_grp;
    988   int mask_grp;
    989   int bits_dbgop;
    990   int mask_dbgop;
    991   int bits_dontcare;
    992   int mask_dontcare;
    993   int bits_code;
    994   int mask_code;
    995 } PseudoDbg_Assert;
    996 
    997 #define PseudoDbg_Assert_opcode		0xf0000000
    998 #define PseudoDbg_Assert_expected_bits	0
    999 #define PseudoDbg_Assert_expected_mask	0xffff
   1000 #define PseudoDbg_Assert_regtest_bits	16
   1001 #define PseudoDbg_Assert_regtest_mask	0x7
   1002 #define PseudoDbg_Assert_grp_bits	19
   1003 #define PseudoDbg_Assert_grp_mask	0x7
   1004 #define PseudoDbg_Assert_dbgop_bits	22
   1005 #define PseudoDbg_Assert_dbgop_mask	0x3
   1006 #define PseudoDbg_Assert_dontcare_bits	24
   1007 #define PseudoDbg_Assert_dontcare_mask	0x7
   1008 #define PseudoDbg_Assert_code_bits	27
   1009 #define PseudoDbg_Assert_code_mask	0x1f
   1010 
   1011 #define init_PseudoDbg_Assert						\
   1012 {									\
   1013   PseudoDbg_Assert_opcode,						\
   1014   PseudoDbg_Assert_expected_bits, 	PseudoDbg_Assert_expected_mask,	\
   1015   PseudoDbg_Assert_regtest_bits, 	PseudoDbg_Assert_regtest_mask,	\
   1016   PseudoDbg_Assert_grp_bits,		PseudoDbg_Assert_grp_mask,	\
   1017   PseudoDbg_Assert_dbgop_bits, 		PseudoDbg_Assert_dbgop_mask,	\
   1018   PseudoDbg_Assert_dontcare_bits, 	PseudoDbg_Assert_dontcare_mask,	\
   1019   PseudoDbg_Assert_code_bits,	 	PseudoDbg_Assert_code_mask	\
   1020 };
   1021 
   1022 /*  pseudoChr
   1023 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1024 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 |.ch............................|
   1025 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1026 */
   1027 
   1028 typedef struct
   1029 {
   1030   unsigned short opcode;
   1031   int bits_ch;
   1032   int mask_ch;
   1033   int bits_code;
   1034   int mask_code;
   1035 } PseudoChr;
   1036 
   1037 #define PseudoChr_opcode	0xf900
   1038 #define PseudoChr_ch_bits	0
   1039 #define PseudoChr_ch_mask	0xff
   1040 #define PseudoChr_code_bits	8
   1041 #define PseudoChr_code_mask	0xff
   1042 
   1043 #define init_PseudoChr				\
   1044 {						\
   1045   PseudoChr_opcode,				\
   1046   PseudoChr_ch_bits,	PseudoChr_ch_mask,	\
   1047   PseudoChr_code_bits,	PseudoChr_code_mask	\
   1048 };
   1049 
   1050 /*  CaCTRL
   1051 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1052 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 |.a.|.op....|.reg.......|
   1053 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1054 */
   1055 
   1056 typedef struct
   1057 {
   1058   unsigned short opcode;
   1059   int bits_reg;
   1060   int mask_reg;
   1061   int bits_op;
   1062   int mask_op;
   1063   int bits_a;
   1064   int mask_a;
   1065   int bits_code;
   1066   int mask_code;
   1067 } CaCTRL;
   1068 
   1069 #define CaCTRL_opcode		0x0240
   1070 #define CaCTRL_reg_bits		0
   1071 #define CaCTRL_reg_mask		0x7
   1072 #define CaCTRL_op_bits		3
   1073 #define CaCTRL_op_mask		0x3
   1074 #define CaCTRL_a_bits		5
   1075 #define CaCTRL_a_mask		0x1
   1076 #define CaCTRL_code_bits	6
   1077 #define CaCTRL_code_mask	0x3fff
   1078 
   1079 #define init_CaCTRL				\
   1080 {						\
   1081   CaCTRL_opcode,				\
   1082   CaCTRL_reg_bits,	CaCTRL_reg_mask,	\
   1083   CaCTRL_op_bits,	CaCTRL_op_mask,		\
   1084   CaCTRL_a_bits,	CaCTRL_a_mask,		\
   1085   CaCTRL_code_bits,	CaCTRL_code_mask	\
   1086 };
   1087 
   1088 /*  PushPopMultiple
   1089 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1090 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |.d.|.p.|.W.|.dr........|.pr........|
   1091 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1092 */
   1093 
   1094 typedef struct
   1095 {
   1096   unsigned short opcode;
   1097   int bits_pr;
   1098   int mask_pr;
   1099   int bits_dr;
   1100   int mask_dr;
   1101   int bits_W;
   1102   int mask_W;
   1103   int bits_p;
   1104   int mask_p;
   1105   int bits_d;
   1106   int mask_d;
   1107   int bits_code;
   1108   int mask_code;
   1109 } PushPopMultiple;
   1110 
   1111 #define PushPopMultiple_opcode		0x0400
   1112 #define PushPopMultiple_pr_bits		0
   1113 #define PushPopMultiple_pr_mask		0x7
   1114 #define PushPopMultiple_dr_bits		3
   1115 #define PushPopMultiple_dr_mask		0x7
   1116 #define PushPopMultiple_W_bits		6
   1117 #define PushPopMultiple_W_mask		0x1
   1118 #define PushPopMultiple_p_bits		7
   1119 #define PushPopMultiple_p_mask		0x1
   1120 #define PushPopMultiple_d_bits		8
   1121 #define PushPopMultiple_d_mask		0x1
   1122 #define PushPopMultiple_code_bits	8
   1123 #define PushPopMultiple_code_mask	0x1
   1124 
   1125 #define init_PushPopMultiple					\
   1126 {								\
   1127   PushPopMultiple_opcode,					\
   1128   PushPopMultiple_pr_bits,	PushPopMultiple_pr_mask,	\
   1129   PushPopMultiple_dr_bits,	PushPopMultiple_dr_mask,	\
   1130   PushPopMultiple_W_bits,	PushPopMultiple_W_mask,		\
   1131   PushPopMultiple_p_bits,	PushPopMultiple_p_mask,		\
   1132   PushPopMultiple_d_bits,	PushPopMultiple_d_mask,		\
   1133   PushPopMultiple_code_bits,	PushPopMultiple_code_mask	\
   1134 };
   1135 
   1136 /*  PushPopReg
   1137 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1138 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |.W.|.grp.......|.reg.......|
   1139 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1140 */
   1141 
   1142 typedef struct
   1143 {
   1144   unsigned short opcode;
   1145   int bits_reg;
   1146   int mask_reg;
   1147   int bits_grp;
   1148   int mask_grp;
   1149   int bits_W;
   1150   int mask_W;
   1151   int bits_code;
   1152   int mask_code;
   1153 } PushPopReg;
   1154 
   1155 #define PushPopReg_opcode	0x0100
   1156 #define PushPopReg_reg_bits	0
   1157 #define PushPopReg_reg_mask	0x7
   1158 #define PushPopReg_grp_bits	3
   1159 #define PushPopReg_grp_mask	0x7
   1160 #define PushPopReg_W_bits	6
   1161 #define PushPopReg_W_mask	0x1
   1162 #define PushPopReg_code_bits	7
   1163 #define PushPopReg_code_mask	0x1ff
   1164 
   1165 #define init_PushPopReg				\
   1166 {						\
   1167   PushPopReg_opcode,				\
   1168   PushPopReg_reg_bits,	PushPopReg_reg_mask,	\
   1169   PushPopReg_grp_bits,	PushPopReg_grp_mask,	\
   1170   PushPopReg_W_bits,	PushPopReg_W_mask,	\
   1171   PushPopReg_code_bits,	PushPopReg_code_mask,	\
   1172 };
   1173 
   1174 /*  linkage
   1175 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1176 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |.R.|
   1177 |.framesize.....................................................|
   1178 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1179 */
   1180 
   1181 typedef struct
   1182 {
   1183   unsigned long opcode;
   1184   int bits_framesize;
   1185   int mask_framesize;
   1186   int bits_R;
   1187   int mask_R;
   1188   int bits_code;
   1189   int mask_code;
   1190 } Linkage;
   1191 
   1192 #define Linkage_opcode		0xe8000000
   1193 #define Linkage_framesize_bits	0
   1194 #define Linkage_framesize_mask	0xffff
   1195 #define Linkage_R_bits		16
   1196 #define Linkage_R_mask		0x1
   1197 #define Linkage_code_bits	17
   1198 #define Linkage_code_mask	0x7fff
   1199 
   1200 #define init_Linkage					\
   1201 {							\
   1202   Linkage_opcode,					\
   1203   Linkage_framesize_bits,	Linkage_framesize_mask,	\
   1204   Linkage_R_bits,		Linkage_R_mask,		\
   1205   Linkage_code_bits,		Linkage_code_mask	\
   1206 };
   1207 
   1208 /*  LoopSetup
   1209 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1210 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |.rop...|.c.|.soffset.......|
   1211 |.reg...........| - | - |.eoffset...............................|
   1212 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1213 */
   1214 
   1215 typedef struct
   1216 {
   1217   unsigned long opcode;
   1218   int bits_eoffset;
   1219   int mask_eoffset;
   1220   int bits_dontcare;
   1221   int mask_dontcare;
   1222   int bits_reg;
   1223   int mask_reg;
   1224   int bits_soffset;
   1225   int mask_soffset;
   1226   int bits_c;
   1227   int mask_c;
   1228   int bits_rop;
   1229   int mask_rop;
   1230   int bits_code;
   1231   int mask_code;
   1232 } LoopSetup;
   1233 
   1234 #define LoopSetup_opcode		0xe0800000
   1235 #define LoopSetup_eoffset_bits		0
   1236 #define LoopSetup_eoffset_mask		0x3ff
   1237 #define LoopSetup_dontcare_bits		10
   1238 #define LoopSetup_dontcare_mask		0x3
   1239 #define LoopSetup_reg_bits		12
   1240 #define LoopSetup_reg_mask		0xf
   1241 #define LoopSetup_soffset_bits		16
   1242 #define LoopSetup_soffset_mask		0xf
   1243 #define LoopSetup_c_bits		20
   1244 #define LoopSetup_c_mask		0x1
   1245 #define LoopSetup_rop_bits		21
   1246 #define LoopSetup_rop_mask		0x3
   1247 #define LoopSetup_code_bits		23
   1248 #define LoopSetup_code_mask		0x1ff
   1249 
   1250 #define init_LoopSetup						\
   1251 {								\
   1252   LoopSetup_opcode,						\
   1253   LoopSetup_eoffset_bits,	LoopSetup_eoffset_mask,		\
   1254   LoopSetup_dontcare_bits,	LoopSetup_dontcare_mask,	\
   1255   LoopSetup_reg_bits,		LoopSetup_reg_mask,		\
   1256   LoopSetup_soffset_bits,	LoopSetup_soffset_mask,		\
   1257   LoopSetup_c_bits,		LoopSetup_c_mask,		\
   1258   LoopSetup_rop_bits,		LoopSetup_rop_mask,		\
   1259   LoopSetup_code_bits,		LoopSetup_code_mask		\
   1260 };
   1261 
   1262 /*  LDIMMhalf
   1263 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1264 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 |.Z.|.H.|.S.|.grp...|.reg.......|
   1265 |.hword.........................................................|
   1266 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1267 */
   1268 
   1269 typedef struct
   1270 {
   1271   unsigned long opcode;
   1272   int bits_hword;
   1273   int mask_hword;
   1274   int bits_reg;
   1275   int mask_reg;
   1276   int bits_grp;
   1277   int mask_grp;
   1278   int bits_S;
   1279   int mask_S;
   1280   int bits_H;
   1281   int mask_H;
   1282   int bits_Z;
   1283   int mask_Z;
   1284   int bits_code;
   1285   int mask_code;
   1286 } LDIMMhalf;
   1287 
   1288 #define LDIMMhalf_opcode	0xe1000000
   1289 #define LDIMMhalf_hword_bits	0
   1290 #define LDIMMhalf_hword_mask	0xffff
   1291 #define LDIMMhalf_reg_bits	16
   1292 #define LDIMMhalf_reg_mask	0x7
   1293 #define LDIMMhalf_grp_bits	19
   1294 #define LDIMMhalf_grp_mask	0x3
   1295 #define LDIMMhalf_S_bits	21
   1296 #define LDIMMhalf_S_mask	0x1
   1297 #define LDIMMhalf_H_bits	22
   1298 #define LDIMMhalf_H_mask	0x1
   1299 #define LDIMMhalf_Z_bits	23
   1300 #define LDIMMhalf_Z_mask	0x1
   1301 #define LDIMMhalf_code_bits	24
   1302 #define LDIMMhalf_code_mask	0xff
   1303 
   1304 #define init_LDIMMhalf				\
   1305 {						\
   1306   LDIMMhalf_opcode,				\
   1307   LDIMMhalf_hword_bits,	LDIMMhalf_hword_mask,	\
   1308   LDIMMhalf_reg_bits,	LDIMMhalf_reg_mask,	\
   1309   LDIMMhalf_grp_bits,	LDIMMhalf_grp_mask,	\
   1310   LDIMMhalf_S_bits,	LDIMMhalf_S_mask,	\
   1311   LDIMMhalf_H_bits,	LDIMMhalf_H_mask,	\
   1312   LDIMMhalf_Z_bits,	LDIMMhalf_Z_mask,	\
   1313   LDIMMhalf_code_bits,	LDIMMhalf_code_mask	\
   1314 };
   1315 
   1316 
   1317 /*  CC2dreg
   1318 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1319 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |.op....|.reg.......|
   1320 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1321 */
   1322 
   1323 typedef struct
   1324 {
   1325   unsigned short opcode;
   1326   int bits_reg;
   1327   int mask_reg;
   1328   int bits_op;
   1329   int mask_op;
   1330   int bits_code;
   1331   int mask_code;
   1332 } CC2dreg;
   1333 
   1334 #define CC2dreg_opcode		0x0200
   1335 #define CC2dreg_reg_bits	0
   1336 #define CC2dreg_reg_mask	0x7
   1337 #define CC2dreg_op_bits		3
   1338 #define CC2dreg_op_mask		0x3
   1339 #define CC2dreg_code_bits	5
   1340 #define CC2dreg_code_mask	0x7fff
   1341 
   1342 #define init_CC2dreg				\
   1343 {						\
   1344   CC2dreg_opcode,				\
   1345   CC2dreg_reg_bits,	CC2dreg_reg_mask,	\
   1346   CC2dreg_op_bits,	CC2dreg_op_mask,	\
   1347   CC2dreg_code_bits,	CC2dreg_code_mask	\
   1348 };
   1349 
   1350 
   1351 /*  PTR2op
   1352 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1353 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |.opc.......|.src.......|.dst.......|
   1354 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1355 */
   1356 
   1357 typedef struct
   1358 {
   1359   unsigned short opcode;
   1360   int bits_dst;
   1361   int mask_dst;
   1362   int bits_src;
   1363   int mask_src;
   1364   int bits_opc;
   1365   int mask_opc;
   1366   int bits_code;
   1367   int mask_code;
   1368 } PTR2op;
   1369 
   1370 #define PTR2op_opcode		0x4400
   1371 #define PTR2op_dst_bits		0
   1372 #define PTR2op_dst_mask		0x7
   1373 #define PTR2op_src_bits		3
   1374 #define PTR2op_src_mask		0x7
   1375 #define PTR2op_opc_bits		6
   1376 #define PTR2op_opc_mask		0x7
   1377 #define PTR2op_code_bits	9
   1378 #define PTR2op_code_mask	0x7f
   1379 
   1380 #define init_PTR2op				\
   1381 {						\
   1382   PTR2op_opcode,				\
   1383   PTR2op_dst_bits,	PTR2op_dst_mask,	\
   1384   PTR2op_src_bits,	PTR2op_src_mask,	\
   1385   PTR2op_opc_bits,	PTR2op_opc_mask,	\
   1386   PTR2op_code_bits,	PTR2op_code_mask	\
   1387 };
   1388 
   1389 
   1390 /*  COMP3op
   1391 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1392 | 0 | 1 | 0 | 1 |.opc.......|.dst.......|.src1......|.src0......|
   1393 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1394 */
   1395 
   1396 typedef struct
   1397 {
   1398   unsigned short opcode;
   1399   int bits_src0;
   1400   int mask_src0;
   1401   int bits_src1;
   1402   int mask_src1;
   1403   int bits_dst;
   1404   int mask_dst;
   1405   int bits_opc;
   1406   int mask_opc;
   1407   int bits_code;
   1408   int mask_code;
   1409 } COMP3op;
   1410 
   1411 #define COMP3op_opcode		0x5000
   1412 #define COMP3op_src0_bits	0
   1413 #define COMP3op_src0_mask	0x7
   1414 #define COMP3op_src1_bits	3
   1415 #define COMP3op_src1_mask	0x7
   1416 #define COMP3op_dst_bits	6
   1417 #define COMP3op_dst_mask	0x7
   1418 #define COMP3op_opc_bits	9
   1419 #define COMP3op_opc_mask	0x7
   1420 #define COMP3op_code_bits	12
   1421 #define COMP3op_code_mask	0xf
   1422 
   1423 #define init_COMP3op				\
   1424 {						\
   1425   COMP3op_opcode,				\
   1426   COMP3op_src0_bits,	COMP3op_src0_mask,	\
   1427   COMP3op_src1_bits,	COMP3op_src1_mask,	\
   1428   COMP3op_dst_bits,	COMP3op_dst_mask,	\
   1429   COMP3op_opc_bits,	COMP3op_opc_mask,	\
   1430   COMP3op_code_bits,	COMP3op_code_mask	\
   1431 };
   1432 
   1433 /*  ccMV
   1434 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1435 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |.T.|.d.|.s.|.dst.......|.src.......|
   1436 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1437 */
   1438 
   1439 typedef struct
   1440 {
   1441   unsigned short opcode;
   1442   int bits_src;
   1443   int mask_src;
   1444   int bits_dst;
   1445   int mask_dst;
   1446   int bits_s;
   1447   int mask_s;
   1448   int bits_d;
   1449   int mask_d;
   1450   int bits_T;
   1451   int mask_T;
   1452   int bits_code;
   1453   int mask_code;
   1454 } CCmv;
   1455 
   1456 #define CCmv_opcode	0x0600
   1457 #define CCmv_src_bits	0
   1458 #define CCmv_src_mask	0x7
   1459 #define CCmv_dst_bits	3
   1460 #define CCmv_dst_mask	0x7
   1461 #define CCmv_s_bits	6
   1462 #define CCmv_s_mask	0x1
   1463 #define CCmv_d_bits	7
   1464 #define CCmv_d_mask	0x1
   1465 #define CCmv_T_bits	8
   1466 #define CCmv_T_mask	0x1
   1467 #define CCmv_code_bits	9
   1468 #define CCmv_code_mask	0x7f
   1469 
   1470 #define init_CCmv			\
   1471 {					\
   1472   CCmv_opcode,				\
   1473   CCmv_src_bits,	CCmv_src_mask,	\
   1474   CCmv_dst_bits,	CCmv_dst_mask,	\
   1475   CCmv_s_bits,		CCmv_s_mask,	\
   1476   CCmv_d_bits,		CCmv_d_mask,	\
   1477   CCmv_T_bits,		CCmv_T_mask,	\
   1478   CCmv_code_bits,	CCmv_code_mask	\
   1479 };
   1480 
   1481 
   1482 /*  CCflag
   1483 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1484 | 0 | 0 | 0 | 0 | 1 |.I.|.opc.......|.G.|.y.........|.x.........|
   1485 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1486 */
   1487 
   1488 typedef struct
   1489 {
   1490   unsigned short opcode;
   1491   int bits_x;
   1492   int mask_x;
   1493   int bits_y;
   1494   int mask_y;
   1495   int bits_G;
   1496   int mask_G;
   1497   int bits_opc;
   1498   int mask_opc;
   1499   int bits_I;
   1500   int mask_I;
   1501   int bits_code;
   1502   int mask_code;
   1503 } CCflag;
   1504 
   1505 #define CCflag_opcode		0x0800
   1506 #define CCflag_x_bits		0
   1507 #define CCflag_x_mask		0x7
   1508 #define CCflag_y_bits		3
   1509 #define CCflag_y_mask		0x7
   1510 #define CCflag_G_bits		6
   1511 #define CCflag_G_mask		0x1
   1512 #define CCflag_opc_bits		7
   1513 #define CCflag_opc_mask		0x7
   1514 #define CCflag_I_bits		10
   1515 #define CCflag_I_mask		0x1
   1516 #define CCflag_code_bits	11
   1517 #define CCflag_code_mask	0x1f
   1518 
   1519 #define init_CCflag				\
   1520 {						\
   1521   CCflag_opcode,				\
   1522   CCflag_x_bits,	CCflag_x_mask,		\
   1523   CCflag_y_bits,	CCflag_y_mask,		\
   1524   CCflag_G_bits,	CCflag_G_mask,		\
   1525   CCflag_opc_bits,	CCflag_opc_mask,	\
   1526   CCflag_I_bits,	CCflag_I_mask,		\
   1527   CCflag_code_bits,	CCflag_code_mask,	\
   1528 };
   1529 
   1530 
   1531 /*  CC2stat
   1532 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1533 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |.D.|.op....|.cbit..............|
   1534 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1535 */
   1536 
   1537 typedef struct
   1538 {
   1539   unsigned short opcode;
   1540   int bits_cbit;
   1541   int mask_cbit;
   1542   int bits_op;
   1543   int mask_op;
   1544   int bits_D;
   1545   int mask_D;
   1546   int bits_code;
   1547   int mask_code;
   1548 } CC2stat;
   1549 
   1550 #define CC2stat_opcode		0x0300
   1551 #define CC2stat_cbit_bits	0
   1552 #define CC2stat_cbit_mask	0x1f
   1553 #define CC2stat_op_bits		5
   1554 #define CC2stat_op_mask		0x3
   1555 #define CC2stat_D_bits		7
   1556 #define CC2stat_D_mask		0x1
   1557 #define CC2stat_code_bits	8
   1558 #define CC2stat_code_mask	0xff
   1559 
   1560 #define init_CC2stat				\
   1561 {						\
   1562   CC2stat_opcode,				\
   1563   CC2stat_cbit_bits,	CC2stat_cbit_mask,	\
   1564   CC2stat_op_bits,	CC2stat_op_mask,	\
   1565   CC2stat_D_bits,	CC2stat_D_mask,		\
   1566   CC2stat_code_bits,	CC2stat_code_mask	\
   1567 };
   1568 
   1569 
   1570 /*  REGMV
   1571 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1572 | 0 | 0 | 1 | 1 |.gd........|.gs........|.dst.......|.src.......|
   1573 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1574 */
   1575 
   1576 typedef struct
   1577 {
   1578   unsigned short opcode;
   1579   int bits_src;
   1580   int mask_src;
   1581   int bits_dst;
   1582   int mask_dst;
   1583   int bits_gs;
   1584   int mask_gs;
   1585   int bits_gd;
   1586   int mask_gd;
   1587   int bits_code;
   1588   int mask_code;
   1589 } RegMv;
   1590 
   1591 #define RegMv_opcode		0x3000
   1592 #define RegMv_src_bits		0
   1593 #define RegMv_src_mask		0x7
   1594 #define RegMv_dst_bits		3
   1595 #define RegMv_dst_mask		0x7
   1596 #define RegMv_gs_bits		6
   1597 #define RegMv_gs_mask		0x7
   1598 #define RegMv_gd_bits		9
   1599 #define RegMv_gd_mask		0x7
   1600 #define RegMv_code_bits		12
   1601 #define RegMv_code_mask		0xf
   1602 
   1603 #define init_RegMv			\
   1604 {					\
   1605   RegMv_opcode,				\
   1606   RegMv_src_bits,	RegMv_src_mask,	\
   1607   RegMv_dst_bits,	RegMv_dst_mask,	\
   1608   RegMv_gs_bits,	RegMv_gs_mask,	\
   1609   RegMv_gd_bits,	RegMv_gd_mask,	\
   1610   RegMv_code_bits,	RegMv_code_mask	\
   1611 };
   1612 
   1613 
   1614 /*  COMPI2opD
   1615 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1616 | 0 | 1 | 1 | 0 | 0 |.op|.isrc......................|.dst.......|
   1617 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1618 */
   1619 
   1620 typedef struct
   1621 {
   1622   unsigned short opcode;
   1623   int bits_dst;
   1624   int mask_dst;
   1625   int bits_src;
   1626   int mask_src;
   1627   int bits_op;
   1628   int mask_op;
   1629   int bits_code;
   1630   int mask_code;
   1631 } COMPI2opD;
   1632 
   1633 #define COMPI2opD_opcode	0x6000
   1634 #define COMPI2opD_dst_bits	0
   1635 #define COMPI2opD_dst_mask	0x7
   1636 #define COMPI2opD_src_bits	3
   1637 #define COMPI2opD_src_mask	0x7f
   1638 #define COMPI2opD_op_bits	10
   1639 #define COMPI2opD_op_mask	0x1
   1640 #define COMPI2opD_code_bits	11
   1641 #define COMPI2opD_code_mask	0x1f
   1642 
   1643 #define init_COMPI2opD				\
   1644 {						\
   1645   COMPI2opD_opcode,				\
   1646   COMPI2opD_dst_bits,	COMPI2opD_dst_mask,	\
   1647   COMPI2opD_src_bits,	COMPI2opD_src_mask,	\
   1648   COMPI2opD_op_bits,	COMPI2opD_op_mask,	\
   1649   COMPI2opD_code_bits,	COMPI2opD_code_mask	\
   1650 };
   1651 
   1652 /*  COMPI2opP
   1653 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1654 | 0 | 1 | 1 | 0 | 1 |.op|.src.......................|.dst.......|
   1655 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1656 */
   1657 
   1658 typedef COMPI2opD COMPI2opP;
   1659 
   1660 #define COMPI2opP_opcode 	0x6800
   1661 #define COMPI2opP_dst_bits	0
   1662 #define COMPI2opP_dst_mask	0x7
   1663 #define COMPI2opP_src_bits	3
   1664 #define COMPI2opP_src_mask	0x7f
   1665 #define COMPI2opP_op_bits	10
   1666 #define COMPI2opP_op_mask	0x1
   1667 #define COMPI2opP_code_bits	11
   1668 #define COMPI2opP_code_mask	0x1f
   1669 
   1670 #define init_COMPI2opP				\
   1671 {						\
   1672   COMPI2opP_opcode,				\
   1673   COMPI2opP_dst_bits,	COMPI2opP_dst_mask,	\
   1674   COMPI2opP_src_bits,	COMPI2opP_src_mask,	\
   1675   COMPI2opP_op_bits,	COMPI2opP_op_mask,	\
   1676   COMPI2opP_code_bits,	COMPI2opP_code_mask	\
   1677 };
   1678 
   1679 
   1680 /*  dagMODim
   1681 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1682 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 0 |.br| 1 | 1 |.op|.m.....|.i.....|
   1683 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1684 */
   1685 
   1686 typedef struct
   1687 {
   1688   unsigned short opcode;
   1689   int bits_i;
   1690   int mask_i;
   1691   int bits_m;
   1692   int mask_m;
   1693   int bits_op;
   1694   int mask_op;
   1695   int bits_code2;
   1696   int mask_code2;
   1697   int bits_br;
   1698   int mask_br;
   1699   int bits_code;
   1700   int mask_code;
   1701 } DagMODim;
   1702 
   1703 #define DagMODim_opcode		0x9e60
   1704 #define DagMODim_i_bits		0
   1705 #define DagMODim_i_mask		0x3
   1706 #define DagMODim_m_bits		2
   1707 #define DagMODim_m_mask		0x3
   1708 #define DagMODim_op_bits	4
   1709 #define DagMODim_op_mask	0x1
   1710 #define DagMODim_code2_bits	5
   1711 #define DagMODim_code2_mask	0x3
   1712 #define DagMODim_br_bits	7
   1713 #define DagMODim_br_mask	0x1
   1714 #define DagMODim_code_bits	8
   1715 #define DagMODim_code_mask	0xff
   1716 
   1717 #define init_DagMODim				\
   1718 {						\
   1719   DagMODim_opcode,				\
   1720   DagMODim_i_bits,	DagMODim_i_mask,	\
   1721   DagMODim_m_bits,	DagMODim_m_mask,	\
   1722   DagMODim_op_bits,	DagMODim_op_mask,	\
   1723   DagMODim_code2_bits,	DagMODim_code2_mask,	\
   1724   DagMODim_br_bits,	DagMODim_br_mask,	\
   1725   DagMODim_code_bits,	DagMODim_code_mask	\
   1726 };
   1727 
   1728 /*  dagMODik
   1729 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1730 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |.op....|.i.....|
   1731 +---+---+---+---|---+---+---+---|---+---+---+---|---+---+---+---+
   1732 */
   1733 
   1734 typedef struct
   1735 {
   1736   unsigned short opcode;
   1737   int bits_i;
   1738   int mask_i;
   1739   int bits_op;
   1740   int mask_op;
   1741   int bits_code;
   1742   int mask_code;
   1743 } DagMODik;
   1744 
   1745 #define DagMODik_opcode		0x9f60
   1746 #define DagMODik_i_bits		0
   1747 #define DagMODik_i_mask		0x3
   1748 #define DagMODik_op_bits	2
   1749 #define DagMODik_op_mask	0x3
   1750 #define DagMODik_code_bits	3
   1751 #define DagMODik_code_mask	0xfff
   1752 
   1753 #define init_DagMODik				\
   1754 {						\
   1755   DagMODik_opcode,				\
   1756   DagMODik_i_bits,	DagMODik_i_mask,	\
   1757   DagMODik_op_bits,	DagMODik_op_mask,	\
   1758   DagMODik_code_bits,	DagMODik_code_mask	\
   1759 };
   1760 
   1761 #endif
   1762