arch/tile: finish enabling support for TILE-Gx 64-bit chip
[linux-2.6.git] / arch / tile / kernel / tile-desc_64.c
1 /* This define is BFD_RELOC_##x for real bfd, or -1 for everyone else. */
2 #define BFD_RELOC(x) -1
3
4 /* Special registers. */
5 #define TREG_LR 55
6 #define TREG_SN 56
7 #define TREG_ZERO 63
8
9 /* FIXME: Rename this. */
10 #include <asm/opcode-tile_64.h>
11
12 #include <linux/stddef.h>
13
14 const struct tilegx_opcode tilegx_opcodes[334] =
15 {
16  { "bpt", TILEGX_OPC_BPT, 0x2, 0, TREG_ZERO, 0,
17     { { 0, }, {  }, { 0, }, { 0, }, { 0, } },
18   },
19   { "info", TILEGX_OPC_INFO, 0xf, 1, TREG_ZERO, 1,
20     { { 0 }, { 1 }, { 2 }, { 3 }, { 0, } },
21   },
22   { "infol", TILEGX_OPC_INFOL, 0x3, 1, TREG_ZERO, 1,
23     { { 4 }, { 5 }, { 0, }, { 0, }, { 0, } },
24   },
25   { "move", TILEGX_OPC_MOVE, 0xf, 2, TREG_ZERO, 1,
26     { { 6, 7 }, { 8, 9 }, { 10, 11 }, { 12, 13 }, { 0, } },
27   },
28   { "movei", TILEGX_OPC_MOVEI, 0xf, 2, TREG_ZERO, 1,
29     { { 6, 0 }, { 8, 1 }, { 10, 2 }, { 12, 3 }, { 0, } },
30   },
31   { "moveli", TILEGX_OPC_MOVELI, 0x3, 2, TREG_ZERO, 1,
32     { { 6, 4 }, { 8, 5 }, { 0, }, { 0, }, { 0, } },
33   },
34   { "prefetch", TILEGX_OPC_PREFETCH, 0x12, 1, TREG_ZERO, 1,
35     { { 0, }, { 9 }, { 0, }, { 0, }, { 14 } },
36   },
37   { "prefetch_add_l1", TILEGX_OPC_PREFETCH_ADD_L1, 0x2, 2, TREG_ZERO, 1,
38     { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } },
39   },
40   { "prefetch_add_l1_fault", TILEGX_OPC_PREFETCH_ADD_L1_FAULT, 0x2, 2, TREG_ZERO, 1,
41     { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } },
42   },
43   { "prefetch_add_l2", TILEGX_OPC_PREFETCH_ADD_L2, 0x2, 2, TREG_ZERO, 1,
44     { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } },
45   },
46   { "prefetch_add_l2_fault", TILEGX_OPC_PREFETCH_ADD_L2_FAULT, 0x2, 2, TREG_ZERO, 1,
47     { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } },
48   },
49   { "prefetch_add_l3", TILEGX_OPC_PREFETCH_ADD_L3, 0x2, 2, TREG_ZERO, 1,
50     { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } },
51   },
52   { "prefetch_add_l3_fault", TILEGX_OPC_PREFETCH_ADD_L3_FAULT, 0x2, 2, TREG_ZERO, 1,
53     { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } },
54   },
55   { "prefetch_l1", TILEGX_OPC_PREFETCH_L1, 0x12, 1, TREG_ZERO, 1,
56     { { 0, }, { 9 }, { 0, }, { 0, }, { 14 } },
57   },
58   { "prefetch_l1_fault", TILEGX_OPC_PREFETCH_L1_FAULT, 0x12, 1, TREG_ZERO, 1,
59     { { 0, }, { 9 }, { 0, }, { 0, }, { 14 } },
60   },
61   { "prefetch_l2", TILEGX_OPC_PREFETCH_L2, 0x12, 1, TREG_ZERO, 1,
62     { { 0, }, { 9 }, { 0, }, { 0, }, { 14 } },
63   },
64   { "prefetch_l2_fault", TILEGX_OPC_PREFETCH_L2_FAULT, 0x12, 1, TREG_ZERO, 1,
65     { { 0, }, { 9 }, { 0, }, { 0, }, { 14 } },
66   },
67   { "prefetch_l3", TILEGX_OPC_PREFETCH_L3, 0x12, 1, TREG_ZERO, 1,
68     { { 0, }, { 9 }, { 0, }, { 0, }, { 14 } },
69   },
70   { "prefetch_l3_fault", TILEGX_OPC_PREFETCH_L3_FAULT, 0x12, 1, TREG_ZERO, 1,
71     { { 0, }, { 9 }, { 0, }, { 0, }, { 14 } },
72   },
73   { "raise", TILEGX_OPC_RAISE, 0x2, 0, TREG_ZERO, 1,
74     { { 0, }, {  }, { 0, }, { 0, }, { 0, } },
75   },
76   { "add", TILEGX_OPC_ADD, 0xf, 3, TREG_ZERO, 1,
77     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
78   },
79   { "addi", TILEGX_OPC_ADDI, 0xf, 3, TREG_ZERO, 1,
80     { { 6, 7, 0 }, { 8, 9, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } },
81   },
82   { "addli", TILEGX_OPC_ADDLI, 0x3, 3, TREG_ZERO, 1,
83     { { 6, 7, 4 }, { 8, 9, 5 }, { 0, }, { 0, }, { 0, } },
84   },
85   { "addx", TILEGX_OPC_ADDX, 0xf, 3, TREG_ZERO, 1,
86     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
87   },
88   { "addxi", TILEGX_OPC_ADDXI, 0xf, 3, TREG_ZERO, 1,
89     { { 6, 7, 0 }, { 8, 9, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } },
90   },
91   { "addxli", TILEGX_OPC_ADDXLI, 0x3, 3, TREG_ZERO, 1,
92     { { 6, 7, 4 }, { 8, 9, 5 }, { 0, }, { 0, }, { 0, } },
93   },
94   { "addxsc", TILEGX_OPC_ADDXSC, 0x3, 3, TREG_ZERO, 1,
95     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
96   },
97   { "and", TILEGX_OPC_AND, 0xf, 3, TREG_ZERO, 1,
98     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
99   },
100   { "andi", TILEGX_OPC_ANDI, 0xf, 3, TREG_ZERO, 1,
101     { { 6, 7, 0 }, { 8, 9, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } },
102   },
103   { "beqz", TILEGX_OPC_BEQZ, 0x2, 2, TREG_ZERO, 1,
104     { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } },
105   },
106   { "beqzt", TILEGX_OPC_BEQZT, 0x2, 2, TREG_ZERO, 1,
107     { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } },
108   },
109   { "bfexts", TILEGX_OPC_BFEXTS, 0x1, 4, TREG_ZERO, 1,
110     { { 6, 7, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } },
111   },
112   { "bfextu", TILEGX_OPC_BFEXTU, 0x1, 4, TREG_ZERO, 1,
113     { { 6, 7, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } },
114   },
115   { "bfins", TILEGX_OPC_BFINS, 0x1, 4, TREG_ZERO, 1,
116     { { 23, 7, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } },
117   },
118   { "bgez", TILEGX_OPC_BGEZ, 0x2, 2, TREG_ZERO, 1,
119     { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } },
120   },
121   { "bgezt", TILEGX_OPC_BGEZT, 0x2, 2, TREG_ZERO, 1,
122     { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } },
123   },
124   { "bgtz", TILEGX_OPC_BGTZ, 0x2, 2, TREG_ZERO, 1,
125     { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } },
126   },
127   { "bgtzt", TILEGX_OPC_BGTZT, 0x2, 2, TREG_ZERO, 1,
128     { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } },
129   },
130   { "blbc", TILEGX_OPC_BLBC, 0x2, 2, TREG_ZERO, 1,
131     { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } },
132   },
133   { "blbct", TILEGX_OPC_BLBCT, 0x2, 2, TREG_ZERO, 1,
134     { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } },
135   },
136   { "blbs", TILEGX_OPC_BLBS, 0x2, 2, TREG_ZERO, 1,
137     { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } },
138   },
139   { "blbst", TILEGX_OPC_BLBST, 0x2, 2, TREG_ZERO, 1,
140     { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } },
141   },
142   { "blez", TILEGX_OPC_BLEZ, 0x2, 2, TREG_ZERO, 1,
143     { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } },
144   },
145   { "blezt", TILEGX_OPC_BLEZT, 0x2, 2, TREG_ZERO, 1,
146     { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } },
147   },
148   { "bltz", TILEGX_OPC_BLTZ, 0x2, 2, TREG_ZERO, 1,
149     { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } },
150   },
151   { "bltzt", TILEGX_OPC_BLTZT, 0x2, 2, TREG_ZERO, 1,
152     { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } },
153   },
154   { "bnez", TILEGX_OPC_BNEZ, 0x2, 2, TREG_ZERO, 1,
155     { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } },
156   },
157   { "bnezt", TILEGX_OPC_BNEZT, 0x2, 2, TREG_ZERO, 1,
158     { { 0, }, { 9, 20 }, { 0, }, { 0, }, { 0, } },
159   },
160   { "clz", TILEGX_OPC_CLZ, 0x5, 2, TREG_ZERO, 1,
161     { { 6, 7 }, { 0, }, { 10, 11 }, { 0, }, { 0, } },
162   },
163   { "cmoveqz", TILEGX_OPC_CMOVEQZ, 0x5, 3, TREG_ZERO, 1,
164     { { 23, 7, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } },
165   },
166   { "cmovnez", TILEGX_OPC_CMOVNEZ, 0x5, 3, TREG_ZERO, 1,
167     { { 23, 7, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } },
168   },
169   { "cmpeq", TILEGX_OPC_CMPEQ, 0xf, 3, TREG_ZERO, 1,
170     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
171   },
172   { "cmpeqi", TILEGX_OPC_CMPEQI, 0xf, 3, TREG_ZERO, 1,
173     { { 6, 7, 0 }, { 8, 9, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } },
174   },
175   { "cmpexch", TILEGX_OPC_CMPEXCH, 0x2, 3, TREG_ZERO, 1,
176     { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
177   },
178   { "cmpexch4", TILEGX_OPC_CMPEXCH4, 0x2, 3, TREG_ZERO, 1,
179     { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
180   },
181   { "cmples", TILEGX_OPC_CMPLES, 0xf, 3, TREG_ZERO, 1,
182     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
183   },
184   { "cmpleu", TILEGX_OPC_CMPLEU, 0xf, 3, TREG_ZERO, 1,
185     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
186   },
187   { "cmplts", TILEGX_OPC_CMPLTS, 0xf, 3, TREG_ZERO, 1,
188     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
189   },
190   { "cmpltsi", TILEGX_OPC_CMPLTSI, 0xf, 3, TREG_ZERO, 1,
191     { { 6, 7, 0 }, { 8, 9, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } },
192   },
193   { "cmpltu", TILEGX_OPC_CMPLTU, 0xf, 3, TREG_ZERO, 1,
194     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
195   },
196   { "cmpltui", TILEGX_OPC_CMPLTUI, 0x3, 3, TREG_ZERO, 1,
197     { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } },
198   },
199   { "cmpne", TILEGX_OPC_CMPNE, 0xf, 3, TREG_ZERO, 1,
200     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
201   },
202   { "cmul", TILEGX_OPC_CMUL, 0x1, 3, TREG_ZERO, 1,
203     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
204   },
205   { "cmula", TILEGX_OPC_CMULA, 0x1, 3, TREG_ZERO, 1,
206     { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
207   },
208   { "cmulaf", TILEGX_OPC_CMULAF, 0x1, 3, TREG_ZERO, 1,
209     { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
210   },
211   { "cmulf", TILEGX_OPC_CMULF, 0x1, 3, TREG_ZERO, 1,
212     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
213   },
214   { "cmulfr", TILEGX_OPC_CMULFR, 0x1, 3, TREG_ZERO, 1,
215     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
216   },
217   { "cmulh", TILEGX_OPC_CMULH, 0x1, 3, TREG_ZERO, 1,
218     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
219   },
220   { "cmulhr", TILEGX_OPC_CMULHR, 0x1, 3, TREG_ZERO, 1,
221     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
222   },
223   { "crc32_32", TILEGX_OPC_CRC32_32, 0x1, 3, TREG_ZERO, 1,
224     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
225   },
226   { "crc32_8", TILEGX_OPC_CRC32_8, 0x1, 3, TREG_ZERO, 1,
227     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
228   },
229   { "ctz", TILEGX_OPC_CTZ, 0x5, 2, TREG_ZERO, 1,
230     { { 6, 7 }, { 0, }, { 10, 11 }, { 0, }, { 0, } },
231   },
232   { "dblalign", TILEGX_OPC_DBLALIGN, 0x1, 3, TREG_ZERO, 1,
233     { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
234   },
235   { "dblalign2", TILEGX_OPC_DBLALIGN2, 0x3, 3, TREG_ZERO, 1,
236     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
237   },
238   { "dblalign4", TILEGX_OPC_DBLALIGN4, 0x3, 3, TREG_ZERO, 1,
239     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
240   },
241   { "dblalign6", TILEGX_OPC_DBLALIGN6, 0x3, 3, TREG_ZERO, 1,
242     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
243   },
244   { "drain", TILEGX_OPC_DRAIN, 0x2, 0, TREG_ZERO, 0,
245     { { 0, }, {  }, { 0, }, { 0, }, { 0, } },
246   },
247   { "dtlbpr", TILEGX_OPC_DTLBPR, 0x2, 1, TREG_ZERO, 1,
248     { { 0, }, { 9 }, { 0, }, { 0, }, { 0, } },
249   },
250   { "exch", TILEGX_OPC_EXCH, 0x2, 3, TREG_ZERO, 1,
251     { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
252   },
253   { "exch4", TILEGX_OPC_EXCH4, 0x2, 3, TREG_ZERO, 1,
254     { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
255   },
256   { "fdouble_add_flags", TILEGX_OPC_FDOUBLE_ADD_FLAGS, 0x1, 3, TREG_ZERO, 1,
257     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
258   },
259   { "fdouble_addsub", TILEGX_OPC_FDOUBLE_ADDSUB, 0x1, 3, TREG_ZERO, 1,
260     { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
261   },
262   { "fdouble_mul_flags", TILEGX_OPC_FDOUBLE_MUL_FLAGS, 0x1, 3, TREG_ZERO, 1,
263     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
264   },
265   { "fdouble_pack1", TILEGX_OPC_FDOUBLE_PACK1, 0x1, 3, TREG_ZERO, 1,
266     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
267   },
268   { "fdouble_pack2", TILEGX_OPC_FDOUBLE_PACK2, 0x1, 3, TREG_ZERO, 1,
269     { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
270   },
271   { "fdouble_sub_flags", TILEGX_OPC_FDOUBLE_SUB_FLAGS, 0x1, 3, TREG_ZERO, 1,
272     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
273   },
274   { "fdouble_unpack_max", TILEGX_OPC_FDOUBLE_UNPACK_MAX, 0x1, 3, TREG_ZERO, 1,
275     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
276   },
277   { "fdouble_unpack_min", TILEGX_OPC_FDOUBLE_UNPACK_MIN, 0x1, 3, TREG_ZERO, 1,
278     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
279   },
280   { "fetchadd", TILEGX_OPC_FETCHADD, 0x2, 3, TREG_ZERO, 1,
281     { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
282   },
283   { "fetchadd4", TILEGX_OPC_FETCHADD4, 0x2, 3, TREG_ZERO, 1,
284     { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
285   },
286   { "fetchaddgez", TILEGX_OPC_FETCHADDGEZ, 0x2, 3, TREG_ZERO, 1,
287     { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
288   },
289   { "fetchaddgez4", TILEGX_OPC_FETCHADDGEZ4, 0x2, 3, TREG_ZERO, 1,
290     { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
291   },
292   { "fetchand", TILEGX_OPC_FETCHAND, 0x2, 3, TREG_ZERO, 1,
293     { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
294   },
295   { "fetchand4", TILEGX_OPC_FETCHAND4, 0x2, 3, TREG_ZERO, 1,
296     { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
297   },
298   { "fetchor", TILEGX_OPC_FETCHOR, 0x2, 3, TREG_ZERO, 1,
299     { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
300   },
301   { "fetchor4", TILEGX_OPC_FETCHOR4, 0x2, 3, TREG_ZERO, 1,
302     { { 0, }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
303   },
304   { "finv", TILEGX_OPC_FINV, 0x2, 1, TREG_ZERO, 1,
305     { { 0, }, { 9 }, { 0, }, { 0, }, { 0, } },
306   },
307   { "flush", TILEGX_OPC_FLUSH, 0x2, 1, TREG_ZERO, 1,
308     { { 0, }, { 9 }, { 0, }, { 0, }, { 0, } },
309   },
310   { "flushwb", TILEGX_OPC_FLUSHWB, 0x2, 0, TREG_ZERO, 1,
311     { { 0, }, {  }, { 0, }, { 0, }, { 0, } },
312   },
313   { "fnop", TILEGX_OPC_FNOP, 0xf, 0, TREG_ZERO, 1,
314     { {  }, {  }, {  }, {  }, { 0, } },
315   },
316   { "fsingle_add1", TILEGX_OPC_FSINGLE_ADD1, 0x1, 3, TREG_ZERO, 1,
317     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
318   },
319   { "fsingle_addsub2", TILEGX_OPC_FSINGLE_ADDSUB2, 0x1, 3, TREG_ZERO, 1,
320     { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
321   },
322   { "fsingle_mul1", TILEGX_OPC_FSINGLE_MUL1, 0x1, 3, TREG_ZERO, 1,
323     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
324   },
325   { "fsingle_mul2", TILEGX_OPC_FSINGLE_MUL2, 0x1, 3, TREG_ZERO, 1,
326     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
327   },
328   { "fsingle_pack1", TILEGX_OPC_FSINGLE_PACK1, 0x5, 2, TREG_ZERO, 1,
329     { { 6, 7 }, { 0, }, { 10, 11 }, { 0, }, { 0, } },
330   },
331   { "fsingle_pack2", TILEGX_OPC_FSINGLE_PACK2, 0x1, 3, TREG_ZERO, 1,
332     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
333   },
334   { "fsingle_sub1", TILEGX_OPC_FSINGLE_SUB1, 0x1, 3, TREG_ZERO, 1,
335     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
336   },
337   { "icoh", TILEGX_OPC_ICOH, 0x2, 1, TREG_ZERO, 1,
338     { { 0, }, { 9 }, { 0, }, { 0, }, { 0, } },
339   },
340   { "ill", TILEGX_OPC_ILL, 0xa, 0, TREG_ZERO, 1,
341     { { 0, }, {  }, { 0, }, {  }, { 0, } },
342   },
343   { "inv", TILEGX_OPC_INV, 0x2, 1, TREG_ZERO, 1,
344     { { 0, }, { 9 }, { 0, }, { 0, }, { 0, } },
345   },
346   { "iret", TILEGX_OPC_IRET, 0x2, 0, TREG_ZERO, 1,
347     { { 0, }, {  }, { 0, }, { 0, }, { 0, } },
348   },
349   { "j", TILEGX_OPC_J, 0x2, 1, TREG_ZERO, 1,
350     { { 0, }, { 25 }, { 0, }, { 0, }, { 0, } },
351   },
352   { "jal", TILEGX_OPC_JAL, 0x2, 1, TREG_LR, 1,
353     { { 0, }, { 25 }, { 0, }, { 0, }, { 0, } },
354   },
355   { "jalr", TILEGX_OPC_JALR, 0xa, 1, TREG_LR, 1,
356     { { 0, }, { 9 }, { 0, }, { 13 }, { 0, } },
357   },
358   { "jalrp", TILEGX_OPC_JALRP, 0xa, 1, TREG_LR, 1,
359     { { 0, }, { 9 }, { 0, }, { 13 }, { 0, } },
360   },
361   { "jr", TILEGX_OPC_JR, 0xa, 1, TREG_ZERO, 1,
362     { { 0, }, { 9 }, { 0, }, { 13 }, { 0, } },
363   },
364   { "jrp", TILEGX_OPC_JRP, 0xa, 1, TREG_ZERO, 1,
365     { { 0, }, { 9 }, { 0, }, { 13 }, { 0, } },
366   },
367   { "ld", TILEGX_OPC_LD, 0x12, 2, TREG_ZERO, 1,
368     { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 26, 14 } },
369   },
370   { "ld1s", TILEGX_OPC_LD1S, 0x12, 2, TREG_ZERO, 1,
371     { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 26, 14 } },
372   },
373   { "ld1s_add", TILEGX_OPC_LD1S_ADD, 0x2, 3, TREG_ZERO, 1,
374     { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } },
375   },
376   { "ld1u", TILEGX_OPC_LD1U, 0x12, 2, TREG_ZERO, 1,
377     { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 26, 14 } },
378   },
379   { "ld1u_add", TILEGX_OPC_LD1U_ADD, 0x2, 3, TREG_ZERO, 1,
380     { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } },
381   },
382   { "ld2s", TILEGX_OPC_LD2S, 0x12, 2, TREG_ZERO, 1,
383     { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 26, 14 } },
384   },
385   { "ld2s_add", TILEGX_OPC_LD2S_ADD, 0x2, 3, TREG_ZERO, 1,
386     { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } },
387   },
388   { "ld2u", TILEGX_OPC_LD2U, 0x12, 2, TREG_ZERO, 1,
389     { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 26, 14 } },
390   },
391   { "ld2u_add", TILEGX_OPC_LD2U_ADD, 0x2, 3, TREG_ZERO, 1,
392     { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } },
393   },
394   { "ld4s", TILEGX_OPC_LD4S, 0x12, 2, TREG_ZERO, 1,
395     { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 26, 14 } },
396   },
397   { "ld4s_add", TILEGX_OPC_LD4S_ADD, 0x2, 3, TREG_ZERO, 1,
398     { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } },
399   },
400   { "ld4u", TILEGX_OPC_LD4U, 0x12, 2, TREG_ZERO, 1,
401     { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 26, 14 } },
402   },
403   { "ld4u_add", TILEGX_OPC_LD4U_ADD, 0x2, 3, TREG_ZERO, 1,
404     { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } },
405   },
406   { "ld_add", TILEGX_OPC_LD_ADD, 0x2, 3, TREG_ZERO, 1,
407     { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } },
408   },
409   { "ldna", TILEGX_OPC_LDNA, 0x2, 2, TREG_ZERO, 1,
410     { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 0, } },
411   },
412   { "ldna_add", TILEGX_OPC_LDNA_ADD, 0x2, 3, TREG_ZERO, 1,
413     { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } },
414   },
415   { "ldnt", TILEGX_OPC_LDNT, 0x2, 2, TREG_ZERO, 1,
416     { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 0, } },
417   },
418   { "ldnt1s", TILEGX_OPC_LDNT1S, 0x2, 2, TREG_ZERO, 1,
419     { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 0, } },
420   },
421   { "ldnt1s_add", TILEGX_OPC_LDNT1S_ADD, 0x2, 3, TREG_ZERO, 1,
422     { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } },
423   },
424   { "ldnt1u", TILEGX_OPC_LDNT1U, 0x2, 2, TREG_ZERO, 1,
425     { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 0, } },
426   },
427   { "ldnt1u_add", TILEGX_OPC_LDNT1U_ADD, 0x2, 3, TREG_ZERO, 1,
428     { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } },
429   },
430   { "ldnt2s", TILEGX_OPC_LDNT2S, 0x2, 2, TREG_ZERO, 1,
431     { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 0, } },
432   },
433   { "ldnt2s_add", TILEGX_OPC_LDNT2S_ADD, 0x2, 3, TREG_ZERO, 1,
434     { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } },
435   },
436   { "ldnt2u", TILEGX_OPC_LDNT2U, 0x2, 2, TREG_ZERO, 1,
437     { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 0, } },
438   },
439   { "ldnt2u_add", TILEGX_OPC_LDNT2U_ADD, 0x2, 3, TREG_ZERO, 1,
440     { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } },
441   },
442   { "ldnt4s", TILEGX_OPC_LDNT4S, 0x2, 2, TREG_ZERO, 1,
443     { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 0, } },
444   },
445   { "ldnt4s_add", TILEGX_OPC_LDNT4S_ADD, 0x2, 3, TREG_ZERO, 1,
446     { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } },
447   },
448   { "ldnt4u", TILEGX_OPC_LDNT4U, 0x2, 2, TREG_ZERO, 1,
449     { { 0, }, { 8, 9 }, { 0, }, { 0, }, { 0, } },
450   },
451   { "ldnt4u_add", TILEGX_OPC_LDNT4U_ADD, 0x2, 3, TREG_ZERO, 1,
452     { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } },
453   },
454   { "ldnt_add", TILEGX_OPC_LDNT_ADD, 0x2, 3, TREG_ZERO, 1,
455     { { 0, }, { 8, 15, 1 }, { 0, }, { 0, }, { 0, } },
456   },
457   { "lnk", TILEGX_OPC_LNK, 0xa, 1, TREG_ZERO, 1,
458     { { 0, }, { 8 }, { 0, }, { 12 }, { 0, } },
459   },
460   { "mf", TILEGX_OPC_MF, 0x2, 0, TREG_ZERO, 1,
461     { { 0, }, {  }, { 0, }, { 0, }, { 0, } },
462   },
463   { "mfspr", TILEGX_OPC_MFSPR, 0x2, 2, TREG_ZERO, 1,
464     { { 0, }, { 8, 27 }, { 0, }, { 0, }, { 0, } },
465   },
466   { "mm", TILEGX_OPC_MM, 0x1, 4, TREG_ZERO, 1,
467     { { 23, 7, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } },
468   },
469   { "mnz", TILEGX_OPC_MNZ, 0xf, 3, TREG_ZERO, 1,
470     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
471   },
472   { "mtspr", TILEGX_OPC_MTSPR, 0x2, 2, TREG_ZERO, 1,
473     { { 0, }, { 28, 9 }, { 0, }, { 0, }, { 0, } },
474   },
475   { "mul_hs_hs", TILEGX_OPC_MUL_HS_HS, 0x5, 3, TREG_ZERO, 1,
476     { { 6, 7, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } },
477   },
478   { "mul_hs_hu", TILEGX_OPC_MUL_HS_HU, 0x1, 3, TREG_ZERO, 1,
479     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
480   },
481   { "mul_hs_ls", TILEGX_OPC_MUL_HS_LS, 0x1, 3, TREG_ZERO, 1,
482     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
483   },
484   { "mul_hs_lu", TILEGX_OPC_MUL_HS_LU, 0x1, 3, TREG_ZERO, 1,
485     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
486   },
487   { "mul_hu_hu", TILEGX_OPC_MUL_HU_HU, 0x5, 3, TREG_ZERO, 1,
488     { { 6, 7, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } },
489   },
490   { "mul_hu_ls", TILEGX_OPC_MUL_HU_LS, 0x1, 3, TREG_ZERO, 1,
491     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
492   },
493   { "mul_hu_lu", TILEGX_OPC_MUL_HU_LU, 0x1, 3, TREG_ZERO, 1,
494     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
495   },
496   { "mul_ls_ls", TILEGX_OPC_MUL_LS_LS, 0x5, 3, TREG_ZERO, 1,
497     { { 6, 7, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } },
498   },
499   { "mul_ls_lu", TILEGX_OPC_MUL_LS_LU, 0x1, 3, TREG_ZERO, 1,
500     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
501   },
502   { "mul_lu_lu", TILEGX_OPC_MUL_LU_LU, 0x5, 3, TREG_ZERO, 1,
503     { { 6, 7, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } },
504   },
505   { "mula_hs_hs", TILEGX_OPC_MULA_HS_HS, 0x5, 3, TREG_ZERO, 1,
506     { { 23, 7, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } },
507   },
508   { "mula_hs_hu", TILEGX_OPC_MULA_HS_HU, 0x1, 3, TREG_ZERO, 1,
509     { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
510   },
511   { "mula_hs_ls", TILEGX_OPC_MULA_HS_LS, 0x1, 3, TREG_ZERO, 1,
512     { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
513   },
514   { "mula_hs_lu", TILEGX_OPC_MULA_HS_LU, 0x1, 3, TREG_ZERO, 1,
515     { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
516   },
517   { "mula_hu_hu", TILEGX_OPC_MULA_HU_HU, 0x5, 3, TREG_ZERO, 1,
518     { { 23, 7, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } },
519   },
520   { "mula_hu_ls", TILEGX_OPC_MULA_HU_LS, 0x1, 3, TREG_ZERO, 1,
521     { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
522   },
523   { "mula_hu_lu", TILEGX_OPC_MULA_HU_LU, 0x1, 3, TREG_ZERO, 1,
524     { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
525   },
526   { "mula_ls_ls", TILEGX_OPC_MULA_LS_LS, 0x5, 3, TREG_ZERO, 1,
527     { { 23, 7, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } },
528   },
529   { "mula_ls_lu", TILEGX_OPC_MULA_LS_LU, 0x1, 3, TREG_ZERO, 1,
530     { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
531   },
532   { "mula_lu_lu", TILEGX_OPC_MULA_LU_LU, 0x5, 3, TREG_ZERO, 1,
533     { { 23, 7, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } },
534   },
535   { "mulax", TILEGX_OPC_MULAX, 0x5, 3, TREG_ZERO, 1,
536     { { 23, 7, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } },
537   },
538   { "mulx", TILEGX_OPC_MULX, 0x5, 3, TREG_ZERO, 1,
539     { { 6, 7, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } },
540   },
541   { "mz", TILEGX_OPC_MZ, 0xf, 3, TREG_ZERO, 1,
542     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
543   },
544   { "nap", TILEGX_OPC_NAP, 0x2, 0, TREG_ZERO, 0,
545     { { 0, }, {  }, { 0, }, { 0, }, { 0, } },
546   },
547   { "nop", TILEGX_OPC_NOP, 0xf, 0, TREG_ZERO, 1,
548     { {  }, {  }, {  }, {  }, { 0, } },
549   },
550   { "nor", TILEGX_OPC_NOR, 0xf, 3, TREG_ZERO, 1,
551     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
552   },
553   { "or", TILEGX_OPC_OR, 0xf, 3, TREG_ZERO, 1,
554     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
555   },
556   { "ori", TILEGX_OPC_ORI, 0x3, 3, TREG_ZERO, 1,
557     { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } },
558   },
559   { "pcnt", TILEGX_OPC_PCNT, 0x5, 2, TREG_ZERO, 1,
560     { { 6, 7 }, { 0, }, { 10, 11 }, { 0, }, { 0, } },
561   },
562   { "revbits", TILEGX_OPC_REVBITS, 0x5, 2, TREG_ZERO, 1,
563     { { 6, 7 }, { 0, }, { 10, 11 }, { 0, }, { 0, } },
564   },
565   { "revbytes", TILEGX_OPC_REVBYTES, 0x5, 2, TREG_ZERO, 1,
566     { { 6, 7 }, { 0, }, { 10, 11 }, { 0, }, { 0, } },
567   },
568   { "rotl", TILEGX_OPC_ROTL, 0xf, 3, TREG_ZERO, 1,
569     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
570   },
571   { "rotli", TILEGX_OPC_ROTLI, 0xf, 3, TREG_ZERO, 1,
572     { { 6, 7, 29 }, { 8, 9, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } },
573   },
574   { "shl", TILEGX_OPC_SHL, 0xf, 3, TREG_ZERO, 1,
575     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
576   },
577   { "shl16insli", TILEGX_OPC_SHL16INSLI, 0x3, 3, TREG_ZERO, 1,
578     { { 6, 7, 4 }, { 8, 9, 5 }, { 0, }, { 0, }, { 0, } },
579   },
580   { "shl1add", TILEGX_OPC_SHL1ADD, 0xf, 3, TREG_ZERO, 1,
581     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
582   },
583   { "shl1addx", TILEGX_OPC_SHL1ADDX, 0xf, 3, TREG_ZERO, 1,
584     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
585   },
586   { "shl2add", TILEGX_OPC_SHL2ADD, 0xf, 3, TREG_ZERO, 1,
587     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
588   },
589   { "shl2addx", TILEGX_OPC_SHL2ADDX, 0xf, 3, TREG_ZERO, 1,
590     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
591   },
592   { "shl3add", TILEGX_OPC_SHL3ADD, 0xf, 3, TREG_ZERO, 1,
593     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
594   },
595   { "shl3addx", TILEGX_OPC_SHL3ADDX, 0xf, 3, TREG_ZERO, 1,
596     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
597   },
598   { "shli", TILEGX_OPC_SHLI, 0xf, 3, TREG_ZERO, 1,
599     { { 6, 7, 29 }, { 8, 9, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } },
600   },
601   { "shlx", TILEGX_OPC_SHLX, 0x3, 3, TREG_ZERO, 1,
602     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
603   },
604   { "shlxi", TILEGX_OPC_SHLXI, 0x3, 3, TREG_ZERO, 1,
605     { { 6, 7, 29 }, { 8, 9, 30 }, { 0, }, { 0, }, { 0, } },
606   },
607   { "shrs", TILEGX_OPC_SHRS, 0xf, 3, TREG_ZERO, 1,
608     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
609   },
610   { "shrsi", TILEGX_OPC_SHRSI, 0xf, 3, TREG_ZERO, 1,
611     { { 6, 7, 29 }, { 8, 9, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } },
612   },
613   { "shru", TILEGX_OPC_SHRU, 0xf, 3, TREG_ZERO, 1,
614     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
615   },
616   { "shrui", TILEGX_OPC_SHRUI, 0xf, 3, TREG_ZERO, 1,
617     { { 6, 7, 29 }, { 8, 9, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } },
618   },
619   { "shrux", TILEGX_OPC_SHRUX, 0x3, 3, TREG_ZERO, 1,
620     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
621   },
622   { "shruxi", TILEGX_OPC_SHRUXI, 0x3, 3, TREG_ZERO, 1,
623     { { 6, 7, 29 }, { 8, 9, 30 }, { 0, }, { 0, }, { 0, } },
624   },
625   { "shufflebytes", TILEGX_OPC_SHUFFLEBYTES, 0x1, 3, TREG_ZERO, 1,
626     { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
627   },
628   { "st", TILEGX_OPC_ST, 0x12, 2, TREG_ZERO, 1,
629     { { 0, }, { 9, 17 }, { 0, }, { 0, }, { 14, 33 } },
630   },
631   { "st1", TILEGX_OPC_ST1, 0x12, 2, TREG_ZERO, 1,
632     { { 0, }, { 9, 17 }, { 0, }, { 0, }, { 14, 33 } },
633   },
634   { "st1_add", TILEGX_OPC_ST1_ADD, 0x2, 3, TREG_ZERO, 1,
635     { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
636   },
637   { "st2", TILEGX_OPC_ST2, 0x12, 2, TREG_ZERO, 1,
638     { { 0, }, { 9, 17 }, { 0, }, { 0, }, { 14, 33 } },
639   },
640   { "st2_add", TILEGX_OPC_ST2_ADD, 0x2, 3, TREG_ZERO, 1,
641     { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
642   },
643   { "st4", TILEGX_OPC_ST4, 0x12, 2, TREG_ZERO, 1,
644     { { 0, }, { 9, 17 }, { 0, }, { 0, }, { 14, 33 } },
645   },
646   { "st4_add", TILEGX_OPC_ST4_ADD, 0x2, 3, TREG_ZERO, 1,
647     { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
648   },
649   { "st_add", TILEGX_OPC_ST_ADD, 0x2, 3, TREG_ZERO, 1,
650     { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
651   },
652   { "stnt", TILEGX_OPC_STNT, 0x2, 2, TREG_ZERO, 1,
653     { { 0, }, { 9, 17 }, { 0, }, { 0, }, { 0, } },
654   },
655   { "stnt1", TILEGX_OPC_STNT1, 0x2, 2, TREG_ZERO, 1,
656     { { 0, }, { 9, 17 }, { 0, }, { 0, }, { 0, } },
657   },
658   { "stnt1_add", TILEGX_OPC_STNT1_ADD, 0x2, 3, TREG_ZERO, 1,
659     { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
660   },
661   { "stnt2", TILEGX_OPC_STNT2, 0x2, 2, TREG_ZERO, 1,
662     { { 0, }, { 9, 17 }, { 0, }, { 0, }, { 0, } },
663   },
664   { "stnt2_add", TILEGX_OPC_STNT2_ADD, 0x2, 3, TREG_ZERO, 1,
665     { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
666   },
667   { "stnt4", TILEGX_OPC_STNT4, 0x2, 2, TREG_ZERO, 1,
668     { { 0, }, { 9, 17 }, { 0, }, { 0, }, { 0, } },
669   },
670   { "stnt4_add", TILEGX_OPC_STNT4_ADD, 0x2, 3, TREG_ZERO, 1,
671     { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
672   },
673   { "stnt_add", TILEGX_OPC_STNT_ADD, 0x2, 3, TREG_ZERO, 1,
674     { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
675   },
676   { "sub", TILEGX_OPC_SUB, 0xf, 3, TREG_ZERO, 1,
677     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
678   },
679   { "subx", TILEGX_OPC_SUBX, 0xf, 3, TREG_ZERO, 1,
680     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
681   },
682   { "subxsc", TILEGX_OPC_SUBXSC, 0x3, 3, TREG_ZERO, 1,
683     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
684   },
685   { "swint0", TILEGX_OPC_SWINT0, 0x2, 0, TREG_ZERO, 0,
686     { { 0, }, {  }, { 0, }, { 0, }, { 0, } },
687   },
688   { "swint1", TILEGX_OPC_SWINT1, 0x2, 0, TREG_ZERO, 0,
689     { { 0, }, {  }, { 0, }, { 0, }, { 0, } },
690   },
691   { "swint2", TILEGX_OPC_SWINT2, 0x2, 0, TREG_ZERO, 0,
692     { { 0, }, {  }, { 0, }, { 0, }, { 0, } },
693   },
694   { "swint3", TILEGX_OPC_SWINT3, 0x2, 0, TREG_ZERO, 0,
695     { { 0, }, {  }, { 0, }, { 0, }, { 0, } },
696   },
697   { "tblidxb0", TILEGX_OPC_TBLIDXB0, 0x5, 2, TREG_ZERO, 1,
698     { { 23, 7 }, { 0, }, { 24, 11 }, { 0, }, { 0, } },
699   },
700   { "tblidxb1", TILEGX_OPC_TBLIDXB1, 0x5, 2, TREG_ZERO, 1,
701     { { 23, 7 }, { 0, }, { 24, 11 }, { 0, }, { 0, } },
702   },
703   { "tblidxb2", TILEGX_OPC_TBLIDXB2, 0x5, 2, TREG_ZERO, 1,
704     { { 23, 7 }, { 0, }, { 24, 11 }, { 0, }, { 0, } },
705   },
706   { "tblidxb3", TILEGX_OPC_TBLIDXB3, 0x5, 2, TREG_ZERO, 1,
707     { { 23, 7 }, { 0, }, { 24, 11 }, { 0, }, { 0, } },
708   },
709   { "v1add", TILEGX_OPC_V1ADD, 0x3, 3, TREG_ZERO, 1,
710     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
711   },
712   { "v1addi", TILEGX_OPC_V1ADDI, 0x3, 3, TREG_ZERO, 1,
713     { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } },
714   },
715   { "v1adduc", TILEGX_OPC_V1ADDUC, 0x3, 3, TREG_ZERO, 1,
716     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
717   },
718   { "v1adiffu", TILEGX_OPC_V1ADIFFU, 0x1, 3, TREG_ZERO, 1,
719     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
720   },
721   { "v1avgu", TILEGX_OPC_V1AVGU, 0x1, 3, TREG_ZERO, 1,
722     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
723   },
724   { "v1cmpeq", TILEGX_OPC_V1CMPEQ, 0x3, 3, TREG_ZERO, 1,
725     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
726   },
727   { "v1cmpeqi", TILEGX_OPC_V1CMPEQI, 0x3, 3, TREG_ZERO, 1,
728     { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } },
729   },
730   { "v1cmples", TILEGX_OPC_V1CMPLES, 0x3, 3, TREG_ZERO, 1,
731     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
732   },
733   { "v1cmpleu", TILEGX_OPC_V1CMPLEU, 0x3, 3, TREG_ZERO, 1,
734     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
735   },
736   { "v1cmplts", TILEGX_OPC_V1CMPLTS, 0x3, 3, TREG_ZERO, 1,
737     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
738   },
739   { "v1cmpltsi", TILEGX_OPC_V1CMPLTSI, 0x3, 3, TREG_ZERO, 1,
740     { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } },
741   },
742   { "v1cmpltu", TILEGX_OPC_V1CMPLTU, 0x3, 3, TREG_ZERO, 1,
743     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
744   },
745   { "v1cmpltui", TILEGX_OPC_V1CMPLTUI, 0x3, 3, TREG_ZERO, 1,
746     { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } },
747   },
748   { "v1cmpne", TILEGX_OPC_V1CMPNE, 0x3, 3, TREG_ZERO, 1,
749     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
750   },
751   { "v1ddotpu", TILEGX_OPC_V1DDOTPU, 0x1, 3, TREG_ZERO, 1,
752     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
753   },
754   { "v1ddotpua", TILEGX_OPC_V1DDOTPUA, 0x1, 3, TREG_ZERO, 1,
755     { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
756   },
757   { "v1ddotpus", TILEGX_OPC_V1DDOTPUS, 0x1, 3, TREG_ZERO, 1,
758     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
759   },
760   { "v1ddotpusa", TILEGX_OPC_V1DDOTPUSA, 0x1, 3, TREG_ZERO, 1,
761     { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
762   },
763   { "v1dotp", TILEGX_OPC_V1DOTP, 0x1, 3, TREG_ZERO, 1,
764     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
765   },
766   { "v1dotpa", TILEGX_OPC_V1DOTPA, 0x1, 3, TREG_ZERO, 1,
767     { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
768   },
769   { "v1dotpu", TILEGX_OPC_V1DOTPU, 0x1, 3, TREG_ZERO, 1,
770     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
771   },
772   { "v1dotpua", TILEGX_OPC_V1DOTPUA, 0x1, 3, TREG_ZERO, 1,
773     { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
774   },
775   { "v1dotpus", TILEGX_OPC_V1DOTPUS, 0x1, 3, TREG_ZERO, 1,
776     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
777   },
778   { "v1dotpusa", TILEGX_OPC_V1DOTPUSA, 0x1, 3, TREG_ZERO, 1,
779     { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
780   },
781   { "v1int_h", TILEGX_OPC_V1INT_H, 0x3, 3, TREG_ZERO, 1,
782     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
783   },
784   { "v1int_l", TILEGX_OPC_V1INT_L, 0x3, 3, TREG_ZERO, 1,
785     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
786   },
787   { "v1maxu", TILEGX_OPC_V1MAXU, 0x3, 3, TREG_ZERO, 1,
788     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
789   },
790   { "v1maxui", TILEGX_OPC_V1MAXUI, 0x3, 3, TREG_ZERO, 1,
791     { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } },
792   },
793   { "v1minu", TILEGX_OPC_V1MINU, 0x3, 3, TREG_ZERO, 1,
794     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
795   },
796   { "v1minui", TILEGX_OPC_V1MINUI, 0x3, 3, TREG_ZERO, 1,
797     { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } },
798   },
799   { "v1mnz", TILEGX_OPC_V1MNZ, 0x3, 3, TREG_ZERO, 1,
800     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
801   },
802   { "v1multu", TILEGX_OPC_V1MULTU, 0x1, 3, TREG_ZERO, 1,
803     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
804   },
805   { "v1mulu", TILEGX_OPC_V1MULU, 0x1, 3, TREG_ZERO, 1,
806     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
807   },
808   { "v1mulus", TILEGX_OPC_V1MULUS, 0x1, 3, TREG_ZERO, 1,
809     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
810   },
811   { "v1mz", TILEGX_OPC_V1MZ, 0x3, 3, TREG_ZERO, 1,
812     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
813   },
814   { "v1sadau", TILEGX_OPC_V1SADAU, 0x1, 3, TREG_ZERO, 1,
815     { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
816   },
817   { "v1sadu", TILEGX_OPC_V1SADU, 0x1, 3, TREG_ZERO, 1,
818     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
819   },
820   { "v1shl", TILEGX_OPC_V1SHL, 0x3, 3, TREG_ZERO, 1,
821     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
822   },
823   { "v1shli", TILEGX_OPC_V1SHLI, 0x3, 3, TREG_ZERO, 1,
824     { { 6, 7, 29 }, { 8, 9, 30 }, { 0, }, { 0, }, { 0, } },
825   },
826   { "v1shrs", TILEGX_OPC_V1SHRS, 0x3, 3, TREG_ZERO, 1,
827     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
828   },
829   { "v1shrsi", TILEGX_OPC_V1SHRSI, 0x3, 3, TREG_ZERO, 1,
830     { { 6, 7, 29 }, { 8, 9, 30 }, { 0, }, { 0, }, { 0, } },
831   },
832   { "v1shru", TILEGX_OPC_V1SHRU, 0x3, 3, TREG_ZERO, 1,
833     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
834   },
835   { "v1shrui", TILEGX_OPC_V1SHRUI, 0x3, 3, TREG_ZERO, 1,
836     { { 6, 7, 29 }, { 8, 9, 30 }, { 0, }, { 0, }, { 0, } },
837   },
838   { "v1sub", TILEGX_OPC_V1SUB, 0x3, 3, TREG_ZERO, 1,
839     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
840   },
841   { "v1subuc", TILEGX_OPC_V1SUBUC, 0x3, 3, TREG_ZERO, 1,
842     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
843   },
844   { "v2add", TILEGX_OPC_V2ADD, 0x3, 3, TREG_ZERO, 1,
845     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
846   },
847   { "v2addi", TILEGX_OPC_V2ADDI, 0x3, 3, TREG_ZERO, 1,
848     { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } },
849   },
850   { "v2addsc", TILEGX_OPC_V2ADDSC, 0x3, 3, TREG_ZERO, 1,
851     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
852   },
853   { "v2adiffs", TILEGX_OPC_V2ADIFFS, 0x1, 3, TREG_ZERO, 1,
854     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
855   },
856   { "v2avgs", TILEGX_OPC_V2AVGS, 0x1, 3, TREG_ZERO, 1,
857     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
858   },
859   { "v2cmpeq", TILEGX_OPC_V2CMPEQ, 0x3, 3, TREG_ZERO, 1,
860     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
861   },
862   { "v2cmpeqi", TILEGX_OPC_V2CMPEQI, 0x3, 3, TREG_ZERO, 1,
863     { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } },
864   },
865   { "v2cmples", TILEGX_OPC_V2CMPLES, 0x3, 3, TREG_ZERO, 1,
866     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
867   },
868   { "v2cmpleu", TILEGX_OPC_V2CMPLEU, 0x3, 3, TREG_ZERO, 1,
869     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
870   },
871   { "v2cmplts", TILEGX_OPC_V2CMPLTS, 0x3, 3, TREG_ZERO, 1,
872     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
873   },
874   { "v2cmpltsi", TILEGX_OPC_V2CMPLTSI, 0x3, 3, TREG_ZERO, 1,
875     { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } },
876   },
877   { "v2cmpltu", TILEGX_OPC_V2CMPLTU, 0x3, 3, TREG_ZERO, 1,
878     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
879   },
880   { "v2cmpltui", TILEGX_OPC_V2CMPLTUI, 0x3, 3, TREG_ZERO, 1,
881     { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } },
882   },
883   { "v2cmpne", TILEGX_OPC_V2CMPNE, 0x3, 3, TREG_ZERO, 1,
884     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
885   },
886   { "v2dotp", TILEGX_OPC_V2DOTP, 0x1, 3, TREG_ZERO, 1,
887     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
888   },
889   { "v2dotpa", TILEGX_OPC_V2DOTPA, 0x1, 3, TREG_ZERO, 1,
890     { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
891   },
892   { "v2int_h", TILEGX_OPC_V2INT_H, 0x3, 3, TREG_ZERO, 1,
893     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
894   },
895   { "v2int_l", TILEGX_OPC_V2INT_L, 0x3, 3, TREG_ZERO, 1,
896     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
897   },
898   { "v2maxs", TILEGX_OPC_V2MAXS, 0x3, 3, TREG_ZERO, 1,
899     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
900   },
901   { "v2maxsi", TILEGX_OPC_V2MAXSI, 0x3, 3, TREG_ZERO, 1,
902     { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } },
903   },
904   { "v2mins", TILEGX_OPC_V2MINS, 0x3, 3, TREG_ZERO, 1,
905     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
906   },
907   { "v2minsi", TILEGX_OPC_V2MINSI, 0x3, 3, TREG_ZERO, 1,
908     { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } },
909   },
910   { "v2mnz", TILEGX_OPC_V2MNZ, 0x3, 3, TREG_ZERO, 1,
911     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
912   },
913   { "v2mulfsc", TILEGX_OPC_V2MULFSC, 0x1, 3, TREG_ZERO, 1,
914     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
915   },
916   { "v2muls", TILEGX_OPC_V2MULS, 0x1, 3, TREG_ZERO, 1,
917     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
918   },
919   { "v2mults", TILEGX_OPC_V2MULTS, 0x1, 3, TREG_ZERO, 1,
920     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
921   },
922   { "v2mz", TILEGX_OPC_V2MZ, 0x3, 3, TREG_ZERO, 1,
923     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
924   },
925   { "v2packh", TILEGX_OPC_V2PACKH, 0x3, 3, TREG_ZERO, 1,
926     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
927   },
928   { "v2packl", TILEGX_OPC_V2PACKL, 0x3, 3, TREG_ZERO, 1,
929     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
930   },
931   { "v2packuc", TILEGX_OPC_V2PACKUC, 0x3, 3, TREG_ZERO, 1,
932     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
933   },
934   { "v2sadas", TILEGX_OPC_V2SADAS, 0x1, 3, TREG_ZERO, 1,
935     { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
936   },
937   { "v2sadau", TILEGX_OPC_V2SADAU, 0x1, 3, TREG_ZERO, 1,
938     { { 23, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
939   },
940   { "v2sads", TILEGX_OPC_V2SADS, 0x1, 3, TREG_ZERO, 1,
941     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
942   },
943   { "v2sadu", TILEGX_OPC_V2SADU, 0x1, 3, TREG_ZERO, 1,
944     { { 6, 7, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
945   },
946   { "v2shl", TILEGX_OPC_V2SHL, 0x3, 3, TREG_ZERO, 1,
947     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
948   },
949   { "v2shli", TILEGX_OPC_V2SHLI, 0x3, 3, TREG_ZERO, 1,
950     { { 6, 7, 29 }, { 8, 9, 30 }, { 0, }, { 0, }, { 0, } },
951   },
952   { "v2shlsc", TILEGX_OPC_V2SHLSC, 0x3, 3, TREG_ZERO, 1,
953     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
954   },
955   { "v2shrs", TILEGX_OPC_V2SHRS, 0x3, 3, TREG_ZERO, 1,
956     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
957   },
958   { "v2shrsi", TILEGX_OPC_V2SHRSI, 0x3, 3, TREG_ZERO, 1,
959     { { 6, 7, 29 }, { 8, 9, 30 }, { 0, }, { 0, }, { 0, } },
960   },
961   { "v2shru", TILEGX_OPC_V2SHRU, 0x3, 3, TREG_ZERO, 1,
962     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
963   },
964   { "v2shrui", TILEGX_OPC_V2SHRUI, 0x3, 3, TREG_ZERO, 1,
965     { { 6, 7, 29 }, { 8, 9, 30 }, { 0, }, { 0, }, { 0, } },
966   },
967   { "v2sub", TILEGX_OPC_V2SUB, 0x3, 3, TREG_ZERO, 1,
968     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
969   },
970   { "v2subsc", TILEGX_OPC_V2SUBSC, 0x3, 3, TREG_ZERO, 1,
971     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
972   },
973   { "v4add", TILEGX_OPC_V4ADD, 0x3, 3, TREG_ZERO, 1,
974     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
975   },
976   { "v4addsc", TILEGX_OPC_V4ADDSC, 0x3, 3, TREG_ZERO, 1,
977     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
978   },
979   { "v4int_h", TILEGX_OPC_V4INT_H, 0x3, 3, TREG_ZERO, 1,
980     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
981   },
982   { "v4int_l", TILEGX_OPC_V4INT_L, 0x3, 3, TREG_ZERO, 1,
983     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
984   },
985   { "v4packsc", TILEGX_OPC_V4PACKSC, 0x3, 3, TREG_ZERO, 1,
986     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
987   },
988   { "v4shl", TILEGX_OPC_V4SHL, 0x3, 3, TREG_ZERO, 1,
989     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
990   },
991   { "v4shlsc", TILEGX_OPC_V4SHLSC, 0x3, 3, TREG_ZERO, 1,
992     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
993   },
994   { "v4shrs", TILEGX_OPC_V4SHRS, 0x3, 3, TREG_ZERO, 1,
995     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
996   },
997   { "v4shru", TILEGX_OPC_V4SHRU, 0x3, 3, TREG_ZERO, 1,
998     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
999   },
1000   { "v4sub", TILEGX_OPC_V4SUB, 0x3, 3, TREG_ZERO, 1,
1001     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
1002   },
1003   { "v4subsc", TILEGX_OPC_V4SUBSC, 0x3, 3, TREG_ZERO, 1,
1004     { { 6, 7, 16 }, { 8, 9, 17 }, { 0, }, { 0, }, { 0, } },
1005   },
1006   { "wh64", TILEGX_OPC_WH64, 0x2, 1, TREG_ZERO, 1,
1007     { { 0, }, { 9 }, { 0, }, { 0, }, { 0, } },
1008   },
1009   { "xor", TILEGX_OPC_XOR, 0xf, 3, TREG_ZERO, 1,
1010     { { 6, 7, 16 }, { 8, 9, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
1011   },
1012   { "xori", TILEGX_OPC_XORI, 0x3, 3, TREG_ZERO, 1,
1013     { { 6, 7, 0 }, { 8, 9, 1 }, { 0, }, { 0, }, { 0, } },
1014   },
1015   { NULL, TILEGX_OPC_NONE, 0, 0, TREG_ZERO, 0, { { 0, } },
1016   }
1017 };
1018 #define BITFIELD(start, size) ((start) | (((1 << (size)) - 1) << 6))
1019 #define CHILD(array_index) (TILEGX_OPC_NONE + (array_index))
1020
1021 static const unsigned short decode_X0_fsm[936] =
1022 {
1023   BITFIELD(22, 9) /* index 0 */,
1024   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1025   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1026   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1027   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1028   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1029   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1030   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1031   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1032   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1033   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1034   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1035   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1036   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1037   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1038   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1039   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1040   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
1041   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
1042   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
1043   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
1044   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
1045   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
1046   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
1047   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
1048   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
1049   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
1050   CHILD(513), CHILD(513), CHILD(513), CHILD(513), TILEGX_OPC_ADDXLI,
1051   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1052   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1053   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1054   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1055   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1056   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1057   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1058   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1059   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1060   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1061   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1062   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1063   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1064   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1065   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1066   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_NONE,
1067   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1068   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1069   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1070   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_BFEXTS,
1071   TILEGX_OPC_BFEXTS, TILEGX_OPC_BFEXTS, TILEGX_OPC_BFEXTS, TILEGX_OPC_BFEXTU,
1072   TILEGX_OPC_BFEXTU, TILEGX_OPC_BFEXTU, TILEGX_OPC_BFEXTU, TILEGX_OPC_BFINS,
1073   TILEGX_OPC_BFINS, TILEGX_OPC_BFINS, TILEGX_OPC_BFINS, TILEGX_OPC_MM,
1074   TILEGX_OPC_MM, TILEGX_OPC_MM, TILEGX_OPC_MM, TILEGX_OPC_NONE,
1075   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1076   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1077   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1078   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1079   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1080   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1081   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1082   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, CHILD(528), CHILD(578),
1083   CHILD(583), CHILD(588), CHILD(593), CHILD(598), TILEGX_OPC_NONE,
1084   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1085   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1086   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1087   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1088   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1089   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1090   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1091   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1092   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1093   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1094   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1095   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1096   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1097   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1098   TILEGX_OPC_NONE, CHILD(603), CHILD(620), CHILD(637), CHILD(654), CHILD(671),
1099   CHILD(703), CHILD(797), CHILD(814), CHILD(831), CHILD(848), CHILD(865),
1100   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1101   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1102   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1103   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1104   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1105   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1106   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1107   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1108   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1109   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1110   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1111   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1112   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1113   TILEGX_OPC_NONE, CHILD(889), TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1114   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1115   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1116   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1117   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1118   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1119   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1120   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1121   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1122   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1123   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1124   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1125   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1126   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1127   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1128   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1129   TILEGX_OPC_NONE, CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
1130   CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
1131   CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
1132   CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
1133   CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
1134   CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
1135   CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
1136   CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
1137   CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
1138   CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
1139   CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
1140   BITFIELD(6, 2) /* index 513 */,
1141   TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, CHILD(518),
1142   BITFIELD(8, 2) /* index 518 */,
1143   TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, CHILD(523),
1144   BITFIELD(10, 2) /* index 523 */,
1145   TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_MOVELI,
1146   BITFIELD(20, 2) /* index 528 */,
1147   TILEGX_OPC_NONE, CHILD(533), TILEGX_OPC_ADDXI, CHILD(548),
1148   BITFIELD(6, 2) /* index 533 */,
1149   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(538),
1150   BITFIELD(8, 2) /* index 538 */,
1151   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(543),
1152   BITFIELD(10, 2) /* index 543 */,
1153   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_MOVEI,
1154   BITFIELD(0, 2) /* index 548 */,
1155   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(553),
1156   BITFIELD(2, 2) /* index 553 */,
1157   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(558),
1158   BITFIELD(4, 2) /* index 558 */,
1159   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(563),
1160   BITFIELD(6, 2) /* index 563 */,
1161   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(568),
1162   BITFIELD(8, 2) /* index 568 */,
1163   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(573),
1164   BITFIELD(10, 2) /* index 573 */,
1165   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_INFO,
1166   BITFIELD(20, 2) /* index 578 */,
1167   TILEGX_OPC_CMPEQI, TILEGX_OPC_CMPLTSI, TILEGX_OPC_CMPLTUI, TILEGX_OPC_ORI,
1168   BITFIELD(20, 2) /* index 583 */,
1169   TILEGX_OPC_V1ADDI, TILEGX_OPC_V1CMPEQI, TILEGX_OPC_V1CMPLTSI,
1170   TILEGX_OPC_V1CMPLTUI,
1171   BITFIELD(20, 2) /* index 588 */,
1172   TILEGX_OPC_V1MAXUI, TILEGX_OPC_V1MINUI, TILEGX_OPC_V2ADDI,
1173   TILEGX_OPC_V2CMPEQI,
1174   BITFIELD(20, 2) /* index 593 */,
1175   TILEGX_OPC_V2CMPLTSI, TILEGX_OPC_V2CMPLTUI, TILEGX_OPC_V2MAXSI,
1176   TILEGX_OPC_V2MINSI,
1177   BITFIELD(20, 2) /* index 598 */,
1178   TILEGX_OPC_XORI, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1179   BITFIELD(18, 4) /* index 603 */,
1180   TILEGX_OPC_NONE, TILEGX_OPC_ADDXSC, TILEGX_OPC_ADDX, TILEGX_OPC_ADD,
1181   TILEGX_OPC_AND, TILEGX_OPC_CMOVEQZ, TILEGX_OPC_CMOVNEZ, TILEGX_OPC_CMPEQ,
1182   TILEGX_OPC_CMPLES, TILEGX_OPC_CMPLEU, TILEGX_OPC_CMPLTS, TILEGX_OPC_CMPLTU,
1183   TILEGX_OPC_CMPNE, TILEGX_OPC_CMULAF, TILEGX_OPC_CMULA, TILEGX_OPC_CMULFR,
1184   BITFIELD(18, 4) /* index 620 */,
1185   TILEGX_OPC_CMULF, TILEGX_OPC_CMULHR, TILEGX_OPC_CMULH, TILEGX_OPC_CMUL,
1186   TILEGX_OPC_CRC32_32, TILEGX_OPC_CRC32_8, TILEGX_OPC_DBLALIGN2,
1187   TILEGX_OPC_DBLALIGN4, TILEGX_OPC_DBLALIGN6, TILEGX_OPC_DBLALIGN,
1188   TILEGX_OPC_FDOUBLE_ADDSUB, TILEGX_OPC_FDOUBLE_ADD_FLAGS,
1189   TILEGX_OPC_FDOUBLE_MUL_FLAGS, TILEGX_OPC_FDOUBLE_PACK1,
1190   TILEGX_OPC_FDOUBLE_PACK2, TILEGX_OPC_FDOUBLE_SUB_FLAGS,
1191   BITFIELD(18, 4) /* index 637 */,
1192   TILEGX_OPC_FDOUBLE_UNPACK_MAX, TILEGX_OPC_FDOUBLE_UNPACK_MIN,
1193   TILEGX_OPC_FSINGLE_ADD1, TILEGX_OPC_FSINGLE_ADDSUB2,
1194   TILEGX_OPC_FSINGLE_MUL1, TILEGX_OPC_FSINGLE_MUL2, TILEGX_OPC_FSINGLE_PACK2,
1195   TILEGX_OPC_FSINGLE_SUB1, TILEGX_OPC_MNZ, TILEGX_OPC_MULAX,
1196   TILEGX_OPC_MULA_HS_HS, TILEGX_OPC_MULA_HS_HU, TILEGX_OPC_MULA_HS_LS,
1197   TILEGX_OPC_MULA_HS_LU, TILEGX_OPC_MULA_HU_HU, TILEGX_OPC_MULA_HU_LS,
1198   BITFIELD(18, 4) /* index 654 */,
1199   TILEGX_OPC_MULA_HU_LU, TILEGX_OPC_MULA_LS_LS, TILEGX_OPC_MULA_LS_LU,
1200   TILEGX_OPC_MULA_LU_LU, TILEGX_OPC_MULX, TILEGX_OPC_MUL_HS_HS,
1201   TILEGX_OPC_MUL_HS_HU, TILEGX_OPC_MUL_HS_LS, TILEGX_OPC_MUL_HS_LU,
1202   TILEGX_OPC_MUL_HU_HU, TILEGX_OPC_MUL_HU_LS, TILEGX_OPC_MUL_HU_LU,
1203   TILEGX_OPC_MUL_LS_LS, TILEGX_OPC_MUL_LS_LU, TILEGX_OPC_MUL_LU_LU,
1204   TILEGX_OPC_MZ,
1205   BITFIELD(18, 4) /* index 671 */,
1206   TILEGX_OPC_NOR, CHILD(688), TILEGX_OPC_ROTL, TILEGX_OPC_SHL1ADDX,
1207   TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL2ADDX, TILEGX_OPC_SHL2ADD,
1208   TILEGX_OPC_SHL3ADDX, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHLX, TILEGX_OPC_SHL,
1209   TILEGX_OPC_SHRS, TILEGX_OPC_SHRUX, TILEGX_OPC_SHRU, TILEGX_OPC_SHUFFLEBYTES,
1210   TILEGX_OPC_SUBXSC,
1211   BITFIELD(12, 2) /* index 688 */,
1212   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(693),
1213   BITFIELD(14, 2) /* index 693 */,
1214   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(698),
1215   BITFIELD(16, 2) /* index 698 */,
1216   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_MOVE,
1217   BITFIELD(18, 4) /* index 703 */,
1218   TILEGX_OPC_SUBX, TILEGX_OPC_SUB, CHILD(720), TILEGX_OPC_V1ADDUC,
1219   TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADIFFU, TILEGX_OPC_V1AVGU,
1220   TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLEU,
1221   TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPNE,
1222   TILEGX_OPC_V1DDOTPUSA, TILEGX_OPC_V1DDOTPUS, TILEGX_OPC_V1DOTPA,
1223   BITFIELD(12, 4) /* index 720 */,
1224   TILEGX_OPC_NONE, CHILD(737), CHILD(742), CHILD(747), CHILD(752), CHILD(757),
1225   CHILD(762), CHILD(767), CHILD(772), CHILD(777), CHILD(782), CHILD(787),
1226   CHILD(792), TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1227   BITFIELD(16, 2) /* index 737 */,
1228   TILEGX_OPC_CLZ, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1229   BITFIELD(16, 2) /* index 742 */,
1230   TILEGX_OPC_CTZ, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1231   BITFIELD(16, 2) /* index 747 */,
1232   TILEGX_OPC_FNOP, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1233   BITFIELD(16, 2) /* index 752 */,
1234   TILEGX_OPC_FSINGLE_PACK1, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1235   BITFIELD(16, 2) /* index 757 */,
1236   TILEGX_OPC_NOP, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1237   BITFIELD(16, 2) /* index 762 */,
1238   TILEGX_OPC_PCNT, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1239   BITFIELD(16, 2) /* index 767 */,
1240   TILEGX_OPC_REVBITS, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1241   BITFIELD(16, 2) /* index 772 */,
1242   TILEGX_OPC_REVBYTES, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1243   BITFIELD(16, 2) /* index 777 */,
1244   TILEGX_OPC_TBLIDXB0, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1245   BITFIELD(16, 2) /* index 782 */,
1246   TILEGX_OPC_TBLIDXB1, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1247   BITFIELD(16, 2) /* index 787 */,
1248   TILEGX_OPC_TBLIDXB2, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1249   BITFIELD(16, 2) /* index 792 */,
1250   TILEGX_OPC_TBLIDXB3, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1251   BITFIELD(18, 4) /* index 797 */,
1252   TILEGX_OPC_V1DOTPUSA, TILEGX_OPC_V1DOTPUS, TILEGX_OPC_V1DOTP,
1253   TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_L, TILEGX_OPC_V1MAXU,
1254   TILEGX_OPC_V1MINU, TILEGX_OPC_V1MNZ, TILEGX_OPC_V1MULTU, TILEGX_OPC_V1MULUS,
1255   TILEGX_OPC_V1MULU, TILEGX_OPC_V1MZ, TILEGX_OPC_V1SADAU, TILEGX_OPC_V1SADU,
1256   TILEGX_OPC_V1SHL, TILEGX_OPC_V1SHRS,
1257   BITFIELD(18, 4) /* index 814 */,
1258   TILEGX_OPC_V1SHRU, TILEGX_OPC_V1SUBUC, TILEGX_OPC_V1SUB, TILEGX_OPC_V2ADDSC,
1259   TILEGX_OPC_V2ADD, TILEGX_OPC_V2ADIFFS, TILEGX_OPC_V2AVGS,
1260   TILEGX_OPC_V2CMPEQ, TILEGX_OPC_V2CMPLES, TILEGX_OPC_V2CMPLEU,
1261   TILEGX_OPC_V2CMPLTS, TILEGX_OPC_V2CMPLTU, TILEGX_OPC_V2CMPNE,
1262   TILEGX_OPC_V2DOTPA, TILEGX_OPC_V2DOTP, TILEGX_OPC_V2INT_H,
1263   BITFIELD(18, 4) /* index 831 */,
1264   TILEGX_OPC_V2INT_L, TILEGX_OPC_V2MAXS, TILEGX_OPC_V2MINS, TILEGX_OPC_V2MNZ,
1265   TILEGX_OPC_V2MULFSC, TILEGX_OPC_V2MULS, TILEGX_OPC_V2MULTS, TILEGX_OPC_V2MZ,
1266   TILEGX_OPC_V2PACKH, TILEGX_OPC_V2PACKL, TILEGX_OPC_V2PACKUC,
1267   TILEGX_OPC_V2SADAS, TILEGX_OPC_V2SADAU, TILEGX_OPC_V2SADS,
1268   TILEGX_OPC_V2SADU, TILEGX_OPC_V2SHLSC,
1269   BITFIELD(18, 4) /* index 848 */,
1270   TILEGX_OPC_V2SHL, TILEGX_OPC_V2SHRS, TILEGX_OPC_V2SHRU, TILEGX_OPC_V2SUBSC,
1271   TILEGX_OPC_V2SUB, TILEGX_OPC_V4ADDSC, TILEGX_OPC_V4ADD, TILEGX_OPC_V4INT_H,
1272   TILEGX_OPC_V4INT_L, TILEGX_OPC_V4PACKSC, TILEGX_OPC_V4SHLSC,
1273   TILEGX_OPC_V4SHL, TILEGX_OPC_V4SHRS, TILEGX_OPC_V4SHRU, TILEGX_OPC_V4SUBSC,
1274   TILEGX_OPC_V4SUB,
1275   BITFIELD(18, 3) /* index 865 */,
1276   CHILD(874), CHILD(877), CHILD(880), CHILD(883), CHILD(886), TILEGX_OPC_NONE,
1277   TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1278   BITFIELD(21, 1) /* index 874 */,
1279   TILEGX_OPC_XOR, TILEGX_OPC_NONE,
1280   BITFIELD(21, 1) /* index 877 */,
1281   TILEGX_OPC_V1DDOTPUA, TILEGX_OPC_NONE,
1282   BITFIELD(21, 1) /* index 880 */,
1283   TILEGX_OPC_V1DDOTPU, TILEGX_OPC_NONE,
1284   BITFIELD(21, 1) /* index 883 */,
1285   TILEGX_OPC_V1DOTPUA, TILEGX_OPC_NONE,
1286   BITFIELD(21, 1) /* index 886 */,
1287   TILEGX_OPC_V1DOTPU, TILEGX_OPC_NONE,
1288   BITFIELD(18, 4) /* index 889 */,
1289   TILEGX_OPC_NONE, TILEGX_OPC_ROTLI, TILEGX_OPC_SHLI, TILEGX_OPC_SHLXI,
1290   TILEGX_OPC_SHRSI, TILEGX_OPC_SHRUI, TILEGX_OPC_SHRUXI, TILEGX_OPC_V1SHLI,
1291   TILEGX_OPC_V1SHRSI, TILEGX_OPC_V1SHRUI, TILEGX_OPC_V2SHLI,
1292   TILEGX_OPC_V2SHRSI, TILEGX_OPC_V2SHRUI, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1293   TILEGX_OPC_NONE,
1294   BITFIELD(0, 2) /* index 906 */,
1295   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
1296   CHILD(911),
1297   BITFIELD(2, 2) /* index 911 */,
1298   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
1299   CHILD(916),
1300   BITFIELD(4, 2) /* index 916 */,
1301   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
1302   CHILD(921),
1303   BITFIELD(6, 2) /* index 921 */,
1304   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
1305   CHILD(926),
1306   BITFIELD(8, 2) /* index 926 */,
1307   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
1308   CHILD(931),
1309   BITFIELD(10, 2) /* index 931 */,
1310   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
1311   TILEGX_OPC_INFOL,
1312 };
1313
1314 static const unsigned short decode_X1_fsm[1206] =
1315 {
1316   BITFIELD(53, 9) /* index 0 */,
1317   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
1318   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
1319   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
1320   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
1321   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
1322   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
1323   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
1324   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
1325   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
1326   CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
1327   CHILD(513), CHILD(513), CHILD(513), CHILD(513), TILEGX_OPC_ADDXLI,
1328   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1329   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1330   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1331   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1332   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1333   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1334   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1335   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1336   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1337   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1338   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1339   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1340   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1341   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1342   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
1343   TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_NONE,
1344   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1345   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1346   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1347   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1348   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1349   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1350   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1351   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_BEQZT,
1352   TILEGX_OPC_BEQZT, TILEGX_OPC_BEQZ, TILEGX_OPC_BEQZ, TILEGX_OPC_BGEZT,
1353   TILEGX_OPC_BGEZT, TILEGX_OPC_BGEZ, TILEGX_OPC_BGEZ, TILEGX_OPC_BGTZT,
1354   TILEGX_OPC_BGTZT, TILEGX_OPC_BGTZ, TILEGX_OPC_BGTZ, TILEGX_OPC_BLBCT,
1355   TILEGX_OPC_BLBCT, TILEGX_OPC_BLBC, TILEGX_OPC_BLBC, TILEGX_OPC_BLBST,
1356   TILEGX_OPC_BLBST, TILEGX_OPC_BLBS, TILEGX_OPC_BLBS, TILEGX_OPC_BLEZT,
1357   TILEGX_OPC_BLEZT, TILEGX_OPC_BLEZ, TILEGX_OPC_BLEZ, TILEGX_OPC_BLTZT,
1358   TILEGX_OPC_BLTZT, TILEGX_OPC_BLTZ, TILEGX_OPC_BLTZ, TILEGX_OPC_BNEZT,
1359   TILEGX_OPC_BNEZT, TILEGX_OPC_BNEZ, TILEGX_OPC_BNEZ, CHILD(528), CHILD(578),
1360   CHILD(598), CHILD(663), CHILD(683), CHILD(688), CHILD(693), CHILD(698),
1361   CHILD(703), CHILD(708), CHILD(713), CHILD(718), TILEGX_OPC_NONE,
1362   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1363   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1364   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1365   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1366   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1367   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1368   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1369   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1370   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1371   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1372   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1373   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1374   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_JAL,
1375   TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL,
1376   TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL,
1377   TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL,
1378   TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL,
1379   TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL,
1380   TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL,
1381   TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL,
1382   TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_J, TILEGX_OPC_J,
1383   TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J,
1384   TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J,
1385   TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J,
1386   TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J,
1387   TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J,
1388   TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J,
1389   CHILD(723), CHILD(740), CHILD(772), CHILD(789), CHILD(1108), CHILD(1125),
1390   CHILD(1142), TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1391   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1392   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1393   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1394   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1395   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1396   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1397   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1398   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1399   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1400   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1401   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1402   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1403   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1404   TILEGX_OPC_NONE, TILEGX_OPC_NONE, CHILD(1159), TILEGX_OPC_NONE,
1405   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1406   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1407   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1408   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1409   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1410   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1411   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1412   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1413   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1414   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1415   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1416   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1417   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1418   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1419   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1420   TILEGX_OPC_NONE, TILEGX_OPC_NONE, CHILD(1176), CHILD(1176), CHILD(1176),
1421   CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176),
1422   CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176),
1423   CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176),
1424   CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176),
1425   CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176),
1426   CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176),
1427   CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176),
1428   CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176),
1429   CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176),
1430   CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176),
1431   CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176),
1432   CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176), CHILD(1176),
1433   CHILD(1176),
1434   BITFIELD(37, 2) /* index 513 */,
1435   TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, CHILD(518),
1436   BITFIELD(39, 2) /* index 518 */,
1437   TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, CHILD(523),
1438   BITFIELD(41, 2) /* index 523 */,
1439   TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_MOVELI,
1440   BITFIELD(51, 2) /* index 528 */,
1441   TILEGX_OPC_NONE, CHILD(533), TILEGX_OPC_ADDXI, CHILD(548),
1442   BITFIELD(37, 2) /* index 533 */,
1443   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(538),
1444   BITFIELD(39, 2) /* index 538 */,
1445   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(543),
1446   BITFIELD(41, 2) /* index 543 */,
1447   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_MOVEI,
1448   BITFIELD(31, 2) /* index 548 */,
1449   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(553),
1450   BITFIELD(33, 2) /* index 553 */,
1451   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(558),
1452   BITFIELD(35, 2) /* index 558 */,
1453   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(563),
1454   BITFIELD(37, 2) /* index 563 */,
1455   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(568),
1456   BITFIELD(39, 2) /* index 568 */,
1457   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(573),
1458   BITFIELD(41, 2) /* index 573 */,
1459   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_INFO,
1460   BITFIELD(51, 2) /* index 578 */,
1461   TILEGX_OPC_CMPEQI, TILEGX_OPC_CMPLTSI, TILEGX_OPC_CMPLTUI, CHILD(583),
1462   BITFIELD(31, 2) /* index 583 */,
1463   TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD, CHILD(588),
1464   BITFIELD(33, 2) /* index 588 */,
1465   TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD, CHILD(593),
1466   BITFIELD(35, 2) /* index 593 */,
1467   TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD,
1468   TILEGX_OPC_PREFETCH_ADD_L1_FAULT,
1469   BITFIELD(51, 2) /* index 598 */,
1470   CHILD(603), CHILD(618), CHILD(633), CHILD(648),
1471   BITFIELD(31, 2) /* index 603 */,
1472   TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD, CHILD(608),
1473   BITFIELD(33, 2) /* index 608 */,
1474   TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD, CHILD(613),
1475   BITFIELD(35, 2) /* index 613 */,
1476   TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD,
1477   TILEGX_OPC_PREFETCH_ADD_L1,
1478   BITFIELD(31, 2) /* index 618 */,
1479   TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD, CHILD(623),
1480   BITFIELD(33, 2) /* index 623 */,
1481   TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD, CHILD(628),
1482   BITFIELD(35, 2) /* index 628 */,
1483   TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD,
1484   TILEGX_OPC_PREFETCH_ADD_L2_FAULT,
1485   BITFIELD(31, 2) /* index 633 */,
1486   TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, CHILD(638),
1487   BITFIELD(33, 2) /* index 638 */,
1488   TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, CHILD(643),
1489   BITFIELD(35, 2) /* index 643 */,
1490   TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD,
1491   TILEGX_OPC_PREFETCH_ADD_L2,
1492   BITFIELD(31, 2) /* index 648 */,
1493   TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, CHILD(653),
1494   BITFIELD(33, 2) /* index 653 */,
1495   TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, CHILD(658),
1496   BITFIELD(35, 2) /* index 658 */,
1497   TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD,
1498   TILEGX_OPC_PREFETCH_ADD_L3_FAULT,
1499   BITFIELD(51, 2) /* index 663 */,
1500   CHILD(668), TILEGX_OPC_LDNT1S_ADD, TILEGX_OPC_LDNT1U_ADD,
1501   TILEGX_OPC_LDNT2S_ADD,
1502   BITFIELD(31, 2) /* index 668 */,
1503   TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, CHILD(673),
1504   BITFIELD(33, 2) /* index 673 */,
1505   TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, CHILD(678),
1506   BITFIELD(35, 2) /* index 678 */,
1507   TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD,
1508   TILEGX_OPC_PREFETCH_ADD_L3,
1509   BITFIELD(51, 2) /* index 683 */,
1510   TILEGX_OPC_LDNT2U_ADD, TILEGX_OPC_LDNT4S_ADD, TILEGX_OPC_LDNT4U_ADD,
1511   TILEGX_OPC_LDNT_ADD,
1512   BITFIELD(51, 2) /* index 688 */,
1513   TILEGX_OPC_LD_ADD, TILEGX_OPC_LDNA_ADD, TILEGX_OPC_MFSPR, TILEGX_OPC_MTSPR,
1514   BITFIELD(51, 2) /* index 693 */,
1515   TILEGX_OPC_ORI, TILEGX_OPC_ST1_ADD, TILEGX_OPC_ST2_ADD, TILEGX_OPC_ST4_ADD,
1516   BITFIELD(51, 2) /* index 698 */,
1517   TILEGX_OPC_STNT1_ADD, TILEGX_OPC_STNT2_ADD, TILEGX_OPC_STNT4_ADD,
1518   TILEGX_OPC_STNT_ADD,
1519   BITFIELD(51, 2) /* index 703 */,
1520   TILEGX_OPC_ST_ADD, TILEGX_OPC_V1ADDI, TILEGX_OPC_V1CMPEQI,
1521   TILEGX_OPC_V1CMPLTSI,
1522   BITFIELD(51, 2) /* index 708 */,
1523   TILEGX_OPC_V1CMPLTUI, TILEGX_OPC_V1MAXUI, TILEGX_OPC_V1MINUI,
1524   TILEGX_OPC_V2ADDI,
1525   BITFIELD(51, 2) /* index 713 */,
1526   TILEGX_OPC_V2CMPEQI, TILEGX_OPC_V2CMPLTSI, TILEGX_OPC_V2CMPLTUI,
1527   TILEGX_OPC_V2MAXSI,
1528   BITFIELD(51, 2) /* index 718 */,
1529   TILEGX_OPC_V2MINSI, TILEGX_OPC_XORI, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1530   BITFIELD(49, 4) /* index 723 */,
1531   TILEGX_OPC_NONE, TILEGX_OPC_ADDXSC, TILEGX_OPC_ADDX, TILEGX_OPC_ADD,
1532   TILEGX_OPC_AND, TILEGX_OPC_CMPEQ, TILEGX_OPC_CMPEXCH4, TILEGX_OPC_CMPEXCH,
1533   TILEGX_OPC_CMPLES, TILEGX_OPC_CMPLEU, TILEGX_OPC_CMPLTS, TILEGX_OPC_CMPLTU,
1534   TILEGX_OPC_CMPNE, TILEGX_OPC_DBLALIGN2, TILEGX_OPC_DBLALIGN4,
1535   TILEGX_OPC_DBLALIGN6,
1536   BITFIELD(49, 4) /* index 740 */,
1537   TILEGX_OPC_EXCH4, TILEGX_OPC_EXCH, TILEGX_OPC_FETCHADD4,
1538   TILEGX_OPC_FETCHADDGEZ4, TILEGX_OPC_FETCHADDGEZ, TILEGX_OPC_FETCHADD,
1539   TILEGX_OPC_FETCHAND4, TILEGX_OPC_FETCHAND, TILEGX_OPC_FETCHOR4,
1540   TILEGX_OPC_FETCHOR, TILEGX_OPC_MNZ, TILEGX_OPC_MZ, TILEGX_OPC_NOR,
1541   CHILD(757), TILEGX_OPC_ROTL, TILEGX_OPC_SHL1ADDX,
1542   BITFIELD(43, 2) /* index 757 */,
1543   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(762),
1544   BITFIELD(45, 2) /* index 762 */,
1545   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(767),
1546   BITFIELD(47, 2) /* index 767 */,
1547   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_MOVE,
1548   BITFIELD(49, 4) /* index 772 */,
1549   TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL2ADDX, TILEGX_OPC_SHL2ADD,
1550   TILEGX_OPC_SHL3ADDX, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHLX, TILEGX_OPC_SHL,
1551   TILEGX_OPC_SHRS, TILEGX_OPC_SHRUX, TILEGX_OPC_SHRU, TILEGX_OPC_ST1,
1552   TILEGX_OPC_ST2, TILEGX_OPC_ST4, TILEGX_OPC_STNT1, TILEGX_OPC_STNT2,
1553   TILEGX_OPC_STNT4,
1554   BITFIELD(46, 7) /* index 789 */,
1555   TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_STNT,
1556   TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_STNT,
1557   TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_ST,
1558   TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_SUBXSC,
1559   TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBXSC,
1560   TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBX,
1561   TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, TILEGX_OPC_SUBX,
1562   TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, TILEGX_OPC_SUB,
1563   TILEGX_OPC_SUB, TILEGX_OPC_SUB, TILEGX_OPC_SUB, TILEGX_OPC_SUB,
1564   TILEGX_OPC_SUB, TILEGX_OPC_SUB, TILEGX_OPC_SUB, CHILD(918), CHILD(927),
1565   CHILD(1006), CHILD(1090), CHILD(1099), TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1566   TILEGX_OPC_NONE, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC,
1567   TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC,
1568   TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADD,
1569   TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADD,
1570   TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADD, TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPEQ,
1571   TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPEQ,
1572   TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPEQ,
1573   TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLES,
1574   TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLES,
1575   TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLEU,
1576   TILEGX_OPC_V1CMPLEU, TILEGX_OPC_V1CMPLEU, TILEGX_OPC_V1CMPLEU,
1577   TILEGX_OPC_V1CMPLEU, TILEGX_OPC_V1CMPLEU, TILEGX_OPC_V1CMPLEU,
1578   TILEGX_OPC_V1CMPLEU, TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTS,
1579   TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTS,
1580   TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTS,
1581   TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPLTU,
1582   TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPLTU,
1583   TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPNE,
1584   TILEGX_OPC_V1CMPNE, TILEGX_OPC_V1CMPNE, TILEGX_OPC_V1CMPNE,
1585   TILEGX_OPC_V1CMPNE, TILEGX_OPC_V1CMPNE, TILEGX_OPC_V1CMPNE,
1586   TILEGX_OPC_V1CMPNE, TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_H,
1587   TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_H,
1588   TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_H,
1589   TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L,
1590   TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L,
1591   TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L,
1592   BITFIELD(43, 3) /* index 918 */,
1593   TILEGX_OPC_NONE, TILEGX_OPC_DRAIN, TILEGX_OPC_DTLBPR, TILEGX_OPC_FINV,
1594   TILEGX_OPC_FLUSHWB, TILEGX_OPC_FLUSH, TILEGX_OPC_FNOP, TILEGX_OPC_ICOH,
1595   BITFIELD(43, 3) /* index 927 */,
1596   CHILD(936), TILEGX_OPC_INV, TILEGX_OPC_IRET, TILEGX_OPC_JALRP,
1597   TILEGX_OPC_JALR, TILEGX_OPC_JRP, TILEGX_OPC_JR, CHILD(991),
1598   BITFIELD(31, 2) /* index 936 */,
1599   CHILD(941), CHILD(966), TILEGX_OPC_ILL, TILEGX_OPC_ILL,
1600   BITFIELD(33, 2) /* index 941 */,
1601   TILEGX_OPC_ILL, TILEGX_OPC_ILL, TILEGX_OPC_ILL, CHILD(946),
1602   BITFIELD(35, 2) /* index 946 */,
1603   TILEGX_OPC_ILL, CHILD(951), TILEGX_OPC_ILL, TILEGX_OPC_ILL,
1604   BITFIELD(37, 2) /* index 951 */,
1605   TILEGX_OPC_ILL, CHILD(956), TILEGX_OPC_ILL, TILEGX_OPC_ILL,
1606   BITFIELD(39, 2) /* index 956 */,
1607   TILEGX_OPC_ILL, CHILD(961), TILEGX_OPC_ILL, TILEGX_OPC_ILL,
1608   BITFIELD(41, 2) /* index 961 */,
1609   TILEGX_OPC_ILL, TILEGX_OPC_ILL, TILEGX_OPC_BPT, TILEGX_OPC_ILL,
1610   BITFIELD(33, 2) /* index 966 */,
1611   TILEGX_OPC_ILL, TILEGX_OPC_ILL, TILEGX_OPC_ILL, CHILD(971),
1612   BITFIELD(35, 2) /* index 971 */,
1613   TILEGX_OPC_ILL, CHILD(976), TILEGX_OPC_ILL, TILEGX_OPC_ILL,
1614   BITFIELD(37, 2) /* index 976 */,
1615   TILEGX_OPC_ILL, CHILD(981), TILEGX_OPC_ILL, TILEGX_OPC_ILL,
1616   BITFIELD(39, 2) /* index 981 */,
1617   TILEGX_OPC_ILL, CHILD(986), TILEGX_OPC_ILL, TILEGX_OPC_ILL,
1618   BITFIELD(41, 2) /* index 986 */,
1619   TILEGX_OPC_ILL, TILEGX_OPC_ILL, TILEGX_OPC_RAISE, TILEGX_OPC_ILL,
1620   BITFIELD(31, 2) /* index 991 */,
1621   TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, CHILD(996),
1622   BITFIELD(33, 2) /* index 996 */,
1623   TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, CHILD(1001),
1624   BITFIELD(35, 2) /* index 1001 */,
1625   TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S,
1626   TILEGX_OPC_PREFETCH_L1_FAULT,
1627   BITFIELD(43, 3) /* index 1006 */,
1628   CHILD(1015), CHILD(1030), CHILD(1045), CHILD(1060), CHILD(1075),
1629   TILEGX_OPC_LDNA, TILEGX_OPC_LDNT1S, TILEGX_OPC_LDNT1U,
1630   BITFIELD(31, 2) /* index 1015 */,
1631   TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, CHILD(1020),
1632   BITFIELD(33, 2) /* index 1020 */,
1633   TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, CHILD(1025),
1634   BITFIELD(35, 2) /* index 1025 */,
1635   TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_PREFETCH,
1636   BITFIELD(31, 2) /* index 1030 */,
1637   TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, CHILD(1035),
1638   BITFIELD(33, 2) /* index 1035 */,
1639   TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, CHILD(1040),
1640   BITFIELD(35, 2) /* index 1040 */,
1641   TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S,
1642   TILEGX_OPC_PREFETCH_L2_FAULT,
1643   BITFIELD(31, 2) /* index 1045 */,
1644   TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, CHILD(1050),
1645   BITFIELD(33, 2) /* index 1050 */,
1646   TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, CHILD(1055),
1647   BITFIELD(35, 2) /* index 1055 */,
1648   TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_PREFETCH_L2,
1649   BITFIELD(31, 2) /* index 1060 */,
1650   TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, CHILD(1065),
1651   BITFIELD(33, 2) /* index 1065 */,
1652   TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, CHILD(1070),
1653   BITFIELD(35, 2) /* index 1070 */,
1654   TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S,
1655   TILEGX_OPC_PREFETCH_L3_FAULT,
1656   BITFIELD(31, 2) /* index 1075 */,
1657   TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, CHILD(1080),
1658   BITFIELD(33, 2) /* index 1080 */,
1659   TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, CHILD(1085),
1660   BITFIELD(35, 2) /* index 1085 */,
1661   TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_PREFETCH_L3,
1662   BITFIELD(43, 3) /* index 1090 */,
1663   TILEGX_OPC_LDNT2S, TILEGX_OPC_LDNT2U, TILEGX_OPC_LDNT4S, TILEGX_OPC_LDNT4U,
1664   TILEGX_OPC_LDNT, TILEGX_OPC_LD, TILEGX_OPC_LNK, TILEGX_OPC_MF,
1665   BITFIELD(43, 3) /* index 1099 */,
1666   TILEGX_OPC_NAP, TILEGX_OPC_NOP, TILEGX_OPC_SWINT0, TILEGX_OPC_SWINT1,
1667   TILEGX_OPC_SWINT2, TILEGX_OPC_SWINT3, TILEGX_OPC_WH64, TILEGX_OPC_NONE,
1668   BITFIELD(49, 4) /* index 1108 */,
1669   TILEGX_OPC_V1MAXU, TILEGX_OPC_V1MINU, TILEGX_OPC_V1MNZ, TILEGX_OPC_V1MZ,
1670   TILEGX_OPC_V1SHL, TILEGX_OPC_V1SHRS, TILEGX_OPC_V1SHRU, TILEGX_OPC_V1SUBUC,
1671   TILEGX_OPC_V1SUB, TILEGX_OPC_V2ADDSC, TILEGX_OPC_V2ADD, TILEGX_OPC_V2CMPEQ,
1672   TILEGX_OPC_V2CMPLES, TILEGX_OPC_V2CMPLEU, TILEGX_OPC_V2CMPLTS,
1673   TILEGX_OPC_V2CMPLTU,
1674   BITFIELD(49, 4) /* index 1125 */,
1675   TILEGX_OPC_V2CMPNE, TILEGX_OPC_V2INT_H, TILEGX_OPC_V2INT_L,
1676   TILEGX_OPC_V2MAXS, TILEGX_OPC_V2MINS, TILEGX_OPC_V2MNZ, TILEGX_OPC_V2MZ,
1677   TILEGX_OPC_V2PACKH, TILEGX_OPC_V2PACKL, TILEGX_OPC_V2PACKUC,
1678   TILEGX_OPC_V2SHLSC, TILEGX_OPC_V2SHL, TILEGX_OPC_V2SHRS, TILEGX_OPC_V2SHRU,
1679   TILEGX_OPC_V2SUBSC, TILEGX_OPC_V2SUB,
1680   BITFIELD(49, 4) /* index 1142 */,
1681   TILEGX_OPC_V4ADDSC, TILEGX_OPC_V4ADD, TILEGX_OPC_V4INT_H,
1682   TILEGX_OPC_V4INT_L, TILEGX_OPC_V4PACKSC, TILEGX_OPC_V4SHLSC,
1683   TILEGX_OPC_V4SHL, TILEGX_OPC_V4SHRS, TILEGX_OPC_V4SHRU, TILEGX_OPC_V4SUBSC,
1684   TILEGX_OPC_V4SUB, TILEGX_OPC_XOR, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1685   TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1686   BITFIELD(49, 4) /* index 1159 */,
1687   TILEGX_OPC_NONE, TILEGX_OPC_ROTLI, TILEGX_OPC_SHLI, TILEGX_OPC_SHLXI,
1688   TILEGX_OPC_SHRSI, TILEGX_OPC_SHRUI, TILEGX_OPC_SHRUXI, TILEGX_OPC_V1SHLI,
1689   TILEGX_OPC_V1SHRSI, TILEGX_OPC_V1SHRUI, TILEGX_OPC_V2SHLI,
1690   TILEGX_OPC_V2SHRSI, TILEGX_OPC_V2SHRUI, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1691   TILEGX_OPC_NONE,
1692   BITFIELD(31, 2) /* index 1176 */,
1693   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
1694   CHILD(1181),
1695   BITFIELD(33, 2) /* index 1181 */,
1696   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
1697   CHILD(1186),
1698   BITFIELD(35, 2) /* index 1186 */,
1699   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
1700   CHILD(1191),
1701   BITFIELD(37, 2) /* index 1191 */,
1702   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
1703   CHILD(1196),
1704   BITFIELD(39, 2) /* index 1196 */,
1705   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
1706   CHILD(1201),
1707   BITFIELD(41, 2) /* index 1201 */,
1708   TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
1709   TILEGX_OPC_INFOL,
1710 };
1711
1712 static const unsigned short decode_Y0_fsm[178] =
1713 {
1714   BITFIELD(27, 4) /* index 0 */,
1715   CHILD(17), TILEGX_OPC_ADDXI, CHILD(32), TILEGX_OPC_CMPEQI,
1716   TILEGX_OPC_CMPLTSI, CHILD(62), CHILD(67), CHILD(118), CHILD(123),
1717   CHILD(128), CHILD(133), CHILD(153), CHILD(158), CHILD(163), CHILD(168),
1718   CHILD(173),
1719   BITFIELD(6, 2) /* index 17 */,
1720   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(22),
1721   BITFIELD(8, 2) /* index 22 */,
1722   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(27),
1723   BITFIELD(10, 2) /* index 27 */,
1724   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_MOVEI,
1725   BITFIELD(0, 2) /* index 32 */,
1726   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(37),
1727   BITFIELD(2, 2) /* index 37 */,
1728   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(42),
1729   BITFIELD(4, 2) /* index 42 */,
1730   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(47),
1731   BITFIELD(6, 2) /* index 47 */,
1732   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(52),
1733   BITFIELD(8, 2) /* index 52 */,
1734   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(57),
1735   BITFIELD(10, 2) /* index 57 */,
1736   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_INFO,
1737   BITFIELD(18, 2) /* index 62 */,
1738   TILEGX_OPC_ADDX, TILEGX_OPC_ADD, TILEGX_OPC_SUBX, TILEGX_OPC_SUB,
1739   BITFIELD(15, 5) /* index 67 */,
1740   TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD,
1741   TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD,
1742   TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL2ADD,
1743   TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD,
1744   TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD,
1745   TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD,
1746   TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD,
1747   TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD, CHILD(100),
1748   CHILD(109), TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1749   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1750   BITFIELD(12, 3) /* index 100 */,
1751   TILEGX_OPC_NONE, TILEGX_OPC_CLZ, TILEGX_OPC_CTZ, TILEGX_OPC_FNOP,
1752   TILEGX_OPC_FSINGLE_PACK1, TILEGX_OPC_NOP, TILEGX_OPC_PCNT,
1753   TILEGX_OPC_REVBITS,
1754   BITFIELD(12, 3) /* index 109 */,
1755   TILEGX_OPC_REVBYTES, TILEGX_OPC_TBLIDXB0, TILEGX_OPC_TBLIDXB1,
1756   TILEGX_OPC_TBLIDXB2, TILEGX_OPC_TBLIDXB3, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1757   TILEGX_OPC_NONE,
1758   BITFIELD(18, 2) /* index 118 */,
1759   TILEGX_OPC_CMPLES, TILEGX_OPC_CMPLEU, TILEGX_OPC_CMPLTS, TILEGX_OPC_CMPLTU,
1760   BITFIELD(18, 2) /* index 123 */,
1761   TILEGX_OPC_CMPEQ, TILEGX_OPC_CMPNE, TILEGX_OPC_MULAX, TILEGX_OPC_MULX,
1762   BITFIELD(18, 2) /* index 128 */,
1763   TILEGX_OPC_CMOVEQZ, TILEGX_OPC_CMOVNEZ, TILEGX_OPC_MNZ, TILEGX_OPC_MZ,
1764   BITFIELD(18, 2) /* index 133 */,
1765   TILEGX_OPC_AND, TILEGX_OPC_NOR, CHILD(138), TILEGX_OPC_XOR,
1766   BITFIELD(12, 2) /* index 138 */,
1767   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(143),
1768   BITFIELD(14, 2) /* index 143 */,
1769   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(148),
1770   BITFIELD(16, 2) /* index 148 */,
1771   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_MOVE,
1772   BITFIELD(18, 2) /* index 153 */,
1773   TILEGX_OPC_ROTL, TILEGX_OPC_SHL, TILEGX_OPC_SHRS, TILEGX_OPC_SHRU,
1774   BITFIELD(18, 2) /* index 158 */,
1775   TILEGX_OPC_NONE, TILEGX_OPC_SHL1ADDX, TILEGX_OPC_SHL2ADDX,
1776   TILEGX_OPC_SHL3ADDX,
1777   BITFIELD(18, 2) /* index 163 */,
1778   TILEGX_OPC_MUL_HS_HS, TILEGX_OPC_MUL_HU_HU, TILEGX_OPC_MUL_LS_LS,
1779   TILEGX_OPC_MUL_LU_LU,
1780   BITFIELD(18, 2) /* index 168 */,
1781   TILEGX_OPC_MULA_HS_HS, TILEGX_OPC_MULA_HU_HU, TILEGX_OPC_MULA_LS_LS,
1782   TILEGX_OPC_MULA_LU_LU,
1783   BITFIELD(18, 2) /* index 173 */,
1784   TILEGX_OPC_ROTLI, TILEGX_OPC_SHLI, TILEGX_OPC_SHRSI, TILEGX_OPC_SHRUI,
1785 };
1786
1787 static const unsigned short decode_Y1_fsm[167] =
1788 {
1789   BITFIELD(58, 4) /* index 0 */,
1790   TILEGX_OPC_NONE, CHILD(17), TILEGX_OPC_ADDXI, CHILD(32), TILEGX_OPC_CMPEQI,
1791   TILEGX_OPC_CMPLTSI, CHILD(62), CHILD(67), CHILD(117), CHILD(122),
1792   CHILD(127), CHILD(132), CHILD(152), CHILD(157), CHILD(162), TILEGX_OPC_NONE,
1793   BITFIELD(37, 2) /* index 17 */,
1794   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(22),
1795   BITFIELD(39, 2) /* index 22 */,
1796   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(27),
1797   BITFIELD(41, 2) /* index 27 */,
1798   TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_MOVEI,
1799   BITFIELD(31, 2) /* index 32 */,
1800   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(37),
1801   BITFIELD(33, 2) /* index 37 */,
1802   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(42),
1803   BITFIELD(35, 2) /* index 42 */,
1804   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(47),
1805   BITFIELD(37, 2) /* index 47 */,
1806   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(52),
1807   BITFIELD(39, 2) /* index 52 */,
1808   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(57),
1809   BITFIELD(41, 2) /* index 57 */,
1810   TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_INFO,
1811   BITFIELD(49, 2) /* index 62 */,
1812   TILEGX_OPC_ADDX, TILEGX_OPC_ADD, TILEGX_OPC_SUBX, TILEGX_OPC_SUB,
1813   BITFIELD(47, 4) /* index 67 */,
1814   TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD,
1815   TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD,
1816   TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL3ADD,
1817   TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD, CHILD(84),
1818   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1819   BITFIELD(43, 3) /* index 84 */,
1820   CHILD(93), CHILD(96), CHILD(99), CHILD(102), CHILD(105), CHILD(108),
1821   CHILD(111), CHILD(114),
1822   BITFIELD(46, 1) /* index 93 */,
1823   TILEGX_OPC_NONE, TILEGX_OPC_FNOP,
1824   BITFIELD(46, 1) /* index 96 */,
1825   TILEGX_OPC_NONE, TILEGX_OPC_ILL,
1826   BITFIELD(46, 1) /* index 99 */,
1827   TILEGX_OPC_NONE, TILEGX_OPC_JALRP,
1828   BITFIELD(46, 1) /* index 102 */,
1829   TILEGX_OPC_NONE, TILEGX_OPC_JALR,
1830   BITFIELD(46, 1) /* index 105 */,
1831   TILEGX_OPC_NONE, TILEGX_OPC_JRP,
1832   BITFIELD(46, 1) /* index 108 */,
1833   TILEGX_OPC_NONE, TILEGX_OPC_JR,
1834   BITFIELD(46, 1) /* index 111 */,
1835   TILEGX_OPC_NONE, TILEGX_OPC_LNK,
1836   BITFIELD(46, 1) /* index 114 */,
1837   TILEGX_OPC_NONE, TILEGX_OPC_NOP,
1838   BITFIELD(49, 2) /* index 117 */,
1839   TILEGX_OPC_CMPLES, TILEGX_OPC_CMPLEU, TILEGX_OPC_CMPLTS, TILEGX_OPC_CMPLTU,
1840   BITFIELD(49, 2) /* index 122 */,
1841   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_CMPEQ, TILEGX_OPC_CMPNE,
1842   BITFIELD(49, 2) /* index 127 */,
1843   TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_MNZ, TILEGX_OPC_MZ,
1844   BITFIELD(49, 2) /* index 132 */,
1845   TILEGX_OPC_AND, TILEGX_OPC_NOR, CHILD(137), TILEGX_OPC_XOR,
1846   BITFIELD(43, 2) /* index 137 */,
1847   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(142),
1848   BITFIELD(45, 2) /* index 142 */,
1849   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(147),
1850   BITFIELD(47, 2) /* index 147 */,
1851   TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_MOVE,
1852   BITFIELD(49, 2) /* index 152 */,
1853   TILEGX_OPC_ROTL, TILEGX_OPC_SHL, TILEGX_OPC_SHRS, TILEGX_OPC_SHRU,
1854   BITFIELD(49, 2) /* index 157 */,
1855   TILEGX_OPC_NONE, TILEGX_OPC_SHL1ADDX, TILEGX_OPC_SHL2ADDX,
1856   TILEGX_OPC_SHL3ADDX,
1857   BITFIELD(49, 2) /* index 162 */,
1858   TILEGX_OPC_ROTLI, TILEGX_OPC_SHLI, TILEGX_OPC_SHRSI, TILEGX_OPC_SHRUI,
1859 };
1860
1861 static const unsigned short decode_Y2_fsm[118] =
1862 {
1863   BITFIELD(62, 2) /* index 0 */,
1864   TILEGX_OPC_NONE, CHILD(5), CHILD(66), CHILD(109),
1865   BITFIELD(55, 3) /* index 5 */,
1866   CHILD(14), CHILD(14), CHILD(14), CHILD(17), CHILD(40), CHILD(40), CHILD(40),
1867   CHILD(43),
1868   BITFIELD(26, 1) /* index 14 */,
1869   TILEGX_OPC_LD1S, TILEGX_OPC_LD1U,
1870   BITFIELD(26, 1) /* index 17 */,
1871   CHILD(20), CHILD(30),
1872   BITFIELD(51, 2) /* index 20 */,
1873   TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, CHILD(25),
1874   BITFIELD(53, 2) /* index 25 */,
1875   TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S,
1876   TILEGX_OPC_PREFETCH_L1_FAULT,
1877   BITFIELD(51, 2) /* index 30 */,
1878   TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, CHILD(35),
1879   BITFIELD(53, 2) /* index 35 */,
1880   TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_PREFETCH,
1881   BITFIELD(26, 1) /* index 40 */,
1882   TILEGX_OPC_LD2S, TILEGX_OPC_LD2U,
1883   BITFIELD(26, 1) /* index 43 */,
1884   CHILD(46), CHILD(56),
1885   BITFIELD(51, 2) /* index 46 */,
1886   TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, CHILD(51),
1887   BITFIELD(53, 2) /* index 51 */,
1888   TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S,
1889   TILEGX_OPC_PREFETCH_L2_FAULT,
1890   BITFIELD(51, 2) /* index 56 */,
1891   TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, CHILD(61),
1892   BITFIELD(53, 2) /* index 61 */,
1893   TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_PREFETCH_L2,
1894   BITFIELD(56, 2) /* index 66 */,
1895   CHILD(71), CHILD(74), CHILD(90), CHILD(93),
1896   BITFIELD(26, 1) /* index 71 */,
1897   TILEGX_OPC_NONE, TILEGX_OPC_LD4S,
1898   BITFIELD(26, 1) /* index 74 */,
1899   TILEGX_OPC_NONE, CHILD(77),
1900   BITFIELD(51, 2) /* index 77 */,
1901   TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, CHILD(82),
1902   BITFIELD(53, 2) /* index 82 */,
1903   TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, CHILD(87),
1904   BITFIELD(55, 1) /* index 87 */,
1905   TILEGX_OPC_LD4S, TILEGX_OPC_PREFETCH_L3_FAULT,
1906   BITFIELD(26, 1) /* index 90 */,
1907   TILEGX_OPC_LD4U, TILEGX_OPC_LD,
1908   BITFIELD(26, 1) /* index 93 */,
1909   CHILD(96), TILEGX_OPC_LD,
1910   BITFIELD(51, 2) /* index 96 */,
1911   TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, CHILD(101),
1912   BITFIELD(53, 2) /* index 101 */,
1913   TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, CHILD(106),
1914   BITFIELD(55, 1) /* index 106 */,
1915   TILEGX_OPC_LD4U, TILEGX_OPC_PREFETCH_L3,
1916   BITFIELD(26, 1) /* index 109 */,
1917   CHILD(112), CHILD(115),
1918   BITFIELD(57, 1) /* index 112 */,
1919   TILEGX_OPC_ST1, TILEGX_OPC_ST4,
1920   BITFIELD(57, 1) /* index 115 */,
1921   TILEGX_OPC_ST2, TILEGX_OPC_ST,
1922 };
1923
1924 #undef BITFIELD
1925 #undef CHILD
1926 const unsigned short * const
1927 tilegx_bundle_decoder_fsms[TILEGX_NUM_PIPELINE_ENCODINGS] =
1928 {
1929   decode_X0_fsm,
1930   decode_X1_fsm,
1931   decode_Y0_fsm,
1932   decode_Y1_fsm,
1933   decode_Y2_fsm
1934 };
1935 const struct tilegx_operand tilegx_operands[35] =
1936 {
1937   {
1938     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM8_X0),
1939     8, 1, 0, 0, 0, 0,
1940     create_Imm8_X0, get_Imm8_X0
1941   },
1942   {
1943     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM8_X1),
1944     8, 1, 0, 0, 0, 0,
1945     create_Imm8_X1, get_Imm8_X1
1946   },
1947   {
1948     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM8_Y0),
1949     8, 1, 0, 0, 0, 0,
1950     create_Imm8_Y0, get_Imm8_Y0
1951   },
1952   {
1953     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM8_Y1),
1954     8, 1, 0, 0, 0, 0,
1955     create_Imm8_Y1, get_Imm8_Y1
1956   },
1957   {
1958     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM16_X0_HW0_LAST),
1959     16, 1, 0, 0, 0, 0,
1960     create_Imm16_X0, get_Imm16_X0
1961   },
1962   {
1963     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM16_X1_HW0_LAST),
1964     16, 1, 0, 0, 0, 0,
1965     create_Imm16_X1, get_Imm16_X1
1966   },
1967   {
1968     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
1969     6, 0, 0, 1, 0, 0,
1970     create_Dest_X0, get_Dest_X0
1971   },
1972   {
1973     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
1974     6, 0, 1, 0, 0, 0,
1975     create_SrcA_X0, get_SrcA_X0
1976   },
1977   {
1978     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
1979     6, 0, 0, 1, 0, 0,
1980     create_Dest_X1, get_Dest_X1
1981   },
1982   {
1983     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
1984     6, 0, 1, 0, 0, 0,
1985     create_SrcA_X1, get_SrcA_X1
1986   },
1987   {
1988     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
1989     6, 0, 0, 1, 0, 0,
1990     create_Dest_Y0, get_Dest_Y0
1991   },
1992   {
1993     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
1994     6, 0, 1, 0, 0, 0,
1995     create_SrcA_Y0, get_SrcA_Y0
1996   },
1997   {
1998     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
1999     6, 0, 0, 1, 0, 0,
2000     create_Dest_Y1, get_Dest_Y1
2001   },
2002   {
2003     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
2004     6, 0, 1, 0, 0, 0,
2005     create_SrcA_Y1, get_SrcA_Y1
2006   },
2007   {
2008     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
2009     6, 0, 1, 0, 0, 0,
2010     create_SrcA_Y2, get_SrcA_Y2
2011   },
2012   {
2013     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
2014     6, 0, 1, 1, 0, 0,
2015     create_SrcA_X1, get_SrcA_X1
2016   },
2017   {
2018     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
2019     6, 0, 1, 0, 0, 0,
2020     create_SrcB_X0, get_SrcB_X0
2021   },
2022   {
2023     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
2024     6, 0, 1, 0, 0, 0,
2025     create_SrcB_X1, get_SrcB_X1
2026   },
2027   {
2028     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
2029     6, 0, 1, 0, 0, 0,
2030     create_SrcB_Y0, get_SrcB_Y0
2031   },
2032   {
2033     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
2034     6, 0, 1, 0, 0, 0,
2035     create_SrcB_Y1, get_SrcB_Y1
2036   },
2037   {
2038     TILEGX_OP_TYPE_ADDRESS, BFD_RELOC(TILEGX_BROFF_X1),
2039     17, 1, 0, 0, 1, TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES,
2040     create_BrOff_X1, get_BrOff_X1
2041   },
2042   {
2043     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(NONE),
2044     6, 0, 0, 0, 0, 0,
2045     create_BFStart_X0, get_BFStart_X0
2046   },
2047   {
2048     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(NONE),
2049     6, 0, 0, 0, 0, 0,
2050     create_BFEnd_X0, get_BFEnd_X0
2051   },
2052   {
2053     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
2054     6, 0, 1, 1, 0, 0,
2055     create_Dest_X0, get_Dest_X0
2056   },
2057   {
2058     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
2059     6, 0, 1, 1, 0, 0,
2060     create_Dest_Y0, get_Dest_Y0
2061   },
2062   {
2063     TILEGX_OP_TYPE_ADDRESS, BFD_RELOC(TILEGX_JUMPOFF_X1),
2064     27, 1, 0, 0, 1, TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES,
2065     create_JumpOff_X1, get_JumpOff_X1
2066   },
2067   {
2068     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
2069     6, 0, 0, 1, 0, 0,
2070     create_SrcBDest_Y2, get_SrcBDest_Y2
2071   },
2072   {
2073     TILEGX_OP_TYPE_SPR, BFD_RELOC(TILEGX_MF_IMM14_X1),
2074     14, 0, 0, 0, 0, 0,
2075     create_MF_Imm14_X1, get_MF_Imm14_X1
2076   },
2077   {
2078     TILEGX_OP_TYPE_SPR, BFD_RELOC(TILEGX_MT_IMM14_X1),
2079     14, 0, 0, 0, 0, 0,
2080     create_MT_Imm14_X1, get_MT_Imm14_X1
2081   },
2082   {
2083     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_SHAMT_X0),
2084     6, 0, 0, 0, 0, 0,
2085     create_ShAmt_X0, get_ShAmt_X0
2086   },
2087   {
2088     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_SHAMT_X1),
2089     6, 0, 0, 0, 0, 0,
2090     create_ShAmt_X1, get_ShAmt_X1
2091   },
2092   {
2093     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_SHAMT_Y0),
2094     6, 0, 0, 0, 0, 0,
2095     create_ShAmt_Y0, get_ShAmt_Y0
2096   },
2097   {
2098     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_SHAMT_Y1),
2099     6, 0, 0, 0, 0, 0,
2100     create_ShAmt_Y1, get_ShAmt_Y1
2101   },
2102   {
2103     TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
2104     6, 0, 1, 0, 0, 0,
2105     create_SrcBDest_Y2, get_SrcBDest_Y2
2106   },
2107   {
2108     TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_DEST_IMM8_X1),
2109     8, 1, 0, 0, 0, 0,
2110     create_Dest_Imm8_X1, get_Dest_Imm8_X1
2111   }
2112 };
2113
2114
2115
2116
2117 /* Given a set of bundle bits and the lookup FSM for a specific pipe,
2118  * returns which instruction the bundle contains in that pipe.
2119  */
2120 static const struct tilegx_opcode *
2121 find_opcode(tilegx_bundle_bits bits, const unsigned short *table)
2122 {
2123   int index = 0;
2124
2125   while (1)
2126   {
2127     unsigned short bitspec = table[index];
2128     unsigned int bitfield =
2129       ((unsigned int)(bits >> (bitspec & 63))) & (bitspec >> 6);
2130
2131     unsigned short next = table[index + 1 + bitfield];
2132     if (next <= TILEGX_OPC_NONE)
2133       return &tilegx_opcodes[next];
2134
2135     index = next - TILEGX_OPC_NONE;
2136   }
2137 }
2138
2139
2140 int
2141 parse_insn_tilegx(tilegx_bundle_bits bits,
2142                   unsigned long long pc,
2143                   struct tilegx_decoded_instruction
2144                   decoded[TILEGX_MAX_INSTRUCTIONS_PER_BUNDLE])
2145 {
2146   int num_instructions = 0;
2147   int pipe;
2148
2149   int min_pipe, max_pipe;
2150   if ((bits & TILEGX_BUNDLE_MODE_MASK) == 0)
2151   {
2152     min_pipe = TILEGX_PIPELINE_X0;
2153     max_pipe = TILEGX_PIPELINE_X1;
2154   }
2155   else
2156   {
2157     min_pipe = TILEGX_PIPELINE_Y0;
2158     max_pipe = TILEGX_PIPELINE_Y2;
2159   }
2160
2161   /* For each pipe, find an instruction that fits. */
2162   for (pipe = min_pipe; pipe <= max_pipe; pipe++)
2163   {
2164     const struct tilegx_opcode *opc;
2165     struct tilegx_decoded_instruction *d;
2166     int i;
2167
2168     d = &decoded[num_instructions++];
2169     opc = find_opcode (bits, tilegx_bundle_decoder_fsms[pipe]);
2170     d->opcode = opc;
2171
2172     /* Decode each operand, sign extending, etc. as appropriate. */
2173     for (i = 0; i < opc->num_operands; i++)
2174     {
2175       const struct tilegx_operand *op =
2176         &tilegx_operands[opc->operands[pipe][i]];
2177       int raw_opval = op->extract (bits);
2178       long long opval;
2179
2180       if (op->is_signed)
2181       {
2182         /* Sign-extend the operand. */
2183         int shift = (int)((sizeof(int) * 8) - op->num_bits);
2184         raw_opval = (raw_opval << shift) >> shift;
2185       }
2186
2187       /* Adjust PC-relative scaled branch offsets. */
2188       if (op->type == TILEGX_OP_TYPE_ADDRESS)
2189         opval = (raw_opval * TILEGX_BUNDLE_SIZE_IN_BYTES) + pc;
2190       else
2191         opval = raw_opval;
2192
2193       /* Record the final value. */
2194       d->operands[i] = op;
2195       d->operand_values[i] = opval;
2196     }
2197   }
2198
2199   return num_instructions;
2200 }