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
47const 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
6423static 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
6716static 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
7142static 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
7217static 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
7291static 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
7356const UShort * const
7357tilegx_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};
7365const 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 */
7548const struct tilegx_opcode *
7549find_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
7569int
7570parse_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
7631tilegx_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
7657tilegx_bundle_bits
7658encode_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