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