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