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