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