Initialize Tizen 2.3
[external/binutils.git] / include / opcode / tilegx.h
1 /* TILE-Gx opcode information.
2  *
3  *    Copyright 2011 Free Software Foundation, Inc.
4  *
5  *    This program is free software; you can redistribute it and/or modify
6  *    it under the terms of the GNU General Public License as published by
7  *    the Free Software Foundation; either version 3 of the License, or
8  *    (at your option) any later version.
9  *
10  *    This program is distributed in the hope that it will be useful,
11  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *    GNU General Public License for more details.
14  *
15  *    You should have received a copy of the GNU General Public License
16  *    along with this program; if not, write to the Free Software
17  *    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
18  *    MA 02110-1301, USA.
19  */
20
21 #ifndef opcode_tile_h
22 #define opcode_tile_h
23
24 typedef unsigned long long tilegx_bundle_bits;
25
26
27 enum
28 {
29   TILEGX_MAX_OPERANDS = 4 /* bfexts */
30 };
31
32 typedef enum
33 {
34   TILEGX_OPC_BPT,
35   TILEGX_OPC_INFO,
36   TILEGX_OPC_INFOL,
37   TILEGX_OPC_MOVE,
38   TILEGX_OPC_MOVEI,
39   TILEGX_OPC_MOVELI,
40   TILEGX_OPC_PREFETCH,
41   TILEGX_OPC_PREFETCH_ADD_L1,
42   TILEGX_OPC_PREFETCH_ADD_L1_FAULT,
43   TILEGX_OPC_PREFETCH_ADD_L2,
44   TILEGX_OPC_PREFETCH_ADD_L2_FAULT,
45   TILEGX_OPC_PREFETCH_ADD_L3,
46   TILEGX_OPC_PREFETCH_ADD_L3_FAULT,
47   TILEGX_OPC_PREFETCH_L1,
48   TILEGX_OPC_PREFETCH_L1_FAULT,
49   TILEGX_OPC_PREFETCH_L2,
50   TILEGX_OPC_PREFETCH_L2_FAULT,
51   TILEGX_OPC_PREFETCH_L3,
52   TILEGX_OPC_PREFETCH_L3_FAULT,
53   TILEGX_OPC_RAISE,
54   TILEGX_OPC_ADD,
55   TILEGX_OPC_ADDI,
56   TILEGX_OPC_ADDLI,
57   TILEGX_OPC_ADDX,
58   TILEGX_OPC_ADDXI,
59   TILEGX_OPC_ADDXLI,
60   TILEGX_OPC_ADDXSC,
61   TILEGX_OPC_AND,
62   TILEGX_OPC_ANDI,
63   TILEGX_OPC_BEQZ,
64   TILEGX_OPC_BEQZT,
65   TILEGX_OPC_BFEXTS,
66   TILEGX_OPC_BFEXTU,
67   TILEGX_OPC_BFINS,
68   TILEGX_OPC_BGEZ,
69   TILEGX_OPC_BGEZT,
70   TILEGX_OPC_BGTZ,
71   TILEGX_OPC_BGTZT,
72   TILEGX_OPC_BLBC,
73   TILEGX_OPC_BLBCT,
74   TILEGX_OPC_BLBS,
75   TILEGX_OPC_BLBST,
76   TILEGX_OPC_BLEZ,
77   TILEGX_OPC_BLEZT,
78   TILEGX_OPC_BLTZ,
79   TILEGX_OPC_BLTZT,
80   TILEGX_OPC_BNEZ,
81   TILEGX_OPC_BNEZT,
82   TILEGX_OPC_CLZ,
83   TILEGX_OPC_CMOVEQZ,
84   TILEGX_OPC_CMOVNEZ,
85   TILEGX_OPC_CMPEQ,
86   TILEGX_OPC_CMPEQI,
87   TILEGX_OPC_CMPEXCH,
88   TILEGX_OPC_CMPEXCH4,
89   TILEGX_OPC_CMPLES,
90   TILEGX_OPC_CMPLEU,
91   TILEGX_OPC_CMPLTS,
92   TILEGX_OPC_CMPLTSI,
93   TILEGX_OPC_CMPLTU,
94   TILEGX_OPC_CMPLTUI,
95   TILEGX_OPC_CMPNE,
96   TILEGX_OPC_CMUL,
97   TILEGX_OPC_CMULA,
98   TILEGX_OPC_CMULAF,
99   TILEGX_OPC_CMULF,
100   TILEGX_OPC_CMULFR,
101   TILEGX_OPC_CMULH,
102   TILEGX_OPC_CMULHR,
103   TILEGX_OPC_CRC32_32,
104   TILEGX_OPC_CRC32_8,
105   TILEGX_OPC_CTZ,
106   TILEGX_OPC_DBLALIGN,
107   TILEGX_OPC_DBLALIGN2,
108   TILEGX_OPC_DBLALIGN4,
109   TILEGX_OPC_DBLALIGN6,
110   TILEGX_OPC_DRAIN,
111   TILEGX_OPC_DTLBPR,
112   TILEGX_OPC_EXCH,
113   TILEGX_OPC_EXCH4,
114   TILEGX_OPC_FDOUBLE_ADD_FLAGS,
115   TILEGX_OPC_FDOUBLE_ADDSUB,
116   TILEGX_OPC_FDOUBLE_MUL_FLAGS,
117   TILEGX_OPC_FDOUBLE_PACK1,
118   TILEGX_OPC_FDOUBLE_PACK2,
119   TILEGX_OPC_FDOUBLE_SUB_FLAGS,
120   TILEGX_OPC_FDOUBLE_UNPACK_MAX,
121   TILEGX_OPC_FDOUBLE_UNPACK_MIN,
122   TILEGX_OPC_FETCHADD,
123   TILEGX_OPC_FETCHADD4,
124   TILEGX_OPC_FETCHADDGEZ,
125   TILEGX_OPC_FETCHADDGEZ4,
126   TILEGX_OPC_FETCHAND,
127   TILEGX_OPC_FETCHAND4,
128   TILEGX_OPC_FETCHOR,
129   TILEGX_OPC_FETCHOR4,
130   TILEGX_OPC_FINV,
131   TILEGX_OPC_FLUSH,
132   TILEGX_OPC_FLUSHWB,
133   TILEGX_OPC_FNOP,
134   TILEGX_OPC_FSINGLE_ADD1,
135   TILEGX_OPC_FSINGLE_ADDSUB2,
136   TILEGX_OPC_FSINGLE_MUL1,
137   TILEGX_OPC_FSINGLE_MUL2,
138   TILEGX_OPC_FSINGLE_PACK1,
139   TILEGX_OPC_FSINGLE_PACK2,
140   TILEGX_OPC_FSINGLE_SUB1,
141   TILEGX_OPC_ICOH,
142   TILEGX_OPC_ILL,
143   TILEGX_OPC_INV,
144   TILEGX_OPC_IRET,
145   TILEGX_OPC_J,
146   TILEGX_OPC_JAL,
147   TILEGX_OPC_JALR,
148   TILEGX_OPC_JALRP,
149   TILEGX_OPC_JR,
150   TILEGX_OPC_JRP,
151   TILEGX_OPC_LD,
152   TILEGX_OPC_LD1S,
153   TILEGX_OPC_LD1S_ADD,
154   TILEGX_OPC_LD1U,
155   TILEGX_OPC_LD1U_ADD,
156   TILEGX_OPC_LD2S,
157   TILEGX_OPC_LD2S_ADD,
158   TILEGX_OPC_LD2U,
159   TILEGX_OPC_LD2U_ADD,
160   TILEGX_OPC_LD4S,
161   TILEGX_OPC_LD4S_ADD,
162   TILEGX_OPC_LD4U,
163   TILEGX_OPC_LD4U_ADD,
164   TILEGX_OPC_LD_ADD,
165   TILEGX_OPC_LDNA,
166   TILEGX_OPC_LDNA_ADD,
167   TILEGX_OPC_LDNT,
168   TILEGX_OPC_LDNT1S,
169   TILEGX_OPC_LDNT1S_ADD,
170   TILEGX_OPC_LDNT1U,
171   TILEGX_OPC_LDNT1U_ADD,
172   TILEGX_OPC_LDNT2S,
173   TILEGX_OPC_LDNT2S_ADD,
174   TILEGX_OPC_LDNT2U,
175   TILEGX_OPC_LDNT2U_ADD,
176   TILEGX_OPC_LDNT4S,
177   TILEGX_OPC_LDNT4S_ADD,
178   TILEGX_OPC_LDNT4U,
179   TILEGX_OPC_LDNT4U_ADD,
180   TILEGX_OPC_LDNT_ADD,
181   TILEGX_OPC_LNK,
182   TILEGX_OPC_MF,
183   TILEGX_OPC_MFSPR,
184   TILEGX_OPC_MM,
185   TILEGX_OPC_MNZ,
186   TILEGX_OPC_MTSPR,
187   TILEGX_OPC_MUL_HS_HS,
188   TILEGX_OPC_MUL_HS_HU,
189   TILEGX_OPC_MUL_HS_LS,
190   TILEGX_OPC_MUL_HS_LU,
191   TILEGX_OPC_MUL_HU_HU,
192   TILEGX_OPC_MUL_HU_LS,
193   TILEGX_OPC_MUL_HU_LU,
194   TILEGX_OPC_MUL_LS_LS,
195   TILEGX_OPC_MUL_LS_LU,
196   TILEGX_OPC_MUL_LU_LU,
197   TILEGX_OPC_MULA_HS_HS,
198   TILEGX_OPC_MULA_HS_HU,
199   TILEGX_OPC_MULA_HS_LS,
200   TILEGX_OPC_MULA_HS_LU,
201   TILEGX_OPC_MULA_HU_HU,
202   TILEGX_OPC_MULA_HU_LS,
203   TILEGX_OPC_MULA_HU_LU,
204   TILEGX_OPC_MULA_LS_LS,
205   TILEGX_OPC_MULA_LS_LU,
206   TILEGX_OPC_MULA_LU_LU,
207   TILEGX_OPC_MULAX,
208   TILEGX_OPC_MULX,
209   TILEGX_OPC_MZ,
210   TILEGX_OPC_NAP,
211   TILEGX_OPC_NOP,
212   TILEGX_OPC_NOR,
213   TILEGX_OPC_OR,
214   TILEGX_OPC_ORI,
215   TILEGX_OPC_PCNT,
216   TILEGX_OPC_REVBITS,
217   TILEGX_OPC_REVBYTES,
218   TILEGX_OPC_ROTL,
219   TILEGX_OPC_ROTLI,
220   TILEGX_OPC_SHL,
221   TILEGX_OPC_SHL16INSLI,
222   TILEGX_OPC_SHL1ADD,
223   TILEGX_OPC_SHL1ADDX,
224   TILEGX_OPC_SHL2ADD,
225   TILEGX_OPC_SHL2ADDX,
226   TILEGX_OPC_SHL3ADD,
227   TILEGX_OPC_SHL3ADDX,
228   TILEGX_OPC_SHLI,
229   TILEGX_OPC_SHLX,
230   TILEGX_OPC_SHLXI,
231   TILEGX_OPC_SHRS,
232   TILEGX_OPC_SHRSI,
233   TILEGX_OPC_SHRU,
234   TILEGX_OPC_SHRUI,
235   TILEGX_OPC_SHRUX,
236   TILEGX_OPC_SHRUXI,
237   TILEGX_OPC_SHUFFLEBYTES,
238   TILEGX_OPC_ST,
239   TILEGX_OPC_ST1,
240   TILEGX_OPC_ST1_ADD,
241   TILEGX_OPC_ST2,
242   TILEGX_OPC_ST2_ADD,
243   TILEGX_OPC_ST4,
244   TILEGX_OPC_ST4_ADD,
245   TILEGX_OPC_ST_ADD,
246   TILEGX_OPC_STNT,
247   TILEGX_OPC_STNT1,
248   TILEGX_OPC_STNT1_ADD,
249   TILEGX_OPC_STNT2,
250   TILEGX_OPC_STNT2_ADD,
251   TILEGX_OPC_STNT4,
252   TILEGX_OPC_STNT4_ADD,
253   TILEGX_OPC_STNT_ADD,
254   TILEGX_OPC_SUB,
255   TILEGX_OPC_SUBX,
256   TILEGX_OPC_SUBXSC,
257   TILEGX_OPC_SWINT0,
258   TILEGX_OPC_SWINT1,
259   TILEGX_OPC_SWINT2,
260   TILEGX_OPC_SWINT3,
261   TILEGX_OPC_TBLIDXB0,
262   TILEGX_OPC_TBLIDXB1,
263   TILEGX_OPC_TBLIDXB2,
264   TILEGX_OPC_TBLIDXB3,
265   TILEGX_OPC_V1ADD,
266   TILEGX_OPC_V1ADDI,
267   TILEGX_OPC_V1ADDUC,
268   TILEGX_OPC_V1ADIFFU,
269   TILEGX_OPC_V1AVGU,
270   TILEGX_OPC_V1CMPEQ,
271   TILEGX_OPC_V1CMPEQI,
272   TILEGX_OPC_V1CMPLES,
273   TILEGX_OPC_V1CMPLEU,
274   TILEGX_OPC_V1CMPLTS,
275   TILEGX_OPC_V1CMPLTSI,
276   TILEGX_OPC_V1CMPLTU,
277   TILEGX_OPC_V1CMPLTUI,
278   TILEGX_OPC_V1CMPNE,
279   TILEGX_OPC_V1DDOTPU,
280   TILEGX_OPC_V1DDOTPUA,
281   TILEGX_OPC_V1DDOTPUS,
282   TILEGX_OPC_V1DDOTPUSA,
283   TILEGX_OPC_V1DOTP,
284   TILEGX_OPC_V1DOTPA,
285   TILEGX_OPC_V1DOTPU,
286   TILEGX_OPC_V1DOTPUA,
287   TILEGX_OPC_V1DOTPUS,
288   TILEGX_OPC_V1DOTPUSA,
289   TILEGX_OPC_V1INT_H,
290   TILEGX_OPC_V1INT_L,
291   TILEGX_OPC_V1MAXU,
292   TILEGX_OPC_V1MAXUI,
293   TILEGX_OPC_V1MINU,
294   TILEGX_OPC_V1MINUI,
295   TILEGX_OPC_V1MNZ,
296   TILEGX_OPC_V1MULTU,
297   TILEGX_OPC_V1MULU,
298   TILEGX_OPC_V1MULUS,
299   TILEGX_OPC_V1MZ,
300   TILEGX_OPC_V1SADAU,
301   TILEGX_OPC_V1SADU,
302   TILEGX_OPC_V1SHL,
303   TILEGX_OPC_V1SHLI,
304   TILEGX_OPC_V1SHRS,
305   TILEGX_OPC_V1SHRSI,
306   TILEGX_OPC_V1SHRU,
307   TILEGX_OPC_V1SHRUI,
308   TILEGX_OPC_V1SUB,
309   TILEGX_OPC_V1SUBUC,
310   TILEGX_OPC_V2ADD,
311   TILEGX_OPC_V2ADDI,
312   TILEGX_OPC_V2ADDSC,
313   TILEGX_OPC_V2ADIFFS,
314   TILEGX_OPC_V2AVGS,
315   TILEGX_OPC_V2CMPEQ,
316   TILEGX_OPC_V2CMPEQI,
317   TILEGX_OPC_V2CMPLES,
318   TILEGX_OPC_V2CMPLEU,
319   TILEGX_OPC_V2CMPLTS,
320   TILEGX_OPC_V2CMPLTSI,
321   TILEGX_OPC_V2CMPLTU,
322   TILEGX_OPC_V2CMPLTUI,
323   TILEGX_OPC_V2CMPNE,
324   TILEGX_OPC_V2DOTP,
325   TILEGX_OPC_V2DOTPA,
326   TILEGX_OPC_V2INT_H,
327   TILEGX_OPC_V2INT_L,
328   TILEGX_OPC_V2MAXS,
329   TILEGX_OPC_V2MAXSI,
330   TILEGX_OPC_V2MINS,
331   TILEGX_OPC_V2MINSI,
332   TILEGX_OPC_V2MNZ,
333   TILEGX_OPC_V2MULFSC,
334   TILEGX_OPC_V2MULS,
335   TILEGX_OPC_V2MULTS,
336   TILEGX_OPC_V2MZ,
337   TILEGX_OPC_V2PACKH,
338   TILEGX_OPC_V2PACKL,
339   TILEGX_OPC_V2PACKUC,
340   TILEGX_OPC_V2SADAS,
341   TILEGX_OPC_V2SADAU,
342   TILEGX_OPC_V2SADS,
343   TILEGX_OPC_V2SADU,
344   TILEGX_OPC_V2SHL,
345   TILEGX_OPC_V2SHLI,
346   TILEGX_OPC_V2SHLSC,
347   TILEGX_OPC_V2SHRS,
348   TILEGX_OPC_V2SHRSI,
349   TILEGX_OPC_V2SHRU,
350   TILEGX_OPC_V2SHRUI,
351   TILEGX_OPC_V2SUB,
352   TILEGX_OPC_V2SUBSC,
353   TILEGX_OPC_V4ADD,
354   TILEGX_OPC_V4ADDSC,
355   TILEGX_OPC_V4INT_H,
356   TILEGX_OPC_V4INT_L,
357   TILEGX_OPC_V4PACKSC,
358   TILEGX_OPC_V4SHL,
359   TILEGX_OPC_V4SHLSC,
360   TILEGX_OPC_V4SHRS,
361   TILEGX_OPC_V4SHRU,
362   TILEGX_OPC_V4SUB,
363   TILEGX_OPC_V4SUBSC,
364   TILEGX_OPC_WH64,
365   TILEGX_OPC_XOR,
366   TILEGX_OPC_XORI,
367   TILEGX_OPC_NONE
368 } tilegx_mnemonic;
369
370 /* 64-bit pattern for a { bpt ; nop } bundle. */
371 #define TILEGX_BPT_BUNDLE 0x286a44ae51485000ULL
372
373
374
375 static __inline unsigned int
376 get_BFEnd_X0(tilegx_bundle_bits num)
377 {
378   const unsigned int n = (unsigned int)num;
379   return (((n >> 12)) & 0x3f);
380 }
381
382 static __inline unsigned int
383 get_BFOpcodeExtension_X0(tilegx_bundle_bits num)
384 {
385   const unsigned int n = (unsigned int)num;
386   return (((n >> 24)) & 0xf);
387 }
388
389 static __inline unsigned int
390 get_BFStart_X0(tilegx_bundle_bits num)
391 {
392   const unsigned int n = (unsigned int)num;
393   return (((n >> 18)) & 0x3f);
394 }
395
396 static __inline unsigned int
397 get_BrOff_X1(tilegx_bundle_bits n)
398 {
399   return (((unsigned int)(n >> 31)) & 0x0000003f) |
400          (((unsigned int)(n >> 37)) & 0x0001ffc0);
401 }
402
403 static __inline unsigned int
404 get_BrType_X1(tilegx_bundle_bits n)
405 {
406   return (((unsigned int)(n >> 54)) & 0x1f);
407 }
408
409 static __inline unsigned int
410 get_Dest_Imm8_X1(tilegx_bundle_bits n)
411 {
412   return (((unsigned int)(n >> 31)) & 0x0000003f) |
413          (((unsigned int)(n >> 43)) & 0x000000c0);
414 }
415
416 static __inline unsigned int
417 get_Dest_X0(tilegx_bundle_bits num)
418 {
419   const unsigned int n = (unsigned int)num;
420   return (((n >> 0)) & 0x3f);
421 }
422
423 static __inline unsigned int
424 get_Dest_X1(tilegx_bundle_bits n)
425 {
426   return (((unsigned int)(n >> 31)) & 0x3f);
427 }
428
429 static __inline unsigned int
430 get_Dest_Y0(tilegx_bundle_bits num)
431 {
432   const unsigned int n = (unsigned int)num;
433   return (((n >> 0)) & 0x3f);
434 }
435
436 static __inline unsigned int
437 get_Dest_Y1(tilegx_bundle_bits n)
438 {
439   return (((unsigned int)(n >> 31)) & 0x3f);
440 }
441
442 static __inline unsigned int
443 get_Imm16_X0(tilegx_bundle_bits num)
444 {
445   const unsigned int n = (unsigned int)num;
446   return (((n >> 12)) & 0xffff);
447 }
448
449 static __inline unsigned int
450 get_Imm16_X1(tilegx_bundle_bits n)
451 {
452   return (((unsigned int)(n >> 43)) & 0xffff);
453 }
454
455 static __inline unsigned int
456 get_Imm8OpcodeExtension_X0(tilegx_bundle_bits num)
457 {
458   const unsigned int n = (unsigned int)num;
459   return (((n >> 20)) & 0xff);
460 }
461
462 static __inline unsigned int
463 get_Imm8OpcodeExtension_X1(tilegx_bundle_bits n)
464 {
465   return (((unsigned int)(n >> 51)) & 0xff);
466 }
467
468 static __inline unsigned int
469 get_Imm8_X0(tilegx_bundle_bits num)
470 {
471   const unsigned int n = (unsigned int)num;
472   return (((n >> 12)) & 0xff);
473 }
474
475 static __inline unsigned int
476 get_Imm8_X1(tilegx_bundle_bits n)
477 {
478   return (((unsigned int)(n >> 43)) & 0xff);
479 }
480
481 static __inline unsigned int
482 get_Imm8_Y0(tilegx_bundle_bits num)
483 {
484   const unsigned int n = (unsigned int)num;
485   return (((n >> 12)) & 0xff);
486 }
487
488 static __inline unsigned int
489 get_Imm8_Y1(tilegx_bundle_bits n)
490 {
491   return (((unsigned int)(n >> 43)) & 0xff);
492 }
493
494 static __inline unsigned int
495 get_JumpOff_X1(tilegx_bundle_bits n)
496 {
497   return (((unsigned int)(n >> 31)) & 0x7ffffff);
498 }
499
500 static __inline unsigned int
501 get_JumpOpcodeExtension_X1(tilegx_bundle_bits n)
502 {
503   return (((unsigned int)(n >> 58)) & 0x1);
504 }
505
506 static __inline unsigned int
507 get_MF_Imm14_X1(tilegx_bundle_bits n)
508 {
509   return (((unsigned int)(n >> 37)) & 0x3fff);
510 }
511
512 static __inline unsigned int
513 get_MT_Imm14_X1(tilegx_bundle_bits n)
514 {
515   return (((unsigned int)(n >> 31)) & 0x0000003f) |
516          (((unsigned int)(n >> 37)) & 0x00003fc0);
517 }
518
519 static __inline unsigned int
520 get_Mode(tilegx_bundle_bits n)
521 {
522   return (((unsigned int)(n >> 62)) & 0x3);
523 }
524
525 static __inline unsigned int
526 get_Opcode_X0(tilegx_bundle_bits num)
527 {
528   const unsigned int n = (unsigned int)num;
529   return (((n >> 28)) & 0x7);
530 }
531
532 static __inline unsigned int
533 get_Opcode_X1(tilegx_bundle_bits n)
534 {
535   return (((unsigned int)(n >> 59)) & 0x7);
536 }
537
538 static __inline unsigned int
539 get_Opcode_Y0(tilegx_bundle_bits num)
540 {
541   const unsigned int n = (unsigned int)num;
542   return (((n >> 27)) & 0xf);
543 }
544
545 static __inline unsigned int
546 get_Opcode_Y1(tilegx_bundle_bits n)
547 {
548   return (((unsigned int)(n >> 58)) & 0xf);
549 }
550
551 static __inline unsigned int
552 get_Opcode_Y2(tilegx_bundle_bits n)
553 {
554   return (((n >> 26)) & 0x00000001) |
555          (((unsigned int)(n >> 56)) & 0x00000002);
556 }
557
558 static __inline unsigned int
559 get_RRROpcodeExtension_X0(tilegx_bundle_bits num)
560 {
561   const unsigned int n = (unsigned int)num;
562   return (((n >> 18)) & 0x3ff);
563 }
564
565 static __inline unsigned int
566 get_RRROpcodeExtension_X1(tilegx_bundle_bits n)
567 {
568   return (((unsigned int)(n >> 49)) & 0x3ff);
569 }
570
571 static __inline unsigned int
572 get_RRROpcodeExtension_Y0(tilegx_bundle_bits num)
573 {
574   const unsigned int n = (unsigned int)num;
575   return (((n >> 18)) & 0x3);
576 }
577
578 static __inline unsigned int
579 get_RRROpcodeExtension_Y1(tilegx_bundle_bits n)
580 {
581   return (((unsigned int)(n >> 49)) & 0x3);
582 }
583
584 static __inline unsigned int
585 get_ShAmt_X0(tilegx_bundle_bits num)
586 {
587   const unsigned int n = (unsigned int)num;
588   return (((n >> 12)) & 0x3f);
589 }
590
591 static __inline unsigned int
592 get_ShAmt_X1(tilegx_bundle_bits n)
593 {
594   return (((unsigned int)(n >> 43)) & 0x3f);
595 }
596
597 static __inline unsigned int
598 get_ShAmt_Y0(tilegx_bundle_bits num)
599 {
600   const unsigned int n = (unsigned int)num;
601   return (((n >> 12)) & 0x3f);
602 }
603
604 static __inline unsigned int
605 get_ShAmt_Y1(tilegx_bundle_bits n)
606 {
607   return (((unsigned int)(n >> 43)) & 0x3f);
608 }
609
610 static __inline unsigned int
611 get_ShiftOpcodeExtension_X0(tilegx_bundle_bits num)
612 {
613   const unsigned int n = (unsigned int)num;
614   return (((n >> 18)) & 0x3ff);
615 }
616
617 static __inline unsigned int
618 get_ShiftOpcodeExtension_X1(tilegx_bundle_bits n)
619 {
620   return (((unsigned int)(n >> 49)) & 0x3ff);
621 }
622
623 static __inline unsigned int
624 get_ShiftOpcodeExtension_Y0(tilegx_bundle_bits num)
625 {
626   const unsigned int n = (unsigned int)num;
627   return (((n >> 18)) & 0x3);
628 }
629
630 static __inline unsigned int
631 get_ShiftOpcodeExtension_Y1(tilegx_bundle_bits n)
632 {
633   return (((unsigned int)(n >> 49)) & 0x3);
634 }
635
636 static __inline unsigned int
637 get_SrcA_X0(tilegx_bundle_bits num)
638 {
639   const unsigned int n = (unsigned int)num;
640   return (((n >> 6)) & 0x3f);
641 }
642
643 static __inline unsigned int
644 get_SrcA_X1(tilegx_bundle_bits n)
645 {
646   return (((unsigned int)(n >> 37)) & 0x3f);
647 }
648
649 static __inline unsigned int
650 get_SrcA_Y0(tilegx_bundle_bits num)
651 {
652   const unsigned int n = (unsigned int)num;
653   return (((n >> 6)) & 0x3f);
654 }
655
656 static __inline unsigned int
657 get_SrcA_Y1(tilegx_bundle_bits n)
658 {
659   return (((unsigned int)(n >> 37)) & 0x3f);
660 }
661
662 static __inline unsigned int
663 get_SrcA_Y2(tilegx_bundle_bits num)
664 {
665   const unsigned int n = (unsigned int)num;
666   return (((n >> 20)) & 0x3f);
667 }
668
669 static __inline unsigned int
670 get_SrcBDest_Y2(tilegx_bundle_bits n)
671 {
672   return (((unsigned int)(n >> 51)) & 0x3f);
673 }
674
675 static __inline unsigned int
676 get_SrcB_X0(tilegx_bundle_bits num)
677 {
678   const unsigned int n = (unsigned int)num;
679   return (((n >> 12)) & 0x3f);
680 }
681
682 static __inline unsigned int
683 get_SrcB_X1(tilegx_bundle_bits n)
684 {
685   return (((unsigned int)(n >> 43)) & 0x3f);
686 }
687
688 static __inline unsigned int
689 get_SrcB_Y0(tilegx_bundle_bits num)
690 {
691   const unsigned int n = (unsigned int)num;
692   return (((n >> 12)) & 0x3f);
693 }
694
695 static __inline unsigned int
696 get_SrcB_Y1(tilegx_bundle_bits n)
697 {
698   return (((unsigned int)(n >> 43)) & 0x3f);
699 }
700
701 static __inline unsigned int
702 get_UnaryOpcodeExtension_X0(tilegx_bundle_bits num)
703 {
704   const unsigned int n = (unsigned int)num;
705   return (((n >> 12)) & 0x3f);
706 }
707
708 static __inline unsigned int
709 get_UnaryOpcodeExtension_X1(tilegx_bundle_bits n)
710 {
711   return (((unsigned int)(n >> 43)) & 0x3f);
712 }
713
714 static __inline unsigned int
715 get_UnaryOpcodeExtension_Y0(tilegx_bundle_bits num)
716 {
717   const unsigned int n = (unsigned int)num;
718   return (((n >> 12)) & 0x3f);
719 }
720
721 static __inline unsigned int
722 get_UnaryOpcodeExtension_Y1(tilegx_bundle_bits n)
723 {
724   return (((unsigned int)(n >> 43)) & 0x3f);
725 }
726
727
728 static __inline int
729 sign_extend(int n, int num_bits)
730 {
731   int shift = (int)(sizeof(int) * 8 - num_bits);
732   return (n << shift) >> shift;
733 }
734
735
736
737 static __inline tilegx_bundle_bits
738 create_BFEnd_X0(int num)
739 {
740   const unsigned int n = (unsigned int)num;
741   return ((n & 0x3f) << 12);
742 }
743
744 static __inline tilegx_bundle_bits
745 create_BFOpcodeExtension_X0(int num)
746 {
747   const unsigned int n = (unsigned int)num;
748   return ((n & 0xf) << 24);
749 }
750
751 static __inline tilegx_bundle_bits
752 create_BFStart_X0(int num)
753 {
754   const unsigned int n = (unsigned int)num;
755   return ((n & 0x3f) << 18);
756 }
757
758 static __inline tilegx_bundle_bits
759 create_BrOff_X1(int num)
760 {
761   const unsigned int n = (unsigned int)num;
762   return (((tilegx_bundle_bits)(n & 0x0000003f)) << 31) |
763          (((tilegx_bundle_bits)(n & 0x0001ffc0)) << 37);
764 }
765
766 static __inline tilegx_bundle_bits
767 create_BrType_X1(int num)
768 {
769   const unsigned int n = (unsigned int)num;
770   return (((tilegx_bundle_bits)(n & 0x1f)) << 54);
771 }
772
773 static __inline tilegx_bundle_bits
774 create_Dest_Imm8_X1(int num)
775 {
776   const unsigned int n = (unsigned int)num;
777   return (((tilegx_bundle_bits)(n & 0x0000003f)) << 31) |
778          (((tilegx_bundle_bits)(n & 0x000000c0)) << 43);
779 }
780
781 static __inline tilegx_bundle_bits
782 create_Dest_X0(int num)
783 {
784   const unsigned int n = (unsigned int)num;
785   return ((n & 0x3f) << 0);
786 }
787
788 static __inline tilegx_bundle_bits
789 create_Dest_X1(int num)
790 {
791   const unsigned int n = (unsigned int)num;
792   return (((tilegx_bundle_bits)(n & 0x3f)) << 31);
793 }
794
795 static __inline tilegx_bundle_bits
796 create_Dest_Y0(int num)
797 {
798   const unsigned int n = (unsigned int)num;
799   return ((n & 0x3f) << 0);
800 }
801
802 static __inline tilegx_bundle_bits
803 create_Dest_Y1(int num)
804 {
805   const unsigned int n = (unsigned int)num;
806   return (((tilegx_bundle_bits)(n & 0x3f)) << 31);
807 }
808
809 static __inline tilegx_bundle_bits
810 create_Imm16_X0(int num)
811 {
812   const unsigned int n = (unsigned int)num;
813   return ((n & 0xffff) << 12);
814 }
815
816 static __inline tilegx_bundle_bits
817 create_Imm16_X1(int num)
818 {
819   const unsigned int n = (unsigned int)num;
820   return (((tilegx_bundle_bits)(n & 0xffff)) << 43);
821 }
822
823 static __inline tilegx_bundle_bits
824 create_Imm8OpcodeExtension_X0(int num)
825 {
826   const unsigned int n = (unsigned int)num;
827   return ((n & 0xff) << 20);
828 }
829
830 static __inline tilegx_bundle_bits
831 create_Imm8OpcodeExtension_X1(int num)
832 {
833   const unsigned int n = (unsigned int)num;
834   return (((tilegx_bundle_bits)(n & 0xff)) << 51);
835 }
836
837 static __inline tilegx_bundle_bits
838 create_Imm8_X0(int num)
839 {
840   const unsigned int n = (unsigned int)num;
841   return ((n & 0xff) << 12);
842 }
843
844 static __inline tilegx_bundle_bits
845 create_Imm8_X1(int num)
846 {
847   const unsigned int n = (unsigned int)num;
848   return (((tilegx_bundle_bits)(n & 0xff)) << 43);
849 }
850
851 static __inline tilegx_bundle_bits
852 create_Imm8_Y0(int num)
853 {
854   const unsigned int n = (unsigned int)num;
855   return ((n & 0xff) << 12);
856 }
857
858 static __inline tilegx_bundle_bits
859 create_Imm8_Y1(int num)
860 {
861   const unsigned int n = (unsigned int)num;
862   return (((tilegx_bundle_bits)(n & 0xff)) << 43);
863 }
864
865 static __inline tilegx_bundle_bits
866 create_JumpOff_X1(int num)
867 {
868   const unsigned int n = (unsigned int)num;
869   return (((tilegx_bundle_bits)(n & 0x7ffffff)) << 31);
870 }
871
872 static __inline tilegx_bundle_bits
873 create_JumpOpcodeExtension_X1(int num)
874 {
875   const unsigned int n = (unsigned int)num;
876   return (((tilegx_bundle_bits)(n & 0x1)) << 58);
877 }
878
879 static __inline tilegx_bundle_bits
880 create_MF_Imm14_X1(int num)
881 {
882   const unsigned int n = (unsigned int)num;
883   return (((tilegx_bundle_bits)(n & 0x3fff)) << 37);
884 }
885
886 static __inline tilegx_bundle_bits
887 create_MT_Imm14_X1(int num)
888 {
889   const unsigned int n = (unsigned int)num;
890   return (((tilegx_bundle_bits)(n & 0x0000003f)) << 31) |
891          (((tilegx_bundle_bits)(n & 0x00003fc0)) << 37);
892 }
893
894 static __inline tilegx_bundle_bits
895 create_Mode(int num)
896 {
897   const unsigned int n = (unsigned int)num;
898   return (((tilegx_bundle_bits)(n & 0x3)) << 62);
899 }
900
901 static __inline tilegx_bundle_bits
902 create_Opcode_X0(int num)
903 {
904   const unsigned int n = (unsigned int)num;
905   return ((n & 0x7) << 28);
906 }
907
908 static __inline tilegx_bundle_bits
909 create_Opcode_X1(int num)
910 {
911   const unsigned int n = (unsigned int)num;
912   return (((tilegx_bundle_bits)(n & 0x7)) << 59);
913 }
914
915 static __inline tilegx_bundle_bits
916 create_Opcode_Y0(int num)
917 {
918   const unsigned int n = (unsigned int)num;
919   return ((n & 0xf) << 27);
920 }
921
922 static __inline tilegx_bundle_bits
923 create_Opcode_Y1(int num)
924 {
925   const unsigned int n = (unsigned int)num;
926   return (((tilegx_bundle_bits)(n & 0xf)) << 58);
927 }
928
929 static __inline tilegx_bundle_bits
930 create_Opcode_Y2(int num)
931 {
932   const unsigned int n = (unsigned int)num;
933   return ((n & 0x00000001) << 26) |
934          (((tilegx_bundle_bits)(n & 0x00000002)) << 56);
935 }
936
937 static __inline tilegx_bundle_bits
938 create_RRROpcodeExtension_X0(int num)
939 {
940   const unsigned int n = (unsigned int)num;
941   return ((n & 0x3ff) << 18);
942 }
943
944 static __inline tilegx_bundle_bits
945 create_RRROpcodeExtension_X1(int num)
946 {
947   const unsigned int n = (unsigned int)num;
948   return (((tilegx_bundle_bits)(n & 0x3ff)) << 49);
949 }
950
951 static __inline tilegx_bundle_bits
952 create_RRROpcodeExtension_Y0(int num)
953 {
954   const unsigned int n = (unsigned int)num;
955   return ((n & 0x3) << 18);
956 }
957
958 static __inline tilegx_bundle_bits
959 create_RRROpcodeExtension_Y1(int num)
960 {
961   const unsigned int n = (unsigned int)num;
962   return (((tilegx_bundle_bits)(n & 0x3)) << 49);
963 }
964
965 static __inline tilegx_bundle_bits
966 create_ShAmt_X0(int num)
967 {
968   const unsigned int n = (unsigned int)num;
969   return ((n & 0x3f) << 12);
970 }
971
972 static __inline tilegx_bundle_bits
973 create_ShAmt_X1(int num)
974 {
975   const unsigned int n = (unsigned int)num;
976   return (((tilegx_bundle_bits)(n & 0x3f)) << 43);
977 }
978
979 static __inline tilegx_bundle_bits
980 create_ShAmt_Y0(int num)
981 {
982   const unsigned int n = (unsigned int)num;
983   return ((n & 0x3f) << 12);
984 }
985
986 static __inline tilegx_bundle_bits
987 create_ShAmt_Y1(int num)
988 {
989   const unsigned int n = (unsigned int)num;
990   return (((tilegx_bundle_bits)(n & 0x3f)) << 43);
991 }
992
993 static __inline tilegx_bundle_bits
994 create_ShiftOpcodeExtension_X0(int num)
995 {
996   const unsigned int n = (unsigned int)num;
997   return ((n & 0x3ff) << 18);
998 }
999
1000 static __inline tilegx_bundle_bits
1001 create_ShiftOpcodeExtension_X1(int num)
1002 {
1003   const unsigned int n = (unsigned int)num;
1004   return (((tilegx_bundle_bits)(n & 0x3ff)) << 49);
1005 }
1006
1007 static __inline tilegx_bundle_bits
1008 create_ShiftOpcodeExtension_Y0(int num)
1009 {
1010   const unsigned int n = (unsigned int)num;
1011   return ((n & 0x3) << 18);
1012 }
1013
1014 static __inline tilegx_bundle_bits
1015 create_ShiftOpcodeExtension_Y1(int num)
1016 {
1017   const unsigned int n = (unsigned int)num;
1018   return (((tilegx_bundle_bits)(n & 0x3)) << 49);
1019 }
1020
1021 static __inline tilegx_bundle_bits
1022 create_SrcA_X0(int num)
1023 {
1024   const unsigned int n = (unsigned int)num;
1025   return ((n & 0x3f) << 6);
1026 }
1027
1028 static __inline tilegx_bundle_bits
1029 create_SrcA_X1(int num)
1030 {
1031   const unsigned int n = (unsigned int)num;
1032   return (((tilegx_bundle_bits)(n & 0x3f)) << 37);
1033 }
1034
1035 static __inline tilegx_bundle_bits
1036 create_SrcA_Y0(int num)
1037 {
1038   const unsigned int n = (unsigned int)num;
1039   return ((n & 0x3f) << 6);
1040 }
1041
1042 static __inline tilegx_bundle_bits
1043 create_SrcA_Y1(int num)
1044 {
1045   const unsigned int n = (unsigned int)num;
1046   return (((tilegx_bundle_bits)(n & 0x3f)) << 37);
1047 }
1048
1049 static __inline tilegx_bundle_bits
1050 create_SrcA_Y2(int num)
1051 {
1052   const unsigned int n = (unsigned int)num;
1053   return ((n & 0x3f) << 20);
1054 }
1055
1056 static __inline tilegx_bundle_bits
1057 create_SrcBDest_Y2(int num)
1058 {
1059   const unsigned int n = (unsigned int)num;
1060   return (((tilegx_bundle_bits)(n & 0x3f)) << 51);
1061 }
1062
1063 static __inline tilegx_bundle_bits
1064 create_SrcB_X0(int num)
1065 {
1066   const unsigned int n = (unsigned int)num;
1067   return ((n & 0x3f) << 12);
1068 }
1069
1070 static __inline tilegx_bundle_bits
1071 create_SrcB_X1(int num)
1072 {
1073   const unsigned int n = (unsigned int)num;
1074   return (((tilegx_bundle_bits)(n & 0x3f)) << 43);
1075 }
1076
1077 static __inline tilegx_bundle_bits
1078 create_SrcB_Y0(int num)
1079 {
1080   const unsigned int n = (unsigned int)num;
1081   return ((n & 0x3f) << 12);
1082 }
1083
1084 static __inline tilegx_bundle_bits
1085 create_SrcB_Y1(int num)
1086 {
1087   const unsigned int n = (unsigned int)num;
1088   return (((tilegx_bundle_bits)(n & 0x3f)) << 43);
1089 }
1090
1091 static __inline tilegx_bundle_bits
1092 create_UnaryOpcodeExtension_X0(int num)
1093 {
1094   const unsigned int n = (unsigned int)num;
1095   return ((n & 0x3f) << 12);
1096 }
1097
1098 static __inline tilegx_bundle_bits
1099 create_UnaryOpcodeExtension_X1(int num)
1100 {
1101   const unsigned int n = (unsigned int)num;
1102   return (((tilegx_bundle_bits)(n & 0x3f)) << 43);
1103 }
1104
1105 static __inline tilegx_bundle_bits
1106 create_UnaryOpcodeExtension_Y0(int num)
1107 {
1108   const unsigned int n = (unsigned int)num;
1109   return ((n & 0x3f) << 12);
1110 }
1111
1112 static __inline tilegx_bundle_bits
1113 create_UnaryOpcodeExtension_Y1(int num)
1114 {
1115   const unsigned int n = (unsigned int)num;
1116   return (((tilegx_bundle_bits)(n & 0x3f)) << 43);
1117 }
1118
1119
1120 typedef enum
1121 {
1122   TILEGX_PIPELINE_X0,
1123   TILEGX_PIPELINE_X1,
1124   TILEGX_PIPELINE_Y0,
1125   TILEGX_PIPELINE_Y1,
1126   TILEGX_PIPELINE_Y2,
1127 } tilegx_pipeline;
1128
1129 #define tilegx_is_x_pipeline(p) ((int)(p) <= (int)TILEGX_PIPELINE_X1)
1130
1131 typedef enum
1132 {
1133   TILEGX_OP_TYPE_REGISTER,
1134   TILEGX_OP_TYPE_IMMEDIATE,
1135   TILEGX_OP_TYPE_ADDRESS,
1136   TILEGX_OP_TYPE_SPR
1137 } tilegx_operand_type;
1138
1139 /* These are the bits that determine if a bundle is in the X encoding. */
1140 #define TILEGX_BUNDLE_MODE_MASK ((tilegx_bundle_bits)3 << 62)
1141
1142 enum
1143 {
1144   /* Maximum number of instructions in a bundle (2 for X, 3 for Y). */
1145   TILEGX_MAX_INSTRUCTIONS_PER_BUNDLE = 3,
1146
1147   /* How many different pipeline encodings are there? X0, X1, Y0, Y1, Y2. */
1148   TILEGX_NUM_PIPELINE_ENCODINGS = 5,
1149
1150   /* Log base 2 of TILEGX_BUNDLE_SIZE_IN_BYTES. */
1151   TILEGX_LOG2_BUNDLE_SIZE_IN_BYTES = 3,
1152
1153   /* Instructions take this many bytes. */
1154   TILEGX_BUNDLE_SIZE_IN_BYTES = 1 << TILEGX_LOG2_BUNDLE_SIZE_IN_BYTES,
1155
1156   /* Log base 2 of TILEGX_BUNDLE_ALIGNMENT_IN_BYTES. */
1157   TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES = 3,
1158
1159   /* Bundles should be aligned modulo this number of bytes. */
1160   TILEGX_BUNDLE_ALIGNMENT_IN_BYTES =
1161     (1 << TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES),
1162
1163   /* Number of registers (some are magic, such as network I/O). */
1164   TILEGX_NUM_REGISTERS = 64,
1165 };
1166
1167
1168 struct tilegx_operand
1169 {
1170   /* Is this operand a register, immediate or address? */
1171   tilegx_operand_type type;
1172
1173   /* The default relocation type for this operand.  */
1174   signed int default_reloc : 16;
1175
1176   /* How many bits is this value? (used for range checking) */
1177   unsigned int num_bits : 5;
1178
1179   /* Is the value signed? (used for range checking) */
1180   unsigned int is_signed : 1;
1181
1182   /* Is this operand a source register? */
1183   unsigned int is_src_reg : 1;
1184
1185   /* Is this operand written? (i.e. is it a destination register) */
1186   unsigned int is_dest_reg : 1;
1187
1188   /* Is this operand PC-relative? */
1189   unsigned int is_pc_relative : 1;
1190
1191   /* By how many bits do we right shift the value before inserting? */
1192   unsigned int rightshift : 2;
1193
1194   /* Return the bits for this operand to be ORed into an existing bundle. */
1195   tilegx_bundle_bits (*insert) (int op);
1196
1197   /* Extract this operand and return it. */
1198   unsigned int (*extract) (tilegx_bundle_bits bundle);
1199 };
1200
1201
1202 extern const struct tilegx_operand tilegx_operands[];
1203
1204 /* One finite-state machine per pipe for rapid instruction decoding. */
1205 extern const unsigned short * const
1206 tilegx_bundle_decoder_fsms[TILEGX_NUM_PIPELINE_ENCODINGS];
1207
1208
1209 struct tilegx_opcode
1210 {
1211   /* The opcode mnemonic, e.g. "add" */
1212   const char *name;
1213
1214   /* The enum value for this mnemonic. */
1215   tilegx_mnemonic mnemonic;
1216
1217   /* A bit mask of which of the five pipes this instruction
1218      is compatible with:
1219      X0  0x01
1220      X1  0x02
1221      Y0  0x04
1222      Y1  0x08
1223      Y2  0x10 */
1224   unsigned char pipes;
1225
1226   /* How many operands are there? */
1227   unsigned char num_operands;
1228
1229   /* Which register does this write implicitly, or TREG_ZERO if none? */
1230   unsigned char implicitly_written_register;
1231
1232   /* Can this be bundled with other instructions (almost always true). */
1233   unsigned char can_bundle;
1234
1235   /* The description of the operands. Each of these is an
1236    * index into the tilegx_operands[] table. */
1237   unsigned char operands[TILEGX_NUM_PIPELINE_ENCODINGS][TILEGX_MAX_OPERANDS];
1238
1239 #if !defined(__KERNEL__) && !defined(_LIBC)
1240   /* A mask of which bits have predefined values for each pipeline.
1241    * This is useful for disassembly. */
1242   tilegx_bundle_bits fixed_bit_masks[TILEGX_NUM_PIPELINE_ENCODINGS];
1243
1244   /* For each bit set in fixed_bit_masks, what the value is for this
1245    * instruction. */
1246   tilegx_bundle_bits fixed_bit_values[TILEGX_NUM_PIPELINE_ENCODINGS];
1247 #endif
1248 };
1249
1250 extern const struct tilegx_opcode tilegx_opcodes[];
1251
1252 /* Used for non-textual disassembly into structs. */
1253 struct tilegx_decoded_instruction
1254 {
1255   const struct tilegx_opcode *opcode;
1256   const struct tilegx_operand *operands[TILEGX_MAX_OPERANDS];
1257   long long operand_values[TILEGX_MAX_OPERANDS];
1258 };
1259
1260
1261 /* Disassemble a bundle into a struct for machine processing. */
1262 extern int parse_insn_tilegx(tilegx_bundle_bits bits,
1263                              unsigned long long pc,
1264                              struct tilegx_decoded_instruction
1265                              decoded[TILEGX_MAX_INSTRUCTIONS_PER_BUNDLE]);
1266
1267
1268 #if !defined(__KERNEL__) && !defined(_LIBC)
1269 /* Canonical names of all the registers. */
1270 /* ISSUE: This table lives in "tile-dis.c" */
1271 extern const char * const tilegx_register_names[];
1272
1273 /* Descriptor for a special-purpose register. */
1274 struct tilegx_spr
1275 {
1276   /* The number */
1277   int number;
1278
1279   /* The name */
1280   const char *name;
1281 };
1282
1283 /* List of all the SPRs; ordered by increasing number. */
1284 extern const struct tilegx_spr tilegx_sprs[];
1285
1286 /* Number of special-purpose registers. */
1287 extern const int tilegx_num_sprs;
1288
1289 extern const char *
1290 get_tilegx_spr_name (int num);
1291 #endif /* !__KERNEL__ && !_LIBC */
1292
1293 /* Make a few "tile_" variables to simply common code between
1294    architectures.  */
1295
1296 typedef tilegx_bundle_bits tile_bundle_bits;
1297 #define TILE_BUNDLE_SIZE_IN_BYTES TILEGX_BUNDLE_SIZE_IN_BYTES
1298 #define TILE_BUNDLE_ALIGNMENT_IN_BYTES TILEGX_BUNDLE_ALIGNMENT_IN_BYTES
1299 #define TILE_LOG2_BUNDLE_ALIGNMENT_IN_BYTES \
1300   TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES
1301
1302 #endif /* opcode_tilegx_h */