Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. /* bfin.h -- Header file for ADI Blackfin opcode table
  2.    Copyright 2005, 2010, 2011 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.