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