1 
2 /*---------------------------------------------------------------*/
3 /*--- begin             Tilegx disassembler   tilegx-disasm.c ---*/
4 /*---------------------------------------------------------------*/
5 
6 /*
7    This file is part of Valgrind, a dynamic binary instrumentation
8    framework.
9 
10    Copyright Tilera Corp. 2010-2013
11 
12    This program is free software; you can redistribute it and/or
13    modify it under the terms of the GNU General Public License as
14    published by the Free Software Foundation; either version 2 of the
15    License, or (at your option) any later version.
16 
17    This program is distributed in the hope that it will be useful, but
18    WITHOUT ANY WARRANTY; without even the implied warranty of
19    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20    General Public License for more details.
21 
22    You should have received a copy of the GNU General Public License
23    along with this program; if not, write to the Free Software
24    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
25    02110-1301, USA.
26 
27    The GNU General Public License is contained in the file COPYING.
28 */
29 
30  /* Contributed by Zhi-Gang Liu <zliu at tilera dot com> */
31 
32 #include "tilegx_disasm.h"
33 #include <stdarg.h>
34 
35 /* This define is BFD_RELOC_##x for real bfd, or -1 for everyone else. */
36 #define BFD_RELOC(x) -1
37 
38 /* Special registers. */
39 #define TREG_LR 55
40 #define TREG_SN 56
41 #define TREG_ZERO 63
42 
43 #ifndef NULL
44 #define NULL  0
45 #endif
46 
47 const struct tilegx_opcode tilegx_opcodes[336] =
48 {
49  { "bpt", TILEGX_OPC_BPT, 0x2, 0, TREG_ZERO, 0,
50     { { 0, }, {  }, { 0, }, { 0, }, { 0, } },
51 #ifndef DISASM_ONLY
52     {
53       0ULL,
54       0xffffffff80000000ULL,
55       0ULL,
56       0ULL,
57       0ULL
58     },
59     {
60       -1ULL,
61       0x286a44ae00000000ULL,
62       -1ULL,
63       -1ULL,
64       -1ULL
65     }
66 #endif
67   },
68   { "info", TILEGX_OPC_INFO, 0xf, 1, TREG_ZERO, 1,
69     { { 0 }, { 1 }, { 2 }, { 3 }, { 0, } },
70 #ifndef DISASM_ONLY
71     {
72       0xc00000007ff00fffULL,
73       0xfff807ff80000000ULL,
74       0x0000000078000fffULL,
75       0x3c0007ff80000000ULL,
76       0ULL
77     },
78     {
79       0x0000000040300fffULL,
80       0x181807ff80000000ULL,
81       0x0000000010000fffULL,
82       0x0c0007ff80000000ULL,
83       -1ULL
84     }
85 #endif
86   },
87   { "infol", TILEGX_OPC_INFOL, 0x3, 1, TREG_ZERO, 1,
88     { { 4 }, { 5 }, { 0, }, { 0, }, { 0, } },
89 #ifndef DISASM_ONLY
90     {
91       0xc000000070000fffULL,
92       0xf80007ff80000000ULL,
93       0ULL,
94       0ULL,
95       0ULL
96     },
97     {
98       0x0000000070000fffULL,
99       0x380007ff80000000ULL,
100       -1ULL,
101       -1ULL,
102       -1ULL
103     }
104 #endif
105   },
106   { "ld4s_tls", TILEGX_OPC_LD4S_TLS, 0x2, 3, TREG_ZERO, 1,
107     { { 0, }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
108 #ifndef DISASM_ONLY
109     {
110       0ULL,
111       0xfffff80000000000ULL,
112       0ULL,
113       0ULL,
114       0ULL
115     },
116     {
117       -1ULL,
118       0x1858000000000000ULL,
119       -1ULL,
120       -1ULL,
121       -1ULL
122     }
123 #endif
124   },
125   { "ld_tls", TILEGX_OPC_LD_TLS, 0x2, 3, TREG_ZERO, 1,
126     { { 0, }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
127 #ifndef DISASM_ONLY
128     {
129       0ULL,
130       0xfffff80000000000ULL,
131       0ULL,
132       0ULL,
133       0ULL
134     },
135     {
136       -1ULL,
137       0x18a0000000000000ULL,
138       -1ULL,
139       -1ULL,
140       -1ULL
141     }
142 #endif
143   },
144   { "move", TILEGX_OPC_MOVE, 0xf, 2, TREG_ZERO, 1,
145     { { 8, 9 }, { 6, 7 }, { 10, 11 }, { 12, 13 }, { 0, } },
146 #ifndef DISASM_ONLY
147     {
148       0xc00000007ffff000ULL,
149       0xfffff80000000000ULL,
150       0x00000000780ff000ULL,
151       0x3c07f80000000000ULL,
152       0ULL
153     },
154     {
155       0x000000005107f000ULL,
156       0x283bf80000000000ULL,
157       0x00000000500bf000ULL,
158       0x2c05f80000000000ULL,
159       -1ULL
160     }
161 #endif
162   },
163   { "movei", TILEGX_OPC_MOVEI, 0xf, 2, TREG_ZERO, 1,
164     { { 8, 0 }, { 6, 1 }, { 10, 2 }, { 12, 3 }, { 0, } },
165 #ifndef DISASM_ONLY
166     {
167       0xc00000007ff00fc0ULL,
168       0xfff807e000000000ULL,
169       0x0000000078000fc0ULL,
170       0x3c0007e000000000ULL,
171       0ULL
172     },
173     {
174       0x0000000040100fc0ULL,
175       0x180807e000000000ULL,
176       0x0000000000000fc0ULL,
177       0x040007e000000000ULL,
178       -1ULL
179     }
180 #endif
181   },
182   { "moveli", TILEGX_OPC_MOVELI, 0x3, 2, TREG_ZERO, 1,
183     { { 8, 4 }, { 6, 5 }, { 0, }, { 0, }, { 0, } },
184 #ifndef DISASM_ONLY
185     {
186       0xc000000070000fc0ULL,
187       0xf80007e000000000ULL,
188       0ULL,
189       0ULL,
190       0ULL
191     },
192     {
193       0x0000000010000fc0ULL,
194       0x000007e000000000ULL,
195       -1ULL,
196       -1ULL,
197       -1ULL
198     }
199 #endif
200   },
201   { "prefetch", TILEGX_OPC_PREFETCH, 0x12, 1, TREG_ZERO, 1,
202     { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } },
203 #ifndef DISASM_ONLY
204     {
205       0ULL,
206       0xfffff81f80000000ULL,
207       0ULL,
208       0ULL,
209       0xc3f8000004000000ULL
210     },
211     {
212       -1ULL,
213       0x286a801f80000000ULL,
214       -1ULL,
215       -1ULL,
216       0x41f8000004000000ULL
217     }
218 #endif
219   },
220   { "prefetch_add_l1", TILEGX_OPC_PREFETCH_ADD_L1, 0x2, 2, TREG_ZERO, 1,
221     { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } },
222 #ifndef DISASM_ONLY
223     {
224       0ULL,
225       0xfff8001f80000000ULL,
226       0ULL,
227       0ULL,
228       0ULL
229     },
230     {
231       -1ULL,
232       0x1840001f80000000ULL,
233       -1ULL,
234       -1ULL,
235       -1ULL
236     }
237 #endif
238   },
239   { "prefetch_add_l1_fault", TILEGX_OPC_PREFETCH_ADD_L1_FAULT, 0x2, 2, TREG_ZERO, 1,
240     { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } },
241 #ifndef DISASM_ONLY
242     {
243       0ULL,
244       0xfff8001f80000000ULL,
245       0ULL,
246       0ULL,
247       0ULL
248     },
249     {
250       -1ULL,
251       0x1838001f80000000ULL,
252       -1ULL,
253       -1ULL,
254       -1ULL
255     }
256 #endif
257   },
258   { "prefetch_add_l2", TILEGX_OPC_PREFETCH_ADD_L2, 0x2, 2, TREG_ZERO, 1,
259     { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } },
260 #ifndef DISASM_ONLY
261     {
262       0ULL,
263       0xfff8001f80000000ULL,
264       0ULL,
265       0ULL,
266       0ULL
267     },
268     {
269       -1ULL,
270       0x1850001f80000000ULL,
271       -1ULL,
272       -1ULL,
273       -1ULL
274     }
275 #endif
276   },
277   { "prefetch_add_l2_fault", TILEGX_OPC_PREFETCH_ADD_L2_FAULT, 0x2, 2, TREG_ZERO, 1,
278     { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } },
279 #ifndef DISASM_ONLY
280     {
281       0ULL,
282       0xfff8001f80000000ULL,
283       0ULL,
284       0ULL,
285       0ULL
286     },
287     {
288       -1ULL,
289       0x1848001f80000000ULL,
290       -1ULL,
291       -1ULL,
292       -1ULL
293     }
294 #endif
295   },
296   { "prefetch_add_l3", TILEGX_OPC_PREFETCH_ADD_L3, 0x2, 2, TREG_ZERO, 1,
297     { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } },
298 #ifndef DISASM_ONLY
299     {
300       0ULL,
301       0xfff8001f80000000ULL,
302       0ULL,
303       0ULL,
304       0ULL
305     },
306     {
307       -1ULL,
308       0x1860001f80000000ULL,
309       -1ULL,
310       -1ULL,
311       -1ULL
312     }
313 #endif
314   },
315   { "prefetch_add_l3_fault", TILEGX_OPC_PREFETCH_ADD_L3_FAULT, 0x2, 2, TREG_ZERO, 1,
316     { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } },
317 #ifndef DISASM_ONLY
318     {
319       0ULL,
320       0xfff8001f80000000ULL,
321       0ULL,
322       0ULL,
323       0ULL
324     },
325     {
326       -1ULL,
327       0x1858001f80000000ULL,
328       -1ULL,
329       -1ULL,
330       -1ULL
331     }
332 #endif
333   },
334   { "prefetch_l1", TILEGX_OPC_PREFETCH_L1, 0x12, 1, TREG_ZERO, 1,
335     { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } },
336 #ifndef DISASM_ONLY
337     {
338       0ULL,
339       0xfffff81f80000000ULL,
340       0ULL,
341       0ULL,
342       0xc3f8000004000000ULL
343     },
344     {
345       -1ULL,
346       0x286a801f80000000ULL,
347       -1ULL,
348       -1ULL,
349       0x41f8000004000000ULL
350     }
351 #endif
352   },
353   { "prefetch_l1_fault", TILEGX_OPC_PREFETCH_L1_FAULT, 0x12, 1, TREG_ZERO, 1,
354     { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } },
355 #ifndef DISASM_ONLY
356     {
357       0ULL,
358       0xfffff81f80000000ULL,
359       0ULL,
360       0ULL,
361       0xc3f8000004000000ULL
362     },
363     {
364       -1ULL,
365       0x286a781f80000000ULL,
366       -1ULL,
367       -1ULL,
368       0x41f8000000000000ULL
369     }
370 #endif
371   },
372   { "prefetch_l2", TILEGX_OPC_PREFETCH_L2, 0x12, 1, TREG_ZERO, 1,
373     { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } },
374 #ifndef DISASM_ONLY
375     {
376       0ULL,
377       0xfffff81f80000000ULL,
378       0ULL,
379       0ULL,
380       0xc3f8000004000000ULL
381     },
382     {
383       -1ULL,
384       0x286a901f80000000ULL,
385       -1ULL,
386       -1ULL,
387       0x43f8000004000000ULL
388     }
389 #endif
390   },
391   { "prefetch_l2_fault", TILEGX_OPC_PREFETCH_L2_FAULT, 0x12, 1, TREG_ZERO, 1,
392     { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } },
393 #ifndef DISASM_ONLY
394     {
395       0ULL,
396       0xfffff81f80000000ULL,
397       0ULL,
398       0ULL,
399       0xc3f8000004000000ULL
400     },
401     {
402       -1ULL,
403       0x286a881f80000000ULL,
404       -1ULL,
405       -1ULL,
406       0x43f8000000000000ULL
407     }
408 #endif
409   },
410   { "prefetch_l3", TILEGX_OPC_PREFETCH_L3, 0x12, 1, TREG_ZERO, 1,
411     { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } },
412 #ifndef DISASM_ONLY
413     {
414       0ULL,
415       0xfffff81f80000000ULL,
416       0ULL,
417       0ULL,
418       0xc3f8000004000000ULL
419     },
420     {
421       -1ULL,
422       0x286aa01f80000000ULL,
423       -1ULL,
424       -1ULL,
425       0x83f8000000000000ULL
426     }
427 #endif
428   },
429   { "prefetch_l3_fault", TILEGX_OPC_PREFETCH_L3_FAULT, 0x12, 1, TREG_ZERO, 1,
430     { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } },
431 #ifndef DISASM_ONLY
432     {
433       0ULL,
434       0xfffff81f80000000ULL,
435       0ULL,
436       0ULL,
437       0xc3f8000004000000ULL
438     },
439     {
440       -1ULL,
441       0x286a981f80000000ULL,
442       -1ULL,
443       -1ULL,
444       0x81f8000004000000ULL
445     }
446 #endif
447   },
448   { "raise", TILEGX_OPC_RAISE, 0x2, 0, TREG_ZERO, 1,
449     { { 0, }, {  }, { 0, }, { 0, }, { 0, } },
450 #ifndef DISASM_ONLY
451     {
452       0ULL,
453       0xffffffff80000000ULL,
454       0ULL,
455       0ULL,
456       0ULL
457     },
458     {
459       -1ULL,
460       0x286a44ae80000000ULL,
461       -1ULL,
462       -1ULL,
463       -1ULL
464     }
465 #endif
466   },
467   { "add", TILEGX_OPC_ADD, 0xf, 3, TREG_ZERO, 1,
468     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
469 #ifndef DISASM_ONLY
470     {
471       0xc00000007ffc0000ULL,
472       0xfffe000000000000ULL,
473       0x00000000780c0000ULL,
474       0x3c06000000000000ULL,
475       0ULL
476     },
477     {
478       0x00000000500c0000ULL,
479       0x2806000000000000ULL,
480       0x0000000028040000ULL,
481       0x1802000000000000ULL,
482       -1ULL
483     }
484 #endif
485   },
486   { "addi", TILEGX_OPC_ADDI, 0xf, 3, TREG_ZERO, 1,
487     { { 8, 9, 0 }, { 6, 7, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } },
488 #ifndef DISASM_ONLY
489     {
490       0xc00000007ff00000ULL,
491       0xfff8000000000000ULL,
492       0x0000000078000000ULL,
493       0x3c00000000000000ULL,
494       0ULL
495     },
496     {
497       0x0000000040100000ULL,
498       0x1808000000000000ULL,
499       0ULL,
500       0x0400000000000000ULL,
501       -1ULL
502     }
503 #endif
504   },
505   { "addli", TILEGX_OPC_ADDLI, 0x3, 3, TREG_ZERO, 1,
506     { { 8, 9, 4 }, { 6, 7, 5 }, { 0, }, { 0, }, { 0, } },
507 #ifndef DISASM_ONLY
508     {
509       0xc000000070000000ULL,
510       0xf800000000000000ULL,
511       0ULL,
512       0ULL,
513       0ULL
514     },
515     {
516       0x0000000010000000ULL,
517       0ULL,
518       -1ULL,
519       -1ULL,
520       -1ULL
521     }
522 #endif
523   },
524   { "addx", TILEGX_OPC_ADDX, 0xf, 3, TREG_ZERO, 1,
525     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
526 #ifndef DISASM_ONLY
527     {
528       0xc00000007ffc0000ULL,
529       0xfffe000000000000ULL,
530       0x00000000780c0000ULL,
531       0x3c06000000000000ULL,
532       0ULL
533     },
534     {
535       0x0000000050080000ULL,
536       0x2804000000000000ULL,
537       0x0000000028000000ULL,
538       0x1800000000000000ULL,
539       -1ULL
540     }
541 #endif
542   },
543   { "addxi", TILEGX_OPC_ADDXI, 0xf, 3, TREG_ZERO, 1,
544     { { 8, 9, 0 }, { 6, 7, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } },
545 #ifndef DISASM_ONLY
546     {
547       0xc00000007ff00000ULL,
548       0xfff8000000000000ULL,
549       0x0000000078000000ULL,
550       0x3c00000000000000ULL,
551       0ULL
552     },
553     {
554       0x0000000040200000ULL,
555       0x1810000000000000ULL,
556       0x0000000008000000ULL,
557       0x0800000000000000ULL,
558       -1ULL
559     }
560 #endif
561   },
562   { "addxli", TILEGX_OPC_ADDXLI, 0x3, 3, TREG_ZERO, 1,
563     { { 8, 9, 4 }, { 6, 7, 5 }, { 0, }, { 0, }, { 0, } },
564 #ifndef DISASM_ONLY
565     {
566       0xc000000070000000ULL,
567       0xf800000000000000ULL,
568       0ULL,
569       0ULL,
570       0ULL
571     },
572     {
573       0x0000000020000000ULL,
574       0x0800000000000000ULL,
575       -1ULL,
576       -1ULL,
577       -1ULL
578     }
579 #endif
580   },
581   { "addxsc", TILEGX_OPC_ADDXSC, 0x3, 3, TREG_ZERO, 1,
582     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
583 #ifndef DISASM_ONLY
584     {
585       0xc00000007ffc0000ULL,
586       0xfffe000000000000ULL,
587       0ULL,
588       0ULL,
589       0ULL
590     },
591     {
592       0x0000000050040000ULL,
593       0x2802000000000000ULL,
594       -1ULL,
595       -1ULL,
596       -1ULL
597     }
598 #endif
599   },
600   { "and", TILEGX_OPC_AND, 0xf, 3, TREG_ZERO, 1,
601     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
602 #ifndef DISASM_ONLY
603     {
604       0xc00000007ffc0000ULL,
605       0xfffe000000000000ULL,
606       0x00000000780c0000ULL,
607       0x3c06000000000000ULL,
608       0ULL
609     },
610     {
611       0x0000000050100000ULL,
612       0x2808000000000000ULL,
613       0x0000000050000000ULL,
614       0x2c00000000000000ULL,
615       -1ULL
616     }
617 #endif
618   },
619   { "andi", TILEGX_OPC_ANDI, 0xf, 3, TREG_ZERO, 1,
620     { { 8, 9, 0 }, { 6, 7, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } },
621 #ifndef DISASM_ONLY
622     {
623       0xc00000007ff00000ULL,
624       0xfff8000000000000ULL,
625       0x0000000078000000ULL,
626       0x3c00000000000000ULL,
627       0ULL
628     },
629     {
630       0x0000000040300000ULL,
631       0x1818000000000000ULL,
632       0x0000000010000000ULL,
633       0x0c00000000000000ULL,
634       -1ULL
635     }
636 #endif
637   },
638   { "beqz", TILEGX_OPC_BEQZ, 0x2, 2, TREG_ZERO, 1,
639     { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
640 #ifndef DISASM_ONLY
641     {
642       0ULL,
643       0xffc0000000000000ULL,
644       0ULL,
645       0ULL,
646       0ULL
647     },
648     {
649       -1ULL,
650       0x1440000000000000ULL,
651       -1ULL,
652       -1ULL,
653       -1ULL
654     }
655 #endif
656   },
657   { "beqzt", TILEGX_OPC_BEQZT, 0x2, 2, TREG_ZERO, 1,
658     { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
659 #ifndef DISASM_ONLY
660     {
661       0ULL,
662       0xffc0000000000000ULL,
663       0ULL,
664       0ULL,
665       0ULL
666     },
667     {
668       -1ULL,
669       0x1400000000000000ULL,
670       -1ULL,
671       -1ULL,
672       -1ULL
673     }
674 #endif
675   },
676   { "bfexts", TILEGX_OPC_BFEXTS, 0x1, 4, TREG_ZERO, 1,
677     { { 8, 9, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } },
678 #ifndef DISASM_ONLY
679     {
680       0xc00000007f000000ULL,
681       0ULL,
682       0ULL,
683       0ULL,
684       0ULL
685     },
686     {
687       0x0000000034000000ULL,
688       -1ULL,
689       -1ULL,
690       -1ULL,
691       -1ULL
692     }
693 #endif
694   },
695   { "bfextu", TILEGX_OPC_BFEXTU, 0x1, 4, TREG_ZERO, 1,
696     { { 8, 9, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } },
697 #ifndef DISASM_ONLY
698     {
699       0xc00000007f000000ULL,
700       0ULL,
701       0ULL,
702       0ULL,
703       0ULL
704     },
705     {
706       0x0000000035000000ULL,
707       -1ULL,
708       -1ULL,
709       -1ULL,
710       -1ULL
711     }
712 #endif
713   },
714   { "bfins", TILEGX_OPC_BFINS, 0x1, 4, TREG_ZERO, 1,
715     { { 23, 9, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } },
716 #ifndef DISASM_ONLY
717     {
718       0xc00000007f000000ULL,
719       0ULL,
720       0ULL,
721       0ULL,
722       0ULL
723     },
724     {
725       0x0000000036000000ULL,
726       -1ULL,
727       -1ULL,
728       -1ULL,
729       -1ULL
730     }
731 #endif
732   },
733   { "bgez", TILEGX_OPC_BGEZ, 0x2, 2, TREG_ZERO, 1,
734     { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
735 #ifndef DISASM_ONLY
736     {
737       0ULL,
738       0xffc0000000000000ULL,
739       0ULL,
740       0ULL,
741       0ULL
742     },
743     {
744       -1ULL,
745       0x14c0000000000000ULL,
746       -1ULL,
747       -1ULL,
748       -1ULL
749     }
750 #endif
751   },
752   { "bgezt", TILEGX_OPC_BGEZT, 0x2, 2, TREG_ZERO, 1,
753     { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
754 #ifndef DISASM_ONLY
755     {
756       0ULL,
757       0xffc0000000000000ULL,
758       0ULL,
759       0ULL,
760       0ULL
761     },
762     {
763       -1ULL,
764       0x1480000000000000ULL,
765       -1ULL,
766       -1ULL,
767       -1ULL
768     }
769 #endif
770   },
771   { "bgtz", TILEGX_OPC_BGTZ, 0x2, 2, TREG_ZERO, 1,
772     { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
773 #ifndef DISASM_ONLY
774     {
775       0ULL,
776       0xffc0000000000000ULL,
777       0ULL,
778       0ULL,
779       0ULL
780     },
781     {
782       -1ULL,
783       0x1540000000000000ULL,
784       -1ULL,
785       -1ULL,
786       -1ULL
787     }
788 #endif
789   },
790   { "bgtzt", TILEGX_OPC_BGTZT, 0x2, 2, TREG_ZERO, 1,
791     { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
792 #ifndef DISASM_ONLY
793     {
794       0ULL,
795       0xffc0000000000000ULL,
796       0ULL,
797       0ULL,
798       0ULL
799     },
800     {
801       -1ULL,
802       0x1500000000000000ULL,
803       -1ULL,
804       -1ULL,
805       -1ULL
806     }
807 #endif
808   },
809   { "blbc", TILEGX_OPC_BLBC, 0x2, 2, TREG_ZERO, 1,
810     { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
811 #ifndef DISASM_ONLY
812     {
813       0ULL,
814       0xffc0000000000000ULL,
815       0ULL,
816       0ULL,
817       0ULL
818     },
819     {
820       -1ULL,
821       0x15c0000000000000ULL,
822       -1ULL,
823       -1ULL,
824       -1ULL
825     }
826 #endif
827   },
828   { "blbct", TILEGX_OPC_BLBCT, 0x2, 2, TREG_ZERO, 1,
829     { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
830 #ifndef DISASM_ONLY
831     {
832       0ULL,
833       0xffc0000000000000ULL,
834       0ULL,
835       0ULL,
836       0ULL
837     },
838     {
839       -1ULL,
840       0x1580000000000000ULL,
841       -1ULL,
842       -1ULL,
843       -1ULL
844     }
845 #endif
846   },
847   { "blbs", TILEGX_OPC_BLBS, 0x2, 2, TREG_ZERO, 1,
848     { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
849 #ifndef DISASM_ONLY
850     {
851       0ULL,
852       0xffc0000000000000ULL,
853       0ULL,
854       0ULL,
855       0ULL
856     },
857     {
858       -1ULL,
859       0x1640000000000000ULL,
860       -1ULL,
861       -1ULL,
862       -1ULL
863     }
864 #endif
865   },
866   { "blbst", TILEGX_OPC_BLBST, 0x2, 2, TREG_ZERO, 1,
867     { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
868 #ifndef DISASM_ONLY
869     {
870       0ULL,
871       0xffc0000000000000ULL,
872       0ULL,
873       0ULL,
874       0ULL
875     },
876     {
877       -1ULL,
878       0x1600000000000000ULL,
879       -1ULL,
880       -1ULL,
881       -1ULL
882     }
883 #endif
884   },
885   { "blez", TILEGX_OPC_BLEZ, 0x2, 2, TREG_ZERO, 1,
886     { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
887 #ifndef DISASM_ONLY
888     {
889       0ULL,
890       0xffc0000000000000ULL,
891       0ULL,
892       0ULL,
893       0ULL
894     },
895     {
896       -1ULL,
897       0x16c0000000000000ULL,
898       -1ULL,
899       -1ULL,
900       -1ULL
901     }
902 #endif
903   },
904   { "blezt", TILEGX_OPC_BLEZT, 0x2, 2, TREG_ZERO, 1,
905     { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
906 #ifndef DISASM_ONLY
907     {
908       0ULL,
909       0xffc0000000000000ULL,
910       0ULL,
911       0ULL,
912       0ULL
913     },
914     {
915       -1ULL,
916       0x1680000000000000ULL,
917       -1ULL,
918       -1ULL,
919       -1ULL
920     }
921 #endif
922   },
923   { "bltz", TILEGX_OPC_BLTZ, 0x2, 2, TREG_ZERO, 1,
924     { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
925 #ifndef DISASM_ONLY
926     {
927       0ULL,
928       0xffc0000000000000ULL,
929       0ULL,
930       0ULL,
931       0ULL
932     },
933     {
934       -1ULL,
935       0x1740000000000000ULL,
936       -1ULL,
937       -1ULL,
938       -1ULL
939     }
940 #endif
941   },
942   { "bltzt", TILEGX_OPC_BLTZT, 0x2, 2, TREG_ZERO, 1,
943     { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
944 #ifndef DISASM_ONLY
945     {
946       0ULL,
947       0xffc0000000000000ULL,
948       0ULL,
949       0ULL,
950       0ULL
951     },
952     {
953       -1ULL,
954       0x1700000000000000ULL,
955       -1ULL,
956       -1ULL,
957       -1ULL
958     }
959 #endif
960   },
961   { "bnez", TILEGX_OPC_BNEZ, 0x2, 2, TREG_ZERO, 1,
962     { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
963 #ifndef DISASM_ONLY
964     {
965       0ULL,
966       0xffc0000000000000ULL,
967       0ULL,
968       0ULL,
969       0ULL
970     },
971     {
972       -1ULL,
973       0x17c0000000000000ULL,
974       -1ULL,
975       -1ULL,
976       -1ULL
977     }
978 #endif
979   },
980   { "bnezt", TILEGX_OPC_BNEZT, 0x2, 2, TREG_ZERO, 1,
981     { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
982 #ifndef DISASM_ONLY
983     {
984       0ULL,
985       0xffc0000000000000ULL,
986       0ULL,
987       0ULL,
988       0ULL
989     },
990     {
991       -1ULL,
992       0x1780000000000000ULL,
993       -1ULL,
994       -1ULL,
995       -1ULL
996     }
997 #endif
998   },
999   { "clz", TILEGX_OPC_CLZ, 0x5, 2, TREG_ZERO, 1,
1000     { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } },
1001 #ifndef DISASM_ONLY
1002     {
1003       0xc00000007ffff000ULL,
1004       0ULL,
1005       0x00000000780ff000ULL,
1006       0ULL,
1007       0ULL
1008     },
1009     {
1010       0x0000000051481000ULL,
1011       -1ULL,
1012       0x00000000300c1000ULL,
1013       -1ULL,
1014       -1ULL
1015     }
1016 #endif
1017   },
1018   { "cmoveqz", TILEGX_OPC_CMOVEQZ, 0x5, 3, TREG_ZERO, 1,
1019     { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } },
1020 #ifndef DISASM_ONLY
1021     {
1022       0xc00000007ffc0000ULL,
1023       0ULL,
1024       0x00000000780c0000ULL,
1025       0ULL,
1026       0ULL
1027     },
1028     {
1029       0x0000000050140000ULL,
1030       -1ULL,
1031       0x0000000048000000ULL,
1032       -1ULL,
1033       -1ULL
1034     }
1035 #endif
1036   },
1037   { "cmovnez", TILEGX_OPC_CMOVNEZ, 0x5, 3, TREG_ZERO, 1,
1038     { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } },
1039 #ifndef DISASM_ONLY
1040     {
1041       0xc00000007ffc0000ULL,
1042       0ULL,
1043       0x00000000780c0000ULL,
1044       0ULL,
1045       0ULL
1046     },
1047     {
1048       0x0000000050180000ULL,
1049       -1ULL,
1050       0x0000000048040000ULL,
1051       -1ULL,
1052       -1ULL
1053     }
1054 #endif
1055   },
1056   { "cmpeq", TILEGX_OPC_CMPEQ, 0xf, 3, TREG_ZERO, 1,
1057     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
1058 #ifndef DISASM_ONLY
1059     {
1060       0xc00000007ffc0000ULL,
1061       0xfffe000000000000ULL,
1062       0x00000000780c0000ULL,
1063       0x3c06000000000000ULL,
1064       0ULL
1065     },
1066     {
1067       0x00000000501c0000ULL,
1068       0x280a000000000000ULL,
1069       0x0000000040000000ULL,
1070       0x2404000000000000ULL,
1071       -1ULL
1072     }
1073 #endif
1074   },
1075   { "cmpeqi", TILEGX_OPC_CMPEQI, 0xf, 3, TREG_ZERO, 1,
1076     { { 8, 9, 0 }, { 6, 7, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } },
1077 #ifndef DISASM_ONLY
1078     {
1079       0xc00000007ff00000ULL,
1080       0xfff8000000000000ULL,
1081       0x0000000078000000ULL,
1082       0x3c00000000000000ULL,
1083       0ULL
1084     },
1085     {
1086       0x0000000040400000ULL,
1087       0x1820000000000000ULL,
1088       0x0000000018000000ULL,
1089       0x1000000000000000ULL,
1090       -1ULL
1091     }
1092 #endif
1093   },
1094   { "cmpexch", TILEGX_OPC_CMPEXCH, 0x2, 3, TREG_ZERO, 1,
1095     { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
1096 #ifndef DISASM_ONLY
1097     {
1098       0ULL,
1099       0xfffe000000000000ULL,
1100       0ULL,
1101       0ULL,
1102       0ULL
1103     },
1104     {
1105       -1ULL,
1106       0x280e000000000000ULL,
1107       -1ULL,
1108       -1ULL,
1109       -1ULL
1110     }
1111 #endif
1112   },
1113   { "cmpexch4", TILEGX_OPC_CMPEXCH4, 0x2, 3, TREG_ZERO, 1,
1114     { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
1115 #ifndef DISASM_ONLY
1116     {
1117       0ULL,
1118       0xfffe000000000000ULL,
1119       0ULL,
1120       0ULL,
1121       0ULL
1122     },
1123     {
1124       -1ULL,
1125       0x280c000000000000ULL,
1126       -1ULL,
1127       -1ULL,
1128       -1ULL
1129     }
1130 #endif
1131   },
1132   { "cmples", TILEGX_OPC_CMPLES, 0xf, 3, TREG_ZERO, 1,
1133     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
1134 #ifndef DISASM_ONLY
1135     {
1136       0xc00000007ffc0000ULL,
1137       0xfffe000000000000ULL,
1138       0x00000000780c0000ULL,
1139       0x3c06000000000000ULL,
1140       0ULL
1141     },
1142     {
1143       0x0000000050200000ULL,
1144       0x2810000000000000ULL,
1145       0x0000000038000000ULL,
1146       0x2000000000000000ULL,
1147       -1ULL
1148     }
1149 #endif
1150   },
1151   { "cmpleu", TILEGX_OPC_CMPLEU, 0xf, 3, TREG_ZERO, 1,
1152     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
1153 #ifndef DISASM_ONLY
1154     {
1155       0xc00000007ffc0000ULL,
1156       0xfffe000000000000ULL,
1157       0x00000000780c0000ULL,
1158       0x3c06000000000000ULL,
1159       0ULL
1160     },
1161     {
1162       0x0000000050240000ULL,
1163       0x2812000000000000ULL,
1164       0x0000000038040000ULL,
1165       0x2002000000000000ULL,
1166       -1ULL
1167     }
1168 #endif
1169   },
1170   { "cmplts", TILEGX_OPC_CMPLTS, 0xf, 3, TREG_ZERO, 1,
1171     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
1172 #ifndef DISASM_ONLY
1173     {
1174       0xc00000007ffc0000ULL,
1175       0xfffe000000000000ULL,
1176       0x00000000780c0000ULL,
1177       0x3c06000000000000ULL,
1178       0ULL
1179     },
1180     {
1181       0x0000000050280000ULL,
1182       0x2814000000000000ULL,
1183       0x0000000038080000ULL,
1184       0x2004000000000000ULL,
1185       -1ULL
1186     }
1187 #endif
1188   },
1189   { "cmpltsi", TILEGX_OPC_CMPLTSI, 0xf, 3, TREG_ZERO, 1,
1190     { { 8, 9, 0 }, { 6, 7, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } },
1191 #ifndef DISASM_ONLY
1192     {
1193       0xc00000007ff00000ULL,
1194       0xfff8000000000000ULL,
1195       0x0000000078000000ULL,
1196       0x3c00000000000000ULL,
1197       0ULL
1198     },
1199     {
1200       0x0000000040500000ULL,
1201       0x1828000000000000ULL,
1202       0x0000000020000000ULL,
1203       0x1400000000000000ULL,
1204       -1ULL
1205     }
1206 #endif
1207   },
1208   { "cmpltu", TILEGX_OPC_CMPLTU, 0xf, 3, TREG_ZERO, 1,
1209     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
1210 #ifndef DISASM_ONLY
1211     {
1212       0xc00000007ffc0000ULL,
1213       0xfffe000000000000ULL,
1214       0x00000000780c0000ULL,
1215       0x3c06000000000000ULL,
1216       0ULL
1217     },
1218     {
1219       0x00000000502c0000ULL,
1220       0x2816000000000000ULL,
1221       0x00000000380c0000ULL,
1222       0x2006000000000000ULL,
1223       -1ULL
1224     }
1225 #endif
1226   },
1227   { "cmpltui", TILEGX_OPC_CMPLTUI, 0x3, 3, TREG_ZERO, 1,
1228     { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
1229 #ifndef DISASM_ONLY
1230     {
1231       0xc00000007ff00000ULL,
1232       0xfff8000000000000ULL,
1233       0ULL,
1234       0ULL,
1235       0ULL
1236     },
1237     {
1238       0x0000000040600000ULL,
1239       0x1830000000000000ULL,
1240       -1ULL,
1241       -1ULL,
1242       -1ULL
1243     }
1244 #endif
1245   },
1246   { "cmpne", TILEGX_OPC_CMPNE, 0xf, 3, TREG_ZERO, 1,
1247     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
1248 #ifndef DISASM_ONLY
1249     {
1250       0xc00000007ffc0000ULL,
1251       0xfffe000000000000ULL,
1252       0x00000000780c0000ULL,
1253       0x3c06000000000000ULL,
1254       0ULL
1255     },
1256     {
1257       0x0000000050300000ULL,
1258       0x2818000000000000ULL,
1259       0x0000000040040000ULL,
1260       0x2406000000000000ULL,
1261       -1ULL
1262     }
1263 #endif
1264   },
1265   { "cmul", TILEGX_OPC_CMUL, 0x1, 3, TREG_ZERO, 1,
1266     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
1267 #ifndef DISASM_ONLY
1268     {
1269       0xc00000007ffc0000ULL,
1270       0ULL,
1271       0ULL,
1272       0ULL,
1273       0ULL
1274     },
1275     {
1276       0x00000000504c0000ULL,
1277       -1ULL,
1278       -1ULL,
1279       -1ULL,
1280       -1ULL
1281     }
1282 #endif
1283   },
1284   { "cmula", TILEGX_OPC_CMULA, 0x1, 3, TREG_ZERO, 1,
1285     { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
1286 #ifndef DISASM_ONLY
1287     {
1288       0xc00000007ffc0000ULL,
1289       0ULL,
1290       0ULL,
1291       0ULL,
1292       0ULL
1293     },
1294     {
1295       0x0000000050380000ULL,
1296       -1ULL,
1297       -1ULL,
1298       -1ULL,
1299       -1ULL
1300     }
1301 #endif
1302   },
1303   { "cmulaf", TILEGX_OPC_CMULAF, 0x1, 3, TREG_ZERO, 1,
1304     { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
1305 #ifndef DISASM_ONLY
1306     {
1307       0xc00000007ffc0000ULL,
1308       0ULL,
1309       0ULL,
1310       0ULL,
1311       0ULL
1312     },
1313     {
1314       0x0000000050340000ULL,
1315       -1ULL,
1316       -1ULL,
1317       -1ULL,
1318       -1ULL
1319     }
1320 #endif
1321   },
1322   { "cmulf", TILEGX_OPC_CMULF, 0x1, 3, TREG_ZERO, 1,
1323     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
1324 #ifndef DISASM_ONLY
1325     {
1326       0xc00000007ffc0000ULL,
1327       0ULL,
1328       0ULL,
1329       0ULL,
1330       0ULL
1331     },
1332     {
1333       0x0000000050400000ULL,
1334       -1ULL,
1335       -1ULL,
1336       -1ULL,
1337       -1ULL
1338     }
1339 #endif
1340   },
1341   { "cmulfr", TILEGX_OPC_CMULFR, 0x1, 3, TREG_ZERO, 1,
1342     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
1343 #ifndef DISASM_ONLY
1344     {
1345       0xc00000007ffc0000ULL,
1346       0ULL,
1347       0ULL,
1348       0ULL,
1349       0ULL
1350     },
1351     {
1352       0x00000000503c0000ULL,
1353       -1ULL,
1354       -1ULL,
1355       -1ULL,
1356       -1ULL
1357     }
1358 #endif
1359   },
1360   { "cmulh", TILEGX_OPC_CMULH, 0x1, 3, TREG_ZERO, 1,
1361     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
1362 #ifndef DISASM_ONLY
1363     {
1364       0xc00000007ffc0000ULL,
1365       0ULL,
1366       0ULL,
1367       0ULL,
1368       0ULL
1369     },
1370     {
1371       0x0000000050480000ULL,
1372       -1ULL,
1373       -1ULL,
1374       -1ULL,
1375       -1ULL
1376     }
1377 #endif
1378   },
1379   { "cmulhr", TILEGX_OPC_CMULHR, 0x1, 3, TREG_ZERO, 1,
1380     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
1381 #ifndef DISASM_ONLY
1382     {
1383       0xc00000007ffc0000ULL,
1384       0ULL,
1385       0ULL,
1386       0ULL,
1387       0ULL
1388     },
1389     {
1390       0x0000000050440000ULL,
1391       -1ULL,
1392       -1ULL,
1393       -1ULL,
1394       -1ULL
1395     }
1396 #endif
1397   },
1398   { "crc32_32", TILEGX_OPC_CRC32_32, 0x1, 3, TREG_ZERO, 1,
1399     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
1400 #ifndef DISASM_ONLY
1401     {
1402       0xc00000007ffc0000ULL,
1403       0ULL,
1404       0ULL,
1405       0ULL,
1406       0ULL
1407     },
1408     {
1409       0x0000000050500000ULL,
1410       -1ULL,
1411       -1ULL,
1412       -1ULL,
1413       -1ULL
1414     }
1415 #endif
1416   },
1417   { "crc32_8", TILEGX_OPC_CRC32_8, 0x1, 3, TREG_ZERO, 1,
1418     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
1419 #ifndef DISASM_ONLY
1420     {
1421       0xc00000007ffc0000ULL,
1422       0ULL,
1423       0ULL,
1424       0ULL,
1425       0ULL
1426     },
1427     {
1428       0x0000000050540000ULL,
1429       -1ULL,
1430       -1ULL,
1431       -1ULL,
1432       -1ULL
1433     }
1434 #endif
1435   },
1436   { "ctz", TILEGX_OPC_CTZ, 0x5, 2, TREG_ZERO, 1,
1437     { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } },
1438 #ifndef DISASM_ONLY
1439     {
1440       0xc00000007ffff000ULL,
1441       0ULL,
1442       0x00000000780ff000ULL,
1443       0ULL,
1444       0ULL
1445     },
1446     {
1447       0x0000000051482000ULL,
1448       -1ULL,
1449       0x00000000300c2000ULL,
1450       -1ULL,
1451       -1ULL
1452     }
1453 #endif
1454   },
1455   { "dblalign", TILEGX_OPC_DBLALIGN, 0x1, 3, TREG_ZERO, 1,
1456     { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
1457 #ifndef DISASM_ONLY
1458     {
1459       0xc00000007ffc0000ULL,
1460       0ULL,
1461       0ULL,
1462       0ULL,
1463       0ULL
1464     },
1465     {
1466       0x0000000050640000ULL,
1467       -1ULL,
1468       -1ULL,
1469       -1ULL,
1470       -1ULL
1471     }
1472 #endif
1473   },
1474   { "dblalign2", TILEGX_OPC_DBLALIGN2, 0x3, 3, TREG_ZERO, 1,
1475     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
1476 #ifndef DISASM_ONLY
1477     {
1478       0xc00000007ffc0000ULL,
1479       0xfffe000000000000ULL,
1480       0ULL,
1481       0ULL,
1482       0ULL
1483     },
1484     {
1485       0x0000000050580000ULL,
1486       0x281a000000000000ULL,
1487       -1ULL,
1488       -1ULL,
1489       -1ULL
1490     }
1491 #endif
1492   },
1493   { "dblalign4", TILEGX_OPC_DBLALIGN4, 0x3, 3, TREG_ZERO, 1,
1494     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
1495 #ifndef DISASM_ONLY
1496     {
1497       0xc00000007ffc0000ULL,
1498       0xfffe000000000000ULL,
1499       0ULL,
1500       0ULL,
1501       0ULL
1502     },
1503     {
1504       0x00000000505c0000ULL,
1505       0x281c000000000000ULL,
1506       -1ULL,
1507       -1ULL,
1508       -1ULL
1509     }
1510 #endif
1511   },
1512   { "dblalign6", TILEGX_OPC_DBLALIGN6, 0x3, 3, TREG_ZERO, 1,
1513     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
1514 #ifndef DISASM_ONLY
1515     {
1516       0xc00000007ffc0000ULL,
1517       0xfffe000000000000ULL,
1518       0ULL,
1519       0ULL,
1520       0ULL
1521     },
1522     {
1523       0x0000000050600000ULL,
1524       0x281e000000000000ULL,
1525       -1ULL,
1526       -1ULL,
1527       -1ULL
1528     }
1529 #endif
1530   },
1531   { "drain", TILEGX_OPC_DRAIN, 0x2, 0, TREG_ZERO, 0,
1532     { { 0, }, {  }, { 0, }, { 0, }, { 0, } },
1533 #ifndef DISASM_ONLY
1534     {
1535       0ULL,
1536       0xfffff80000000000ULL,
1537       0ULL,
1538       0ULL,
1539       0ULL
1540     },
1541     {
1542       -1ULL,
1543       0x286a080000000000ULL,
1544       -1ULL,
1545       -1ULL,
1546       -1ULL
1547     }
1548 #endif
1549   },
1550   { "dtlbpr", TILEGX_OPC_DTLBPR, 0x2, 1, TREG_ZERO, 1,
1551     { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } },
1552 #ifndef DISASM_ONLY
1553     {
1554       0ULL,
1555       0xfffff80000000000ULL,
1556       0ULL,
1557       0ULL,
1558       0ULL
1559     },
1560     {
1561       -1ULL,
1562       0x286a100000000000ULL,
1563       -1ULL,
1564       -1ULL,
1565       -1ULL
1566     }
1567 #endif
1568   },
1569   { "exch", TILEGX_OPC_EXCH, 0x2, 3, TREG_ZERO, 1,
1570     { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
1571 #ifndef DISASM_ONLY
1572     {
1573       0ULL,
1574       0xfffe000000000000ULL,
1575       0ULL,
1576       0ULL,
1577       0ULL
1578     },
1579     {
1580       -1ULL,
1581       0x2822000000000000ULL,
1582       -1ULL,
1583       -1ULL,
1584       -1ULL
1585     }
1586 #endif
1587   },
1588   { "exch4", TILEGX_OPC_EXCH4, 0x2, 3, TREG_ZERO, 1,
1589     { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
1590 #ifndef DISASM_ONLY
1591     {
1592       0ULL,
1593       0xfffe000000000000ULL,
1594       0ULL,
1595       0ULL,
1596       0ULL
1597     },
1598     {
1599       -1ULL,
1600       0x2820000000000000ULL,
1601       -1ULL,
1602       -1ULL,
1603       -1ULL
1604     }
1605 #endif
1606   },
1607   { "fdouble_add_flags", TILEGX_OPC_FDOUBLE_ADD_FLAGS, 0x1, 3, TREG_ZERO, 1,
1608     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
1609 #ifndef DISASM_ONLY
1610     {
1611       0xc00000007ffc0000ULL,
1612       0ULL,
1613       0ULL,
1614       0ULL,
1615       0ULL
1616     },
1617     {
1618       0x00000000506c0000ULL,
1619       -1ULL,
1620       -1ULL,
1621       -1ULL,
1622       -1ULL
1623     }
1624 #endif
1625   },
1626   { "fdouble_addsub", TILEGX_OPC_FDOUBLE_ADDSUB, 0x1, 3, TREG_ZERO, 1,
1627     { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
1628 #ifndef DISASM_ONLY
1629     {
1630       0xc00000007ffc0000ULL,
1631       0ULL,
1632       0ULL,
1633       0ULL,
1634       0ULL
1635     },
1636     {
1637       0x0000000050680000ULL,
1638       -1ULL,
1639       -1ULL,
1640       -1ULL,
1641       -1ULL
1642     }
1643 #endif
1644   },
1645   { "fdouble_mul_flags", TILEGX_OPC_FDOUBLE_MUL_FLAGS, 0x1, 3, TREG_ZERO, 1,
1646     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
1647 #ifndef DISASM_ONLY
1648     {
1649       0xc00000007ffc0000ULL,
1650       0ULL,
1651       0ULL,
1652       0ULL,
1653       0ULL
1654     },
1655     {
1656       0x0000000050700000ULL,
1657       -1ULL,
1658       -1ULL,
1659       -1ULL,
1660       -1ULL
1661     }
1662 #endif
1663   },
1664   { "fdouble_pack1", TILEGX_OPC_FDOUBLE_PACK1, 0x1, 3, TREG_ZERO, 1,
1665     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
1666 #ifndef DISASM_ONLY
1667     {
1668       0xc00000007ffc0000ULL,
1669       0ULL,
1670       0ULL,
1671       0ULL,
1672       0ULL
1673     },
1674     {
1675       0x0000000050740000ULL,
1676       -1ULL,
1677       -1ULL,
1678       -1ULL,
1679       -1ULL
1680     }
1681 #endif
1682   },
1683   { "fdouble_pack2", TILEGX_OPC_FDOUBLE_PACK2, 0x1, 3, TREG_ZERO, 1,
1684     { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
1685 #ifndef DISASM_ONLY
1686     {
1687       0xc00000007ffc0000ULL,
1688       0ULL,
1689       0ULL,
1690       0ULL,
1691       0ULL
1692     },
1693     {
1694       0x0000000050780000ULL,
1695       -1ULL,
1696       -1ULL,
1697       -1ULL,
1698       -1ULL
1699     }
1700 #endif
1701   },
1702   { "fdouble_sub_flags", TILEGX_OPC_FDOUBLE_SUB_FLAGS, 0x1, 3, TREG_ZERO, 1,
1703     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
1704 #ifndef DISASM_ONLY
1705     {
1706       0xc00000007ffc0000ULL,
1707       0ULL,
1708       0ULL,
1709       0ULL,
1710       0ULL
1711     },
1712     {
1713       0x00000000507c0000ULL,
1714       -1ULL,
1715       -1ULL,
1716       -1ULL,
1717       -1ULL
1718     }
1719 #endif
1720   },
1721   { "fdouble_unpack_max", TILEGX_OPC_FDOUBLE_UNPACK_MAX, 0x1, 3, TREG_ZERO, 1,
1722     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
1723 #ifndef DISASM_ONLY
1724     {
1725       0xc00000007ffc0000ULL,
1726       0ULL,
1727       0ULL,
1728       0ULL,
1729       0ULL
1730     },
1731     {
1732       0x0000000050800000ULL,
1733       -1ULL,
1734       -1ULL,
1735       -1ULL,
1736       -1ULL
1737     }
1738 #endif
1739   },
1740   { "fdouble_unpack_min", TILEGX_OPC_FDOUBLE_UNPACK_MIN, 0x1, 3, TREG_ZERO, 1,
1741     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
1742 #ifndef DISASM_ONLY
1743     {
1744       0xc00000007ffc0000ULL,
1745       0ULL,
1746       0ULL,
1747       0ULL,
1748       0ULL
1749     },
1750     {
1751       0x0000000050840000ULL,
1752       -1ULL,
1753       -1ULL,
1754       -1ULL,
1755       -1ULL
1756     }
1757 #endif
1758   },
1759   { "fetchadd", TILEGX_OPC_FETCHADD, 0x2, 3, TREG_ZERO, 1,
1760     { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
1761 #ifndef DISASM_ONLY
1762     {
1763       0ULL,
1764       0xfffe000000000000ULL,
1765       0ULL,
1766       0ULL,
1767       0ULL
1768     },
1769     {
1770       -1ULL,
1771       0x282a000000000000ULL,
1772       -1ULL,
1773       -1ULL,
1774       -1ULL
1775     }
1776 #endif
1777   },
1778   { "fetchadd4", TILEGX_OPC_FETCHADD4, 0x2, 3, TREG_ZERO, 1,
1779     { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
1780 #ifndef DISASM_ONLY
1781     {
1782       0ULL,
1783       0xfffe000000000000ULL,
1784       0ULL,
1785       0ULL,
1786       0ULL
1787     },
1788     {
1789       -1ULL,
1790       0x2824000000000000ULL,
1791       -1ULL,
1792       -1ULL,
1793       -1ULL
1794     }
1795 #endif
1796   },
1797   { "fetchaddgez", TILEGX_OPC_FETCHADDGEZ, 0x2, 3, TREG_ZERO, 1,
1798     { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
1799 #ifndef DISASM_ONLY
1800     {
1801       0ULL,
1802       0xfffe000000000000ULL,
1803       0ULL,
1804       0ULL,
1805       0ULL
1806     },
1807     {
1808       -1ULL,
1809       0x2828000000000000ULL,
1810       -1ULL,
1811       -1ULL,
1812       -1ULL
1813     }
1814 #endif
1815   },
1816   { "fetchaddgez4", TILEGX_OPC_FETCHADDGEZ4, 0x2, 3, TREG_ZERO, 1,
1817     { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
1818 #ifndef DISASM_ONLY
1819     {
1820       0ULL,
1821       0xfffe000000000000ULL,
1822       0ULL,
1823       0ULL,
1824       0ULL
1825     },
1826     {
1827       -1ULL,
1828       0x2826000000000000ULL,
1829       -1ULL,
1830       -1ULL,
1831       -1ULL
1832     }
1833 #endif
1834   },
1835   { "fetchand", TILEGX_OPC_FETCHAND, 0x2, 3, TREG_ZERO, 1,
1836     { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
1837 #ifndef DISASM_ONLY
1838     {
1839       0ULL,
1840       0xfffe000000000000ULL,
1841       0ULL,
1842       0ULL,
1843       0ULL
1844     },
1845     {
1846       -1ULL,
1847       0x282e000000000000ULL,
1848       -1ULL,
1849       -1ULL,
1850       -1ULL
1851     }
1852 #endif
1853   },
1854   { "fetchand4", TILEGX_OPC_FETCHAND4, 0x2, 3, TREG_ZERO, 1,
1855     { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
1856 #ifndef DISASM_ONLY
1857     {
1858       0ULL,
1859       0xfffe000000000000ULL,
1860       0ULL,
1861       0ULL,
1862       0ULL
1863     },
1864     {
1865       -1ULL,
1866       0x282c000000000000ULL,
1867       -1ULL,
1868       -1ULL,
1869       -1ULL
1870     }
1871 #endif
1872   },
1873   { "fetchor", TILEGX_OPC_FETCHOR, 0x2, 3, TREG_ZERO, 1,
1874     { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
1875 #ifndef DISASM_ONLY
1876     {
1877       0ULL,
1878       0xfffe000000000000ULL,
1879       0ULL,
1880       0ULL,
1881       0ULL
1882     },
1883     {
1884       -1ULL,
1885       0x2832000000000000ULL,
1886       -1ULL,
1887       -1ULL,
1888       -1ULL
1889     }
1890 #endif
1891   },
1892   { "fetchor4", TILEGX_OPC_FETCHOR4, 0x2, 3, TREG_ZERO, 1,
1893     { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
1894 #ifndef DISASM_ONLY
1895     {
1896       0ULL,
1897       0xfffe000000000000ULL,
1898       0ULL,
1899       0ULL,
1900       0ULL
1901     },
1902     {
1903       -1ULL,
1904       0x2830000000000000ULL,
1905       -1ULL,
1906       -1ULL,
1907       -1ULL
1908     }
1909 #endif
1910   },
1911   { "finv", TILEGX_OPC_FINV, 0x2, 1, TREG_ZERO, 1,
1912     { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } },
1913 #ifndef DISASM_ONLY
1914     {
1915       0ULL,
1916       0xfffff80000000000ULL,
1917       0ULL,
1918       0ULL,
1919       0ULL
1920     },
1921     {
1922       -1ULL,
1923       0x286a180000000000ULL,
1924       -1ULL,
1925       -1ULL,
1926       -1ULL
1927     }
1928 #endif
1929   },
1930   { "flush", TILEGX_OPC_FLUSH, 0x2, 1, TREG_ZERO, 1,
1931     { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } },
1932 #ifndef DISASM_ONLY
1933     {
1934       0ULL,
1935       0xfffff80000000000ULL,
1936       0ULL,
1937       0ULL,
1938       0ULL
1939     },
1940     {
1941       -1ULL,
1942       0x286a280000000000ULL,
1943       -1ULL,
1944       -1ULL,
1945       -1ULL
1946     }
1947 #endif
1948   },
1949   { "flushwb", TILEGX_OPC_FLUSHWB, 0x2, 0, TREG_ZERO, 1,
1950     { { 0, }, {  }, { 0, }, { 0, }, { 0, } },
1951 #ifndef DISASM_ONLY
1952     {
1953       0ULL,
1954       0xfffff80000000000ULL,
1955       0ULL,
1956       0ULL,
1957       0ULL
1958     },
1959     {
1960       -1ULL,
1961       0x286a200000000000ULL,
1962       -1ULL,
1963       -1ULL,
1964       -1ULL
1965     }
1966 #endif
1967   },
1968   { "fnop", TILEGX_OPC_FNOP, 0xf, 0, TREG_ZERO, 1,
1969     { {  }, {  }, {  }, {  }, { 0, } },
1970 #ifndef DISASM_ONLY
1971     {
1972       0xc00000007ffff000ULL,
1973       0xfffff80000000000ULL,
1974       0x00000000780ff000ULL,
1975       0x3c07f80000000000ULL,
1976       0ULL
1977     },
1978     {
1979       0x0000000051483000ULL,
1980       0x286a300000000000ULL,
1981       0x00000000300c3000ULL,
1982       0x1c06400000000000ULL,
1983       -1ULL
1984     }
1985 #endif
1986   },
1987   { "fsingle_add1", TILEGX_OPC_FSINGLE_ADD1, 0x1, 3, TREG_ZERO, 1,
1988     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
1989 #ifndef DISASM_ONLY
1990     {
1991       0xc00000007ffc0000ULL,
1992       0ULL,
1993       0ULL,
1994       0ULL,
1995       0ULL
1996     },
1997     {
1998       0x0000000050880000ULL,
1999       -1ULL,
2000       -1ULL,
2001       -1ULL,
2002       -1ULL
2003     }
2004 #endif
2005   },
2006   { "fsingle_addsub2", TILEGX_OPC_FSINGLE_ADDSUB2, 0x1, 3, TREG_ZERO, 1,
2007     { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
2008 #ifndef DISASM_ONLY
2009     {
2010       0xc00000007ffc0000ULL,
2011       0ULL,
2012       0ULL,
2013       0ULL,
2014       0ULL
2015     },
2016     {
2017       0x00000000508c0000ULL,
2018       -1ULL,
2019       -1ULL,
2020       -1ULL,
2021       -1ULL
2022     }
2023 #endif
2024   },
2025   { "fsingle_mul1", TILEGX_OPC_FSINGLE_MUL1, 0x1, 3, TREG_ZERO, 1,
2026     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
2027 #ifndef DISASM_ONLY
2028     {
2029       0xc00000007ffc0000ULL,
2030       0ULL,
2031       0ULL,
2032       0ULL,
2033       0ULL
2034     },
2035     {
2036       0x0000000050900000ULL,
2037       -1ULL,
2038       -1ULL,
2039       -1ULL,
2040       -1ULL
2041     }
2042 #endif
2043   },
2044   { "fsingle_mul2", TILEGX_OPC_FSINGLE_MUL2, 0x1, 3, TREG_ZERO, 1,
2045     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
2046 #ifndef DISASM_ONLY
2047     {
2048       0xc00000007ffc0000ULL,
2049       0ULL,
2050       0ULL,
2051       0ULL,
2052       0ULL
2053     },
2054     {
2055       0x0000000050940000ULL,
2056       -1ULL,
2057       -1ULL,
2058       -1ULL,
2059       -1ULL
2060     }
2061 #endif
2062   },
2063   { "fsingle_pack1", TILEGX_OPC_FSINGLE_PACK1, 0x5, 2, TREG_ZERO, 1,
2064     { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } },
2065 #ifndef DISASM_ONLY
2066     {
2067       0xc00000007ffff000ULL,
2068       0ULL,
2069       0x00000000780ff000ULL,
2070       0ULL,
2071       0ULL
2072     },
2073     {
2074       0x0000000051484000ULL,
2075       -1ULL,
2076       0x00000000300c4000ULL,
2077       -1ULL,
2078       -1ULL
2079     }
2080 #endif
2081   },
2082   { "fsingle_pack2", TILEGX_OPC_FSINGLE_PACK2, 0x1, 3, TREG_ZERO, 1,
2083     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
2084 #ifndef DISASM_ONLY
2085     {
2086       0xc00000007ffc0000ULL,
2087       0ULL,
2088       0ULL,
2089       0ULL,
2090       0ULL
2091     },
2092     {
2093       0x0000000050980000ULL,
2094       -1ULL,
2095       -1ULL,
2096       -1ULL,
2097       -1ULL
2098     }
2099 #endif
2100   },
2101   { "fsingle_sub1", TILEGX_OPC_FSINGLE_SUB1, 0x1, 3, TREG_ZERO, 1,
2102     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
2103 #ifndef DISASM_ONLY
2104     {
2105       0xc00000007ffc0000ULL,
2106       0ULL,
2107       0ULL,
2108       0ULL,
2109       0ULL
2110     },
2111     {
2112       0x00000000509c0000ULL,
2113       -1ULL,
2114       -1ULL,
2115       -1ULL,
2116       -1ULL
2117     }
2118 #endif
2119   },
2120   { "icoh", TILEGX_OPC_ICOH, 0x2, 1, TREG_ZERO, 1,
2121     { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } },
2122 #ifndef DISASM_ONLY
2123     {
2124       0ULL,
2125       0xfffff80000000000ULL,
2126       0ULL,
2127       0ULL,
2128       0ULL
2129     },
2130     {
2131       -1ULL,
2132       0x286a380000000000ULL,
2133       -1ULL,
2134       -1ULL,
2135       -1ULL
2136     }
2137 #endif
2138   },
2139   { "ill", TILEGX_OPC_ILL, 0xa, 0, TREG_ZERO, 1,
2140     { { 0, }, {  }, { 0, }, {  }, { 0, } },
2141 #ifndef DISASM_ONLY
2142     {
2143       0ULL,
2144       0xfffff80000000000ULL,
2145       0ULL,
2146       0x3c07f80000000000ULL,
2147       0ULL
2148     },
2149     {
2150       -1ULL,
2151       0x286a400000000000ULL,
2152       -1ULL,
2153       0x1c06480000000000ULL,
2154       -1ULL
2155     }
2156 #endif
2157   },
2158   { "inv", TILEGX_OPC_INV, 0x2, 1, TREG_ZERO, 1,
2159     { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } },
2160 #ifndef DISASM_ONLY
2161     {
2162       0ULL,
2163       0xfffff80000000000ULL,
2164       0ULL,
2165       0ULL,
2166       0ULL
2167     },
2168     {
2169       -1ULL,
2170       0x286a480000000000ULL,
2171       -1ULL,
2172       -1ULL,
2173       -1ULL
2174     }
2175 #endif
2176   },
2177   { "iret", TILEGX_OPC_IRET, 0x2, 0, TREG_ZERO, 1,
2178     { { 0, }, {  }, { 0, }, { 0, }, { 0, } },
2179 #ifndef DISASM_ONLY
2180     {
2181       0ULL,
2182       0xfffff80000000000ULL,
2183       0ULL,
2184       0ULL,
2185       0ULL
2186     },
2187     {
2188       -1ULL,
2189       0x286a500000000000ULL,
2190       -1ULL,
2191       -1ULL,
2192       -1ULL
2193     }
2194 #endif
2195   },
2196   { "j", TILEGX_OPC_J, 0x2, 1, TREG_ZERO, 1,
2197     { { 0, }, { 25 }, { 0, }, { 0, }, { 0, } },
2198 #ifndef DISASM_ONLY
2199     {
2200       0ULL,
2201       0xfc00000000000000ULL,
2202       0ULL,
2203       0ULL,
2204       0ULL
2205     },
2206     {
2207       -1ULL,
2208       0x2400000000000000ULL,
2209       -1ULL,
2210       -1ULL,
2211       -1ULL
2212     }
2213 #endif
2214   },
2215   { "jal", TILEGX_OPC_JAL, 0x2, 1, TREG_LR, 1,
2216     { { 0, }, { 25 }, { 0, }, { 0, }, { 0, } },
2217 #ifndef DISASM_ONLY
2218     {
2219       0ULL,
2220       0xfc00000000000000ULL,
2221       0ULL,
2222       0ULL,
2223       0ULL
2224     },
2225     {
2226       -1ULL,
2227       0x2000000000000000ULL,
2228       -1ULL,
2229       -1ULL,
2230       -1ULL
2231     }
2232 #endif
2233   },
2234   { "jalr", TILEGX_OPC_JALR, 0xa, 1, TREG_LR, 1,
2235     { { 0, }, { 7 }, { 0, }, { 13 }, { 0, } },
2236 #ifndef DISASM_ONLY
2237     {
2238       0ULL,
2239       0xfffff80000000000ULL,
2240       0ULL,
2241       0x3c07f80000000000ULL,
2242       0ULL
2243     },
2244     {
2245       -1ULL,
2246       0x286a600000000000ULL,
2247       -1ULL,
2248       0x1c06580000000000ULL,
2249       -1ULL
2250     }
2251 #endif
2252   },
2253   { "jalrp", TILEGX_OPC_JALRP, 0xa, 1, TREG_LR, 1,
2254     { { 0, }, { 7 }, { 0, }, { 13 }, { 0, } },
2255 #ifndef DISASM_ONLY
2256     {
2257       0ULL,
2258       0xfffff80000000000ULL,
2259       0ULL,
2260       0x3c07f80000000000ULL,
2261       0ULL
2262     },
2263     {
2264       -1ULL,
2265       0x286a580000000000ULL,
2266       -1ULL,
2267       0x1c06500000000000ULL,
2268       -1ULL
2269     }
2270 #endif
2271   },
2272   { "jr", TILEGX_OPC_JR, 0xa, 1, TREG_ZERO, 1,
2273     { { 0, }, { 7 }, { 0, }, { 13 }, { 0, } },
2274 #ifndef DISASM_ONLY
2275     {
2276       0ULL,
2277       0xfffff80000000000ULL,
2278       0ULL,
2279       0x3c07f80000000000ULL,
2280       0ULL
2281     },
2282     {
2283       -1ULL,
2284       0x286a700000000000ULL,
2285       -1ULL,
2286       0x1c06680000000000ULL,
2287       -1ULL
2288     }
2289 #endif
2290   },
2291   { "jrp", TILEGX_OPC_JRP, 0xa, 1, TREG_ZERO, 1,
2292     { { 0, }, { 7 }, { 0, }, { 13 }, { 0, } },
2293 #ifndef DISASM_ONLY
2294     {
2295       0ULL,
2296       0xfffff80000000000ULL,
2297       0ULL,
2298       0x3c07f80000000000ULL,
2299       0ULL
2300     },
2301     {
2302       -1ULL,
2303       0x286a680000000000ULL,
2304       -1ULL,
2305       0x1c06600000000000ULL,
2306       -1ULL
2307     }
2308 #endif
2309   },
2310   { "ld", TILEGX_OPC_LD, 0x12, 2, TREG_ZERO, 1,
2311     { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } },
2312 #ifndef DISASM_ONLY
2313     {
2314       0ULL,
2315       0xfffff80000000000ULL,
2316       0ULL,
2317       0ULL,
2318       0xc200000004000000ULL
2319     },
2320     {
2321       -1ULL,
2322       0x286ae80000000000ULL,
2323       -1ULL,
2324       -1ULL,
2325       0x8200000004000000ULL
2326     }
2327 #endif
2328   },
2329   { "ld1s", TILEGX_OPC_LD1S, 0x12, 2, TREG_ZERO, 1,
2330     { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } },
2331 #ifndef DISASM_ONLY
2332     {
2333       0ULL,
2334       0xfffff80000000000ULL,
2335       0ULL,
2336       0ULL,
2337       0xc200000004000000ULL
2338     },
2339     {
2340       -1ULL,
2341       0x286a780000000000ULL,
2342       -1ULL,
2343       -1ULL,
2344       0x4000000000000000ULL
2345     }
2346 #endif
2347   },
2348   { "ld1s_add", TILEGX_OPC_LD1S_ADD, 0x2, 3, TREG_ZERO, 1,
2349     { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
2350 #ifndef DISASM_ONLY
2351     {
2352       0ULL,
2353       0xfff8000000000000ULL,
2354       0ULL,
2355       0ULL,
2356       0ULL
2357     },
2358     {
2359       -1ULL,
2360       0x1838000000000000ULL,
2361       -1ULL,
2362       -1ULL,
2363       -1ULL
2364     }
2365 #endif
2366   },
2367   { "ld1u", TILEGX_OPC_LD1U, 0x12, 2, TREG_ZERO, 1,
2368     { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } },
2369 #ifndef DISASM_ONLY
2370     {
2371       0ULL,
2372       0xfffff80000000000ULL,
2373       0ULL,
2374       0ULL,
2375       0xc200000004000000ULL
2376     },
2377     {
2378       -1ULL,
2379       0x286a800000000000ULL,
2380       -1ULL,
2381       -1ULL,
2382       0x4000000004000000ULL
2383     }
2384 #endif
2385   },
2386   { "ld1u_add", TILEGX_OPC_LD1U_ADD, 0x2, 3, TREG_ZERO, 1,
2387     { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
2388 #ifndef DISASM_ONLY
2389     {
2390       0ULL,
2391       0xfff8000000000000ULL,
2392       0ULL,
2393       0ULL,
2394       0ULL
2395     },
2396     {
2397       -1ULL,
2398       0x1840000000000000ULL,
2399       -1ULL,
2400       -1ULL,
2401       -1ULL
2402     }
2403 #endif
2404   },
2405   { "ld2s", TILEGX_OPC_LD2S, 0x12, 2, TREG_ZERO, 1,
2406     { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } },
2407 #ifndef DISASM_ONLY
2408     {
2409       0ULL,
2410       0xfffff80000000000ULL,
2411       0ULL,
2412       0ULL,
2413       0xc200000004000000ULL
2414     },
2415     {
2416       -1ULL,
2417       0x286a880000000000ULL,
2418       -1ULL,
2419       -1ULL,
2420       0x4200000000000000ULL
2421     }
2422 #endif
2423   },
2424   { "ld2s_add", TILEGX_OPC_LD2S_ADD, 0x2, 3, TREG_ZERO, 1,
2425     { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
2426 #ifndef DISASM_ONLY
2427     {
2428       0ULL,
2429       0xfff8000000000000ULL,
2430       0ULL,
2431       0ULL,
2432       0ULL
2433     },
2434     {
2435       -1ULL,
2436       0x1848000000000000ULL,
2437       -1ULL,
2438       -1ULL,
2439       -1ULL
2440     }
2441 #endif
2442   },
2443   { "ld2u", TILEGX_OPC_LD2U, 0x12, 2, TREG_ZERO, 1,
2444     { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } },
2445 #ifndef DISASM_ONLY
2446     {
2447       0ULL,
2448       0xfffff80000000000ULL,
2449       0ULL,
2450       0ULL,
2451       0xc200000004000000ULL
2452     },
2453     {
2454       -1ULL,
2455       0x286a900000000000ULL,
2456       -1ULL,
2457       -1ULL,
2458       0x4200000004000000ULL
2459     }
2460 #endif
2461   },
2462   { "ld2u_add", TILEGX_OPC_LD2U_ADD, 0x2, 3, TREG_ZERO, 1,
2463     { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
2464 #ifndef DISASM_ONLY
2465     {
2466       0ULL,
2467       0xfff8000000000000ULL,
2468       0ULL,
2469       0ULL,
2470       0ULL
2471     },
2472     {
2473       -1ULL,
2474       0x1850000000000000ULL,
2475       -1ULL,
2476       -1ULL,
2477       -1ULL
2478     }
2479 #endif
2480   },
2481   { "ld4s", TILEGX_OPC_LD4S, 0x12, 2, TREG_ZERO, 1,
2482     { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } },
2483 #ifndef DISASM_ONLY
2484     {
2485       0ULL,
2486       0xfffff80000000000ULL,
2487       0ULL,
2488       0ULL,
2489       0xc200000004000000ULL
2490     },
2491     {
2492       -1ULL,
2493       0x286a980000000000ULL,
2494       -1ULL,
2495       -1ULL,
2496       0x8000000004000000ULL
2497     }
2498 #endif
2499   },
2500   { "ld4s_add", TILEGX_OPC_LD4S_ADD, 0x2, 3, TREG_ZERO, 1,
2501     { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
2502 #ifndef DISASM_ONLY
2503     {
2504       0ULL,
2505       0xfff8000000000000ULL,
2506       0ULL,
2507       0ULL,
2508       0ULL
2509     },
2510     {
2511       -1ULL,
2512       0x1858000000000000ULL,
2513       -1ULL,
2514       -1ULL,
2515       -1ULL
2516     }
2517 #endif
2518   },
2519   { "ld4u", TILEGX_OPC_LD4U, 0x12, 2, TREG_ZERO, 1,
2520     { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } },
2521 #ifndef DISASM_ONLY
2522     {
2523       0ULL,
2524       0xfffff80000000000ULL,
2525       0ULL,
2526       0ULL,
2527       0xc200000004000000ULL
2528     },
2529     {
2530       -1ULL,
2531       0x286aa00000000000ULL,
2532       -1ULL,
2533       -1ULL,
2534       0x8200000000000000ULL
2535     }
2536 #endif
2537   },
2538   { "ld4u_add", TILEGX_OPC_LD4U_ADD, 0x2, 3, TREG_ZERO, 1,
2539     { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
2540 #ifndef DISASM_ONLY
2541     {
2542       0ULL,
2543       0xfff8000000000000ULL,
2544       0ULL,
2545       0ULL,
2546       0ULL
2547     },
2548     {
2549       -1ULL,
2550       0x1860000000000000ULL,
2551       -1ULL,
2552       -1ULL,
2553       -1ULL
2554     }
2555 #endif
2556   },
2557   { "ld_add", TILEGX_OPC_LD_ADD, 0x2, 3, TREG_ZERO, 1,
2558     { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
2559 #ifndef DISASM_ONLY
2560     {
2561       0ULL,
2562       0xfff8000000000000ULL,
2563       0ULL,
2564       0ULL,
2565       0ULL
2566     },
2567     {
2568       -1ULL,
2569       0x18a0000000000000ULL,
2570       -1ULL,
2571       -1ULL,
2572       -1ULL
2573     }
2574 #endif
2575   },
2576   { "ldna", TILEGX_OPC_LDNA, 0x2, 2, TREG_ZERO, 1,
2577     { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } },
2578 #ifndef DISASM_ONLY
2579     {
2580       0ULL,
2581       0xfffff80000000000ULL,
2582       0ULL,
2583       0ULL,
2584       0ULL
2585     },
2586     {
2587       -1ULL,
2588       0x286aa80000000000ULL,
2589       -1ULL,
2590       -1ULL,
2591       -1ULL
2592     }
2593 #endif
2594   },
2595   { "ldna_add", TILEGX_OPC_LDNA_ADD, 0x2, 3, TREG_ZERO, 1,
2596     { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
2597 #ifndef DISASM_ONLY
2598     {
2599       0ULL,
2600       0xfff8000000000000ULL,
2601       0ULL,
2602       0ULL,
2603       0ULL
2604     },
2605     {
2606       -1ULL,
2607       0x18a8000000000000ULL,
2608       -1ULL,
2609       -1ULL,
2610       -1ULL
2611     }
2612 #endif
2613   },
2614   { "ldnt", TILEGX_OPC_LDNT, 0x2, 2, TREG_ZERO, 1,
2615     { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } },
2616 #ifndef DISASM_ONLY
2617     {
2618       0ULL,
2619       0xfffff80000000000ULL,
2620       0ULL,
2621       0ULL,
2622       0ULL
2623     },
2624     {
2625       -1ULL,
2626       0x286ae00000000000ULL,
2627       -1ULL,
2628       -1ULL,
2629       -1ULL
2630     }
2631 #endif
2632   },
2633   { "ldnt1s", TILEGX_OPC_LDNT1S, 0x2, 2, TREG_ZERO, 1,
2634     { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } },
2635 #ifndef DISASM_ONLY
2636     {
2637       0ULL,
2638       0xfffff80000000000ULL,
2639       0ULL,
2640       0ULL,
2641       0ULL
2642     },
2643     {
2644       -1ULL,
2645       0x286ab00000000000ULL,
2646       -1ULL,
2647       -1ULL,
2648       -1ULL
2649     }
2650 #endif
2651   },
2652   { "ldnt1s_add", TILEGX_OPC_LDNT1S_ADD, 0x2, 3, TREG_ZERO, 1,
2653     { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
2654 #ifndef DISASM_ONLY
2655     {
2656       0ULL,
2657       0xfff8000000000000ULL,
2658       0ULL,
2659       0ULL,
2660       0ULL
2661     },
2662     {
2663       -1ULL,
2664       0x1868000000000000ULL,
2665       -1ULL,
2666       -1ULL,
2667       -1ULL
2668     }
2669 #endif
2670   },
2671   { "ldnt1u", TILEGX_OPC_LDNT1U, 0x2, 2, TREG_ZERO, 1,
2672     { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } },
2673 #ifndef DISASM_ONLY
2674     {
2675       0ULL,
2676       0xfffff80000000000ULL,
2677       0ULL,
2678       0ULL,
2679       0ULL
2680     },
2681     {
2682       -1ULL,
2683       0x286ab80000000000ULL,
2684       -1ULL,
2685       -1ULL,
2686       -1ULL
2687     }
2688 #endif
2689   },
2690   { "ldnt1u_add", TILEGX_OPC_LDNT1U_ADD, 0x2, 3, TREG_ZERO, 1,
2691     { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
2692 #ifndef DISASM_ONLY
2693     {
2694       0ULL,
2695       0xfff8000000000000ULL,
2696       0ULL,
2697       0ULL,
2698       0ULL
2699     },
2700     {
2701       -1ULL,
2702       0x1870000000000000ULL,
2703       -1ULL,
2704       -1ULL,
2705       -1ULL
2706     }
2707 #endif
2708   },
2709   { "ldnt2s", TILEGX_OPC_LDNT2S, 0x2, 2, TREG_ZERO, 1,
2710     { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } },
2711 #ifndef DISASM_ONLY
2712     {
2713       0ULL,
2714       0xfffff80000000000ULL,
2715       0ULL,
2716       0ULL,
2717       0ULL
2718     },
2719     {
2720       -1ULL,
2721       0x286ac00000000000ULL,
2722       -1ULL,
2723       -1ULL,
2724       -1ULL
2725     }
2726 #endif
2727   },
2728   { "ldnt2s_add", TILEGX_OPC_LDNT2S_ADD, 0x2, 3, TREG_ZERO, 1,
2729     { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
2730 #ifndef DISASM_ONLY
2731     {
2732       0ULL,
2733       0xfff8000000000000ULL,
2734       0ULL,
2735       0ULL,
2736       0ULL
2737     },
2738     {
2739       -1ULL,
2740       0x1878000000000000ULL,
2741       -1ULL,
2742       -1ULL,
2743       -1ULL
2744     }
2745 #endif
2746   },
2747   { "ldnt2u", TILEGX_OPC_LDNT2U, 0x2, 2, TREG_ZERO, 1,
2748     { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } },
2749 #ifndef DISASM_ONLY
2750     {
2751       0ULL,
2752       0xfffff80000000000ULL,
2753       0ULL,
2754       0ULL,
2755       0ULL
2756     },
2757     {
2758       -1ULL,
2759       0x286ac80000000000ULL,
2760       -1ULL,
2761       -1ULL,
2762       -1ULL
2763     }
2764 #endif
2765   },
2766   { "ldnt2u_add", TILEGX_OPC_LDNT2U_ADD, 0x2, 3, TREG_ZERO, 1,
2767     { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
2768 #ifndef DISASM_ONLY
2769     {
2770       0ULL,
2771       0xfff8000000000000ULL,
2772       0ULL,
2773       0ULL,
2774       0ULL
2775     },
2776     {
2777       -1ULL,
2778       0x1880000000000000ULL,
2779       -1ULL,
2780       -1ULL,
2781       -1ULL
2782     }
2783 #endif
2784   },
2785   { "ldnt4s", TILEGX_OPC_LDNT4S, 0x2, 2, TREG_ZERO, 1,
2786     { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } },
2787 #ifndef DISASM_ONLY
2788     {
2789       0ULL,
2790       0xfffff80000000000ULL,
2791       0ULL,
2792       0ULL,
2793       0ULL
2794     },
2795     {
2796       -1ULL,
2797       0x286ad00000000000ULL,
2798       -1ULL,
2799       -1ULL,
2800       -1ULL
2801     }
2802 #endif
2803   },
2804   { "ldnt4s_add", TILEGX_OPC_LDNT4S_ADD, 0x2, 3, TREG_ZERO, 1,
2805     { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
2806 #ifndef DISASM_ONLY
2807     {
2808       0ULL,
2809       0xfff8000000000000ULL,
2810       0ULL,
2811       0ULL,
2812       0ULL
2813     },
2814     {
2815       -1ULL,
2816       0x1888000000000000ULL,
2817       -1ULL,
2818       -1ULL,
2819       -1ULL
2820     }
2821 #endif
2822   },
2823   { "ldnt4u", TILEGX_OPC_LDNT4U, 0x2, 2, TREG_ZERO, 1,
2824     { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } },
2825 #ifndef DISASM_ONLY
2826     {
2827       0ULL,
2828       0xfffff80000000000ULL,
2829       0ULL,
2830       0ULL,
2831       0ULL
2832     },
2833     {
2834       -1ULL,
2835       0x286ad80000000000ULL,
2836       -1ULL,
2837       -1ULL,
2838       -1ULL
2839     }
2840 #endif
2841   },
2842   { "ldnt4u_add", TILEGX_OPC_LDNT4U_ADD, 0x2, 3, TREG_ZERO, 1,
2843     { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
2844 #ifndef DISASM_ONLY
2845     {
2846       0ULL,
2847       0xfff8000000000000ULL,
2848       0ULL,
2849       0ULL,
2850       0ULL
2851     },
2852     {
2853       -1ULL,
2854       0x1890000000000000ULL,
2855       -1ULL,
2856       -1ULL,
2857       -1ULL
2858     }
2859 #endif
2860   },
2861   { "ldnt_add", TILEGX_OPC_LDNT_ADD, 0x2, 3, TREG_ZERO, 1,
2862     { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
2863 #ifndef DISASM_ONLY
2864     {
2865       0ULL,
2866       0xfff8000000000000ULL,
2867       0ULL,
2868       0ULL,
2869       0ULL
2870     },
2871     {
2872       -1ULL,
2873       0x1898000000000000ULL,
2874       -1ULL,
2875       -1ULL,
2876       -1ULL
2877     }
2878 #endif
2879   },
2880   { "lnk", TILEGX_OPC_LNK, 0xa, 1, TREG_ZERO, 1,
2881     { { 0, }, { 6 }, { 0, }, { 12 }, { 0, } },
2882 #ifndef DISASM_ONLY
2883     {
2884       0ULL,
2885       0xfffff80000000000ULL,
2886       0ULL,
2887       0x3c07f80000000000ULL,
2888       0ULL
2889     },
2890     {
2891       -1ULL,
2892       0x286af00000000000ULL,
2893       -1ULL,
2894       0x1c06700000000000ULL,
2895       -1ULL
2896     }
2897 #endif
2898   },
2899   { "mf", TILEGX_OPC_MF, 0x2, 0, TREG_ZERO, 1,
2900     { { 0, }, {  }, { 0, }, { 0, }, { 0, } },
2901 #ifndef DISASM_ONLY
2902     {
2903       0ULL,
2904       0xfffff80000000000ULL,
2905       0ULL,
2906       0ULL,
2907       0ULL
2908     },
2909     {
2910       -1ULL,
2911       0x286af80000000000ULL,
2912       -1ULL,
2913       -1ULL,
2914       -1ULL
2915     }
2916 #endif
2917   },
2918   { "mfspr", TILEGX_OPC_MFSPR, 0x2, 2, TREG_ZERO, 1,
2919     { { 0, }, { 6, 27 }, { 0, }, { 0, }, { 0, } },
2920 #ifndef DISASM_ONLY
2921     {
2922       0ULL,
2923       0xfff8000000000000ULL,
2924       0ULL,
2925       0ULL,
2926       0ULL
2927     },
2928     {
2929       -1ULL,
2930       0x18b0000000000000ULL,
2931       -1ULL,
2932       -1ULL,
2933       -1ULL
2934     }
2935 #endif
2936   },
2937   { "mm", TILEGX_OPC_MM, 0x1, 4, TREG_ZERO, 1,
2938     { { 23, 9, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } },
2939 #ifndef DISASM_ONLY
2940     {
2941       0xc00000007f000000ULL,
2942       0ULL,
2943       0ULL,
2944       0ULL,
2945       0ULL
2946     },
2947     {
2948       0x0000000037000000ULL,
2949       -1ULL,
2950       -1ULL,
2951       -1ULL,
2952       -1ULL
2953     }
2954 #endif
2955   },
2956   { "mnz", TILEGX_OPC_MNZ, 0xf, 3, TREG_ZERO, 1,
2957     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
2958 #ifndef DISASM_ONLY
2959     {
2960       0xc00000007ffc0000ULL,
2961       0xfffe000000000000ULL,
2962       0x00000000780c0000ULL,
2963       0x3c06000000000000ULL,
2964       0ULL
2965     },
2966     {
2967       0x0000000050a00000ULL,
2968       0x2834000000000000ULL,
2969       0x0000000048080000ULL,
2970       0x2804000000000000ULL,
2971       -1ULL
2972     }
2973 #endif
2974   },
2975   { "mtspr", TILEGX_OPC_MTSPR, 0x2, 2, TREG_ZERO, 1,
2976     { { 0, }, { 28, 7 }, { 0, }, { 0, }, { 0, } },
2977 #ifndef DISASM_ONLY
2978     {
2979       0ULL,
2980       0xfff8000000000000ULL,
2981       0ULL,
2982       0ULL,
2983       0ULL
2984     },
2985     {
2986       -1ULL,
2987       0x18b8000000000000ULL,
2988       -1ULL,
2989       -1ULL,
2990       -1ULL
2991     }
2992 #endif
2993   },
2994   { "mul_hs_hs", TILEGX_OPC_MUL_HS_HS, 0x5, 3, TREG_ZERO, 1,
2995     { { 8, 9, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } },
2996 #ifndef DISASM_ONLY
2997     {
2998       0xc00000007ffc0000ULL,
2999       0ULL,
3000       0x00000000780c0000ULL,
3001       0ULL,
3002       0ULL
3003     },
3004     {
3005       0x0000000050d40000ULL,
3006       -1ULL,
3007       0x0000000068000000ULL,
3008       -1ULL,
3009       -1ULL
3010     }
3011 #endif
3012   },
3013   { "mul_hs_hu", TILEGX_OPC_MUL_HS_HU, 0x1, 3, TREG_ZERO, 1,
3014     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3015 #ifndef DISASM_ONLY
3016     {
3017       0xc00000007ffc0000ULL,
3018       0ULL,
3019       0ULL,
3020       0ULL,
3021       0ULL
3022     },
3023     {
3024       0x0000000050d80000ULL,
3025       -1ULL,
3026       -1ULL,
3027       -1ULL,
3028       -1ULL
3029     }
3030 #endif
3031   },
3032   { "mul_hs_ls", TILEGX_OPC_MUL_HS_LS, 0x1, 3, TREG_ZERO, 1,
3033     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3034 #ifndef DISASM_ONLY
3035     {
3036       0xc00000007ffc0000ULL,
3037       0ULL,
3038       0ULL,
3039       0ULL,
3040       0ULL
3041     },
3042     {
3043       0x0000000050dc0000ULL,
3044       -1ULL,
3045       -1ULL,
3046       -1ULL,
3047       -1ULL
3048     }
3049 #endif
3050   },
3051   { "mul_hs_lu", TILEGX_OPC_MUL_HS_LU, 0x1, 3, TREG_ZERO, 1,
3052     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3053 #ifndef DISASM_ONLY
3054     {
3055       0xc00000007ffc0000ULL,
3056       0ULL,
3057       0ULL,
3058       0ULL,
3059       0ULL
3060     },
3061     {
3062       0x0000000050e00000ULL,
3063       -1ULL,
3064       -1ULL,
3065       -1ULL,
3066       -1ULL
3067     }
3068 #endif
3069   },
3070   { "mul_hu_hu", TILEGX_OPC_MUL_HU_HU, 0x5, 3, TREG_ZERO, 1,
3071     { { 8, 9, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } },
3072 #ifndef DISASM_ONLY
3073     {
3074       0xc00000007ffc0000ULL,
3075       0ULL,
3076       0x00000000780c0000ULL,
3077       0ULL,
3078       0ULL
3079     },
3080     {
3081       0x0000000050e40000ULL,
3082       -1ULL,
3083       0x0000000068040000ULL,
3084       -1ULL,
3085       -1ULL
3086     }
3087 #endif
3088   },
3089   { "mul_hu_ls", TILEGX_OPC_MUL_HU_LS, 0x1, 3, TREG_ZERO, 1,
3090     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3091 #ifndef DISASM_ONLY
3092     {
3093       0xc00000007ffc0000ULL,
3094       0ULL,
3095       0ULL,
3096       0ULL,
3097       0ULL
3098     },
3099     {
3100       0x0000000050e80000ULL,
3101       -1ULL,
3102       -1ULL,
3103       -1ULL,
3104       -1ULL
3105     }
3106 #endif
3107   },
3108   { "mul_hu_lu", TILEGX_OPC_MUL_HU_LU, 0x1, 3, TREG_ZERO, 1,
3109     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3110 #ifndef DISASM_ONLY
3111     {
3112       0xc00000007ffc0000ULL,
3113       0ULL,
3114       0ULL,
3115       0ULL,
3116       0ULL
3117     },
3118     {
3119       0x0000000050ec0000ULL,
3120       -1ULL,
3121       -1ULL,
3122       -1ULL,
3123       -1ULL
3124     }
3125 #endif
3126   },
3127   { "mul_ls_ls", TILEGX_OPC_MUL_LS_LS, 0x5, 3, TREG_ZERO, 1,
3128     { { 8, 9, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } },
3129 #ifndef DISASM_ONLY
3130     {
3131       0xc00000007ffc0000ULL,
3132       0ULL,
3133       0x00000000780c0000ULL,
3134       0ULL,
3135       0ULL
3136     },
3137     {
3138       0x0000000050f00000ULL,
3139       -1ULL,
3140       0x0000000068080000ULL,
3141       -1ULL,
3142       -1ULL
3143     }
3144 #endif
3145   },
3146   { "mul_ls_lu", TILEGX_OPC_MUL_LS_LU, 0x1, 3, TREG_ZERO, 1,
3147     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3148 #ifndef DISASM_ONLY
3149     {
3150       0xc00000007ffc0000ULL,
3151       0ULL,
3152       0ULL,
3153       0ULL,
3154       0ULL
3155     },
3156     {
3157       0x0000000050f40000ULL,
3158       -1ULL,
3159       -1ULL,
3160       -1ULL,
3161       -1ULL
3162     }
3163 #endif
3164   },
3165   { "mul_lu_lu", TILEGX_OPC_MUL_LU_LU, 0x5, 3, TREG_ZERO, 1,
3166     { { 8, 9, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } },
3167 #ifndef DISASM_ONLY
3168     {
3169       0xc00000007ffc0000ULL,
3170       0ULL,
3171       0x00000000780c0000ULL,
3172       0ULL,
3173       0ULL
3174     },
3175     {
3176       0x0000000050f80000ULL,
3177       -1ULL,
3178       0x00000000680c0000ULL,
3179       -1ULL,
3180       -1ULL
3181     }
3182 #endif
3183   },
3184   { "mula_hs_hs", TILEGX_OPC_MULA_HS_HS, 0x5, 3, TREG_ZERO, 1,
3185     { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } },
3186 #ifndef DISASM_ONLY
3187     {
3188       0xc00000007ffc0000ULL,
3189       0ULL,
3190       0x00000000780c0000ULL,
3191       0ULL,
3192       0ULL
3193     },
3194     {
3195       0x0000000050a80000ULL,
3196       -1ULL,
3197       0x0000000070000000ULL,
3198       -1ULL,
3199       -1ULL
3200     }
3201 #endif
3202   },
3203   { "mula_hs_hu", TILEGX_OPC_MULA_HS_HU, 0x1, 3, TREG_ZERO, 1,
3204     { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3205 #ifndef DISASM_ONLY
3206     {
3207       0xc00000007ffc0000ULL,
3208       0ULL,
3209       0ULL,
3210       0ULL,
3211       0ULL
3212     },
3213     {
3214       0x0000000050ac0000ULL,
3215       -1ULL,
3216       -1ULL,
3217       -1ULL,
3218       -1ULL
3219     }
3220 #endif
3221   },
3222   { "mula_hs_ls", TILEGX_OPC_MULA_HS_LS, 0x1, 3, TREG_ZERO, 1,
3223     { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3224 #ifndef DISASM_ONLY
3225     {
3226       0xc00000007ffc0000ULL,
3227       0ULL,
3228       0ULL,
3229       0ULL,
3230       0ULL
3231     },
3232     {
3233       0x0000000050b00000ULL,
3234       -1ULL,
3235       -1ULL,
3236       -1ULL,
3237       -1ULL
3238     }
3239 #endif
3240   },
3241   { "mula_hs_lu", TILEGX_OPC_MULA_HS_LU, 0x1, 3, TREG_ZERO, 1,
3242     { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3243 #ifndef DISASM_ONLY
3244     {
3245       0xc00000007ffc0000ULL,
3246       0ULL,
3247       0ULL,
3248       0ULL,
3249       0ULL
3250     },
3251     {
3252       0x0000000050b40000ULL,
3253       -1ULL,
3254       -1ULL,
3255       -1ULL,
3256       -1ULL
3257     }
3258 #endif
3259   },
3260   { "mula_hu_hu", TILEGX_OPC_MULA_HU_HU, 0x5, 3, TREG_ZERO, 1,
3261     { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } },
3262 #ifndef DISASM_ONLY
3263     {
3264       0xc00000007ffc0000ULL,
3265       0ULL,
3266       0x00000000780c0000ULL,
3267       0ULL,
3268       0ULL
3269     },
3270     {
3271       0x0000000050b80000ULL,
3272       -1ULL,
3273       0x0000000070040000ULL,
3274       -1ULL,
3275       -1ULL
3276     }
3277 #endif
3278   },
3279   { "mula_hu_ls", TILEGX_OPC_MULA_HU_LS, 0x1, 3, TREG_ZERO, 1,
3280     { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3281 #ifndef DISASM_ONLY
3282     {
3283       0xc00000007ffc0000ULL,
3284       0ULL,
3285       0ULL,
3286       0ULL,
3287       0ULL
3288     },
3289     {
3290       0x0000000050bc0000ULL,
3291       -1ULL,
3292       -1ULL,
3293       -1ULL,
3294       -1ULL
3295     }
3296 #endif
3297   },
3298   { "mula_hu_lu", TILEGX_OPC_MULA_HU_LU, 0x1, 3, TREG_ZERO, 1,
3299     { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3300 #ifndef DISASM_ONLY
3301     {
3302       0xc00000007ffc0000ULL,
3303       0ULL,
3304       0ULL,
3305       0ULL,
3306       0ULL
3307     },
3308     {
3309       0x0000000050c00000ULL,
3310       -1ULL,
3311       -1ULL,
3312       -1ULL,
3313       -1ULL
3314     }
3315 #endif
3316   },
3317   { "mula_ls_ls", TILEGX_OPC_MULA_LS_LS, 0x5, 3, TREG_ZERO, 1,
3318     { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } },
3319 #ifndef DISASM_ONLY
3320     {
3321       0xc00000007ffc0000ULL,
3322       0ULL,
3323       0x00000000780c0000ULL,
3324       0ULL,
3325       0ULL
3326     },
3327     {
3328       0x0000000050c40000ULL,
3329       -1ULL,
3330       0x0000000070080000ULL,
3331       -1ULL,
3332       -1ULL
3333     }
3334 #endif
3335   },
3336   { "mula_ls_lu", TILEGX_OPC_MULA_LS_LU, 0x1, 3, TREG_ZERO, 1,
3337     { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3338 #ifndef DISASM_ONLY
3339     {
3340       0xc00000007ffc0000ULL,
3341       0ULL,
3342       0ULL,
3343       0ULL,
3344       0ULL
3345     },
3346     {
3347       0x0000000050c80000ULL,
3348       -1ULL,
3349       -1ULL,
3350       -1ULL,
3351       -1ULL
3352     }
3353 #endif
3354   },
3355   { "mula_lu_lu", TILEGX_OPC_MULA_LU_LU, 0x5, 3, TREG_ZERO, 1,
3356     { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } },
3357 #ifndef DISASM_ONLY
3358     {
3359       0xc00000007ffc0000ULL,
3360       0ULL,
3361       0x00000000780c0000ULL,
3362       0ULL,
3363       0ULL
3364     },
3365     {
3366       0x0000000050cc0000ULL,
3367       -1ULL,
3368       0x00000000700c0000ULL,
3369       -1ULL,
3370       -1ULL
3371     }
3372 #endif
3373   },
3374   { "mulax", TILEGX_OPC_MULAX, 0x5, 3, TREG_ZERO, 1,
3375     { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } },
3376 #ifndef DISASM_ONLY
3377     {
3378       0xc00000007ffc0000ULL,
3379       0ULL,
3380       0x00000000780c0000ULL,
3381       0ULL,
3382       0ULL
3383     },
3384     {
3385       0x0000000050a40000ULL,
3386       -1ULL,
3387       0x0000000040080000ULL,
3388       -1ULL,
3389       -1ULL
3390     }
3391 #endif
3392   },
3393   { "mulx", TILEGX_OPC_MULX, 0x5, 3, TREG_ZERO, 1,
3394     { { 8, 9, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } },
3395 #ifndef DISASM_ONLY
3396     {
3397       0xc00000007ffc0000ULL,
3398       0ULL,
3399       0x00000000780c0000ULL,
3400       0ULL,
3401       0ULL
3402     },
3403     {
3404       0x0000000050d00000ULL,
3405       -1ULL,
3406       0x00000000400c0000ULL,
3407       -1ULL,
3408       -1ULL
3409     }
3410 #endif
3411   },
3412   { "mz", TILEGX_OPC_MZ, 0xf, 3, TREG_ZERO, 1,
3413     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
3414 #ifndef DISASM_ONLY
3415     {
3416       0xc00000007ffc0000ULL,
3417       0xfffe000000000000ULL,
3418       0x00000000780c0000ULL,
3419       0x3c06000000000000ULL,
3420       0ULL
3421     },
3422     {
3423       0x0000000050fc0000ULL,
3424       0x2836000000000000ULL,
3425       0x00000000480c0000ULL,
3426       0x2806000000000000ULL,
3427       -1ULL
3428     }
3429 #endif
3430   },
3431   { "nap", TILEGX_OPC_NAP, 0x2, 0, TREG_ZERO, 0,
3432     { { 0, }, {  }, { 0, }, { 0, }, { 0, } },
3433 #ifndef DISASM_ONLY
3434     {
3435       0ULL,
3436       0xfffff80000000000ULL,
3437       0ULL,
3438       0ULL,
3439       0ULL
3440     },
3441     {
3442       -1ULL,
3443       0x286b000000000000ULL,
3444       -1ULL,
3445       -1ULL,
3446       -1ULL
3447     }
3448 #endif
3449   },
3450   { "nop", TILEGX_OPC_NOP, 0xf, 0, TREG_ZERO, 1,
3451     { {  }, {  }, {  }, {  }, { 0, } },
3452 #ifndef DISASM_ONLY
3453     {
3454       0xc00000007ffff000ULL,
3455       0xfffff80000000000ULL,
3456       0x00000000780ff000ULL,
3457       0x3c07f80000000000ULL,
3458       0ULL
3459     },
3460     {
3461       0x0000000051485000ULL,
3462       0x286b080000000000ULL,
3463       0x00000000300c5000ULL,
3464       0x1c06780000000000ULL,
3465       -1ULL
3466     }
3467 #endif
3468   },
3469   { "nor", TILEGX_OPC_NOR, 0xf, 3, TREG_ZERO, 1,
3470     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
3471 #ifndef DISASM_ONLY
3472     {
3473       0xc00000007ffc0000ULL,
3474       0xfffe000000000000ULL,
3475       0x00000000780c0000ULL,
3476       0x3c06000000000000ULL,
3477       0ULL
3478     },
3479     {
3480       0x0000000051000000ULL,
3481       0x2838000000000000ULL,
3482       0x0000000050040000ULL,
3483       0x2c02000000000000ULL,
3484       -1ULL
3485     }
3486 #endif
3487   },
3488   { "or", TILEGX_OPC_OR, 0xf, 3, TREG_ZERO, 1,
3489     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
3490 #ifndef DISASM_ONLY
3491     {
3492       0xc00000007ffc0000ULL,
3493       0xfffe000000000000ULL,
3494       0x00000000780c0000ULL,
3495       0x3c06000000000000ULL,
3496       0ULL
3497     },
3498     {
3499       0x0000000051040000ULL,
3500       0x283a000000000000ULL,
3501       0x0000000050080000ULL,
3502       0x2c04000000000000ULL,
3503       -1ULL
3504     }
3505 #endif
3506   },
3507   { "ori", TILEGX_OPC_ORI, 0x3, 3, TREG_ZERO, 1,
3508     { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
3509 #ifndef DISASM_ONLY
3510     {
3511       0xc00000007ff00000ULL,
3512       0xfff8000000000000ULL,
3513       0ULL,
3514       0ULL,
3515       0ULL
3516     },
3517     {
3518       0x0000000040700000ULL,
3519       0x18c0000000000000ULL,
3520       -1ULL,
3521       -1ULL,
3522       -1ULL
3523     }
3524 #endif
3525   },
3526   { "pcnt", TILEGX_OPC_PCNT, 0x5, 2, TREG_ZERO, 1,
3527     { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } },
3528 #ifndef DISASM_ONLY
3529     {
3530       0xc00000007ffff000ULL,
3531       0ULL,
3532       0x00000000780ff000ULL,
3533       0ULL,
3534       0ULL
3535     },
3536     {
3537       0x0000000051486000ULL,
3538       -1ULL,
3539       0x00000000300c6000ULL,
3540       -1ULL,
3541       -1ULL
3542     }
3543 #endif
3544   },
3545   { "revbits", TILEGX_OPC_REVBITS, 0x5, 2, TREG_ZERO, 1,
3546     { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } },
3547 #ifndef DISASM_ONLY
3548     {
3549       0xc00000007ffff000ULL,
3550       0ULL,
3551       0x00000000780ff000ULL,
3552       0ULL,
3553       0ULL
3554     },
3555     {
3556       0x0000000051487000ULL,
3557       -1ULL,
3558       0x00000000300c7000ULL,
3559       -1ULL,
3560       -1ULL
3561     }
3562 #endif
3563   },
3564   { "revbytes", TILEGX_OPC_REVBYTES, 0x5, 2, TREG_ZERO, 1,
3565     { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } },
3566 #ifndef DISASM_ONLY
3567     {
3568       0xc00000007ffff000ULL,
3569       0ULL,
3570       0x00000000780ff000ULL,
3571       0ULL,
3572       0ULL
3573     },
3574     {
3575       0x0000000051488000ULL,
3576       -1ULL,
3577       0x00000000300c8000ULL,
3578       -1ULL,
3579       -1ULL
3580     }
3581 #endif
3582   },
3583   { "rotl", TILEGX_OPC_ROTL, 0xf, 3, TREG_ZERO, 1,
3584     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
3585 #ifndef DISASM_ONLY
3586     {
3587       0xc00000007ffc0000ULL,
3588       0xfffe000000000000ULL,
3589       0x00000000780c0000ULL,
3590       0x3c06000000000000ULL,
3591       0ULL
3592     },
3593     {
3594       0x0000000051080000ULL,
3595       0x283c000000000000ULL,
3596       0x0000000058000000ULL,
3597       0x3000000000000000ULL,
3598       -1ULL
3599     }
3600 #endif
3601   },
3602   { "rotli", TILEGX_OPC_ROTLI, 0xf, 3, TREG_ZERO, 1,
3603     { { 8, 9, 29 }, { 6, 7, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } },
3604 #ifndef DISASM_ONLY
3605     {
3606       0xc00000007ffc0000ULL,
3607       0xfffe000000000000ULL,
3608       0x00000000780c0000ULL,
3609       0x3c06000000000000ULL,
3610       0ULL
3611     },
3612     {
3613       0x0000000060040000ULL,
3614       0x3002000000000000ULL,
3615       0x0000000078000000ULL,
3616       0x3800000000000000ULL,
3617       -1ULL
3618     }
3619 #endif
3620   },
3621   { "shl", TILEGX_OPC_SHL, 0xf, 3, TREG_ZERO, 1,
3622     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
3623 #ifndef DISASM_ONLY
3624     {
3625       0xc00000007ffc0000ULL,
3626       0xfffe000000000000ULL,
3627       0x00000000780c0000ULL,
3628       0x3c06000000000000ULL,
3629       0ULL
3630     },
3631     {
3632       0x0000000051280000ULL,
3633       0x284c000000000000ULL,
3634       0x0000000058040000ULL,
3635       0x3002000000000000ULL,
3636       -1ULL
3637     }
3638 #endif
3639   },
3640   { "shl16insli", TILEGX_OPC_SHL16INSLI, 0x3, 3, TREG_ZERO, 1,
3641     { { 8, 9, 4 }, { 6, 7, 5 }, { 0, }, { 0, }, { 0, } },
3642 #ifndef DISASM_ONLY
3643     {
3644       0xc000000070000000ULL,
3645       0xf800000000000000ULL,
3646       0ULL,
3647       0ULL,
3648       0ULL
3649     },
3650     {
3651       0x0000000070000000ULL,
3652       0x3800000000000000ULL,
3653       -1ULL,
3654       -1ULL,
3655       -1ULL
3656     }
3657 #endif
3658   },
3659   { "shl1add", TILEGX_OPC_SHL1ADD, 0xf, 3, TREG_ZERO, 1,
3660     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
3661 #ifndef DISASM_ONLY
3662     {
3663       0xc00000007ffc0000ULL,
3664       0xfffe000000000000ULL,
3665       0x00000000780c0000ULL,
3666       0x3c06000000000000ULL,
3667       0ULL
3668     },
3669     {
3670       0x0000000051100000ULL,
3671       0x2840000000000000ULL,
3672       0x0000000030000000ULL,
3673       0x1c00000000000000ULL,
3674       -1ULL
3675     }
3676 #endif
3677   },
3678   { "shl1addx", TILEGX_OPC_SHL1ADDX, 0xf, 3, TREG_ZERO, 1,
3679     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
3680 #ifndef DISASM_ONLY
3681     {
3682       0xc00000007ffc0000ULL,
3683       0xfffe000000000000ULL,
3684       0x00000000780c0000ULL,
3685       0x3c06000000000000ULL,
3686       0ULL
3687     },
3688     {
3689       0x00000000510c0000ULL,
3690       0x283e000000000000ULL,
3691       0x0000000060040000ULL,
3692       0x3402000000000000ULL,
3693       -1ULL
3694     }
3695 #endif
3696   },
3697   { "shl2add", TILEGX_OPC_SHL2ADD, 0xf, 3, TREG_ZERO, 1,
3698     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
3699 #ifndef DISASM_ONLY
3700     {
3701       0xc00000007ffc0000ULL,
3702       0xfffe000000000000ULL,
3703       0x00000000780c0000ULL,
3704       0x3c06000000000000ULL,
3705       0ULL
3706     },
3707     {
3708       0x0000000051180000ULL,
3709       0x2844000000000000ULL,
3710       0x0000000030040000ULL,
3711       0x1c02000000000000ULL,
3712       -1ULL
3713     }
3714 #endif
3715   },
3716   { "shl2addx", TILEGX_OPC_SHL2ADDX, 0xf, 3, TREG_ZERO, 1,
3717     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
3718 #ifndef DISASM_ONLY
3719     {
3720       0xc00000007ffc0000ULL,
3721       0xfffe000000000000ULL,
3722       0x00000000780c0000ULL,
3723       0x3c06000000000000ULL,
3724       0ULL
3725     },
3726     {
3727       0x0000000051140000ULL,
3728       0x2842000000000000ULL,
3729       0x0000000060080000ULL,
3730       0x3404000000000000ULL,
3731       -1ULL
3732     }
3733 #endif
3734   },
3735   { "shl3add", TILEGX_OPC_SHL3ADD, 0xf, 3, TREG_ZERO, 1,
3736     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
3737 #ifndef DISASM_ONLY
3738     {
3739       0xc00000007ffc0000ULL,
3740       0xfffe000000000000ULL,
3741       0x00000000780c0000ULL,
3742       0x3c06000000000000ULL,
3743       0ULL
3744     },
3745     {
3746       0x0000000051200000ULL,
3747       0x2848000000000000ULL,
3748       0x0000000030080000ULL,
3749       0x1c04000000000000ULL,
3750       -1ULL
3751     }
3752 #endif
3753   },
3754   { "shl3addx", TILEGX_OPC_SHL3ADDX, 0xf, 3, TREG_ZERO, 1,
3755     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
3756 #ifndef DISASM_ONLY
3757     {
3758       0xc00000007ffc0000ULL,
3759       0xfffe000000000000ULL,
3760       0x00000000780c0000ULL,
3761       0x3c06000000000000ULL,
3762       0ULL
3763     },
3764     {
3765       0x00000000511c0000ULL,
3766       0x2846000000000000ULL,
3767       0x00000000600c0000ULL,
3768       0x3406000000000000ULL,
3769       -1ULL
3770     }
3771 #endif
3772   },
3773   { "shli", TILEGX_OPC_SHLI, 0xf, 3, TREG_ZERO, 1,
3774     { { 8, 9, 29 }, { 6, 7, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } },
3775 #ifndef DISASM_ONLY
3776     {
3777       0xc00000007ffc0000ULL,
3778       0xfffe000000000000ULL,
3779       0x00000000780c0000ULL,
3780       0x3c06000000000000ULL,
3781       0ULL
3782     },
3783     {
3784       0x0000000060080000ULL,
3785       0x3004000000000000ULL,
3786       0x0000000078040000ULL,
3787       0x3802000000000000ULL,
3788       -1ULL
3789     }
3790 #endif
3791   },
3792   { "shlx", TILEGX_OPC_SHLX, 0x3, 3, TREG_ZERO, 1,
3793     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
3794 #ifndef DISASM_ONLY
3795     {
3796       0xc00000007ffc0000ULL,
3797       0xfffe000000000000ULL,
3798       0ULL,
3799       0ULL,
3800       0ULL
3801     },
3802     {
3803       0x0000000051240000ULL,
3804       0x284a000000000000ULL,
3805       -1ULL,
3806       -1ULL,
3807       -1ULL
3808     }
3809 #endif
3810   },
3811   { "shlxi", TILEGX_OPC_SHLXI, 0x3, 3, TREG_ZERO, 1,
3812     { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } },
3813 #ifndef DISASM_ONLY
3814     {
3815       0xc00000007ffc0000ULL,
3816       0xfffe000000000000ULL,
3817       0ULL,
3818       0ULL,
3819       0ULL
3820     },
3821     {
3822       0x00000000600c0000ULL,
3823       0x3006000000000000ULL,
3824       -1ULL,
3825       -1ULL,
3826       -1ULL
3827     }
3828 #endif
3829   },
3830   { "shrs", TILEGX_OPC_SHRS, 0xf, 3, TREG_ZERO, 1,
3831     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
3832 #ifndef DISASM_ONLY
3833     {
3834       0xc00000007ffc0000ULL,
3835       0xfffe000000000000ULL,
3836       0x00000000780c0000ULL,
3837       0x3c06000000000000ULL,
3838       0ULL
3839     },
3840     {
3841       0x00000000512c0000ULL,
3842       0x284e000000000000ULL,
3843       0x0000000058080000ULL,
3844       0x3004000000000000ULL,
3845       -1ULL
3846     }
3847 #endif
3848   },
3849   { "shrsi", TILEGX_OPC_SHRSI, 0xf, 3, TREG_ZERO, 1,
3850     { { 8, 9, 29 }, { 6, 7, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } },
3851 #ifndef DISASM_ONLY
3852     {
3853       0xc00000007ffc0000ULL,
3854       0xfffe000000000000ULL,
3855       0x00000000780c0000ULL,
3856       0x3c06000000000000ULL,
3857       0ULL
3858     },
3859     {
3860       0x0000000060100000ULL,
3861       0x3008000000000000ULL,
3862       0x0000000078080000ULL,
3863       0x3804000000000000ULL,
3864       -1ULL
3865     }
3866 #endif
3867   },
3868   { "shru", TILEGX_OPC_SHRU, 0xf, 3, TREG_ZERO, 1,
3869     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
3870 #ifndef DISASM_ONLY
3871     {
3872       0xc00000007ffc0000ULL,
3873       0xfffe000000000000ULL,
3874       0x00000000780c0000ULL,
3875       0x3c06000000000000ULL,
3876       0ULL
3877     },
3878     {
3879       0x0000000051340000ULL,
3880       0x2852000000000000ULL,
3881       0x00000000580c0000ULL,
3882       0x3006000000000000ULL,
3883       -1ULL
3884     }
3885 #endif
3886   },
3887   { "shrui", TILEGX_OPC_SHRUI, 0xf, 3, TREG_ZERO, 1,
3888     { { 8, 9, 29 }, { 6, 7, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } },
3889 #ifndef DISASM_ONLY
3890     {
3891       0xc00000007ffc0000ULL,
3892       0xfffe000000000000ULL,
3893       0x00000000780c0000ULL,
3894       0x3c06000000000000ULL,
3895       0ULL
3896     },
3897     {
3898       0x0000000060140000ULL,
3899       0x300a000000000000ULL,
3900       0x00000000780c0000ULL,
3901       0x3806000000000000ULL,
3902       -1ULL
3903     }
3904 #endif
3905   },
3906   { "shrux", TILEGX_OPC_SHRUX, 0x3, 3, TREG_ZERO, 1,
3907     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
3908 #ifndef DISASM_ONLY
3909     {
3910       0xc00000007ffc0000ULL,
3911       0xfffe000000000000ULL,
3912       0ULL,
3913       0ULL,
3914       0ULL
3915     },
3916     {
3917       0x0000000051300000ULL,
3918       0x2850000000000000ULL,
3919       -1ULL,
3920       -1ULL,
3921       -1ULL
3922     }
3923 #endif
3924   },
3925   { "shruxi", TILEGX_OPC_SHRUXI, 0x3, 3, TREG_ZERO, 1,
3926     { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } },
3927 #ifndef DISASM_ONLY
3928     {
3929       0xc00000007ffc0000ULL,
3930       0xfffe000000000000ULL,
3931       0ULL,
3932       0ULL,
3933       0ULL
3934     },
3935     {
3936       0x0000000060180000ULL,
3937       0x300c000000000000ULL,
3938       -1ULL,
3939       -1ULL,
3940       -1ULL
3941     }
3942 #endif
3943   },
3944   { "shufflebytes", TILEGX_OPC_SHUFFLEBYTES, 0x1, 3, TREG_ZERO, 1,
3945     { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3946 #ifndef DISASM_ONLY
3947     {
3948       0xc00000007ffc0000ULL,
3949       0ULL,
3950       0ULL,
3951       0ULL,
3952       0ULL
3953     },
3954     {
3955       0x0000000051380000ULL,
3956       -1ULL,
3957       -1ULL,
3958       -1ULL,
3959       -1ULL
3960     }
3961 #endif
3962   },
3963   { "st", TILEGX_OPC_ST, 0x12, 2, TREG_ZERO, 1,
3964     { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 14, 33 } },
3965 #ifndef DISASM_ONLY
3966     {
3967       0ULL,
3968       0xfffe000000000000ULL,
3969       0ULL,
3970       0ULL,
3971       0xc200000004000000ULL
3972     },
3973     {
3974       -1ULL,
3975       0x2862000000000000ULL,
3976       -1ULL,
3977       -1ULL,
3978       0xc200000004000000ULL
3979     }
3980 #endif
3981   },
3982   { "st1", TILEGX_OPC_ST1, 0x12, 2, TREG_ZERO, 1,
3983     { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 14, 33 } },
3984 #ifndef DISASM_ONLY
3985     {
3986       0ULL,
3987       0xfffe000000000000ULL,
3988       0ULL,
3989       0ULL,
3990       0xc200000004000000ULL
3991     },
3992     {
3993       -1ULL,
3994       0x2854000000000000ULL,
3995       -1ULL,
3996       -1ULL,
3997       0xc000000000000000ULL
3998     }
3999 #endif
4000   },
4001   { "st1_add", TILEGX_OPC_ST1_ADD, 0x2, 3, TREG_ZERO, 1,
4002     { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
4003 #ifndef DISASM_ONLY
4004     {
4005       0ULL,
4006       0xfff8000000000000ULL,
4007       0ULL,
4008       0ULL,
4009       0ULL
4010     },
4011     {
4012       -1ULL,
4013       0x18c8000000000000ULL,
4014       -1ULL,
4015       -1ULL,
4016       -1ULL
4017     }
4018 #endif
4019   },
4020   { "st2", TILEGX_OPC_ST2, 0x12, 2, TREG_ZERO, 1,
4021     { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 14, 33 } },
4022 #ifndef DISASM_ONLY
4023     {
4024       0ULL,
4025       0xfffe000000000000ULL,
4026       0ULL,
4027       0ULL,
4028       0xc200000004000000ULL
4029     },
4030     {
4031       -1ULL,
4032       0x2856000000000000ULL,
4033       -1ULL,
4034       -1ULL,
4035       0xc000000004000000ULL
4036     }
4037 #endif
4038   },
4039   { "st2_add", TILEGX_OPC_ST2_ADD, 0x2, 3, TREG_ZERO, 1,
4040     { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
4041 #ifndef DISASM_ONLY
4042     {
4043       0ULL,
4044       0xfff8000000000000ULL,
4045       0ULL,
4046       0ULL,
4047       0ULL
4048     },
4049     {
4050       -1ULL,
4051       0x18d0000000000000ULL,
4052       -1ULL,
4053       -1ULL,
4054       -1ULL
4055     }
4056 #endif
4057   },
4058   { "st4", TILEGX_OPC_ST4, 0x12, 2, TREG_ZERO, 1,
4059     { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 14, 33 } },
4060 #ifndef DISASM_ONLY
4061     {
4062       0ULL,
4063       0xfffe000000000000ULL,
4064       0ULL,
4065       0ULL,
4066       0xc200000004000000ULL
4067     },
4068     {
4069       -1ULL,
4070       0x2858000000000000ULL,
4071       -1ULL,
4072       -1ULL,
4073       0xc200000000000000ULL
4074     }
4075 #endif
4076   },
4077   { "st4_add", TILEGX_OPC_ST4_ADD, 0x2, 3, TREG_ZERO, 1,
4078     { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
4079 #ifndef DISASM_ONLY
4080     {
4081       0ULL,
4082       0xfff8000000000000ULL,
4083       0ULL,
4084       0ULL,
4085       0ULL
4086     },
4087     {
4088       -1ULL,
4089       0x18d8000000000000ULL,
4090       -1ULL,
4091       -1ULL,
4092       -1ULL
4093     }
4094 #endif
4095   },
4096   { "st_add", TILEGX_OPC_ST_ADD, 0x2, 3, TREG_ZERO, 1,
4097     { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
4098 #ifndef DISASM_ONLY
4099     {
4100       0ULL,
4101       0xfff8000000000000ULL,
4102       0ULL,
4103       0ULL,
4104       0ULL
4105     },
4106     {
4107       -1ULL,
4108       0x1900000000000000ULL,
4109       -1ULL,
4110       -1ULL,
4111       -1ULL
4112     }
4113 #endif
4114   },
4115   { "stnt", TILEGX_OPC_STNT, 0x2, 2, TREG_ZERO, 1,
4116     { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 0, } },
4117 #ifndef DISASM_ONLY
4118     {
4119       0ULL,
4120       0xfffe000000000000ULL,
4121       0ULL,
4122       0ULL,
4123       0ULL
4124     },
4125     {
4126       -1ULL,
4127       0x2860000000000000ULL,
4128       -1ULL,
4129       -1ULL,
4130       -1ULL
4131     }
4132 #endif
4133   },
4134   { "stnt1", TILEGX_OPC_STNT1, 0x2, 2, TREG_ZERO, 1,
4135     { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 0, } },
4136 #ifndef DISASM_ONLY
4137     {
4138       0ULL,
4139       0xfffe000000000000ULL,
4140       0ULL,
4141       0ULL,
4142       0ULL
4143     },
4144     {
4145       -1ULL,
4146       0x285a000000000000ULL,
4147       -1ULL,
4148       -1ULL,
4149       -1ULL
4150     }
4151 #endif
4152   },
4153   { "stnt1_add", TILEGX_OPC_STNT1_ADD, 0x2, 3, TREG_ZERO, 1,
4154     { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
4155 #ifndef DISASM_ONLY
4156     {
4157       0ULL,
4158       0xfff8000000000000ULL,
4159       0ULL,
4160       0ULL,
4161       0ULL
4162     },
4163     {
4164       -1ULL,
4165       0x18e0000000000000ULL,
4166       -1ULL,
4167       -1ULL,
4168       -1ULL
4169     }
4170 #endif
4171   },
4172   { "stnt2", TILEGX_OPC_STNT2, 0x2, 2, TREG_ZERO, 1,
4173     { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 0, } },
4174 #ifndef DISASM_ONLY
4175     {
4176       0ULL,
4177       0xfffe000000000000ULL,
4178       0ULL,
4179       0ULL,
4180       0ULL
4181     },
4182     {
4183       -1ULL,
4184       0x285c000000000000ULL,
4185       -1ULL,
4186       -1ULL,
4187       -1ULL
4188     }
4189 #endif
4190   },
4191   { "stnt2_add", TILEGX_OPC_STNT2_ADD, 0x2, 3, TREG_ZERO, 1,
4192     { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
4193 #ifndef DISASM_ONLY
4194     {
4195       0ULL,
4196       0xfff8000000000000ULL,
4197       0ULL,
4198       0ULL,
4199       0ULL
4200     },
4201     {
4202       -1ULL,
4203       0x18e8000000000000ULL,
4204       -1ULL,
4205       -1ULL,
4206       -1ULL
4207     }
4208 #endif
4209   },
4210   { "stnt4", TILEGX_OPC_STNT4, 0x2, 2, TREG_ZERO, 1,
4211     { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 0, } },
4212 #ifndef DISASM_ONLY
4213     {
4214       0ULL,
4215       0xfffe000000000000ULL,
4216       0ULL,
4217       0ULL,
4218       0ULL
4219     },
4220     {
4221       -1ULL,
4222       0x285e000000000000ULL,
4223       -1ULL,
4224       -1ULL,
4225       -1ULL
4226     }
4227 #endif
4228   },
4229   { "stnt4_add", TILEGX_OPC_STNT4_ADD, 0x2, 3, TREG_ZERO, 1,
4230     { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
4231 #ifndef DISASM_ONLY
4232     {
4233       0ULL,
4234       0xfff8000000000000ULL,
4235       0ULL,
4236       0ULL,
4237       0ULL
4238     },
4239     {
4240       -1ULL,
4241       0x18f0000000000000ULL,
4242       -1ULL,
4243       -1ULL,
4244       -1ULL
4245     }
4246 #endif
4247   },
4248   { "stnt_add", TILEGX_OPC_STNT_ADD, 0x2, 3, TREG_ZERO, 1,
4249     { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
4250 #ifndef DISASM_ONLY
4251     {
4252       0ULL,
4253       0xfff8000000000000ULL,
4254       0ULL,
4255       0ULL,
4256       0ULL
4257     },
4258     {
4259       -1ULL,
4260       0x18f8000000000000ULL,
4261       -1ULL,
4262       -1ULL,
4263       -1ULL
4264     }
4265 #endif
4266   },
4267   { "sub", TILEGX_OPC_SUB, 0xf, 3, TREG_ZERO, 1,
4268     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
4269 #ifndef DISASM_ONLY
4270     {
4271       0xc00000007ffc0000ULL,
4272       0xfffe000000000000ULL,
4273       0x00000000780c0000ULL,
4274       0x3c06000000000000ULL,
4275       0ULL
4276     },
4277     {
4278       0x0000000051440000ULL,
4279       0x2868000000000000ULL,
4280       0x00000000280c0000ULL,
4281       0x1806000000000000ULL,
4282       -1ULL
4283     }
4284 #endif
4285   },
4286   { "subx", TILEGX_OPC_SUBX, 0xf, 3, TREG_ZERO, 1,
4287     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
4288 #ifndef DISASM_ONLY
4289     {
4290       0xc00000007ffc0000ULL,
4291       0xfffe000000000000ULL,
4292       0x00000000780c0000ULL,
4293       0x3c06000000000000ULL,
4294       0ULL
4295     },
4296     {
4297       0x0000000051400000ULL,
4298       0x2866000000000000ULL,
4299       0x0000000028080000ULL,
4300       0x1804000000000000ULL,
4301       -1ULL
4302     }
4303 #endif
4304   },
4305   { "subxsc", TILEGX_OPC_SUBXSC, 0x3, 3, TREG_ZERO, 1,
4306     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
4307 #ifndef DISASM_ONLY
4308     {
4309       0xc00000007ffc0000ULL,
4310       0xfffe000000000000ULL,
4311       0ULL,
4312       0ULL,
4313       0ULL
4314     },
4315     {
4316       0x00000000513c0000ULL,
4317       0x2864000000000000ULL,
4318       -1ULL,
4319       -1ULL,
4320       -1ULL
4321     }
4322 #endif
4323   },
4324   { "swint0", TILEGX_OPC_SWINT0, 0x2, 0, TREG_ZERO, 0,
4325     { { 0, }, {  }, { 0, }, { 0, }, { 0, } },
4326 #ifndef DISASM_ONLY
4327     {
4328       0ULL,
4329       0xfffff80000000000ULL,
4330       0ULL,
4331       0ULL,
4332       0ULL
4333     },
4334     {
4335       -1ULL,
4336       0x286b100000000000ULL,
4337       -1ULL,
4338       -1ULL,
4339       -1ULL
4340     }
4341 #endif
4342   },
4343   { "swint1", TILEGX_OPC_SWINT1, 0x2, 0, TREG_ZERO, 0,
4344     { { 0, }, {  }, { 0, }, { 0, }, { 0, } },
4345 #ifndef DISASM_ONLY
4346     {
4347       0ULL,
4348       0xfffff80000000000ULL,
4349       0ULL,
4350       0ULL,
4351       0ULL
4352     },
4353     {
4354       -1ULL,
4355       0x286b180000000000ULL,
4356       -1ULL,
4357       -1ULL,
4358       -1ULL
4359     }
4360 #endif
4361   },
4362   { "swint2", TILEGX_OPC_SWINT2, 0x2, 0, TREG_ZERO, 0,
4363     { { 0, }, {  }, { 0, }, { 0, }, { 0, } },
4364 #ifndef DISASM_ONLY
4365     {
4366       0ULL,
4367       0xfffff80000000000ULL,
4368       0ULL,
4369       0ULL,
4370       0ULL
4371     },
4372     {
4373       -1ULL,
4374       0x286b200000000000ULL,
4375       -1ULL,
4376       -1ULL,
4377       -1ULL
4378     }
4379 #endif
4380   },
4381   { "swint3", TILEGX_OPC_SWINT3, 0x2, 0, TREG_ZERO, 0,
4382     { { 0, }, {  }, { 0, }, { 0, }, { 0, } },
4383 #ifndef DISASM_ONLY
4384     {
4385       0ULL,
4386       0xfffff80000000000ULL,
4387       0ULL,
4388       0ULL,
4389       0ULL
4390     },
4391     {
4392       -1ULL,
4393       0x286b280000000000ULL,
4394       -1ULL,
4395       -1ULL,
4396       -1ULL
4397     }
4398 #endif
4399   },
4400   { "tblidxb0", TILEGX_OPC_TBLIDXB0, 0x5, 2, TREG_ZERO, 1,
4401     { { 23, 9 }, { 0, }, { 24, 11 }, { 0, }, { 0, } },
4402 #ifndef DISASM_ONLY
4403     {
4404       0xc00000007ffff000ULL,
4405       0ULL,
4406       0x00000000780ff000ULL,
4407       0ULL,
4408       0ULL
4409     },
4410     {
4411       0x0000000051489000ULL,
4412       -1ULL,
4413       0x00000000300c9000ULL,
4414       -1ULL,
4415       -1ULL
4416     }
4417 #endif
4418   },
4419   { "tblidxb1", TILEGX_OPC_TBLIDXB1, 0x5, 2, TREG_ZERO, 1,
4420     { { 23, 9 }, { 0, }, { 24, 11 }, { 0, }, { 0, } },
4421 #ifndef DISASM_ONLY
4422     {
4423       0xc00000007ffff000ULL,
4424       0ULL,
4425       0x00000000780ff000ULL,
4426       0ULL,
4427       0ULL
4428     },
4429     {
4430       0x000000005148a000ULL,
4431       -1ULL,
4432       0x00000000300ca000ULL,
4433       -1ULL,
4434       -1ULL
4435     }
4436 #endif
4437   },
4438   { "tblidxb2", TILEGX_OPC_TBLIDXB2, 0x5, 2, TREG_ZERO, 1,
4439     { { 23, 9 }, { 0, }, { 24, 11 }, { 0, }, { 0, } },
4440 #ifndef DISASM_ONLY
4441     {
4442       0xc00000007ffff000ULL,
4443       0ULL,
4444       0x00000000780ff000ULL,
4445       0ULL,
4446       0ULL
4447     },
4448     {
4449       0x000000005148b000ULL,
4450       -1ULL,
4451       0x00000000300cb000ULL,
4452       -1ULL,
4453       -1ULL
4454     }
4455 #endif
4456   },
4457   { "tblidxb3", TILEGX_OPC_TBLIDXB3, 0x5, 2, TREG_ZERO, 1,
4458     { { 23, 9 }, { 0, }, { 24, 11 }, { 0, }, { 0, } },
4459 #ifndef DISASM_ONLY
4460     {
4461       0xc00000007ffff000ULL,
4462       0ULL,
4463       0x00000000780ff000ULL,
4464       0ULL,
4465       0ULL
4466     },
4467     {
4468       0x000000005148c000ULL,
4469       -1ULL,
4470       0x00000000300cc000ULL,
4471       -1ULL,
4472       -1ULL
4473     }
4474 #endif
4475   },
4476   { "v1add", TILEGX_OPC_V1ADD, 0x3, 3, TREG_ZERO, 1,
4477     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
4478 #ifndef DISASM_ONLY
4479     {
4480       0xc00000007ffc0000ULL,
4481       0xfffe000000000000ULL,
4482       0ULL,
4483       0ULL,
4484       0ULL
4485     },
4486     {
4487       0x0000000051500000ULL,
4488       0x286e000000000000ULL,
4489       -1ULL,
4490       -1ULL,
4491       -1ULL
4492     }
4493 #endif
4494   },
4495   { "v1addi", TILEGX_OPC_V1ADDI, 0x3, 3, TREG_ZERO, 1,
4496     { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
4497 #ifndef DISASM_ONLY
4498     {
4499       0xc00000007ff00000ULL,
4500       0xfff8000000000000ULL,
4501       0ULL,
4502       0ULL,
4503       0ULL
4504     },
4505     {
4506       0x0000000040800000ULL,
4507       0x1908000000000000ULL,
4508       -1ULL,
4509       -1ULL,
4510       -1ULL
4511     }
4512 #endif
4513   },
4514   { "v1adduc", TILEGX_OPC_V1ADDUC, 0x3, 3, TREG_ZERO, 1,
4515     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
4516 #ifndef DISASM_ONLY
4517     {
4518       0xc00000007ffc0000ULL,
4519       0xfffe000000000000ULL,
4520       0ULL,
4521       0ULL,
4522       0ULL
4523     },
4524     {
4525       0x00000000514c0000ULL,
4526       0x286c000000000000ULL,
4527       -1ULL,
4528       -1ULL,
4529       -1ULL
4530     }
4531 #endif
4532   },
4533   { "v1adiffu", TILEGX_OPC_V1ADIFFU, 0x1, 3, TREG_ZERO, 1,
4534     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
4535 #ifndef DISASM_ONLY
4536     {
4537       0xc00000007ffc0000ULL,
4538       0ULL,
4539       0ULL,
4540       0ULL,
4541       0ULL
4542     },
4543     {
4544       0x0000000051540000ULL,
4545       -1ULL,
4546       -1ULL,
4547       -1ULL,
4548       -1ULL
4549     }
4550 #endif
4551   },
4552   { "v1avgu", TILEGX_OPC_V1AVGU, 0x1, 3, TREG_ZERO, 1,
4553     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
4554 #ifndef DISASM_ONLY
4555     {
4556       0xc00000007ffc0000ULL,
4557       0ULL,
4558       0ULL,
4559       0ULL,
4560       0ULL
4561     },
4562     {
4563       0x0000000051580000ULL,
4564       -1ULL,
4565       -1ULL,
4566       -1ULL,
4567       -1ULL
4568     }
4569 #endif
4570   },
4571   { "v1cmpeq", TILEGX_OPC_V1CMPEQ, 0x3, 3, TREG_ZERO, 1,
4572     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
4573 #ifndef DISASM_ONLY
4574     {
4575       0xc00000007ffc0000ULL,
4576       0xfffe000000000000ULL,
4577       0ULL,
4578       0ULL,
4579       0ULL
4580     },
4581     {
4582       0x00000000515c0000ULL,
4583       0x2870000000000000ULL,
4584       -1ULL,
4585       -1ULL,
4586       -1ULL
4587     }
4588 #endif
4589   },
4590   { "v1cmpeqi", TILEGX_OPC_V1CMPEQI, 0x3, 3, TREG_ZERO, 1,
4591     { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
4592 #ifndef DISASM_ONLY
4593     {
4594       0xc00000007ff00000ULL,
4595       0xfff8000000000000ULL,
4596       0ULL,
4597       0ULL,
4598       0ULL
4599     },
4600     {
4601       0x0000000040900000ULL,
4602       0x1910000000000000ULL,
4603       -1ULL,
4604       -1ULL,
4605       -1ULL
4606     }
4607 #endif
4608   },
4609   { "v1cmples", TILEGX_OPC_V1CMPLES, 0x3, 3, TREG_ZERO, 1,
4610     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
4611 #ifndef DISASM_ONLY
4612     {
4613       0xc00000007ffc0000ULL,
4614       0xfffe000000000000ULL,
4615       0ULL,
4616       0ULL,
4617       0ULL
4618     },
4619     {
4620       0x0000000051600000ULL,
4621       0x2872000000000000ULL,
4622       -1ULL,
4623       -1ULL,
4624       -1ULL
4625     }
4626 #endif
4627   },
4628   { "v1cmpleu", TILEGX_OPC_V1CMPLEU, 0x3, 3, TREG_ZERO, 1,
4629     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
4630 #ifndef DISASM_ONLY
4631     {
4632       0xc00000007ffc0000ULL,
4633       0xfffe000000000000ULL,
4634       0ULL,
4635       0ULL,
4636       0ULL
4637     },
4638     {
4639       0x0000000051640000ULL,
4640       0x2874000000000000ULL,
4641       -1ULL,
4642       -1ULL,
4643       -1ULL
4644     }
4645 #endif
4646   },
4647   { "v1cmplts", TILEGX_OPC_V1CMPLTS, 0x3, 3, TREG_ZERO, 1,
4648     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
4649 #ifndef DISASM_ONLY
4650     {
4651       0xc00000007ffc0000ULL,
4652       0xfffe000000000000ULL,
4653       0ULL,
4654       0ULL,
4655       0ULL
4656     },
4657     {
4658       0x0000000051680000ULL,
4659       0x2876000000000000ULL,
4660       -1ULL,
4661       -1ULL,
4662       -1ULL
4663     }
4664 #endif
4665   },
4666   { "v1cmpltsi", TILEGX_OPC_V1CMPLTSI, 0x3, 3, TREG_ZERO, 1,
4667     { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
4668 #ifndef DISASM_ONLY
4669     {
4670       0xc00000007ff00000ULL,
4671       0xfff8000000000000ULL,
4672       0ULL,
4673       0ULL,
4674       0ULL
4675     },
4676     {
4677       0x0000000040a00000ULL,
4678       0x1918000000000000ULL,
4679       -1ULL,
4680       -1ULL,
4681       -1ULL
4682     }
4683 #endif
4684   },
4685   { "v1cmpltu", TILEGX_OPC_V1CMPLTU, 0x3, 3, TREG_ZERO, 1,
4686     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
4687 #ifndef DISASM_ONLY
4688     {
4689       0xc00000007ffc0000ULL,
4690       0xfffe000000000000ULL,
4691       0ULL,
4692       0ULL,
4693       0ULL
4694     },
4695     {
4696       0x00000000516c0000ULL,
4697       0x2878000000000000ULL,
4698       -1ULL,
4699       -1ULL,
4700       -1ULL
4701     }
4702 #endif
4703   },
4704   { "v1cmpltui", TILEGX_OPC_V1CMPLTUI, 0x3, 3, TREG_ZERO, 1,
4705     { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
4706 #ifndef DISASM_ONLY
4707     {
4708       0xc00000007ff00000ULL,
4709       0xfff8000000000000ULL,
4710       0ULL,
4711       0ULL,
4712       0ULL
4713     },
4714     {
4715       0x0000000040b00000ULL,
4716       0x1920000000000000ULL,
4717       -1ULL,
4718       -1ULL,
4719       -1ULL
4720     }
4721 #endif
4722   },
4723   { "v1cmpne", TILEGX_OPC_V1CMPNE, 0x3, 3, TREG_ZERO, 1,
4724     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
4725 #ifndef DISASM_ONLY
4726     {
4727       0xc00000007ffc0000ULL,
4728       0xfffe000000000000ULL,
4729       0ULL,
4730       0ULL,
4731       0ULL
4732     },
4733     {
4734       0x0000000051700000ULL,
4735       0x287a000000000000ULL,
4736       -1ULL,
4737       -1ULL,
4738       -1ULL
4739     }
4740 #endif
4741   },
4742   { "v1ddotpu", TILEGX_OPC_V1DDOTPU, 0x1, 3, TREG_ZERO, 1,
4743     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
4744 #ifndef DISASM_ONLY
4745     {
4746       0xc00000007ffc0000ULL,
4747       0ULL,
4748       0ULL,
4749       0ULL,
4750       0ULL
4751     },
4752     {
4753       0x0000000052880000ULL,
4754       -1ULL,
4755       -1ULL,
4756       -1ULL,
4757       -1ULL
4758     }
4759 #endif
4760   },
4761   { "v1ddotpua", TILEGX_OPC_V1DDOTPUA, 0x1, 3, TREG_ZERO, 1,
4762     { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
4763 #ifndef DISASM_ONLY
4764     {
4765       0xc00000007ffc0000ULL,
4766       0ULL,
4767       0ULL,
4768       0ULL,
4769       0ULL
4770     },
4771     {
4772       0x0000000052840000ULL,
4773       -1ULL,
4774       -1ULL,
4775       -1ULL,
4776       -1ULL
4777     }
4778 #endif
4779   },
4780   { "v1ddotpus", TILEGX_OPC_V1DDOTPUS, 0x1, 3, TREG_ZERO, 1,
4781     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
4782 #ifndef DISASM_ONLY
4783     {
4784       0xc00000007ffc0000ULL,
4785       0ULL,
4786       0ULL,
4787       0ULL,
4788       0ULL
4789     },
4790     {
4791       0x0000000051780000ULL,
4792       -1ULL,
4793       -1ULL,
4794       -1ULL,
4795       -1ULL
4796     }
4797 #endif
4798   },
4799   { "v1ddotpusa", TILEGX_OPC_V1DDOTPUSA, 0x1, 3, TREG_ZERO, 1,
4800     { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
4801 #ifndef DISASM_ONLY
4802     {
4803       0xc00000007ffc0000ULL,
4804       0ULL,
4805       0ULL,
4806       0ULL,
4807       0ULL
4808     },
4809     {
4810       0x0000000051740000ULL,
4811       -1ULL,
4812       -1ULL,
4813       -1ULL,
4814       -1ULL
4815     }
4816 #endif
4817   },
4818   { "v1dotp", TILEGX_OPC_V1DOTP, 0x1, 3, TREG_ZERO, 1,
4819     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
4820 #ifndef DISASM_ONLY
4821     {
4822       0xc00000007ffc0000ULL,
4823       0ULL,
4824       0ULL,
4825       0ULL,
4826       0ULL
4827     },
4828     {
4829       0x0000000051880000ULL,
4830       -1ULL,
4831       -1ULL,
4832       -1ULL,
4833       -1ULL
4834     }
4835 #endif
4836   },
4837   { "v1dotpa", TILEGX_OPC_V1DOTPA, 0x1, 3, TREG_ZERO, 1,
4838     { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
4839 #ifndef DISASM_ONLY
4840     {
4841       0xc00000007ffc0000ULL,
4842       0ULL,
4843       0ULL,
4844       0ULL,
4845       0ULL
4846     },
4847     {
4848       0x00000000517c0000ULL,
4849       -1ULL,
4850       -1ULL,
4851       -1ULL,
4852       -1ULL
4853     }
4854 #endif
4855   },
4856   { "v1dotpu", TILEGX_OPC_V1DOTPU, 0x1, 3, TREG_ZERO, 1,
4857     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
4858 #ifndef DISASM_ONLY
4859     {
4860       0xc00000007ffc0000ULL,
4861       0ULL,
4862       0ULL,
4863       0ULL,
4864       0ULL
4865     },
4866     {
4867       0x0000000052900000ULL,
4868       -1ULL,
4869       -1ULL,
4870       -1ULL,
4871       -1ULL
4872     }
4873 #endif
4874   },
4875   { "v1dotpua", TILEGX_OPC_V1DOTPUA, 0x1, 3, TREG_ZERO, 1,
4876     { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
4877 #ifndef DISASM_ONLY
4878     {
4879       0xc00000007ffc0000ULL,
4880       0ULL,
4881       0ULL,
4882       0ULL,
4883       0ULL
4884     },
4885     {
4886       0x00000000528c0000ULL,
4887       -1ULL,
4888       -1ULL,
4889       -1ULL,
4890       -1ULL
4891     }
4892 #endif
4893   },
4894   { "v1dotpus", TILEGX_OPC_V1DOTPUS, 0x1, 3, TREG_ZERO, 1,
4895     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
4896 #ifndef DISASM_ONLY
4897     {
4898       0xc00000007ffc0000ULL,
4899       0ULL,
4900       0ULL,
4901       0ULL,
4902       0ULL
4903     },
4904     {
4905       0x0000000051840000ULL,
4906       -1ULL,
4907       -1ULL,
4908       -1ULL,
4909       -1ULL
4910     }
4911 #endif
4912   },
4913   { "v1dotpusa", TILEGX_OPC_V1DOTPUSA, 0x1, 3, TREG_ZERO, 1,
4914     { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
4915 #ifndef DISASM_ONLY
4916     {
4917       0xc00000007ffc0000ULL,
4918       0ULL,
4919       0ULL,
4920       0ULL,
4921       0ULL
4922     },
4923     {
4924       0x0000000051800000ULL,
4925       -1ULL,
4926       -1ULL,
4927       -1ULL,
4928       -1ULL
4929     }
4930 #endif
4931   },
4932   { "v1int_h", TILEGX_OPC_V1INT_H, 0x3, 3, TREG_ZERO, 1,
4933     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
4934 #ifndef DISASM_ONLY
4935     {
4936       0xc00000007ffc0000ULL,
4937       0xfffe000000000000ULL,
4938       0ULL,
4939       0ULL,
4940       0ULL
4941     },
4942     {
4943       0x00000000518c0000ULL,
4944       0x287c000000000000ULL,
4945       -1ULL,
4946       -1ULL,
4947       -1ULL
4948     }
4949 #endif
4950   },
4951   { "v1int_l", TILEGX_OPC_V1INT_L, 0x3, 3, TREG_ZERO, 1,
4952     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
4953 #ifndef DISASM_ONLY
4954     {
4955       0xc00000007ffc0000ULL,
4956       0xfffe000000000000ULL,
4957       0ULL,
4958       0ULL,
4959       0ULL
4960     },
4961     {
4962       0x0000000051900000ULL,
4963       0x287e000000000000ULL,
4964       -1ULL,
4965       -1ULL,
4966       -1ULL
4967     }
4968 #endif
4969   },
4970   { "v1maxu", TILEGX_OPC_V1MAXU, 0x3, 3, TREG_ZERO, 1,
4971     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
4972 #ifndef DISASM_ONLY
4973     {
4974       0xc00000007ffc0000ULL,
4975       0xfffe000000000000ULL,
4976       0ULL,
4977       0ULL,
4978       0ULL
4979     },
4980     {
4981       0x0000000051940000ULL,
4982       0x2880000000000000ULL,
4983       -1ULL,
4984       -1ULL,
4985       -1ULL
4986     }
4987 #endif
4988   },
4989   { "v1maxui", TILEGX_OPC_V1MAXUI, 0x3, 3, TREG_ZERO, 1,
4990     { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
4991 #ifndef DISASM_ONLY
4992     {
4993       0xc00000007ff00000ULL,
4994       0xfff8000000000000ULL,
4995       0ULL,
4996       0ULL,
4997       0ULL
4998     },
4999     {
5000       0x0000000040c00000ULL,
5001       0x1928000000000000ULL,
5002       -1ULL,
5003       -1ULL,
5004       -1ULL
5005     }
5006 #endif
5007   },
5008   { "v1minu", TILEGX_OPC_V1MINU, 0x3, 3, TREG_ZERO, 1,
5009     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5010 #ifndef DISASM_ONLY
5011     {
5012       0xc00000007ffc0000ULL,
5013       0xfffe000000000000ULL,
5014       0ULL,
5015       0ULL,
5016       0ULL
5017     },
5018     {
5019       0x0000000051980000ULL,
5020       0x2882000000000000ULL,
5021       -1ULL,
5022       -1ULL,
5023       -1ULL
5024     }
5025 #endif
5026   },
5027   { "v1minui", TILEGX_OPC_V1MINUI, 0x3, 3, TREG_ZERO, 1,
5028     { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
5029 #ifndef DISASM_ONLY
5030     {
5031       0xc00000007ff00000ULL,
5032       0xfff8000000000000ULL,
5033       0ULL,
5034       0ULL,
5035       0ULL
5036     },
5037     {
5038       0x0000000040d00000ULL,
5039       0x1930000000000000ULL,
5040       -1ULL,
5041       -1ULL,
5042       -1ULL
5043     }
5044 #endif
5045   },
5046   { "v1mnz", TILEGX_OPC_V1MNZ, 0x3, 3, TREG_ZERO, 1,
5047     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5048 #ifndef DISASM_ONLY
5049     {
5050       0xc00000007ffc0000ULL,
5051       0xfffe000000000000ULL,
5052       0ULL,
5053       0ULL,
5054       0ULL
5055     },
5056     {
5057       0x00000000519c0000ULL,
5058       0x2884000000000000ULL,
5059       -1ULL,
5060       -1ULL,
5061       -1ULL
5062     }
5063 #endif
5064   },
5065   { "v1multu", TILEGX_OPC_V1MULTU, 0x1, 3, TREG_ZERO, 1,
5066     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5067 #ifndef DISASM_ONLY
5068     {
5069       0xc00000007ffc0000ULL,
5070       0ULL,
5071       0ULL,
5072       0ULL,
5073       0ULL
5074     },
5075     {
5076       0x0000000051a00000ULL,
5077       -1ULL,
5078       -1ULL,
5079       -1ULL,
5080       -1ULL
5081     }
5082 #endif
5083   },
5084   { "v1mulu", TILEGX_OPC_V1MULU, 0x1, 3, TREG_ZERO, 1,
5085     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5086 #ifndef DISASM_ONLY
5087     {
5088       0xc00000007ffc0000ULL,
5089       0ULL,
5090       0ULL,
5091       0ULL,
5092       0ULL
5093     },
5094     {
5095       0x0000000051a80000ULL,
5096       -1ULL,
5097       -1ULL,
5098       -1ULL,
5099       -1ULL
5100     }
5101 #endif
5102   },
5103   { "v1mulus", TILEGX_OPC_V1MULUS, 0x1, 3, TREG_ZERO, 1,
5104     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5105 #ifndef DISASM_ONLY
5106     {
5107       0xc00000007ffc0000ULL,
5108       0ULL,
5109       0ULL,
5110       0ULL,
5111       0ULL
5112     },
5113     {
5114       0x0000000051a40000ULL,
5115       -1ULL,
5116       -1ULL,
5117       -1ULL,
5118       -1ULL
5119     }
5120 #endif
5121   },
5122   { "v1mz", TILEGX_OPC_V1MZ, 0x3, 3, TREG_ZERO, 1,
5123     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5124 #ifndef DISASM_ONLY
5125     {
5126       0xc00000007ffc0000ULL,
5127       0xfffe000000000000ULL,
5128       0ULL,
5129       0ULL,
5130       0ULL
5131     },
5132     {
5133       0x0000000051ac0000ULL,
5134       0x2886000000000000ULL,
5135       -1ULL,
5136       -1ULL,
5137       -1ULL
5138     }
5139 #endif
5140   },
5141   { "v1sadau", TILEGX_OPC_V1SADAU, 0x1, 3, TREG_ZERO, 1,
5142     { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5143 #ifndef DISASM_ONLY
5144     {
5145       0xc00000007ffc0000ULL,
5146       0ULL,
5147       0ULL,
5148       0ULL,
5149       0ULL
5150     },
5151     {
5152       0x0000000051b00000ULL,
5153       -1ULL,
5154       -1ULL,
5155       -1ULL,
5156       -1ULL
5157     }
5158 #endif
5159   },
5160   { "v1sadu", TILEGX_OPC_V1SADU, 0x1, 3, TREG_ZERO, 1,
5161     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5162 #ifndef DISASM_ONLY
5163     {
5164       0xc00000007ffc0000ULL,
5165       0ULL,
5166       0ULL,
5167       0ULL,
5168       0ULL
5169     },
5170     {
5171       0x0000000051b40000ULL,
5172       -1ULL,
5173       -1ULL,
5174       -1ULL,
5175       -1ULL
5176     }
5177 #endif
5178   },
5179   { "v1shl", TILEGX_OPC_V1SHL, 0x3, 3, TREG_ZERO, 1,
5180     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5181 #ifndef DISASM_ONLY
5182     {
5183       0xc00000007ffc0000ULL,
5184       0xfffe000000000000ULL,
5185       0ULL,
5186       0ULL,
5187       0ULL
5188     },
5189     {
5190       0x0000000051b80000ULL,
5191       0x2888000000000000ULL,
5192       -1ULL,
5193       -1ULL,
5194       -1ULL
5195     }
5196 #endif
5197   },
5198   { "v1shli", TILEGX_OPC_V1SHLI, 0x3, 3, TREG_ZERO, 1,
5199     { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } },
5200 #ifndef DISASM_ONLY
5201     {
5202       0xc00000007ffc0000ULL,
5203       0xfffe000000000000ULL,
5204       0ULL,
5205       0ULL,
5206       0ULL
5207     },
5208     {
5209       0x00000000601c0000ULL,
5210       0x300e000000000000ULL,
5211       -1ULL,
5212       -1ULL,
5213       -1ULL
5214     }
5215 #endif
5216   },
5217   { "v1shrs", TILEGX_OPC_V1SHRS, 0x3, 3, TREG_ZERO, 1,
5218     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5219 #ifndef DISASM_ONLY
5220     {
5221       0xc00000007ffc0000ULL,
5222       0xfffe000000000000ULL,
5223       0ULL,
5224       0ULL,
5225       0ULL
5226     },
5227     {
5228       0x0000000051bc0000ULL,
5229       0x288a000000000000ULL,
5230       -1ULL,
5231       -1ULL,
5232       -1ULL
5233     }
5234 #endif
5235   },
5236   { "v1shrsi", TILEGX_OPC_V1SHRSI, 0x3, 3, TREG_ZERO, 1,
5237     { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } },
5238 #ifndef DISASM_ONLY
5239     {
5240       0xc00000007ffc0000ULL,
5241       0xfffe000000000000ULL,
5242       0ULL,
5243       0ULL,
5244       0ULL
5245     },
5246     {
5247       0x0000000060200000ULL,
5248       0x3010000000000000ULL,
5249       -1ULL,
5250       -1ULL,
5251       -1ULL
5252     }
5253 #endif
5254   },
5255   { "v1shru", TILEGX_OPC_V1SHRU, 0x3, 3, TREG_ZERO, 1,
5256     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5257 #ifndef DISASM_ONLY
5258     {
5259       0xc00000007ffc0000ULL,
5260       0xfffe000000000000ULL,
5261       0ULL,
5262       0ULL,
5263       0ULL
5264     },
5265     {
5266       0x0000000051c00000ULL,
5267       0x288c000000000000ULL,
5268       -1ULL,
5269       -1ULL,
5270       -1ULL
5271     }
5272 #endif
5273   },
5274   { "v1shrui", TILEGX_OPC_V1SHRUI, 0x3, 3, TREG_ZERO, 1,
5275     { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } },
5276 #ifndef DISASM_ONLY
5277     {
5278       0xc00000007ffc0000ULL,
5279       0xfffe000000000000ULL,
5280       0ULL,
5281       0ULL,
5282       0ULL
5283     },
5284     {
5285       0x0000000060240000ULL,
5286       0x3012000000000000ULL,
5287       -1ULL,
5288       -1ULL,
5289       -1ULL
5290     }
5291 #endif
5292   },
5293   { "v1sub", TILEGX_OPC_V1SUB, 0x3, 3, TREG_ZERO, 1,
5294     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5295 #ifndef DISASM_ONLY
5296     {
5297       0xc00000007ffc0000ULL,
5298       0xfffe000000000000ULL,
5299       0ULL,
5300       0ULL,
5301       0ULL
5302     },
5303     {
5304       0x0000000051c80000ULL,
5305       0x2890000000000000ULL,
5306       -1ULL,
5307       -1ULL,
5308       -1ULL
5309     }
5310 #endif
5311   },
5312   { "v1subuc", TILEGX_OPC_V1SUBUC, 0x3, 3, TREG_ZERO, 1,
5313     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5314 #ifndef DISASM_ONLY
5315     {
5316       0xc00000007ffc0000ULL,
5317       0xfffe000000000000ULL,
5318       0ULL,
5319       0ULL,
5320       0ULL
5321     },
5322     {
5323       0x0000000051c40000ULL,
5324       0x288e000000000000ULL,
5325       -1ULL,
5326       -1ULL,
5327       -1ULL
5328     }
5329 #endif
5330   },
5331   { "v2add", TILEGX_OPC_V2ADD, 0x3, 3, TREG_ZERO, 1,
5332     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5333 #ifndef DISASM_ONLY
5334     {
5335       0xc00000007ffc0000ULL,
5336       0xfffe000000000000ULL,
5337       0ULL,
5338       0ULL,
5339       0ULL
5340     },
5341     {
5342       0x0000000051d00000ULL,
5343       0x2894000000000000ULL,
5344       -1ULL,
5345       -1ULL,
5346       -1ULL
5347     }
5348 #endif
5349   },
5350   { "v2addi", TILEGX_OPC_V2ADDI, 0x3, 3, TREG_ZERO, 1,
5351     { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
5352 #ifndef DISASM_ONLY
5353     {
5354       0xc00000007ff00000ULL,
5355       0xfff8000000000000ULL,
5356       0ULL,
5357       0ULL,
5358       0ULL
5359     },
5360     {
5361       0x0000000040e00000ULL,
5362       0x1938000000000000ULL,
5363       -1ULL,
5364       -1ULL,
5365       -1ULL
5366     }
5367 #endif
5368   },
5369   { "v2addsc", TILEGX_OPC_V2ADDSC, 0x3, 3, TREG_ZERO, 1,
5370     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5371 #ifndef DISASM_ONLY
5372     {
5373       0xc00000007ffc0000ULL,
5374       0xfffe000000000000ULL,
5375       0ULL,
5376       0ULL,
5377       0ULL
5378     },
5379     {
5380       0x0000000051cc0000ULL,
5381       0x2892000000000000ULL,
5382       -1ULL,
5383       -1ULL,
5384       -1ULL
5385     }
5386 #endif
5387   },
5388   { "v2adiffs", TILEGX_OPC_V2ADIFFS, 0x1, 3, TREG_ZERO, 1,
5389     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5390 #ifndef DISASM_ONLY
5391     {
5392       0xc00000007ffc0000ULL,
5393       0ULL,
5394       0ULL,
5395       0ULL,
5396       0ULL
5397     },
5398     {
5399       0x0000000051d40000ULL,
5400       -1ULL,
5401       -1ULL,
5402       -1ULL,
5403       -1ULL
5404     }
5405 #endif
5406   },
5407   { "v2avgs", TILEGX_OPC_V2AVGS, 0x1, 3, TREG_ZERO, 1,
5408     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5409 #ifndef DISASM_ONLY
5410     {
5411       0xc00000007ffc0000ULL,
5412       0ULL,
5413       0ULL,
5414       0ULL,
5415       0ULL
5416     },
5417     {
5418       0x0000000051d80000ULL,
5419       -1ULL,
5420       -1ULL,
5421       -1ULL,
5422       -1ULL
5423     }
5424 #endif
5425   },
5426   { "v2cmpeq", TILEGX_OPC_V2CMPEQ, 0x3, 3, TREG_ZERO, 1,
5427     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5428 #ifndef DISASM_ONLY
5429     {
5430       0xc00000007ffc0000ULL,
5431       0xfffe000000000000ULL,
5432       0ULL,
5433       0ULL,
5434       0ULL
5435     },
5436     {
5437       0x0000000051dc0000ULL,
5438       0x2896000000000000ULL,
5439       -1ULL,
5440       -1ULL,
5441       -1ULL
5442     }
5443 #endif
5444   },
5445   { "v2cmpeqi", TILEGX_OPC_V2CMPEQI, 0x3, 3, TREG_ZERO, 1,
5446     { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
5447 #ifndef DISASM_ONLY
5448     {
5449       0xc00000007ff00000ULL,
5450       0xfff8000000000000ULL,
5451       0ULL,
5452       0ULL,
5453       0ULL
5454     },
5455     {
5456       0x0000000040f00000ULL,
5457       0x1940000000000000ULL,
5458       -1ULL,
5459       -1ULL,
5460       -1ULL
5461     }
5462 #endif
5463   },
5464   { "v2cmples", TILEGX_OPC_V2CMPLES, 0x3, 3, TREG_ZERO, 1,
5465     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5466 #ifndef DISASM_ONLY
5467     {
5468       0xc00000007ffc0000ULL,
5469       0xfffe000000000000ULL,
5470       0ULL,
5471       0ULL,
5472       0ULL
5473     },
5474     {
5475       0x0000000051e00000ULL,
5476       0x2898000000000000ULL,
5477       -1ULL,
5478       -1ULL,
5479       -1ULL
5480     }
5481 #endif
5482   },
5483   { "v2cmpleu", TILEGX_OPC_V2CMPLEU, 0x3, 3, TREG_ZERO, 1,
5484     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5485 #ifndef DISASM_ONLY
5486     {
5487       0xc00000007ffc0000ULL,
5488       0xfffe000000000000ULL,
5489       0ULL,
5490       0ULL,
5491       0ULL
5492     },
5493     {
5494       0x0000000051e40000ULL,
5495       0x289a000000000000ULL,
5496       -1ULL,
5497       -1ULL,
5498       -1ULL
5499     }
5500 #endif
5501   },
5502   { "v2cmplts", TILEGX_OPC_V2CMPLTS, 0x3, 3, TREG_ZERO, 1,
5503     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5504 #ifndef DISASM_ONLY
5505     {
5506       0xc00000007ffc0000ULL,
5507       0xfffe000000000000ULL,
5508       0ULL,
5509       0ULL,
5510       0ULL
5511     },
5512     {
5513       0x0000000051e80000ULL,
5514       0x289c000000000000ULL,
5515       -1ULL,
5516       -1ULL,
5517       -1ULL
5518     }
5519 #endif
5520   },
5521   { "v2cmpltsi", TILEGX_OPC_V2CMPLTSI, 0x3, 3, TREG_ZERO, 1,
5522     { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
5523 #ifndef DISASM_ONLY
5524     {
5525       0xc00000007ff00000ULL,
5526       0xfff8000000000000ULL,
5527       0ULL,
5528       0ULL,
5529       0ULL
5530     },
5531     {
5532       0x0000000041000000ULL,
5533       0x1948000000000000ULL,
5534       -1ULL,
5535       -1ULL,
5536       -1ULL
5537     }
5538 #endif
5539   },
5540   { "v2cmpltu", TILEGX_OPC_V2CMPLTU, 0x3, 3, TREG_ZERO, 1,
5541     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5542 #ifndef DISASM_ONLY
5543     {
5544       0xc00000007ffc0000ULL,
5545       0xfffe000000000000ULL,
5546       0ULL,
5547       0ULL,
5548       0ULL
5549     },
5550     {
5551       0x0000000051ec0000ULL,
5552       0x289e000000000000ULL,
5553       -1ULL,
5554       -1ULL,
5555       -1ULL
5556     }
5557 #endif
5558   },
5559   { "v2cmpltui", TILEGX_OPC_V2CMPLTUI, 0x3, 3, TREG_ZERO, 1,
5560     { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
5561 #ifndef DISASM_ONLY
5562     {
5563       0xc00000007ff00000ULL,
5564       0xfff8000000000000ULL,
5565       0ULL,
5566       0ULL,
5567       0ULL
5568     },
5569     {
5570       0x0000000041100000ULL,
5571       0x1950000000000000ULL,
5572       -1ULL,
5573       -1ULL,
5574       -1ULL
5575     }
5576 #endif
5577   },
5578   { "v2cmpne", TILEGX_OPC_V2CMPNE, 0x3, 3, TREG_ZERO, 1,
5579     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5580 #ifndef DISASM_ONLY
5581     {
5582       0xc00000007ffc0000ULL,
5583       0xfffe000000000000ULL,
5584       0ULL,
5585       0ULL,
5586       0ULL
5587     },
5588     {
5589       0x0000000051f00000ULL,
5590       0x28a0000000000000ULL,
5591       -1ULL,
5592       -1ULL,
5593       -1ULL
5594     }
5595 #endif
5596   },
5597   { "v2dotp", TILEGX_OPC_V2DOTP, 0x1, 3, TREG_ZERO, 1,
5598     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5599 #ifndef DISASM_ONLY
5600     {
5601       0xc00000007ffc0000ULL,
5602       0ULL,
5603       0ULL,
5604       0ULL,
5605       0ULL
5606     },
5607     {
5608       0x0000000051f80000ULL,
5609       -1ULL,
5610       -1ULL,
5611       -1ULL,
5612       -1ULL
5613     }
5614 #endif
5615   },
5616   { "v2dotpa", TILEGX_OPC_V2DOTPA, 0x1, 3, TREG_ZERO, 1,
5617     { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5618 #ifndef DISASM_ONLY
5619     {
5620       0xc00000007ffc0000ULL,
5621       0ULL,
5622       0ULL,
5623       0ULL,
5624       0ULL
5625     },
5626     {
5627       0x0000000051f40000ULL,
5628       -1ULL,
5629       -1ULL,
5630       -1ULL,
5631       -1ULL
5632     }
5633 #endif
5634   },
5635   { "v2int_h", TILEGX_OPC_V2INT_H, 0x3, 3, TREG_ZERO, 1,
5636     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5637 #ifndef DISASM_ONLY
5638     {
5639       0xc00000007ffc0000ULL,
5640       0xfffe000000000000ULL,
5641       0ULL,
5642       0ULL,
5643       0ULL
5644     },
5645     {
5646       0x0000000051fc0000ULL,
5647       0x28a2000000000000ULL,
5648       -1ULL,
5649       -1ULL,
5650       -1ULL
5651     }
5652 #endif
5653   },
5654   { "v2int_l", TILEGX_OPC_V2INT_L, 0x3, 3, TREG_ZERO, 1,
5655     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5656 #ifndef DISASM_ONLY
5657     {
5658       0xc00000007ffc0000ULL,
5659       0xfffe000000000000ULL,
5660       0ULL,
5661       0ULL,
5662       0ULL
5663     },
5664     {
5665       0x0000000052000000ULL,
5666       0x28a4000000000000ULL,
5667       -1ULL,
5668       -1ULL,
5669       -1ULL
5670     }
5671 #endif
5672   },
5673   { "v2maxs", TILEGX_OPC_V2MAXS, 0x3, 3, TREG_ZERO, 1,
5674     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5675 #ifndef DISASM_ONLY
5676     {
5677       0xc00000007ffc0000ULL,
5678       0xfffe000000000000ULL,
5679       0ULL,
5680       0ULL,
5681       0ULL
5682     },
5683     {
5684       0x0000000052040000ULL,
5685       0x28a6000000000000ULL,
5686       -1ULL,
5687       -1ULL,
5688       -1ULL
5689     }
5690 #endif
5691   },
5692   { "v2maxsi", TILEGX_OPC_V2MAXSI, 0x3, 3, TREG_ZERO, 1,
5693     { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
5694 #ifndef DISASM_ONLY
5695     {
5696       0xc00000007ff00000ULL,
5697       0xfff8000000000000ULL,
5698       0ULL,
5699       0ULL,
5700       0ULL
5701     },
5702     {
5703       0x0000000041200000ULL,
5704       0x1958000000000000ULL,
5705       -1ULL,
5706       -1ULL,
5707       -1ULL
5708     }
5709 #endif
5710   },
5711   { "v2mins", TILEGX_OPC_V2MINS, 0x3, 3, TREG_ZERO, 1,
5712     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5713 #ifndef DISASM_ONLY
5714     {
5715       0xc00000007ffc0000ULL,
5716       0xfffe000000000000ULL,
5717       0ULL,
5718       0ULL,
5719       0ULL
5720     },
5721     {
5722       0x0000000052080000ULL,
5723       0x28a8000000000000ULL,
5724       -1ULL,
5725       -1ULL,
5726       -1ULL
5727     }
5728 #endif
5729   },
5730   { "v2minsi", TILEGX_OPC_V2MINSI, 0x3, 3, TREG_ZERO, 1,
5731     { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
5732 #ifndef DISASM_ONLY
5733     {
5734       0xc00000007ff00000ULL,
5735       0xfff8000000000000ULL,
5736       0ULL,
5737       0ULL,
5738       0ULL
5739     },
5740     {
5741       0x0000000041300000ULL,
5742       0x1960000000000000ULL,
5743       -1ULL,
5744       -1ULL,
5745       -1ULL
5746     }
5747 #endif
5748   },
5749   { "v2mnz", TILEGX_OPC_V2MNZ, 0x3, 3, TREG_ZERO, 1,
5750     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5751 #ifndef DISASM_ONLY
5752     {
5753       0xc00000007ffc0000ULL,
5754       0xfffe000000000000ULL,
5755       0ULL,
5756       0ULL,
5757       0ULL
5758     },
5759     {
5760       0x00000000520c0000ULL,
5761       0x28aa000000000000ULL,
5762       -1ULL,
5763       -1ULL,
5764       -1ULL
5765     }
5766 #endif
5767   },
5768   { "v2mulfsc", TILEGX_OPC_V2MULFSC, 0x1, 3, TREG_ZERO, 1,
5769     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5770 #ifndef DISASM_ONLY
5771     {
5772       0xc00000007ffc0000ULL,
5773       0ULL,
5774       0ULL,
5775       0ULL,
5776       0ULL
5777     },
5778     {
5779       0x0000000052100000ULL,
5780       -1ULL,
5781       -1ULL,
5782       -1ULL,
5783       -1ULL
5784     }
5785 #endif
5786   },
5787   { "v2muls", TILEGX_OPC_V2MULS, 0x1, 3, TREG_ZERO, 1,
5788     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5789 #ifndef DISASM_ONLY
5790     {
5791       0xc00000007ffc0000ULL,
5792       0ULL,
5793       0ULL,
5794       0ULL,
5795       0ULL
5796     },
5797     {
5798       0x0000000052140000ULL,
5799       -1ULL,
5800       -1ULL,
5801       -1ULL,
5802       -1ULL
5803     }
5804 #endif
5805   },
5806   { "v2mults", TILEGX_OPC_V2MULTS, 0x1, 3, TREG_ZERO, 1,
5807     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5808 #ifndef DISASM_ONLY
5809     {
5810       0xc00000007ffc0000ULL,
5811       0ULL,
5812       0ULL,
5813       0ULL,
5814       0ULL
5815     },
5816     {
5817       0x0000000052180000ULL,
5818       -1ULL,
5819       -1ULL,
5820       -1ULL,
5821       -1ULL
5822     }
5823 #endif
5824   },
5825   { "v2mz", TILEGX_OPC_V2MZ, 0x3, 3, TREG_ZERO, 1,
5826     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5827 #ifndef DISASM_ONLY
5828     {
5829       0xc00000007ffc0000ULL,
5830       0xfffe000000000000ULL,
5831       0ULL,
5832       0ULL,
5833       0ULL
5834     },
5835     {
5836       0x00000000521c0000ULL,
5837       0x28ac000000000000ULL,
5838       -1ULL,
5839       -1ULL,
5840       -1ULL
5841     }
5842 #endif
5843   },
5844   { "v2packh", TILEGX_OPC_V2PACKH, 0x3, 3, TREG_ZERO, 1,
5845     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5846 #ifndef DISASM_ONLY
5847     {
5848       0xc00000007ffc0000ULL,
5849       0xfffe000000000000ULL,
5850       0ULL,
5851       0ULL,
5852       0ULL
5853     },
5854     {
5855       0x0000000052200000ULL,
5856       0x28ae000000000000ULL,
5857       -1ULL,
5858       -1ULL,
5859       -1ULL
5860     }
5861 #endif
5862   },
5863   { "v2packl", TILEGX_OPC_V2PACKL, 0x3, 3, TREG_ZERO, 1,
5864     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5865 #ifndef DISASM_ONLY
5866     {
5867       0xc00000007ffc0000ULL,
5868       0xfffe000000000000ULL,
5869       0ULL,
5870       0ULL,
5871       0ULL
5872     },
5873     {
5874       0x0000000052240000ULL,
5875       0x28b0000000000000ULL,
5876       -1ULL,
5877       -1ULL,
5878       -1ULL
5879     }
5880 #endif
5881   },
5882   { "v2packuc", TILEGX_OPC_V2PACKUC, 0x3, 3, TREG_ZERO, 1,
5883     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5884 #ifndef DISASM_ONLY
5885     {
5886       0xc00000007ffc0000ULL,
5887       0xfffe000000000000ULL,
5888       0ULL,
5889       0ULL,
5890       0ULL
5891     },
5892     {
5893       0x0000000052280000ULL,
5894       0x28b2000000000000ULL,
5895       -1ULL,
5896       -1ULL,
5897       -1ULL
5898     }
5899 #endif
5900   },
5901   { "v2sadas", TILEGX_OPC_V2SADAS, 0x1, 3, TREG_ZERO, 1,
5902     { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5903 #ifndef DISASM_ONLY
5904     {
5905       0xc00000007ffc0000ULL,
5906       0ULL,
5907       0ULL,
5908       0ULL,
5909       0ULL
5910     },
5911     {
5912       0x00000000522c0000ULL,
5913       -1ULL,
5914       -1ULL,
5915       -1ULL,
5916       -1ULL
5917     }
5918 #endif
5919   },
5920   { "v2sadau", TILEGX_OPC_V2SADAU, 0x1, 3, TREG_ZERO, 1,
5921     { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5922 #ifndef DISASM_ONLY
5923     {
5924       0xc00000007ffc0000ULL,
5925       0ULL,
5926       0ULL,
5927       0ULL,
5928       0ULL
5929     },
5930     {
5931       0x0000000052300000ULL,
5932       -1ULL,
5933       -1ULL,
5934       -1ULL,
5935       -1ULL
5936     }
5937 #endif
5938   },
5939   { "v2sads", TILEGX_OPC_V2SADS, 0x1, 3, TREG_ZERO, 1,
5940     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5941 #ifndef DISASM_ONLY
5942     {
5943       0xc00000007ffc0000ULL,
5944       0ULL,
5945       0ULL,
5946       0ULL,
5947       0ULL
5948     },
5949     {
5950       0x0000000052340000ULL,
5951       -1ULL,
5952       -1ULL,
5953       -1ULL,
5954       -1ULL
5955     }
5956 #endif
5957   },
5958   { "v2sadu", TILEGX_OPC_V2SADU, 0x1, 3, TREG_ZERO, 1,
5959     { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5960 #ifndef DISASM_ONLY
5961     {
5962       0xc00000007ffc0000ULL,
5963       0ULL,
5964       0ULL,
5965       0ULL,
5966       0ULL
5967     },
5968     {
5969       0x0000000052380000ULL,
5970       -1ULL,
5971       -1ULL,
5972       -1ULL,
5973       -1ULL
5974     }
5975 #endif
5976   },
5977   { "v2shl", TILEGX_OPC_V2SHL, 0x3, 3, TREG_ZERO, 1,
5978     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5979 #ifndef DISASM_ONLY
5980     {
5981       0xc00000007ffc0000ULL,
5982       0xfffe000000000000ULL,
5983       0ULL,
5984       0ULL,
5985       0ULL
5986     },
5987     {
5988       0x0000000052400000ULL,
5989       0x28b6000000000000ULL,
5990       -1ULL,
5991       -1ULL,
5992       -1ULL
5993     }
5994 #endif
5995   },
5996   { "v2shli", TILEGX_OPC_V2SHLI, 0x3, 3, TREG_ZERO, 1,
5997     { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } },
5998 #ifndef DISASM_ONLY
5999     {
6000       0xc00000007ffc0000ULL,
6001       0xfffe000000000000ULL,
6002       0ULL,
6003       0ULL,
6004       0ULL
6005     },
6006     {
6007       0x0000000060280000ULL,
6008       0x3014000000000000ULL,
6009       -1ULL,
6010       -1ULL,
6011       -1ULL
6012     }
6013 #endif
6014   },
6015   { "v2shlsc", TILEGX_OPC_V2SHLSC, 0x3, 3, TREG_ZERO, 1,
6016     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6017 #ifndef DISASM_ONLY
6018     {
6019       0xc00000007ffc0000ULL,
6020       0xfffe000000000000ULL,
6021       0ULL,
6022       0ULL,
6023       0ULL
6024     },
6025     {
6026       0x00000000523c0000ULL,
6027       0x28b4000000000000ULL,
6028       -1ULL,
6029       -1ULL,
6030       -1ULL
6031     }
6032 #endif
6033   },
6034   { "v2shrs", TILEGX_OPC_V2SHRS, 0x3, 3, TREG_ZERO, 1,
6035     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6036 #ifndef DISASM_ONLY
6037     {
6038       0xc00000007ffc0000ULL,
6039       0xfffe000000000000ULL,
6040       0ULL,
6041       0ULL,
6042       0ULL
6043     },
6044     {
6045       0x0000000052440000ULL,
6046       0x28b8000000000000ULL,
6047       -1ULL,
6048       -1ULL,
6049       -1ULL
6050     }
6051 #endif
6052   },
6053   { "v2shrsi", TILEGX_OPC_V2SHRSI, 0x3, 3, TREG_ZERO, 1,
6054     { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } },
6055 #ifndef DISASM_ONLY
6056     {
6057       0xc00000007ffc0000ULL,
6058       0xfffe000000000000ULL,
6059       0ULL,
6060       0ULL,
6061       0ULL
6062     },
6063     {
6064       0x00000000602c0000ULL,
6065       0x3016000000000000ULL,
6066       -1ULL,
6067       -1ULL,
6068       -1ULL
6069     }
6070 #endif
6071   },
6072   { "v2shru", TILEGX_OPC_V2SHRU, 0x3, 3, TREG_ZERO, 1,
6073     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6074 #ifndef DISASM_ONLY
6075     {
6076       0xc00000007ffc0000ULL,
6077       0xfffe000000000000ULL,
6078       0ULL,
6079       0ULL,
6080       0ULL
6081     },
6082     {
6083       0x0000000052480000ULL,
6084       0x28ba000000000000ULL,
6085       -1ULL,
6086       -1ULL,
6087       -1ULL
6088     }
6089 #endif
6090   },
6091   { "v2shrui", TILEGX_OPC_V2SHRUI, 0x3, 3, TREG_ZERO, 1,
6092     { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } },
6093 #ifndef DISASM_ONLY
6094     {
6095       0xc00000007ffc0000ULL,
6096       0xfffe000000000000ULL,
6097       0ULL,
6098       0ULL,
6099       0ULL
6100     },
6101     {
6102       0x0000000060300000ULL,
6103       0x3018000000000000ULL,
6104       -1ULL,
6105       -1ULL,
6106       -1ULL
6107     }
6108 #endif
6109   },
6110   { "v2sub", TILEGX_OPC_V2SUB, 0x3, 3, TREG_ZERO, 1,
6111     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6112 #ifndef DISASM_ONLY
6113     {
6114       0xc00000007ffc0000ULL,
6115       0xfffe000000000000ULL,
6116       0ULL,
6117       0ULL,
6118       0ULL
6119     },
6120     {
6121       0x0000000052500000ULL,
6122       0x28be000000000000ULL,
6123       -1ULL,
6124       -1ULL,
6125       -1ULL
6126     }
6127 #endif
6128   },
6129   { "v2subsc", TILEGX_OPC_V2SUBSC, 0x3, 3, TREG_ZERO, 1,
6130     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6131 #ifndef DISASM_ONLY
6132     {
6133       0xc00000007ffc0000ULL,
6134       0xfffe000000000000ULL,
6135       0ULL,
6136       0ULL,
6137       0ULL
6138     },
6139     {
6140       0x00000000524c0000ULL,
6141       0x28bc000000000000ULL,
6142       -1ULL,
6143       -1ULL,
6144       -1ULL
6145     }
6146 #endif
6147   },
6148   { "v4add", TILEGX_OPC_V4ADD, 0x3, 3, TREG_ZERO, 1,
6149     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6150 #ifndef DISASM_ONLY
6151     {
6152       0xc00000007ffc0000ULL,
6153       0xfffe000000000000ULL,
6154       0ULL,
6155       0ULL,
6156       0ULL
6157     },
6158     {
6159       0x0000000052580000ULL,
6160       0x28c2000000000000ULL,
6161       -1ULL,
6162       -1ULL,
6163       -1ULL
6164     }
6165 #endif
6166   },
6167   { "v4addsc", TILEGX_OPC_V4ADDSC, 0x3, 3, TREG_ZERO, 1,
6168     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6169 #ifndef DISASM_ONLY
6170     {
6171       0xc00000007ffc0000ULL,
6172       0xfffe000000000000ULL,
6173       0ULL,
6174       0ULL,
6175       0ULL
6176     },
6177     {
6178       0x0000000052540000ULL,
6179       0x28c0000000000000ULL,
6180       -1ULL,
6181       -1ULL,
6182       -1ULL
6183     }
6184 #endif
6185   },
6186   { "v4int_h", TILEGX_OPC_V4INT_H, 0x3, 3, TREG_ZERO, 1,
6187     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6188 #ifndef DISASM_ONLY
6189     {
6190       0xc00000007ffc0000ULL,
6191       0xfffe000000000000ULL,
6192       0ULL,
6193       0ULL,
6194       0ULL
6195     },
6196     {
6197       0x00000000525c0000ULL,
6198       0x28c4000000000000ULL,
6199       -1ULL,
6200       -1ULL,
6201       -1ULL
6202     }
6203 #endif
6204   },
6205   { "v4int_l", TILEGX_OPC_V4INT_L, 0x3, 3, TREG_ZERO, 1,
6206     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6207 #ifndef DISASM_ONLY
6208     {
6209       0xc00000007ffc0000ULL,
6210       0xfffe000000000000ULL,
6211       0ULL,
6212       0ULL,
6213       0ULL
6214     },
6215     {
6216       0x0000000052600000ULL,
6217       0x28c6000000000000ULL,
6218       -1ULL,
6219       -1ULL,
6220       -1ULL
6221     }
6222 #endif
6223   },
6224   { "v4packsc", TILEGX_OPC_V4PACKSC, 0x3, 3, TREG_ZERO, 1,
6225     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6226 #ifndef DISASM_ONLY
6227     {
6228       0xc00000007ffc0000ULL,
6229       0xfffe000000000000ULL,
6230       0ULL,
6231       0ULL,
6232       0ULL
6233     },
6234     {
6235       0x0000000052640000ULL,
6236       0x28c8000000000000ULL,
6237       -1ULL,
6238       -1ULL,
6239       -1ULL
6240     }
6241 #endif
6242   },
6243   { "v4shl", TILEGX_OPC_V4SHL, 0x3, 3, TREG_ZERO, 1,
6244     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6245 #ifndef DISASM_ONLY
6246     {
6247       0xc00000007ffc0000ULL,
6248       0xfffe000000000000ULL,
6249       0ULL,
6250       0ULL,
6251       0ULL
6252     },
6253     {
6254       0x00000000526c0000ULL,
6255       0x28cc000000000000ULL,
6256       -1ULL,
6257       -1ULL,
6258       -1ULL
6259     }
6260 #endif
6261   },
6262   { "v4shlsc", TILEGX_OPC_V4SHLSC, 0x3, 3, TREG_ZERO, 1,
6263     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6264 #ifndef DISASM_ONLY
6265     {
6266       0xc00000007ffc0000ULL,
6267       0xfffe000000000000ULL,
6268       0ULL,
6269       0ULL,
6270       0ULL
6271     },
6272     {
6273       0x0000000052680000ULL,
6274       0x28ca000000000000ULL,
6275       -1ULL,
6276       -1ULL,
6277       -1ULL
6278     }
6279 #endif
6280   },
6281   { "v4shrs", TILEGX_OPC_V4SHRS, 0x3, 3, TREG_ZERO, 1,
6282     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6283 #ifndef DISASM_ONLY
6284     {
6285       0xc00000007ffc0000ULL,
6286       0xfffe000000000000ULL,
6287       0ULL,
6288       0ULL,
6289       0ULL
6290     },
6291     {
6292       0x0000000052700000ULL,
6293       0x28ce000000000000ULL,
6294       -1ULL,
6295       -1ULL,
6296       -1ULL
6297     }
6298 #endif
6299   },
6300   { "v4shru", TILEGX_OPC_V4SHRU, 0x3, 3, TREG_ZERO, 1,
6301     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6302 #ifndef DISASM_ONLY
6303     {
6304       0xc00000007ffc0000ULL,
6305       0xfffe000000000000ULL,
6306       0ULL,
6307       0ULL,
6308       0ULL
6309     },
6310     {
6311       0x0000000052740000ULL,
6312       0x28d0000000000000ULL,
6313       -1ULL,
6314       -1ULL,
6315       -1ULL
6316     }
6317 #endif
6318   },
6319   { "v4sub", TILEGX_OPC_V4SUB, 0x3, 3, TREG_ZERO, 1,
6320     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6321 #ifndef DISASM_ONLY
6322     {
6323       0xc00000007ffc0000ULL,
6324       0xfffe000000000000ULL,
6325       0ULL,
6326       0ULL,
6327       0ULL
6328     },
6329     {
6330       0x00000000527c0000ULL,
6331       0x28d4000000000000ULL,
6332       -1ULL,
6333       -1ULL,
6334       -1ULL
6335     }
6336 #endif
6337   },
6338   { "v4subsc", TILEGX_OPC_V4SUBSC, 0x3, 3, TREG_ZERO, 1,
6339     { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6340 #ifndef DISASM_ONLY
6341     {
6342       0xc00000007ffc0000ULL,
6343       0xfffe000000000000ULL,
6344       0ULL,
6345       0ULL,
6346       0ULL
6347     },
6348     {
6349       0x0000000052780000ULL,
6350       0x28d2000000000000ULL,
6351       -1ULL,
6352       -1ULL,
6353       -1ULL
6354     }
6355 #endif
6356   },
6357   { "wh64", TILEGX_OPC_WH64, 0x2, 1, TREG_ZERO, 1,
6358     { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } },
6359 #ifndef DISASM_ONLY
6360     {
6361       0ULL,
6362       0xfffff80000000000ULL,
6363       0ULL,
6364       0ULL,
6365       0ULL
6366     },
6367     {
6368       -1ULL,
6369       0x286b300000000000ULL,
6370       -1ULL,
6371       -1ULL,
6372       -1ULL
6373     }
6374 #endif
6375   },
6376   { "xor", TILEGX_OPC_XOR, 0xf, 3, TREG_ZERO, 1,
6377     { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
6378 #ifndef DISASM_ONLY
6379     {
6380       0xc00000007ffc0000ULL,
6381       0xfffe000000000000ULL,
6382       0x00000000780c0000ULL,
6383       0x3c06000000000000ULL,
6384       0ULL
6385     },
6386     {
6387       0x0000000052800000ULL,
6388       0x28d6000000000000ULL,
6389       0x00000000500c0000ULL,
6390       0x2c06000000000000ULL,
6391       -1ULL
6392     }
6393 #endif
6394   },
6395   { "xori", TILEGX_OPC_XORI, 0x3, 3, TREG_ZERO, 1,
6396     { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
6397 #ifndef DISASM_ONLY
6398     {
6399       0xc00000007ff00000ULL,
6400       0xfff8000000000000ULL,
6401       0ULL,
6402       0ULL,
6403       0ULL
6404     },
6405     {
6406       0x0000000041400000ULL,
6407       0x1968000000000000ULL,
6408       -1ULL,
6409       -1ULL,
6410       -1ULL
6411     }
6412 #endif
6413   },
6414   { NULL, TILEGX_OPC_NONE, 0, 0, TREG_ZERO, 0, { { 0, } },
6415 #ifndef DISASM_ONLY
6416     { 0, }, { 0, }
6417 #endif
6418   }
6419 };
6420 #define BITFIELD(start, size) ((start) | (((1 << (size)) - 1) << 6))
6421 #define CHILD(array_index) (TILEGX_OPC_NONE + (array_index))
6422 
6423 static const UShort decode_X0_fsm[936] =
6424 {
6425   BITFIELD(22, 9) /* index 0 */,
6426   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6427   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6428   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6429   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6430   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6431   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6432   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6433   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6434   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6435   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6436   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6437   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6438   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6439   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6440   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6441   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6442   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
6443   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
6444   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
6445   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
6446   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
6447   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
6448   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
6449   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
6450   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
6451   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
6452   CHILD(513), CHILD(513), CHILD(513), CHILD(513), TILEGX_OPC_ADDXLI,
6453   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6454   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6455   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6456   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6457   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6458   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6459   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6460   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6461   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6462   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6463   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6464   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6465   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6466   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6467   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6468   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_NONE,
6469   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6470   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6471   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6472   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_BFEXTS,
6473   TILEGX_OPC_BFEXTS, TILEGX_OPC_BFEXTS, TILEGX_OPC_BFEXTS, TILEGX_OPC_BFEXTU,
6474   TILEGX_OPC_BFEXTU, TILEGX_OPC_BFEXTU, TILEGX_OPC_BFEXTU, TILEGX_OPC_BFINS,
6475   TILEGX_OPC_BFINS, TILEGX_OPC_BFINS, TILEGX_OPC_BFINS, TILEGX_OPC_MM,
6476   TILEGX_OPC_MM, TILEGX_OPC_MM, TILEGX_OPC_MM, TILEGX_OPC_NONE,
6477   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6478   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6479   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6480   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6481   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6482   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6483   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6484   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, CHILD(528), CHILD(578),
6485   CHILD(583), CHILD(588), CHILD(593), CHILD(598), TILEGX_OPC_NONE,
6486   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6487   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6488   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6489   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6490   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6491   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6492   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6493   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6494   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6495   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6496   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6497   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6498   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6499   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6500   TILEGX_OPC_NONE, CHILD(603), CHILD(620), CHILD(637), CHILD(654), CHILD(671),
6501   CHILD(703), CHILD(797), CHILD(814), CHILD(831), CHILD(848), CHILD(865),
6502   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6503   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6504   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6505   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6506   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6507   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6508   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6509   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6510   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6511   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6512   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6513   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6514   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6515   TILEGX_OPC_NONE, CHILD(889), TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6516   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6517   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6518   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6519   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6520   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6521   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6522   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6523   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6524   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6525   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6526   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6527   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6528   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6529   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6530   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6531   TILEGX_OPC_NONE, CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
6532   CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
6533   CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
6534   CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
6535   CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
6536   CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
6537   CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
6538   CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
6539   CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
6540   CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
6541   CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
6542   BITFIELD(6, 2) /* index 513 */,
6543   TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, CHILD(518),
6544   BITFIELD(8, 2) /* index 518 */,
6545   TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, CHILD(523),
6546   BITFIELD(10, 2) /* index 523 */,
6547   TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_MOVELI,
6548   BITFIELD(20, 2) /* index 528 */,
6549   TILEGX_OPC_NONE, CHILD(533), TILEGX_OPC_ADDXI, CHILD(548),
6550   BITFIELD(6, 2) /* index 533 */,
6551   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(538),
6552   BITFIELD(8, 2) /* index 538 */,
6553   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(543),
6554   BITFIELD(10, 2) /* index 543 */,
6555   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_MOVEI,
6556   BITFIELD(0, 2) /* index 548 */,
6557   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(553),
6558   BITFIELD(2, 2) /* index 553 */,
6559   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(558),
6560   BITFIELD(4, 2) /* index 558 */,
6561   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(563),
6562   BITFIELD(6, 2) /* index 563 */,
6563   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(568),
6564   BITFIELD(8, 2) /* index 568 */,
6565   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(573),
6566   BITFIELD(10, 2) /* index 573 */,
6567   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_INFO,
6568   BITFIELD(20, 2) /* index 578 */,
6569   TILEGX_OPC_CMPEQI, TILEGX_OPC_CMPLTSI, TILEGX_OPC_CMPLTUI, TILEGX_OPC_ORI,
6570   BITFIELD(20, 2) /* index 583 */,
6571   TILEGX_OPC_V1ADDI, TILEGX_OPC_V1CMPEQI, TILEGX_OPC_V1CMPLTSI,
6572   TILEGX_OPC_V1CMPLTUI,
6573   BITFIELD(20, 2) /* index 588 */,
6574   TILEGX_OPC_V1MAXUI, TILEGX_OPC_V1MINUI, TILEGX_OPC_V2ADDI,
6575   TILEGX_OPC_V2CMPEQI,
6576   BITFIELD(20, 2) /* index 593 */,
6577   TILEGX_OPC_V2CMPLTSI, TILEGX_OPC_V2CMPLTUI, TILEGX_OPC_V2MAXSI,
6578   TILEGX_OPC_V2MINSI,
6579   BITFIELD(20, 2) /* index 598 */,
6580   TILEGX_OPC_XORI, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6581   BITFIELD(18, 4) /* index 603 */,
6582   TILEGX_OPC_NONE, TILEGX_OPC_ADDXSC, TILEGX_OPC_ADDX, TILEGX_OPC_ADD,
6583   TILEGX_OPC_AND, TILEGX_OPC_CMOVEQZ, TILEGX_OPC_CMOVNEZ, TILEGX_OPC_CMPEQ,
6584   TILEGX_OPC_CMPLES, TILEGX_OPC_CMPLEU, TILEGX_OPC_CMPLTS, TILEGX_OPC_CMPLTU,
6585   TILEGX_OPC_CMPNE, TILEGX_OPC_CMULAF, TILEGX_OPC_CMULA, TILEGX_OPC_CMULFR,
6586   BITFIELD(18, 4) /* index 620 */,
6587   TILEGX_OPC_CMULF, TILEGX_OPC_CMULHR, TILEGX_OPC_CMULH, TILEGX_OPC_CMUL,
6588   TILEGX_OPC_CRC32_32, TILEGX_OPC_CRC32_8, TILEGX_OPC_DBLALIGN2,
6589   TILEGX_OPC_DBLALIGN4, TILEGX_OPC_DBLALIGN6, TILEGX_OPC_DBLALIGN,
6590   TILEGX_OPC_FDOUBLE_ADDSUB, TILEGX_OPC_FDOUBLE_ADD_FLAGS,
6591   TILEGX_OPC_FDOUBLE_MUL_FLAGS, TILEGX_OPC_FDOUBLE_PACK1,
6592   TILEGX_OPC_FDOUBLE_PACK2, TILEGX_OPC_FDOUBLE_SUB_FLAGS,
6593   BITFIELD(18, 4) /* index 637 */,
6594   TILEGX_OPC_FDOUBLE_UNPACK_MAX, TILEGX_OPC_FDOUBLE_UNPACK_MIN,
6595   TILEGX_OPC_FSINGLE_ADD1, TILEGX_OPC_FSINGLE_ADDSUB2,
6596   TILEGX_OPC_FSINGLE_MUL1, TILEGX_OPC_FSINGLE_MUL2, TILEGX_OPC_FSINGLE_PACK2,
6597   TILEGX_OPC_FSINGLE_SUB1, TILEGX_OPC_MNZ, TILEGX_OPC_MULAX,
6598   TILEGX_OPC_MULA_HS_HS, TILEGX_OPC_MULA_HS_HU, TILEGX_OPC_MULA_HS_LS,
6599   TILEGX_OPC_MULA_HS_LU, TILEGX_OPC_MULA_HU_HU, TILEGX_OPC_MULA_HU_LS,
6600   BITFIELD(18, 4) /* index 654 */,
6601   TILEGX_OPC_MULA_HU_LU, TILEGX_OPC_MULA_LS_LS, TILEGX_OPC_MULA_LS_LU,
6602   TILEGX_OPC_MULA_LU_LU, TILEGX_OPC_MULX, TILEGX_OPC_MUL_HS_HS,
6603   TILEGX_OPC_MUL_HS_HU, TILEGX_OPC_MUL_HS_LS, TILEGX_OPC_MUL_HS_LU,
6604   TILEGX_OPC_MUL_HU_HU, TILEGX_OPC_MUL_HU_LS, TILEGX_OPC_MUL_HU_LU,
6605   TILEGX_OPC_MUL_LS_LS, TILEGX_OPC_MUL_LS_LU, TILEGX_OPC_MUL_LU_LU,
6606   TILEGX_OPC_MZ,
6607   BITFIELD(18, 4) /* index 671 */,
6608   TILEGX_OPC_NOR, CHILD(688), TILEGX_OPC_ROTL, TILEGX_OPC_SHL1ADDX,
6609   TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL2ADDX, TILEGX_OPC_SHL2ADD,
6610   TILEGX_OPC_SHL3ADDX, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHLX, TILEGX_OPC_SHL,
6611   TILEGX_OPC_SHRS, TILEGX_OPC_SHRUX, TILEGX_OPC_SHRU, TILEGX_OPC_SHUFFLEBYTES,
6612   TILEGX_OPC_SUBXSC,
6613   BITFIELD(12, 2) /* index 688 */,
6614   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(693),
6615   BITFIELD(14, 2) /* index 693 */,
6616   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(698),
6617   BITFIELD(16, 2) /* index 698 */,
6618   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_MOVE,
6619   BITFIELD(18, 4) /* index 703 */,
6620   TILEGX_OPC_SUBX, TILEGX_OPC_SUB, CHILD(720), TILEGX_OPC_V1ADDUC,
6621   TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADIFFU, TILEGX_OPC_V1AVGU,
6622   TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLEU,
6623   TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPNE,
6624   TILEGX_OPC_V1DDOTPUSA, TILEGX_OPC_V1DDOTPUS, TILEGX_OPC_V1DOTPA,
6625   BITFIELD(12, 4) /* index 720 */,
6626   TILEGX_OPC_NONE, CHILD(737), CHILD(742), CHILD(747), CHILD(752), CHILD(757),
6627   CHILD(762), CHILD(767), CHILD(772), CHILD(777), CHILD(782), CHILD(787),
6628   CHILD(792), TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6629   BITFIELD(16, 2) /* index 737 */,
6630   TILEGX_OPC_CLZ, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6631   BITFIELD(16, 2) /* index 742 */,
6632   TILEGX_OPC_CTZ, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6633   BITFIELD(16, 2) /* index 747 */,
6634   TILEGX_OPC_FNOP, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6635   BITFIELD(16, 2) /* index 752 */,
6636   TILEGX_OPC_FSINGLE_PACK1, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6637   BITFIELD(16, 2) /* index 757 */,
6638   TILEGX_OPC_NOP, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6639   BITFIELD(16, 2) /* index 762 */,
6640   TILEGX_OPC_PCNT, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6641   BITFIELD(16, 2) /* index 767 */,
6642   TILEGX_OPC_REVBITS, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6643   BITFIELD(16, 2) /* index 772 */,
6644   TILEGX_OPC_REVBYTES, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6645   BITFIELD(16, 2) /* index 777 */,
6646   TILEGX_OPC_TBLIDXB0, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6647   BITFIELD(16, 2) /* index 782 */,
6648   TILEGX_OPC_TBLIDXB1, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6649   BITFIELD(16, 2) /* index 787 */,
6650   TILEGX_OPC_TBLIDXB2, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6651   BITFIELD(16, 2) /* index 792 */,
6652   TILEGX_OPC_TBLIDXB3, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6653   BITFIELD(18, 4) /* index 797 */,
6654   TILEGX_OPC_V1DOTPUSA, TILEGX_OPC_V1DOTPUS, TILEGX_OPC_V1DOTP,
6655   TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_L, TILEGX_OPC_V1MAXU,
6656   TILEGX_OPC_V1MINU, TILEGX_OPC_V1MNZ, TILEGX_OPC_V1MULTU, TILEGX_OPC_V1MULUS,
6657   TILEGX_OPC_V1MULU, TILEGX_OPC_V1MZ, TILEGX_OPC_V1SADAU, TILEGX_OPC_V1SADU,
6658   TILEGX_OPC_V1SHL, TILEGX_OPC_V1SHRS,
6659   BITFIELD(18, 4) /* index 814 */,
6660   TILEGX_OPC_V1SHRU, TILEGX_OPC_V1SUBUC, TILEGX_OPC_V1SUB, TILEGX_OPC_V2ADDSC,
6661   TILEGX_OPC_V2ADD, TILEGX_OPC_V2ADIFFS, TILEGX_OPC_V2AVGS,
6662   TILEGX_OPC_V2CMPEQ, TILEGX_OPC_V2CMPLES, TILEGX_OPC_V2CMPLEU,
6663   TILEGX_OPC_V2CMPLTS, TILEGX_OPC_V2CMPLTU, TILEGX_OPC_V2CMPNE,
6664   TILEGX_OPC_V2DOTPA, TILEGX_OPC_V2DOTP, TILEGX_OPC_V2INT_H,
6665   BITFIELD(18, 4) /* index 831 */,
6666   TILEGX_OPC_V2INT_L, TILEGX_OPC_V2MAXS, TILEGX_OPC_V2MINS, TILEGX_OPC_V2MNZ,
6667   TILEGX_OPC_V2MULFSC, TILEGX_OPC_V2MULS, TILEGX_OPC_V2MULTS, TILEGX_OPC_V2MZ,
6668   TILEGX_OPC_V2PACKH, TILEGX_OPC_V2PACKL, TILEGX_OPC_V2PACKUC,
6669   TILEGX_OPC_V2SADAS, TILEGX_OPC_V2SADAU, TILEGX_OPC_V2SADS,
6670   TILEGX_OPC_V2SADU, TILEGX_OPC_V2SHLSC,
6671   BITFIELD(18, 4) /* index 848 */,
6672   TILEGX_OPC_V2SHL, TILEGX_OPC_V2SHRS, TILEGX_OPC_V2SHRU, TILEGX_OPC_V2SUBSC,
6673   TILEGX_OPC_V2SUB, TILEGX_OPC_V4ADDSC, TILEGX_OPC_V4ADD, TILEGX_OPC_V4INT_H,
6674   TILEGX_OPC_V4INT_L, TILEGX_OPC_V4PACKSC, TILEGX_OPC_V4SHLSC,
6675   TILEGX_OPC_V4SHL, TILEGX_OPC_V4SHRS, TILEGX_OPC_V4SHRU, TILEGX_OPC_V4SUBSC,
6676   TILEGX_OPC_V4SUB,
6677   BITFIELD(18, 3) /* index 865 */,
6678   CHILD(874), CHILD(877), CHILD(880), CHILD(883), CHILD(886), TILEGX_OPC_NONE,
6679   TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6680   BITFIELD(21, 1) /* index 874 */,
6681   TILEGX_OPC_XOR, TILEGX_OPC_NONE,
6682   BITFIELD(21, 1) /* index 877 */,
6683   TILEGX_OPC_V1DDOTPUA, TILEGX_OPC_NONE,
6684   BITFIELD(21, 1) /* index 880 */,
6685   TILEGX_OPC_V1DDOTPU, TILEGX_OPC_NONE,
6686   BITFIELD(21, 1) /* index 883 */,
6687   TILEGX_OPC_V1DOTPUA, TILEGX_OPC_NONE,
6688   BITFIELD(21, 1) /* index 886 */,
6689   TILEGX_OPC_V1DOTPU, TILEGX_OPC_NONE,
6690   BITFIELD(18, 4) /* index 889 */,
6691   TILEGX_OPC_NONE, TILEGX_OPC_ROTLI, TILEGX_OPC_SHLI, TILEGX_OPC_SHLXI,
6692   TILEGX_OPC_SHRSI, TILEGX_OPC_SHRUI, TILEGX_OPC_SHRUXI, TILEGX_OPC_V1SHLI,
6693   TILEGX_OPC_V1SHRSI, TILEGX_OPC_V1SHRUI, TILEGX_OPC_V2SHLI,
6694   TILEGX_OPC_V2SHRSI, TILEGX_OPC_V2SHRUI, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6695   TILEGX_OPC_NONE,
6696   BITFIELD(0, 2) /* index 906 */,
6697   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
6698   CHILD(911),
6699   BITFIELD(2, 2) /* index 911 */,
6700   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
6701   CHILD(916),
6702   BITFIELD(4, 2) /* index 916 */,
6703   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
6704   CHILD(921),
6705   BITFIELD(6, 2) /* index 921 */,
6706   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
6707   CHILD(926),
6708   BITFIELD(8, 2) /* index 926 */,
6709   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
6710   CHILD(931),
6711   BITFIELD(10, 2) /* index 931 */,
6712   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
6713   TILEGX_OPC_INFOL,
6714 };
6715 
6716 static const UShort decode_X1_fsm[1266] =
6717 {
6718   BITFIELD(53, 9) /* index 0 */,
6719   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
6720   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
6721   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
6722   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
6723   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
6724   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
6725   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
6726   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
6727   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
6728   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
6729   CHILD(513), CHILD(513), CHILD(513), CHILD(513), TILEGX_OPC_ADDXLI,
6730   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6731   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6732   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6733   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6734   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6735   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6736   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6737   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6738   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6739   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6740   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6741   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6742   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6743   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6744   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
6745   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_NONE,
6746   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6747   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6748   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6749   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6750   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6751   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6752   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6753   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_BEQZT,
6754   TILEGX_OPC_BEQZT, TILEGX_OPC_BEQZ, TILEGX_OPC_BEQZ, TILEGX_OPC_BGEZT,
6755   TILEGX_OPC_BGEZT, TILEGX_OPC_BGEZ, TILEGX_OPC_BGEZ, TILEGX_OPC_BGTZT,
6756   TILEGX_OPC_BGTZT, TILEGX_OPC_BGTZ, TILEGX_OPC_BGTZ, TILEGX_OPC_BLBCT,
6757   TILEGX_OPC_BLBCT, TILEGX_OPC_BLBC, TILEGX_OPC_BLBC, TILEGX_OPC_BLBST,
6758   TILEGX_OPC_BLBST, TILEGX_OPC_BLBS, TILEGX_OPC_BLBS, TILEGX_OPC_BLEZT,
6759   TILEGX_OPC_BLEZT, TILEGX_OPC_BLEZ, TILEGX_OPC_BLEZ, TILEGX_OPC_BLTZT,
6760   TILEGX_OPC_BLTZT, TILEGX_OPC_BLTZ, TILEGX_OPC_BLTZ, TILEGX_OPC_BNEZT,
6761   TILEGX_OPC_BNEZT, TILEGX_OPC_BNEZ, TILEGX_OPC_BNEZ, CHILD(528), CHILD(578),
6762   CHILD(598), CHILD(703), CHILD(723), CHILD(728), CHILD(753), CHILD(758),
6763   CHILD(763), CHILD(768), CHILD(773), CHILD(778), TILEGX_OPC_NONE,
6764   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6765   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6766   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6767   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6768   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6769   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6770   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6771   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6772   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6773   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6774   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6775   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6776   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_JAL,
6777   TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL,
6778   TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL,
6779   TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL,
6780   TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL,
6781   TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL,
6782   TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL,
6783   TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL,
6784   TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_J, TILEGX_OPC_J,
6785   TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J,
6786   TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J,
6787   TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J,
6788   TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J,
6789   TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J,
6790   TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J,
6791   CHILD(783), CHILD(800), CHILD(832), CHILD(849), CHILD(1168), CHILD(1185),
6792   CHILD(1202), TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6793   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6794   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6795   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6796   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6797   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6798   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6799   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6800   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6801   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6802   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6803   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6804   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6805   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6806   TILEGX_OPC_NONE, TILEGX_OPC_NONE, CHILD(1219), TILEGX_OPC_NONE,
6807   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6808   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6809   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6810   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6811   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6812   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6813   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6814   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6815   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6816   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6817   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6818   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6819   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6820   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6821   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6822   TILEGX_OPC_NONE, TILEGX_OPC_NONE, CHILD(1236), CHILD(1236), CHILD(1236),
6823   CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
6824   CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
6825   CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
6826   CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
6827   CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
6828   CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
6829   CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
6830   CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
6831   CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
6832   CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
6833   CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
6834   CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
6835   CHILD(1236),
6836   BITFIELD(37, 2) /* index 513 */,
6837   TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, CHILD(518),
6838   BITFIELD(39, 2) /* index 518 */,
6839   TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, CHILD(523),
6840   BITFIELD(41, 2) /* index 523 */,
6841   TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_MOVELI,
6842   BITFIELD(51, 2) /* index 528 */,
6843   TILEGX_OPC_NONE, CHILD(533), TILEGX_OPC_ADDXI, CHILD(548),
6844   BITFIELD(37, 2) /* index 533 */,
6845   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(538),
6846   BITFIELD(39, 2) /* index 538 */,
6847   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(543),
6848   BITFIELD(41, 2) /* index 543 */,
6849   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_MOVEI,
6850   BITFIELD(31, 2) /* index 548 */,
6851   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(553),
6852   BITFIELD(33, 2) /* index 553 */,
6853   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(558),
6854   BITFIELD(35, 2) /* index 558 */,
6855   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(563),
6856   BITFIELD(37, 2) /* index 563 */,
6857   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(568),
6858   BITFIELD(39, 2) /* index 568 */,
6859   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(573),
6860   BITFIELD(41, 2) /* index 573 */,
6861   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_INFO,
6862   BITFIELD(51, 2) /* index 578 */,
6863   TILEGX_OPC_CMPEQI, TILEGX_OPC_CMPLTSI, TILEGX_OPC_CMPLTUI, CHILD(583),
6864   BITFIELD(31, 2) /* index 583 */,
6865   TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD, CHILD(588),
6866   BITFIELD(33, 2) /* index 588 */,
6867   TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD, CHILD(593),
6868   BITFIELD(35, 2) /* index 593 */,
6869   TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD,
6870   TILEGX_OPC_PREFETCH_ADD_L1_FAULT,
6871   BITFIELD(51, 2) /* index 598 */,
6872   CHILD(603), CHILD(618), CHILD(633), CHILD(648),
6873   BITFIELD(31, 2) /* index 603 */,
6874   TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD, CHILD(608),
6875   BITFIELD(33, 2) /* index 608 */,
6876   TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD, CHILD(613),
6877   BITFIELD(35, 2) /* index 613 */,
6878   TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD,
6879   TILEGX_OPC_PREFETCH_ADD_L1,
6880   BITFIELD(31, 2) /* index 618 */,
6881   TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD, CHILD(623),
6882   BITFIELD(33, 2) /* index 623 */,
6883   TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD, CHILD(628),
6884   BITFIELD(35, 2) /* index 628 */,
6885   TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD,
6886   TILEGX_OPC_PREFETCH_ADD_L2_FAULT,
6887   BITFIELD(31, 2) /* index 633 */,
6888   TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, CHILD(638),
6889   BITFIELD(33, 2) /* index 638 */,
6890   TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, CHILD(643),
6891   BITFIELD(35, 2) /* index 643 */,
6892   TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD,
6893   TILEGX_OPC_PREFETCH_ADD_L2,
6894   BITFIELD(31, 2) /* index 648 */,
6895   CHILD(653), CHILD(653), CHILD(653), CHILD(673),
6896   BITFIELD(43, 2) /* index 653 */,
6897   CHILD(658), TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD,
6898   BITFIELD(45, 2) /* index 658 */,
6899   CHILD(663), TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD,
6900   BITFIELD(47, 2) /* index 663 */,
6901   CHILD(668), TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD,
6902   BITFIELD(49, 2) /* index 668 */,
6903   TILEGX_OPC_LD4S_TLS, TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD,
6904   TILEGX_OPC_LD4S_ADD,
6905   BITFIELD(33, 2) /* index 673 */,
6906   CHILD(653), CHILD(653), CHILD(653), CHILD(678),
6907   BITFIELD(35, 2) /* index 678 */,
6908   CHILD(653), CHILD(653), CHILD(653), CHILD(683),
6909   BITFIELD(43, 2) /* index 683 */,
6910   CHILD(688), TILEGX_OPC_PREFETCH_ADD_L3_FAULT,
6911   TILEGX_OPC_PREFETCH_ADD_L3_FAULT, TILEGX_OPC_PREFETCH_ADD_L3_FAULT,
6912   BITFIELD(45, 2) /* index 688 */,
6913   CHILD(693), TILEGX_OPC_PREFETCH_ADD_L3_FAULT,
6914   TILEGX_OPC_PREFETCH_ADD_L3_FAULT, TILEGX_OPC_PREFETCH_ADD_L3_FAULT,
6915   BITFIELD(47, 2) /* index 693 */,
6916   CHILD(698), TILEGX_OPC_PREFETCH_ADD_L3_FAULT,
6917   TILEGX_OPC_PREFETCH_ADD_L3_FAULT, TILEGX_OPC_PREFETCH_ADD_L3_FAULT,
6918   BITFIELD(49, 2) /* index 698 */,
6919   TILEGX_OPC_LD4S_TLS, TILEGX_OPC_PREFETCH_ADD_L3_FAULT,
6920   TILEGX_OPC_PREFETCH_ADD_L3_FAULT, TILEGX_OPC_PREFETCH_ADD_L3_FAULT,
6921   BITFIELD(51, 2) /* index 703 */,
6922   CHILD(708), TILEGX_OPC_LDNT1S_ADD, TILEGX_OPC_LDNT1U_ADD,
6923   TILEGX_OPC_LDNT2S_ADD,
6924   BITFIELD(31, 2) /* index 708 */,
6925   TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, CHILD(713),
6926   BITFIELD(33, 2) /* index 713 */,
6927   TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, CHILD(718),
6928   BITFIELD(35, 2) /* index 718 */,
6929   TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD,
6930   TILEGX_OPC_PREFETCH_ADD_L3,
6931   BITFIELD(51, 2) /* index 723 */,
6932   TILEGX_OPC_LDNT2U_ADD, TILEGX_OPC_LDNT4S_ADD, TILEGX_OPC_LDNT4U_ADD,
6933   TILEGX_OPC_LDNT_ADD,
6934   BITFIELD(51, 2) /* index 728 */,
6935   CHILD(733), TILEGX_OPC_LDNA_ADD, TILEGX_OPC_MFSPR, TILEGX_OPC_MTSPR,
6936   BITFIELD(43, 2) /* index 733 */,
6937   CHILD(738), TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD,
6938   BITFIELD(45, 2) /* index 738 */,
6939   CHILD(743), TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD,
6940   BITFIELD(47, 2) /* index 743 */,
6941   CHILD(748), TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD,
6942   BITFIELD(49, 2) /* index 748 */,
6943   TILEGX_OPC_LD_TLS, TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD,
6944   BITFIELD(51, 2) /* index 753 */,
6945   TILEGX_OPC_ORI, TILEGX_OPC_ST1_ADD, TILEGX_OPC_ST2_ADD, TILEGX_OPC_ST4_ADD,
6946   BITFIELD(51, 2) /* index 758 */,
6947   TILEGX_OPC_STNT1_ADD, TILEGX_OPC_STNT2_ADD, TILEGX_OPC_STNT4_ADD,
6948   TILEGX_OPC_STNT_ADD,
6949   BITFIELD(51, 2) /* index 763 */,
6950   TILEGX_OPC_ST_ADD, TILEGX_OPC_V1ADDI, TILEGX_OPC_V1CMPEQI,
6951   TILEGX_OPC_V1CMPLTSI,
6952   BITFIELD(51, 2) /* index 768 */,
6953   TILEGX_OPC_V1CMPLTUI, TILEGX_OPC_V1MAXUI, TILEGX_OPC_V1MINUI,
6954   TILEGX_OPC_V2ADDI,
6955   BITFIELD(51, 2) /* index 773 */,
6956   TILEGX_OPC_V2CMPEQI, TILEGX_OPC_V2CMPLTSI, TILEGX_OPC_V2CMPLTUI,
6957   TILEGX_OPC_V2MAXSI,
6958   BITFIELD(51, 2) /* index 778 */,
6959   TILEGX_OPC_V2MINSI, TILEGX_OPC_XORI, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6960   BITFIELD(49, 4) /* index 783 */,
6961   TILEGX_OPC_NONE, TILEGX_OPC_ADDXSC, TILEGX_OPC_ADDX, TILEGX_OPC_ADD,
6962   TILEGX_OPC_AND, TILEGX_OPC_CMPEQ, TILEGX_OPC_CMPEXCH4, TILEGX_OPC_CMPEXCH,
6963   TILEGX_OPC_CMPLES, TILEGX_OPC_CMPLEU, TILEGX_OPC_CMPLTS, TILEGX_OPC_CMPLTU,
6964   TILEGX_OPC_CMPNE, TILEGX_OPC_DBLALIGN2, TILEGX_OPC_DBLALIGN4,
6965   TILEGX_OPC_DBLALIGN6,
6966   BITFIELD(49, 4) /* index 800 */,
6967   TILEGX_OPC_EXCH4, TILEGX_OPC_EXCH, TILEGX_OPC_FETCHADD4,
6968   TILEGX_OPC_FETCHADDGEZ4, TILEGX_OPC_FETCHADDGEZ, TILEGX_OPC_FETCHADD,
6969   TILEGX_OPC_FETCHAND4, TILEGX_OPC_FETCHAND, TILEGX_OPC_FETCHOR4,
6970   TILEGX_OPC_FETCHOR, TILEGX_OPC_MNZ, TILEGX_OPC_MZ, TILEGX_OPC_NOR,
6971   CHILD(817), TILEGX_OPC_ROTL, TILEGX_OPC_SHL1ADDX,
6972   BITFIELD(43, 2) /* index 817 */,
6973   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(822),
6974   BITFIELD(45, 2) /* index 822 */,
6975   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(827),
6976   BITFIELD(47, 2) /* index 827 */,
6977   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_MOVE,
6978   BITFIELD(49, 4) /* index 832 */,
6979   TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL2ADDX, TILEGX_OPC_SHL2ADD,
6980   TILEGX_OPC_SHL3ADDX, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHLX, TILEGX_OPC_SHL,
6981   TILEGX_OPC_SHRS, TILEGX_OPC_SHRUX, TILEGX_OPC_SHRU, TILEGX_OPC_ST1,
6982   TILEGX_OPC_ST2, TILEGX_OPC_ST4, TILEGX_OPC_STNT1, TILEGX_OPC_STNT2,
6983   TILEGX_OPC_STNT4,
6984   BITFIELD(46, 7) /* index 849 */,
6985   TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_STNT,
6986   TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_STNT,
6987   TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_ST,
6988   TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_SUBXSC,
6989   TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBXSC,
6990   TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBX,
6991   TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, TILEGX_OPC_SUBX,
6992   TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, TILEGX_OPC_SUB,
6993   TILEGX_OPC_SUB, TILEGX_OPC_SUB, TILEGX_OPC_SUB, TILEGX_OPC_SUB,
6994   TILEGX_OPC_SUB, TILEGX_OPC_SUB, TILEGX_OPC_SUB, CHILD(978), CHILD(987),
6995   CHILD(1066), CHILD(1150), CHILD(1159), TILEGX_OPC_NONE, TILEGX_OPC_NONE,
6996   TILEGX_OPC_NONE, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC,
6997   TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC,
6998   TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADD,
6999   TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADD,
7000   TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADD, TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPEQ,
7001   TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPEQ,
7002   TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPEQ,
7003   TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLES,
7004   TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLES,
7005   TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLEU,
7006   TILEGX_OPC_V1CMPLEU, TILEGX_OPC_V1CMPLEU, TILEGX_OPC_V1CMPLEU,
7007   TILEGX_OPC_V1CMPLEU, TILEGX_OPC_V1CMPLEU, TILEGX_OPC_V1CMPLEU,
7008   TILEGX_OPC_V1CMPLEU, TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTS,
7009   TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTS,
7010   TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTS,
7011   TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPLTU,
7012   TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPLTU,
7013   TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPNE,
7014   TILEGX_OPC_V1CMPNE, TILEGX_OPC_V1CMPNE, TILEGX_OPC_V1CMPNE,
7015   TILEGX_OPC_V1CMPNE, TILEGX_OPC_V1CMPNE, TILEGX_OPC_V1CMPNE,
7016   TILEGX_OPC_V1CMPNE, TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_H,
7017   TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_H,
7018   TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_H,
7019   TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L,
7020   TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L,
7021   TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L,
7022   BITFIELD(43, 3) /* index 978 */,
7023   TILEGX_OPC_NONE, TILEGX_OPC_DRAIN, TILEGX_OPC_DTLBPR, TILEGX_OPC_FINV,
7024   TILEGX_OPC_FLUSHWB, TILEGX_OPC_FLUSH, TILEGX_OPC_FNOP, TILEGX_OPC_ICOH,
7025   BITFIELD(43, 3) /* index 987 */,
7026   CHILD(996), TILEGX_OPC_INV, TILEGX_OPC_IRET, TILEGX_OPC_JALRP,
7027   TILEGX_OPC_JALR, TILEGX_OPC_JRP, TILEGX_OPC_JR, CHILD(1051),
7028   BITFIELD(31, 2) /* index 996 */,
7029   CHILD(1001), CHILD(1026), TILEGX_OPC_ILL, TILEGX_OPC_ILL,
7030   BITFIELD(33, 2) /* index 1001 */,
7031   TILEGX_OPC_ILL, TILEGX_OPC_ILL, TILEGX_OPC_ILL, CHILD(1006),
7032   BITFIELD(35, 2) /* index 1006 */,
7033   TILEGX_OPC_ILL, CHILD(1011), TILEGX_OPC_ILL, TILEGX_OPC_ILL,
7034   BITFIELD(37, 2) /* index 1011 */,
7035   TILEGX_OPC_ILL, CHILD(1016), TILEGX_OPC_ILL, TILEGX_OPC_ILL,
7036   BITFIELD(39, 2) /* index 1016 */,
7037   TILEGX_OPC_ILL, CHILD(1021), TILEGX_OPC_ILL, TILEGX_OPC_ILL,
7038   BITFIELD(41, 2) /* index 1021 */,
7039   TILEGX_OPC_ILL, TILEGX_OPC_ILL, TILEGX_OPC_BPT, TILEGX_OPC_ILL,
7040   BITFIELD(33, 2) /* index 1026 */,
7041   TILEGX_OPC_ILL, TILEGX_OPC_ILL, TILEGX_OPC_ILL, CHILD(1031),
7042   BITFIELD(35, 2) /* index 1031 */,
7043   TILEGX_OPC_ILL, CHILD(1036), TILEGX_OPC_ILL, TILEGX_OPC_ILL,
7044   BITFIELD(37, 2) /* index 1036 */,
7045   TILEGX_OPC_ILL, CHILD(1041), TILEGX_OPC_ILL, TILEGX_OPC_ILL,
7046   BITFIELD(39, 2) /* index 1041 */,
7047   TILEGX_OPC_ILL, CHILD(1046), TILEGX_OPC_ILL, TILEGX_OPC_ILL,
7048   BITFIELD(41, 2) /* index 1046 */,
7049   TILEGX_OPC_ILL, TILEGX_OPC_ILL, TILEGX_OPC_RAISE, TILEGX_OPC_ILL,
7050   BITFIELD(31, 2) /* index 1051 */,
7051   TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, CHILD(1056),
7052   BITFIELD(33, 2) /* index 1056 */,
7053   TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, CHILD(1061),
7054   BITFIELD(35, 2) /* index 1061 */,
7055   TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S,
7056   TILEGX_OPC_PREFETCH_L1_FAULT,
7057   BITFIELD(43, 3) /* index 1066 */,
7058   CHILD(1075), CHILD(1090), CHILD(1105), CHILD(1120), CHILD(1135),
7059   TILEGX_OPC_LDNA, TILEGX_OPC_LDNT1S, TILEGX_OPC_LDNT1U,
7060   BITFIELD(31, 2) /* index 1075 */,
7061   TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, CHILD(1080),
7062   BITFIELD(33, 2) /* index 1080 */,
7063   TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, CHILD(1085),
7064   BITFIELD(35, 2) /* index 1085 */,
7065   TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_PREFETCH,
7066   BITFIELD(31, 2) /* index 1090 */,
7067   TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, CHILD(1095),
7068   BITFIELD(33, 2) /* index 1095 */,
7069   TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, CHILD(1100),
7070   BITFIELD(35, 2) /* index 1100 */,
7071   TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S,
7072   TILEGX_OPC_PREFETCH_L2_FAULT,
7073   BITFIELD(31, 2) /* index 1105 */,
7074   TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, CHILD(1110),
7075   BITFIELD(33, 2) /* index 1110 */,
7076   TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, CHILD(1115),
7077   BITFIELD(35, 2) /* index 1115 */,
7078   TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_PREFETCH_L2,
7079   BITFIELD(31, 2) /* index 1120 */,
7080   TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, CHILD(1125),
7081   BITFIELD(33, 2) /* index 1125 */,
7082   TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, CHILD(1130),
7083   BITFIELD(35, 2) /* index 1130 */,
7084   TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S,
7085   TILEGX_OPC_PREFETCH_L3_FAULT,
7086   BITFIELD(31, 2) /* index 1135 */,
7087   TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, CHILD(1140),
7088   BITFIELD(33, 2) /* index 1140 */,
7089   TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, CHILD(1145),
7090   BITFIELD(35, 2) /* index 1145 */,
7091   TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_PREFETCH_L3,
7092   BITFIELD(43, 3) /* index 1150 */,
7093   TILEGX_OPC_LDNT2S, TILEGX_OPC_LDNT2U, TILEGX_OPC_LDNT4S, TILEGX_OPC_LDNT4U,
7094   TILEGX_OPC_LDNT, TILEGX_OPC_LD, TILEGX_OPC_LNK, TILEGX_OPC_MF,
7095   BITFIELD(43, 3) /* index 1159 */,
7096   TILEGX_OPC_NAP, TILEGX_OPC_NOP, TILEGX_OPC_SWINT0, TILEGX_OPC_SWINT1,
7097   TILEGX_OPC_SWINT2, TILEGX_OPC_SWINT3, TILEGX_OPC_WH64, TILEGX_OPC_NONE,
7098   BITFIELD(49, 4) /* index 1168 */,
7099   TILEGX_OPC_V1MAXU, TILEGX_OPC_V1MINU, TILEGX_OPC_V1MNZ, TILEGX_OPC_V1MZ,
7100   TILEGX_OPC_V1SHL, TILEGX_OPC_V1SHRS, TILEGX_OPC_V1SHRU, TILEGX_OPC_V1SUBUC,
7101   TILEGX_OPC_V1SUB, TILEGX_OPC_V2ADDSC, TILEGX_OPC_V2ADD, TILEGX_OPC_V2CMPEQ,
7102   TILEGX_OPC_V2CMPLES, TILEGX_OPC_V2CMPLEU, TILEGX_OPC_V2CMPLTS,
7103   TILEGX_OPC_V2CMPLTU,
7104   BITFIELD(49, 4) /* index 1185 */,
7105   TILEGX_OPC_V2CMPNE, TILEGX_OPC_V2INT_H, TILEGX_OPC_V2INT_L,
7106   TILEGX_OPC_V2MAXS, TILEGX_OPC_V2MINS, TILEGX_OPC_V2MNZ, TILEGX_OPC_V2MZ,
7107   TILEGX_OPC_V2PACKH, TILEGX_OPC_V2PACKL, TILEGX_OPC_V2PACKUC,
7108   TILEGX_OPC_V2SHLSC, TILEGX_OPC_V2SHL, TILEGX_OPC_V2SHRS, TILEGX_OPC_V2SHRU,
7109   TILEGX_OPC_V2SUBSC, TILEGX_OPC_V2SUB,
7110   BITFIELD(49, 4) /* index 1202 */,
7111   TILEGX_OPC_V4ADDSC, TILEGX_OPC_V4ADD, TILEGX_OPC_V4INT_H,
7112   TILEGX_OPC_V4INT_L, TILEGX_OPC_V4PACKSC, TILEGX_OPC_V4SHLSC,
7113   TILEGX_OPC_V4SHL, TILEGX_OPC_V4SHRS, TILEGX_OPC_V4SHRU, TILEGX_OPC_V4SUBSC,
7114   TILEGX_OPC_V4SUB, TILEGX_OPC_XOR, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
7115   TILEGX_OPC_NONE, TILEGX_OPC_NONE,
7116   BITFIELD(49, 4) /* index 1219 */,
7117   TILEGX_OPC_NONE, TILEGX_OPC_ROTLI, TILEGX_OPC_SHLI, TILEGX_OPC_SHLXI,
7118   TILEGX_OPC_SHRSI, TILEGX_OPC_SHRUI, TILEGX_OPC_SHRUXI, TILEGX_OPC_V1SHLI,
7119   TILEGX_OPC_V1SHRSI, TILEGX_OPC_V1SHRUI, TILEGX_OPC_V2SHLI,
7120   TILEGX_OPC_V2SHRSI, TILEGX_OPC_V2SHRUI, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
7121   TILEGX_OPC_NONE,
7122   BITFIELD(31, 2) /* index 1236 */,
7123   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
7124   CHILD(1241),
7125   BITFIELD(33, 2) /* index 1241 */,
7126   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
7127   CHILD(1246),
7128   BITFIELD(35, 2) /* index 1246 */,
7129   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
7130   CHILD(1251),
7131   BITFIELD(37, 2) /* index 1251 */,
7132   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
7133   CHILD(1256),
7134   BITFIELD(39, 2) /* index 1256 */,
7135   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
7136   CHILD(1261),
7137   BITFIELD(41, 2) /* index 1261 */,
7138   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
7139   TILEGX_OPC_INFOL,
7140 };
7141 
7142 static const UShort decode_Y0_fsm[178] =
7143 {
7144   BITFIELD(27, 4) /* index 0 */,
7145   CHILD(17), TILEGX_OPC_ADDXI, CHILD(32), TILEGX_OPC_CMPEQI,
7146   TILEGX_OPC_CMPLTSI, CHILD(62), CHILD(67), CHILD(118), CHILD(123),
7147   CHILD(128), CHILD(133), CHILD(153), CHILD(158), CHILD(163), CHILD(168),
7148   CHILD(173),
7149   BITFIELD(6, 2) /* index 17 */,
7150   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(22),
7151   BITFIELD(8, 2) /* index 22 */,
7152   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(27),
7153   BITFIELD(10, 2) /* index 27 */,
7154   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_MOVEI,
7155   BITFIELD(0, 2) /* index 32 */,
7156   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(37),
7157   BITFIELD(2, 2) /* index 37 */,
7158   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(42),
7159   BITFIELD(4, 2) /* index 42 */,
7160   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(47),
7161   BITFIELD(6, 2) /* index 47 */,
7162   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(52),
7163   BITFIELD(8, 2) /* index 52 */,
7164   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(57),
7165   BITFIELD(10, 2) /* index 57 */,
7166   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_INFO,
7167   BITFIELD(18, 2) /* index 62 */,
7168   TILEGX_OPC_ADDX, TILEGX_OPC_ADD, TILEGX_OPC_SUBX, TILEGX_OPC_SUB,
7169   BITFIELD(15, 5) /* index 67 */,
7170   TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD,
7171   TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD,
7172   TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL2ADD,
7173   TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD,
7174   TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD,
7175   TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD,
7176   TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD,
7177   TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD, CHILD(100),
7178   CHILD(109), TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
7179   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
7180   BITFIELD(12, 3) /* index 100 */,
7181   TILEGX_OPC_NONE, TILEGX_OPC_CLZ, TILEGX_OPC_CTZ, TILEGX_OPC_FNOP,
7182   TILEGX_OPC_FSINGLE_PACK1, TILEGX_OPC_NOP, TILEGX_OPC_PCNT,
7183   TILEGX_OPC_REVBITS,
7184   BITFIELD(12, 3) /* index 109 */,
7185   TILEGX_OPC_REVBYTES, TILEGX_OPC_TBLIDXB0, TILEGX_OPC_TBLIDXB1,
7186   TILEGX_OPC_TBLIDXB2, TILEGX_OPC_TBLIDXB3, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
7187   TILEGX_OPC_NONE,
7188   BITFIELD(18, 2) /* index 118 */,
7189   TILEGX_OPC_CMPLES, TILEGX_OPC_CMPLEU, TILEGX_OPC_CMPLTS, TILEGX_OPC_CMPLTU,
7190   BITFIELD(18, 2) /* index 123 */,
7191   TILEGX_OPC_CMPEQ, TILEGX_OPC_CMPNE, TILEGX_OPC_MULAX, TILEGX_OPC_MULX,
7192   BITFIELD(18, 2) /* index 128 */,
7193   TILEGX_OPC_CMOVEQZ, TILEGX_OPC_CMOVNEZ, TILEGX_OPC_MNZ, TILEGX_OPC_MZ,
7194   BITFIELD(18, 2) /* index 133 */,
7195   TILEGX_OPC_AND, TILEGX_OPC_NOR, CHILD(138), TILEGX_OPC_XOR,
7196   BITFIELD(12, 2) /* index 138 */,
7197   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(143),
7198   BITFIELD(14, 2) /* index 143 */,
7199   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(148),
7200   BITFIELD(16, 2) /* index 148 */,
7201   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_MOVE,
7202   BITFIELD(18, 2) /* index 153 */,
7203   TILEGX_OPC_ROTL, TILEGX_OPC_SHL, TILEGX_OPC_SHRS, TILEGX_OPC_SHRU,
7204   BITFIELD(18, 2) /* index 158 */,
7205   TILEGX_OPC_NONE, TILEGX_OPC_SHL1ADDX, TILEGX_OPC_SHL2ADDX,
7206   TILEGX_OPC_SHL3ADDX,
7207   BITFIELD(18, 2) /* index 163 */,
7208   TILEGX_OPC_MUL_HS_HS, TILEGX_OPC_MUL_HU_HU, TILEGX_OPC_MUL_LS_LS,
7209   TILEGX_OPC_MUL_LU_LU,
7210   BITFIELD(18, 2) /* index 168 */,
7211   TILEGX_OPC_MULA_HS_HS, TILEGX_OPC_MULA_HU_HU, TILEGX_OPC_MULA_LS_LS,
7212   TILEGX_OPC_MULA_LU_LU,
7213   BITFIELD(18, 2) /* index 173 */,
7214   TILEGX_OPC_ROTLI, TILEGX_OPC_SHLI, TILEGX_OPC_SHRSI, TILEGX_OPC_SHRUI,
7215 };
7216 
7217 static const UShort decode_Y1_fsm[167] =
7218 {
7219   BITFIELD(58, 4) /* index 0 */,
7220   TILEGX_OPC_NONE, CHILD(17), TILEGX_OPC_ADDXI, CHILD(32), TILEGX_OPC_CMPEQI,
7221   TILEGX_OPC_CMPLTSI, CHILD(62), CHILD(67), CHILD(117), CHILD(122),
7222   CHILD(127), CHILD(132), CHILD(152), CHILD(157), CHILD(162), TILEGX_OPC_NONE,
7223   BITFIELD(37, 2) /* index 17 */,
7224   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(22),
7225   BITFIELD(39, 2) /* index 22 */,
7226   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(27),
7227   BITFIELD(41, 2) /* index 27 */,
7228   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_MOVEI,
7229   BITFIELD(31, 2) /* index 32 */,
7230   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(37),
7231   BITFIELD(33, 2) /* index 37 */,
7232   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(42),
7233   BITFIELD(35, 2) /* index 42 */,
7234   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(47),
7235   BITFIELD(37, 2) /* index 47 */,
7236   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(52),
7237   BITFIELD(39, 2) /* index 52 */,
7238   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(57),
7239   BITFIELD(41, 2) /* index 57 */,
7240   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_INFO,
7241   BITFIELD(49, 2) /* index 62 */,
7242   TILEGX_OPC_ADDX, TILEGX_OPC_ADD, TILEGX_OPC_SUBX, TILEGX_OPC_SUB,
7243   BITFIELD(47, 4) /* index 67 */,
7244   TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD,
7245   TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD,
7246   TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL3ADD,
7247   TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD, CHILD(84),
7248   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
7249   BITFIELD(43, 3) /* index 84 */,
7250   CHILD(93), CHILD(96), CHILD(99), CHILD(102), CHILD(105), CHILD(108),
7251   CHILD(111), CHILD(114),
7252   BITFIELD(46, 1) /* index 93 */,
7253   TILEGX_OPC_NONE, TILEGX_OPC_FNOP,
7254   BITFIELD(46, 1) /* index 96 */,
7255   TILEGX_OPC_NONE, TILEGX_OPC_ILL,
7256   BITFIELD(46, 1) /* index 99 */,
7257   TILEGX_OPC_NONE, TILEGX_OPC_JALRP,
7258   BITFIELD(46, 1) /* index 102 */,
7259   TILEGX_OPC_NONE, TILEGX_OPC_JALR,
7260   BITFIELD(46, 1) /* index 105 */,
7261   TILEGX_OPC_NONE, TILEGX_OPC_JRP,
7262   BITFIELD(46, 1) /* index 108 */,
7263   TILEGX_OPC_NONE, TILEGX_OPC_JR,
7264   BITFIELD(46, 1) /* index 111 */,
7265   TILEGX_OPC_NONE, TILEGX_OPC_LNK,
7266   BITFIELD(46, 1) /* index 114 */,
7267   TILEGX_OPC_NONE, TILEGX_OPC_NOP,
7268   BITFIELD(49, 2) /* index 117 */,
7269   TILEGX_OPC_CMPLES, TILEGX_OPC_CMPLEU, TILEGX_OPC_CMPLTS, TILEGX_OPC_CMPLTU,
7270   BITFIELD(49, 2) /* index 122 */,
7271   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_CMPEQ, TILEGX_OPC_CMPNE,
7272   BITFIELD(49, 2) /* index 127 */,
7273   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_MNZ, TILEGX_OPC_MZ,
7274   BITFIELD(49, 2) /* index 132 */,
7275   TILEGX_OPC_AND, TILEGX_OPC_NOR, CHILD(137), TILEGX_OPC_XOR,
7276   BITFIELD(43, 2) /* index 137 */,
7277   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(142),
7278   BITFIELD(45, 2) /* index 142 */,
7279   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(147),
7280   BITFIELD(47, 2) /* index 147 */,
7281   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_MOVE,
7282   BITFIELD(49, 2) /* index 152 */,
7283   TILEGX_OPC_ROTL, TILEGX_OPC_SHL, TILEGX_OPC_SHRS, TILEGX_OPC_SHRU,
7284   BITFIELD(49, 2) /* index 157 */,
7285   TILEGX_OPC_NONE, TILEGX_OPC_SHL1ADDX, TILEGX_OPC_SHL2ADDX,
7286   TILEGX_OPC_SHL3ADDX,
7287   BITFIELD(49, 2) /* index 162 */,
7288   TILEGX_OPC_ROTLI, TILEGX_OPC_SHLI, TILEGX_OPC_SHRSI, TILEGX_OPC_SHRUI,
7289 };
7290 
7291 static const UShort decode_Y2_fsm[118] =
7292 {
7293   BITFIELD(62, 2) /* index 0 */,
7294   TILEGX_OPC_NONE, CHILD(5), CHILD(66), CHILD(109),
7295   BITFIELD(55, 3) /* index 5 */,
7296   CHILD(14), CHILD(14), CHILD(14), CHILD(17), CHILD(40), CHILD(40), CHILD(40),
7297   CHILD(43),
7298   BITFIELD(26, 1) /* index 14 */,
7299   TILEGX_OPC_LD1S, TILEGX_OPC_LD1U,
7300   BITFIELD(26, 1) /* index 17 */,
7301   CHILD(20), CHILD(30),
7302   BITFIELD(51, 2) /* index 20 */,
7303   TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, CHILD(25),
7304   BITFIELD(53, 2) /* index 25 */,
7305   TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S,
7306   TILEGX_OPC_PREFETCH_L1_FAULT,
7307   BITFIELD(51, 2) /* index 30 */,
7308   TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, CHILD(35),
7309   BITFIELD(53, 2) /* index 35 */,
7310   TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_PREFETCH,
7311   BITFIELD(26, 1) /* index 40 */,
7312   TILEGX_OPC_LD2S, TILEGX_OPC_LD2U,
7313   BITFIELD(26, 1) /* index 43 */,
7314   CHILD(46), CHILD(56),
7315   BITFIELD(51, 2) /* index 46 */,
7316   TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, CHILD(51),
7317   BITFIELD(53, 2) /* index 51 */,
7318   TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S,
7319   TILEGX_OPC_PREFETCH_L2_FAULT,
7320   BITFIELD(51, 2) /* index 56 */,
7321   TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, CHILD(61),
7322   BITFIELD(53, 2) /* index 61 */,
7323   TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_PREFETCH_L2,
7324   BITFIELD(56, 2) /* index 66 */,
7325   CHILD(71), CHILD(74), CHILD(90), CHILD(93),
7326   BITFIELD(26, 1) /* index 71 */,
7327   TILEGX_OPC_NONE, TILEGX_OPC_LD4S,
7328   BITFIELD(26, 1) /* index 74 */,
7329   TILEGX_OPC_NONE, CHILD(77),
7330   BITFIELD(51, 2) /* index 77 */,
7331   TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, CHILD(82),
7332   BITFIELD(53, 2) /* index 82 */,
7333   TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, CHILD(87),
7334   BITFIELD(55, 1) /* index 87 */,
7335   TILEGX_OPC_LD4S, TILEGX_OPC_PREFETCH_L3_FAULT,
7336   BITFIELD(26, 1) /* index 90 */,
7337   TILEGX_OPC_LD4U, TILEGX_OPC_LD,
7338   BITFIELD(26, 1) /* index 93 */,
7339   CHILD(96), TILEGX_OPC_LD,
7340   BITFIELD(51, 2) /* index 96 */,
7341   TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, CHILD(101),
7342   BITFIELD(53, 2) /* index 101 */,
7343   TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, CHILD(106),
7344   BITFIELD(55, 1) /* index 106 */,
7345   TILEGX_OPC_LD4U, TILEGX_OPC_PREFETCH_L3,
7346   BITFIELD(26, 1) /* index 109 */,
7347   CHILD(112), CHILD(115),
7348   BITFIELD(57, 1) /* index 112 */,
7349   TILEGX_OPC_ST1, TILEGX_OPC_ST4,
7350   BITFIELD(57, 1) /* index 115 */,
7351   TILEGX_OPC_ST2, TILEGX_OPC_ST,
7352 };
7353 
7354 #undef BITFIELD
7355 #undef CHILD
7356 const UShort * const
7357 tilegx_bundle_decoder_fsms[TILEGX_NUM_PIPELINE_ENCODINGS] =
7358 {
7359   decode_X0_fsm,
7360   decode_X1_fsm,
7361   decode_Y0_fsm,
7362   decode_Y1_fsm,
7363   decode_Y2_fsm
7364 };
7365 const struct tilegx_operand tilegx_operands[35] =
7366 {
7367   {
7368     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM8_X0),
7369     8, 1, 0, 0, 0, 0,
7370     create_Imm8_X0, get_Imm8_X0
7371   },
7372   {
7373     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM8_X1),
7374     8, 1, 0, 0, 0, 0,
7375     create_Imm8_X1, get_Imm8_X1
7376   },
7377   {
7378     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM8_Y0),
7379     8, 1, 0, 0, 0, 0,
7380     create_Imm8_Y0, get_Imm8_Y0
7381   },
7382   {
7383     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM8_Y1),
7384     8, 1, 0, 0, 0, 0,
7385     create_Imm8_Y1, get_Imm8_Y1
7386   },
7387   {
7388     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM16_X0_HW0_LAST),
7389     16, 1, 0, 0, 0, 0,
7390     create_Imm16_X0, get_Imm16_X0
7391   },
7392   {
7393     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM16_X1_HW0_LAST),
7394     16, 1, 0, 0, 0, 0,
7395     create_Imm16_X1, get_Imm16_X1
7396   },
7397   {
7398     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
7399     6, 0, 0, 1, 0, 0,
7400     create_Dest_X1, get_Dest_X1
7401   },
7402   {
7403     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
7404     6, 0, 1, 0, 0, 0,
7405     create_SrcA_X1, get_SrcA_X1
7406   },
7407   {
7408     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
7409     6, 0, 0, 1, 0, 0,
7410     create_Dest_X0, get_Dest_X0
7411   },
7412   {
7413     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
7414     6, 0, 1, 0, 0, 0,
7415     create_SrcA_X0, get_SrcA_X0
7416   },
7417   {
7418     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
7419     6, 0, 0, 1, 0, 0,
7420     create_Dest_Y0, get_Dest_Y0
7421   },
7422   {
7423     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
7424     6, 0, 1, 0, 0, 0,
7425     create_SrcA_Y0, get_SrcA_Y0
7426   },
7427   {
7428     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
7429     6, 0, 0, 1, 0, 0,
7430     create_Dest_Y1, get_Dest_Y1
7431   },
7432   {
7433     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
7434     6, 0, 1, 0, 0, 0,
7435     create_SrcA_Y1, get_SrcA_Y1
7436   },
7437   {
7438     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
7439     6, 0, 1, 0, 0, 0,
7440     create_SrcA_Y2, get_SrcA_Y2
7441   },
7442   {
7443     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
7444     6, 0, 1, 1, 0, 0,
7445     create_SrcA_X1, get_SrcA_X1
7446   },
7447   {
7448     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
7449     6, 0, 1, 0, 0, 0,
7450     create_SrcB_X0, get_SrcB_X0
7451   },
7452   {
7453     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
7454     6, 0, 1, 0, 0, 0,
7455     create_SrcB_X1, get_SrcB_X1
7456   },
7457   {
7458     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
7459     6, 0, 1, 0, 0, 0,
7460     create_SrcB_Y0, get_SrcB_Y0
7461   },
7462   {
7463     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
7464     6, 0, 1, 0, 0, 0,
7465     create_SrcB_Y1, get_SrcB_Y1
7466   },
7467   {
7468     TILEGX_OP_TYPE_ADDRESS, BFD_RELOC(TILEGX_BROFF_X1),
7469     17, 1, 0, 0, 1, TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES,
7470     create_BrOff_X1, get_BrOff_X1
7471   },
7472   {
7473     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_MMSTART_X0),
7474     6, 0, 0, 0, 0, 0,
7475     create_BFStart_X0, get_BFStart_X0
7476   },
7477   {
7478     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_MMEND_X0),
7479     6, 0, 0, 0, 0, 0,
7480     create_BFEnd_X0, get_BFEnd_X0
7481   },
7482   {
7483     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
7484     6, 0, 1, 1, 0, 0,
7485     create_Dest_X0, get_Dest_X0
7486   },
7487   {
7488     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
7489     6, 0, 1, 1, 0, 0,
7490     create_Dest_Y0, get_Dest_Y0
7491   },
7492   {
7493     TILEGX_OP_TYPE_ADDRESS, BFD_RELOC(TILEGX_JUMPOFF_X1),
7494     27, 1, 0, 0, 1, TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES,
7495     create_JumpOff_X1, get_JumpOff_X1
7496   },
7497   {
7498     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
7499     6, 0, 0, 1, 0, 0,
7500     create_SrcBDest_Y2, get_SrcBDest_Y2
7501   },
7502   {
7503     TILEGX_OP_TYPE_SPR, BFD_RELOC(TILEGX_MF_IMM14_X1),
7504     14, 0, 0, 0, 0, 0,
7505     create_MF_Imm14_X1, get_MF_Imm14_X1
7506   },
7507   {
7508     TILEGX_OP_TYPE_SPR, BFD_RELOC(TILEGX_MT_IMM14_X1),
7509     14, 0, 0, 0, 0, 0,
7510     create_MT_Imm14_X1, get_MT_Imm14_X1
7511   },
7512   {
7513     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_SHAMT_X0),
7514     6, 0, 0, 0, 0, 0,
7515     create_ShAmt_X0, get_ShAmt_X0
7516   },
7517   {
7518     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_SHAMT_X1),
7519     6, 0, 0, 0, 0, 0,
7520     create_ShAmt_X1, get_ShAmt_X1
7521   },
7522   {
7523     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_SHAMT_Y0),
7524     6, 0, 0, 0, 0, 0,
7525     create_ShAmt_Y0, get_ShAmt_Y0
7526   },
7527   {
7528     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_SHAMT_Y1),
7529     6, 0, 0, 0, 0, 0,
7530     create_ShAmt_Y1, get_ShAmt_Y1
7531   },
7532   {
7533     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
7534     6, 0, 1, 0, 0, 0,
7535     create_SrcBDest_Y2, get_SrcBDest_Y2
7536   },
7537   {
7538     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_DEST_IMM8_X1),
7539     8, 1, 0, 0, 0, 0,
7540     create_Dest_Imm8_X1, get_Dest_Imm8_X1
7541   }
7542 };
7543 
7544 
7545 /* Given a set of bundle bits and a specific pipe, returns which
7546  * instruction the bundle contains in that pipe.
7547  */
7548 const struct tilegx_opcode *
find_opcode(tilegx_bundle_bits bits,tilegx_pipeline pipe)7549 find_opcode ( tilegx_bundle_bits bits, tilegx_pipeline pipe )
7550 {
7551   const UShort *table = tilegx_bundle_decoder_fsms[pipe];
7552   Int index = 0;
7553 
7554   while (1)
7555   {
7556     UShort bitspec = table[index];
7557     UInt bitfield =
7558       ((UInt)(bits >> (bitspec & 63))) & (bitspec >> 6);
7559 
7560     UShort next = table[index + 1 + bitfield];
7561     if (next <= TILEGX_OPC_NONE)
7562       return &tilegx_opcodes[next];
7563 
7564     index = next - TILEGX_OPC_NONE;
7565   }
7566 }
7567 
7568 
7569 int
parse_insn_tilegx(tilegx_bundle_bits bits,ULong pc,struct tilegx_decoded_instruction decoded[TILEGX_MAX_INSTRUCTIONS_PER_BUNDLE])7570 parse_insn_tilegx ( tilegx_bundle_bits bits,
7571                     ULong pc,
7572                     struct tilegx_decoded_instruction
7573                     decoded[TILEGX_MAX_INSTRUCTIONS_PER_BUNDLE] )
7574 {
7575   Int num_instructions = 0;
7576   Int pipe;
7577 
7578   Int min_pipe, max_pipe;
7579   if ((bits & TILEGX_BUNDLE_MODE_MASK) == 0)
7580   {
7581     min_pipe = TILEGX_PIPELINE_X0;
7582     max_pipe = TILEGX_PIPELINE_X1;
7583   }
7584   else
7585   {
7586     min_pipe = TILEGX_PIPELINE_Y0;
7587     max_pipe = TILEGX_PIPELINE_Y2;
7588   }
7589 
7590   /* For each pipe, find an instruction that fits. */
7591   for (pipe = min_pipe; pipe <= max_pipe; pipe++)
7592   {
7593     const struct tilegx_opcode *opc;
7594     struct tilegx_decoded_instruction *d;
7595     Int i;
7596 
7597     d = &decoded[num_instructions++];
7598     opc = find_opcode (bits, (tilegx_pipeline)pipe);
7599     d->opcode = opc;
7600 
7601     /* Decode each operand, sign extending, etc. as appropriate. */
7602     for (i = 0; i < opc->num_operands; i++)
7603     {
7604       const struct tilegx_operand *op =
7605         &tilegx_operands[opc->operands[pipe][i]];
7606       Int raw_opval = op->extract (bits);
7607       Long opval;
7608 
7609       if (op->is_signed)
7610       {
7611         /* Sign-extend the operand. */
7612         Int shift = (int)((sizeof(int) * 8) - op->num_bits);
7613         raw_opval = (raw_opval << shift) >> shift;
7614       }
7615 
7616       /* Adjust PC-relative scaled branch offsets. */
7617       if (op->type == TILEGX_OP_TYPE_ADDRESS)
7618         opval = (raw_opval * TILEGX_BUNDLE_SIZE_IN_BYTES) + pc;
7619       else
7620         opval = raw_opval;
7621 
7622       /* Record the final value. */
7623       d->operands[i] = op;
7624       d->operand_values[i] = opval;
7625     }
7626   }
7627   decoded[num_instructions].opcode = NULL;
7628   return num_instructions;
7629 }
7630 
mkTileGxInsn(Int opc,Int argc,...)7631 tilegx_bundle_bits mkTileGxInsn ( Int opc, Int argc, ... )
7632 {
7633   struct tilegx_decoded_instruction decoded;
7634   decoded.opcode =  &tilegx_opcodes[opc];
7635   Int i;
7636   va_list argv;
7637 
7638   if (decoded.opcode->num_operands != argc)
7639     return -1;
7640 
7641   if (opc > TILEGX_OPC_NONE) return 0;
7642 
7643   if (decoded.opcode->num_operands > 4)
7644     return -1;
7645 
7646   va_start(argv, argc);
7647   for (i = 0 ; i < decoded.opcode->num_operands; i++)
7648   {
7649     decoded.operands[i] = 0;
7650     decoded.operand_values[i] = va_arg(argv, ULong);
7651   }
7652   va_end(argv);
7653 
7654   return encode_insn_tilegx(decoded);
7655 }
7656 
7657 tilegx_bundle_bits
encode_insn_tilegx(struct tilegx_decoded_instruction decoded)7658 encode_insn_tilegx ( struct tilegx_decoded_instruction decoded )
7659 {
7660   const struct tilegx_opcode *opc =
7661     decoded.opcode;
7662 
7663   tilegx_bundle_bits insn = 0;
7664   Int pipeX01 = (opc->pipes & 0x01) ? 0 : 1;
7665   Int op_num  = opc->num_operands;
7666 
7667   /* Assume either X0 or X1. */
7668   if ((opc->pipes & 3) == 0)
7669     return -1;
7670 
7671   /* Insert fnop in other pipe. */
7672   insn = tilegx_opcodes[TILEGX_OPC_FNOP].
7673     fixed_bit_values[pipeX01 ? 0 : 1];
7674 
7675   insn |= opc->fixed_bit_values[pipeX01];
7676 
7677   Int i;
7678   /* loop for each operand. */
7679   for (i = 0 ; i < op_num; i++)
7680     {
7681       const struct tilegx_operand *opd =
7682         &tilegx_operands[opc->operands[pipeX01][i]];
7683       Long  op = decoded.operand_values[i];
7684       decoded.operands[i] = opd;
7685       ULong x = opd->insert(op);
7686       insn |= x;
7687     }
7688 
7689   return insn;
7690 }
7691 
7692 /*---------------------------------------------------------------*/
7693 /*--- end                                    tilegx_disasm.c  ---*/
7694 /*---------------------------------------------------------------*/
7695