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