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