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