Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
tile-desc_64.c
Go to the documentation of this file.
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 */,
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,
1101  CHILD(583), CHILD(588), CHILD(593), CHILD(598), 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),
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 */,
1160  BITFIELD(8, 2) /* index 518 */,
1162  BITFIELD(10, 2) /* index 523 */,
1164  BITFIELD(20, 2) /* index 528 */,
1166  BITFIELD(6, 2) /* index 533 */,
1168  BITFIELD(8, 2) /* index 538 */,
1170  BITFIELD(10, 2) /* index 543 */,
1172  BITFIELD(0, 2) /* index 548 */,
1174  BITFIELD(2, 2) /* index 553 */,
1176  BITFIELD(4, 2) /* index 558 */,
1178  BITFIELD(6, 2) /* index 563 */,
1180  BITFIELD(8, 2) /* index 568 */,
1182  BITFIELD(10, 2) /* index 573 */,
1184  BITFIELD(20, 2) /* index 578 */,
1186  BITFIELD(20, 2) /* index 583 */,
1189  BITFIELD(20, 2) /* index 588 */,
1192  BITFIELD(20, 2) /* index 593 */,
1195  BITFIELD(20, 2) /* index 598 */,
1197  BITFIELD(18, 4) /* index 603 */,
1202  BITFIELD(18, 4) /* index 620 */,
1209  BITFIELD(18, 4) /* index 637 */,
1216  BITFIELD(18, 4) /* index 654 */,
1222  TILEGX_OPC_MZ,
1223  BITFIELD(18, 4) /* index 671 */,
1229  BITFIELD(12, 2) /* index 688 */,
1231  BITFIELD(14, 2) /* index 693 */,
1233  BITFIELD(16, 2) /* index 698 */,
1235  BITFIELD(18, 4) /* index 703 */,
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),
1245  BITFIELD(16, 2) /* index 737 */,
1247  BITFIELD(16, 2) /* index 742 */,
1249  BITFIELD(16, 2) /* index 747 */,
1251  BITFIELD(16, 2) /* index 752 */,
1253  BITFIELD(16, 2) /* index 757 */,
1255  BITFIELD(16, 2) /* index 762 */,
1257  BITFIELD(16, 2) /* index 767 */,
1259  BITFIELD(16, 2) /* index 772 */,
1261  BITFIELD(16, 2) /* index 777 */,
1263  BITFIELD(16, 2) /* index 782 */,
1265  BITFIELD(16, 2) /* index 787 */,
1267  BITFIELD(16, 2) /* index 792 */,
1269  BITFIELD(18, 4) /* index 797 */,
1275  BITFIELD(18, 4) /* index 814 */,
1281  BITFIELD(18, 4) /* index 831 */,
1287  BITFIELD(18, 4) /* index 848 */,
1293  BITFIELD(18, 3) /* index 865 */,
1294  CHILD(874), CHILD(877), CHILD(880), CHILD(883), CHILD(886), TILEGX_OPC_NONE,
1296  BITFIELD(21, 1) /* index 874 */,
1298  BITFIELD(21, 1) /* index 877 */,
1300  BITFIELD(21, 1) /* index 880 */,
1302  BITFIELD(21, 1) /* index 883 */,
1304  BITFIELD(21, 1) /* index 886 */,
1306  BITFIELD(18, 4) /* index 889 */,
1312  BITFIELD(0, 2) /* index 906 */,
1314  CHILD(911),
1315  BITFIELD(2, 2) /* index 911 */,
1317  CHILD(916),
1318  BITFIELD(4, 2) /* index 916 */,
1320  CHILD(921),
1321  BITFIELD(6, 2) /* index 921 */,
1323  CHILD(926),
1324  BITFIELD(8, 2) /* index 926 */,
1326  CHILD(931),
1327  BITFIELD(10, 2) /* index 931 */,
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,
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,
1407  CHILD(723), CHILD(740), CHILD(772), CHILD(789), CHILD(1108), CHILD(1125),
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 */,
1454  BITFIELD(39, 2) /* index 518 */,
1456  BITFIELD(41, 2) /* index 523 */,
1458  BITFIELD(51, 2) /* index 528 */,
1460  BITFIELD(37, 2) /* index 533 */,
1462  BITFIELD(39, 2) /* index 538 */,
1464  BITFIELD(41, 2) /* index 543 */,
1466  BITFIELD(31, 2) /* index 548 */,
1468  BITFIELD(33, 2) /* index 553 */,
1470  BITFIELD(35, 2) /* index 558 */,
1472  BITFIELD(37, 2) /* index 563 */,
1474  BITFIELD(39, 2) /* index 568 */,
1476  BITFIELD(41, 2) /* index 573 */,
1478  BITFIELD(51, 2) /* index 578 */,
1480  BITFIELD(31, 2) /* index 583 */,
1482  BITFIELD(33, 2) /* index 588 */,
1484  BITFIELD(35, 2) /* index 593 */,
1487  BITFIELD(51, 2) /* index 598 */,
1488  CHILD(603), CHILD(618), CHILD(633), CHILD(648),
1489  BITFIELD(31, 2) /* index 603 */,
1491  BITFIELD(33, 2) /* index 608 */,
1493  BITFIELD(35, 2) /* index 613 */,
1496  BITFIELD(31, 2) /* index 618 */,
1498  BITFIELD(33, 2) /* index 623 */,
1500  BITFIELD(35, 2) /* index 628 */,
1503  BITFIELD(31, 2) /* index 633 */,
1505  BITFIELD(33, 2) /* index 638 */,
1507  BITFIELD(35, 2) /* index 643 */,
1510  BITFIELD(31, 2) /* index 648 */,
1512  BITFIELD(33, 2) /* index 653 */,
1514  BITFIELD(35, 2) /* index 658 */,
1517  BITFIELD(51, 2) /* index 663 */,
1520  BITFIELD(31, 2) /* index 668 */,
1522  BITFIELD(33, 2) /* index 673 */,
1524  BITFIELD(35, 2) /* index 678 */,
1527  BITFIELD(51, 2) /* index 683 */,
1530  BITFIELD(51, 2) /* index 688 */,
1532  BITFIELD(51, 2) /* index 693 */,
1534  BITFIELD(51, 2) /* index 698 */,
1537  BITFIELD(51, 2) /* index 703 */,
1540  BITFIELD(51, 2) /* index 708 */,
1543  BITFIELD(51, 2) /* index 713 */,
1546  BITFIELD(51, 2) /* index 718 */,
1548  BITFIELD(49, 4) /* index 723 */,
1554  BITFIELD(49, 4) /* index 740 */,
1560  BITFIELD(43, 2) /* index 757 */,
1562  BITFIELD(45, 2) /* index 762 */,
1564  BITFIELD(47, 2) /* index 767 */,
1566  BITFIELD(49, 4) /* index 772 */,
1572  BITFIELD(46, 7) /* index 789 */,
1583  CHILD(1006), CHILD(1090), CHILD(1099), TILEGX_OPC_NONE, TILEGX_OPC_NONE,
1610  BITFIELD(43, 3) /* index 918 */,
1613  BITFIELD(43, 3) /* index 927 */,
1616  BITFIELD(31, 2) /* index 936 */,
1618  BITFIELD(33, 2) /* index 941 */,
1620  BITFIELD(35, 2) /* index 946 */,
1622  BITFIELD(37, 2) /* index 951 */,
1624  BITFIELD(39, 2) /* index 956 */,
1626  BITFIELD(41, 2) /* index 961 */,
1628  BITFIELD(33, 2) /* index 966 */,
1630  BITFIELD(35, 2) /* index 971 */,
1632  BITFIELD(37, 2) /* index 976 */,
1634  BITFIELD(39, 2) /* index 981 */,
1636  BITFIELD(41, 2) /* index 986 */,
1638  BITFIELD(31, 2) /* index 991 */,
1640  BITFIELD(33, 2) /* index 996 */,
1642  BITFIELD(35, 2) /* index 1001 */,
1645  BITFIELD(43, 3) /* index 1006 */,
1646  CHILD(1015), CHILD(1030), CHILD(1045), CHILD(1060), CHILD(1075),
1648  BITFIELD(31, 2) /* index 1015 */,
1650  BITFIELD(33, 2) /* index 1020 */,
1652  BITFIELD(35, 2) /* index 1025 */,
1654  BITFIELD(31, 2) /* index 1030 */,
1656  BITFIELD(33, 2) /* index 1035 */,
1658  BITFIELD(35, 2) /* index 1040 */,
1661  BITFIELD(31, 2) /* index 1045 */,
1663  BITFIELD(33, 2) /* index 1050 */,
1665  BITFIELD(35, 2) /* index 1055 */,
1667  BITFIELD(31, 2) /* index 1060 */,
1669  BITFIELD(33, 2) /* index 1065 */,
1671  BITFIELD(35, 2) /* index 1070 */,
1674  BITFIELD(31, 2) /* index 1075 */,
1676  BITFIELD(33, 2) /* index 1080 */,
1678  BITFIELD(35, 2) /* index 1085 */,
1680  BITFIELD(43, 3) /* index 1090 */,
1683  BITFIELD(43, 3) /* index 1099 */,
1686  BITFIELD(49, 4) /* index 1108 */,
1692  BITFIELD(49, 4) /* index 1125 */,
1698  BITFIELD(49, 4) /* index 1142 */,
1704  BITFIELD(49, 4) /* index 1159 */,
1710  BITFIELD(31, 2) /* index 1176 */,
1712  CHILD(1181),
1713  BITFIELD(33, 2) /* index 1181 */,
1715  CHILD(1186),
1716  BITFIELD(35, 2) /* index 1186 */,
1718  CHILD(1191),
1719  BITFIELD(37, 2) /* index 1191 */,
1721  CHILD(1196),
1722  BITFIELD(39, 2) /* index 1196 */,
1724  CHILD(1201),
1725  BITFIELD(41, 2) /* index 1201 */,
1728 };
1729 
1730 static const unsigned short decode_Y0_fsm[178] =
1731 {
1732  BITFIELD(27, 4) /* index 0 */,
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 */,
1739  BITFIELD(8, 2) /* index 22 */,
1741  BITFIELD(10, 2) /* index 27 */,
1743  BITFIELD(0, 2) /* index 32 */,
1745  BITFIELD(2, 2) /* index 37 */,
1747  BITFIELD(4, 2) /* index 42 */,
1749  BITFIELD(6, 2) /* index 47 */,
1751  BITFIELD(8, 2) /* index 52 */,
1753  BITFIELD(10, 2) /* index 57 */,
1755  BITFIELD(18, 2) /* index 62 */,
1757  BITFIELD(15, 5) /* index 67 */,
1768  BITFIELD(12, 3) /* index 100 */,
1772  BITFIELD(12, 3) /* index 109 */,
1776  BITFIELD(18, 2) /* index 118 */,
1778  BITFIELD(18, 2) /* index 123 */,
1780  BITFIELD(18, 2) /* index 128 */,
1782  BITFIELD(18, 2) /* index 133 */,
1784  BITFIELD(12, 2) /* index 138 */,
1786  BITFIELD(14, 2) /* index 143 */,
1788  BITFIELD(16, 2) /* index 148 */,
1790  BITFIELD(18, 2) /* index 153 */,
1792  BITFIELD(18, 2) /* index 158 */,
1795  BITFIELD(18, 2) /* index 163 */,
1798  BITFIELD(18, 2) /* index 168 */,
1801  BITFIELD(18, 2) /* index 173 */,
1803 };
1804 
1805 static const unsigned short decode_Y1_fsm[167] =
1806 {
1807  BITFIELD(58, 4) /* index 0 */,
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 */,
1813  BITFIELD(39, 2) /* index 22 */,
1815  BITFIELD(41, 2) /* index 27 */,
1817  BITFIELD(31, 2) /* index 32 */,
1819  BITFIELD(33, 2) /* index 37 */,
1821  BITFIELD(35, 2) /* index 42 */,
1823  BITFIELD(37, 2) /* index 47 */,
1825  BITFIELD(39, 2) /* index 52 */,
1827  BITFIELD(41, 2) /* index 57 */,
1829  BITFIELD(49, 2) /* index 62 */,
1831  BITFIELD(47, 4) /* index 67 */,
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 */,
1842  BITFIELD(46, 1) /* index 96 */,
1844  BITFIELD(46, 1) /* index 99 */,
1846  BITFIELD(46, 1) /* index 102 */,
1848  BITFIELD(46, 1) /* index 105 */,
1850  BITFIELD(46, 1) /* index 108 */,
1852  BITFIELD(46, 1) /* index 111 */,
1854  BITFIELD(46, 1) /* index 114 */,
1856  BITFIELD(49, 2) /* index 117 */,
1858  BITFIELD(49, 2) /* index 122 */,
1860  BITFIELD(49, 2) /* index 127 */,
1862  BITFIELD(49, 2) /* index 132 */,
1864  BITFIELD(43, 2) /* index 137 */,
1866  BITFIELD(45, 2) /* index 142 */,
1868  BITFIELD(47, 2) /* index 147 */,
1870  BITFIELD(49, 2) /* index 152 */,
1872  BITFIELD(49, 2) /* index 157 */,
1875  BITFIELD(49, 2) /* index 162 */,
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 */,
1888  BITFIELD(26, 1) /* index 17 */,
1889  CHILD(20), CHILD(30),
1890  BITFIELD(51, 2) /* index 20 */,
1892  BITFIELD(53, 2) /* index 25 */,
1895  BITFIELD(51, 2) /* index 30 */,
1897  BITFIELD(53, 2) /* index 35 */,
1899  BITFIELD(26, 1) /* index 40 */,
1901  BITFIELD(26, 1) /* index 43 */,
1902  CHILD(46), CHILD(56),
1903  BITFIELD(51, 2) /* index 46 */,
1905  BITFIELD(53, 2) /* index 51 */,
1908  BITFIELD(51, 2) /* index 56 */,
1910  BITFIELD(53, 2) /* index 61 */,
1912  BITFIELD(56, 2) /* index 66 */,
1913  CHILD(71), CHILD(74), CHILD(90), CHILD(93),
1914  BITFIELD(26, 1) /* index 71 */,
1916  BITFIELD(26, 1) /* index 74 */,
1917  TILEGX_OPC_NONE, CHILD(77),
1918  BITFIELD(51, 2) /* index 77 */,
1920  BITFIELD(53, 2) /* index 82 */,
1922  BITFIELD(55, 1) /* index 87 */,
1924  BITFIELD(26, 1) /* index 90 */,
1926  BITFIELD(26, 1) /* index 93 */,
1927  CHILD(96), TILEGX_OPC_LD,
1928  BITFIELD(51, 2) /* index 96 */,
1930  BITFIELD(53, 2) /* index 101 */,
1932  BITFIELD(55, 1) /* index 106 */,
1934  BITFIELD(26, 1) /* index 109 */,
1935  CHILD(112), CHILD(115),
1936  BITFIELD(57, 1) /* index 112 */,
1938  BITFIELD(57, 1) /* index 115 */,
1940 };
1941 
1942 #undef BITFIELD
1943 #undef CHILD
1944 const unsigned short * const
1946 {
1947  decode_X0_fsm,
1948  decode_X1_fsm,
1949  decode_Y0_fsm,
1950  decode_Y1_fsm,
1951  decode_Y2_fsm
1952 };
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  {
1987  6, 0, 0, 1, 0, 0,
1988  create_Dest_X0, get_Dest_X0
1989  },
1990  {
1992  6, 0, 1, 0, 0, 0,
1993  create_SrcA_X0, get_SrcA_X0
1994  },
1995  {
1997  6, 0, 0, 1, 0, 0,
1998  create_Dest_X1, get_Dest_X1
1999  },
2000  {
2002  6, 0, 1, 0, 0, 0,
2003  create_SrcA_X1, get_SrcA_X1
2004  },
2005  {
2007  6, 0, 0, 1, 0, 0,
2008  create_Dest_Y0, get_Dest_Y0
2009  },
2010  {
2012  6, 0, 1, 0, 0, 0,
2013  create_SrcA_Y0, get_SrcA_Y0
2014  },
2015  {
2017  6, 0, 0, 1, 0, 0,
2018  create_Dest_Y1, get_Dest_Y1
2019  },
2020  {
2022  6, 0, 1, 0, 0, 0,
2023  create_SrcA_Y1, get_SrcA_Y1
2024  },
2025  {
2027  6, 0, 1, 0, 0, 0,
2028  create_SrcA_Y2, get_SrcA_Y2
2029  },
2030  {
2032  6, 0, 1, 1, 0, 0,
2033  create_SrcA_X1, get_SrcA_X1
2034  },
2035  {
2037  6, 0, 1, 0, 0, 0,
2038  create_SrcB_X0, get_SrcB_X0
2039  },
2040  {
2042  6, 0, 1, 0, 0, 0,
2043  create_SrcB_X1, get_SrcB_X1
2044  },
2045  {
2047  6, 0, 1, 0, 0, 0,
2048  create_SrcB_Y0, get_SrcB_Y0
2049  },
2050  {
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  {
2072  6, 0, 1, 1, 0, 0,
2073  create_Dest_X0, get_Dest_X0
2074  },
2075  {
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  {
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  {
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
2160  unsigned long long pc,
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 }