1 /* $NetBSD: sljitNativeTILEGX-encoder.c,v 1.3 2019/01/20 23:14:16 alnsn Exp $ */
2
3 /*
4 * Stack-less Just-In-Time compiler
5 *
6 * Copyright 2013-2013 Tilera Corporation(jiwang@tilera.com). All rights reserved.
7 * Copyright Zoltan Herczeg (hzmester@freemail.hu). All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without modification, are
10 * permitted provided that the following conditions are met:
11 *
12 * 1. Redistributions of source code must retain the above copyright notice, this list of
13 * conditions and the following disclaimer.
14 *
15 * 2. Redistributions in binary form must reproduce the above copyright notice, this list
16 * of conditions and the following disclaimer in the documentation and/or other materials
17 * provided with the distribution.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND CONTRIBUTORS ``AS IS'' AND ANY
20 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
22 * SHALL THE COPYRIGHT HOLDER(S) OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
23 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
24 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
25 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
27 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */
29
30 /* This code is owned by Tilera Corporation, and distributed as part
31 of multiple projects. In sljit, the code is under BSD licence. */
32
33 #include <stdio.h>
34 #include <stdlib.h>
35 #include <string.h>
36 #define BFD_RELOC(x) R_##x
37
38 /* Special registers. */
39 #define TREG_LR 55
40 #define TREG_SN 56
41 #define TREG_ZERO 63
42
43 /* Canonical name of each register. */
44 const char *const tilegx_register_names[] =
45 {
46 "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
47 "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
48 "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23",
49 "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31",
50 "r32", "r33", "r34", "r35", "r36", "r37", "r38", "r39",
51 "r40", "r41", "r42", "r43", "r44", "r45", "r46", "r47",
52 "r48", "r49", "r50", "r51", "r52", "tp", "sp", "lr",
53 "sn", "idn0", "idn1", "udn0", "udn1", "udn2", "udn3", "zero"
54 };
55
56 enum
57 {
58 R_NONE = 0,
59 R_TILEGX_NONE = 0,
60 R_TILEGX_64 = 1,
61 R_TILEGX_32 = 2,
62 R_TILEGX_16 = 3,
63 R_TILEGX_8 = 4,
64 R_TILEGX_64_PCREL = 5,
65 R_TILEGX_32_PCREL = 6,
66 R_TILEGX_16_PCREL = 7,
67 R_TILEGX_8_PCREL = 8,
68 R_TILEGX_HW0 = 9,
69 R_TILEGX_HW1 = 10,
70 R_TILEGX_HW2 = 11,
71 R_TILEGX_HW3 = 12,
72 R_TILEGX_HW0_LAST = 13,
73 R_TILEGX_HW1_LAST = 14,
74 R_TILEGX_HW2_LAST = 15,
75 R_TILEGX_COPY = 16,
76 R_TILEGX_GLOB_DAT = 17,
77 R_TILEGX_JMP_SLOT = 18,
78 R_TILEGX_RELATIVE = 19,
79 R_TILEGX_BROFF_X1 = 20,
80 R_TILEGX_JUMPOFF_X1 = 21,
81 R_TILEGX_JUMPOFF_X1_PLT = 22,
82 R_TILEGX_IMM8_X0 = 23,
83 R_TILEGX_IMM8_Y0 = 24,
84 R_TILEGX_IMM8_X1 = 25,
85 R_TILEGX_IMM8_Y1 = 26,
86 R_TILEGX_DEST_IMM8_X1 = 27,
87 R_TILEGX_MT_IMM14_X1 = 28,
88 R_TILEGX_MF_IMM14_X1 = 29,
89 R_TILEGX_MMSTART_X0 = 30,
90 R_TILEGX_MMEND_X0 = 31,
91 R_TILEGX_SHAMT_X0 = 32,
92 R_TILEGX_SHAMT_X1 = 33,
93 R_TILEGX_SHAMT_Y0 = 34,
94 R_TILEGX_SHAMT_Y1 = 35,
95 R_TILEGX_IMM16_X0_HW0 = 36,
96 R_TILEGX_IMM16_X1_HW0 = 37,
97 R_TILEGX_IMM16_X0_HW1 = 38,
98 R_TILEGX_IMM16_X1_HW1 = 39,
99 R_TILEGX_IMM16_X0_HW2 = 40,
100 R_TILEGX_IMM16_X1_HW2 = 41,
101 R_TILEGX_IMM16_X0_HW3 = 42,
102 R_TILEGX_IMM16_X1_HW3 = 43,
103 R_TILEGX_IMM16_X0_HW0_LAST = 44,
104 R_TILEGX_IMM16_X1_HW0_LAST = 45,
105 R_TILEGX_IMM16_X0_HW1_LAST = 46,
106 R_TILEGX_IMM16_X1_HW1_LAST = 47,
107 R_TILEGX_IMM16_X0_HW2_LAST = 48,
108 R_TILEGX_IMM16_X1_HW2_LAST = 49,
109 R_TILEGX_IMM16_X0_HW0_PCREL = 50,
110 R_TILEGX_IMM16_X1_HW0_PCREL = 51,
111 R_TILEGX_IMM16_X0_HW1_PCREL = 52,
112 R_TILEGX_IMM16_X1_HW1_PCREL = 53,
113 R_TILEGX_IMM16_X0_HW2_PCREL = 54,
114 R_TILEGX_IMM16_X1_HW2_PCREL = 55,
115 R_TILEGX_IMM16_X0_HW3_PCREL = 56,
116 R_TILEGX_IMM16_X1_HW3_PCREL = 57,
117 R_TILEGX_IMM16_X0_HW0_LAST_PCREL = 58,
118 R_TILEGX_IMM16_X1_HW0_LAST_PCREL = 59,
119 R_TILEGX_IMM16_X0_HW1_LAST_PCREL = 60,
120 R_TILEGX_IMM16_X1_HW1_LAST_PCREL = 61,
121 R_TILEGX_IMM16_X0_HW2_LAST_PCREL = 62,
122 R_TILEGX_IMM16_X1_HW2_LAST_PCREL = 63,
123 R_TILEGX_IMM16_X0_HW0_GOT = 64,
124 R_TILEGX_IMM16_X1_HW0_GOT = 65,
125
126 R_TILEGX_IMM16_X0_HW0_PLT_PCREL = 66,
127 R_TILEGX_IMM16_X1_HW0_PLT_PCREL = 67,
128 R_TILEGX_IMM16_X0_HW1_PLT_PCREL = 68,
129 R_TILEGX_IMM16_X1_HW1_PLT_PCREL = 69,
130 R_TILEGX_IMM16_X0_HW2_PLT_PCREL = 70,
131 R_TILEGX_IMM16_X1_HW2_PLT_PCREL = 71,
132
133 R_TILEGX_IMM16_X0_HW0_LAST_GOT = 72,
134 R_TILEGX_IMM16_X1_HW0_LAST_GOT = 73,
135 R_TILEGX_IMM16_X0_HW1_LAST_GOT = 74,
136 R_TILEGX_IMM16_X1_HW1_LAST_GOT = 75,
137 R_TILEGX_IMM16_X0_HW0_TLS_GD = 78,
138 R_TILEGX_IMM16_X1_HW0_TLS_GD = 79,
139 R_TILEGX_IMM16_X0_HW0_TLS_LE = 80,
140 R_TILEGX_IMM16_X1_HW0_TLS_LE = 81,
141 R_TILEGX_IMM16_X0_HW0_LAST_TLS_LE = 82,
142 R_TILEGX_IMM16_X1_HW0_LAST_TLS_LE = 83,
143 R_TILEGX_IMM16_X0_HW1_LAST_TLS_LE = 84,
144 R_TILEGX_IMM16_X1_HW1_LAST_TLS_LE = 85,
145 R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD = 86,
146 R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD = 87,
147 R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD = 88,
148 R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD = 89,
149 R_TILEGX_IMM16_X0_HW0_TLS_IE = 92,
150 R_TILEGX_IMM16_X1_HW0_TLS_IE = 93,
151
152 R_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL = 94,
153 R_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL = 95,
154 R_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL = 96,
155 R_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL = 97,
156 R_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL = 98,
157 R_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL = 99,
158
159 R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE = 100,
160 R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE = 101,
161 R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE = 102,
162 R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE = 103,
163 R_TILEGX_TLS_DTPMOD64 = 106,
164 R_TILEGX_TLS_DTPOFF64 = 107,
165 R_TILEGX_TLS_TPOFF64 = 108,
166 R_TILEGX_TLS_DTPMOD32 = 109,
167 R_TILEGX_TLS_DTPOFF32 = 110,
168 R_TILEGX_TLS_TPOFF32 = 111,
169 R_TILEGX_TLS_GD_CALL = 112,
170 R_TILEGX_IMM8_X0_TLS_GD_ADD = 113,
171 R_TILEGX_IMM8_X1_TLS_GD_ADD = 114,
172 R_TILEGX_IMM8_Y0_TLS_GD_ADD = 115,
173 R_TILEGX_IMM8_Y1_TLS_GD_ADD = 116,
174 R_TILEGX_TLS_IE_LOAD = 117,
175 R_TILEGX_IMM8_X0_TLS_ADD = 118,
176 R_TILEGX_IMM8_X1_TLS_ADD = 119,
177 R_TILEGX_IMM8_Y0_TLS_ADD = 120,
178 R_TILEGX_IMM8_Y1_TLS_ADD = 121,
179 R_TILEGX_GNU_VTINHERIT = 128,
180 R_TILEGX_GNU_VTENTRY = 129,
181 R_TILEGX_IRELATIVE = 130,
182 R_TILEGX_NUM = 131
183 };
184
185 typedef enum
186 {
187 TILEGX_PIPELINE_X0,
188 TILEGX_PIPELINE_X1,
189 TILEGX_PIPELINE_Y0,
190 TILEGX_PIPELINE_Y1,
191 TILEGX_PIPELINE_Y2,
192 } tilegx_pipeline;
193
194 typedef unsigned long long tilegx_bundle_bits;
195
196 /* These are the bits that determine if a bundle is in the X encoding. */
197 #define TILEGX_BUNDLE_MODE_MASK ((tilegx_bundle_bits)3 << 62)
198
199 enum
200 {
201 /* Maximum number of instructions in a bundle (2 for X, 3 for Y). */
202 TILEGX_MAX_INSTRUCTIONS_PER_BUNDLE = 3,
203
204 /* How many different pipeline encodings are there? X0, X1, Y0, Y1, Y2. */
205 TILEGX_NUM_PIPELINE_ENCODINGS = 5,
206
207 /* Log base 2 of TILEGX_BUNDLE_SIZE_IN_BYTES. */
208 TILEGX_LOG2_BUNDLE_SIZE_IN_BYTES = 3,
209
210 /* Instructions take this many bytes. */
211 TILEGX_BUNDLE_SIZE_IN_BYTES = 1 << TILEGX_LOG2_BUNDLE_SIZE_IN_BYTES,
212
213 /* Log base 2 of TILEGX_BUNDLE_ALIGNMENT_IN_BYTES. */
214 TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES = 3,
215
216 /* Bundles should be aligned modulo this number of bytes. */
217 TILEGX_BUNDLE_ALIGNMENT_IN_BYTES =
218 (1 << TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES),
219
220 /* Number of registers (some are magic, such as network I/O). */
221 TILEGX_NUM_REGISTERS = 64,
222 };
223
224 /* Make a few "tile_" variables to simplify common code between
225 architectures. */
226
227 typedef tilegx_bundle_bits tile_bundle_bits;
228 #define TILE_BUNDLE_SIZE_IN_BYTES TILEGX_BUNDLE_SIZE_IN_BYTES
229 #define TILE_BUNDLE_ALIGNMENT_IN_BYTES TILEGX_BUNDLE_ALIGNMENT_IN_BYTES
230 #define TILE_LOG2_BUNDLE_ALIGNMENT_IN_BYTES \
231 TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES
232
233 /* 64-bit pattern for a { bpt ; nop } bundle. */
234 #define TILEGX_BPT_BUNDLE 0x286a44ae51485000ULL
235
236 typedef enum
237 {
238 TILEGX_OP_TYPE_REGISTER,
239 TILEGX_OP_TYPE_IMMEDIATE,
240 TILEGX_OP_TYPE_ADDRESS,
241 TILEGX_OP_TYPE_SPR
242 } tilegx_operand_type;
243
244 struct tilegx_operand
245 {
246 /* Is this operand a register, immediate or address? */
247 tilegx_operand_type type;
248
249 /* The default relocation type for this operand. */
250 signed int default_reloc : 16;
251
252 /* How many bits is this value? (used for range checking) */
253 unsigned int num_bits : 5;
254
255 /* Is the value signed? (used for range checking) */
256 unsigned int is_signed : 1;
257
258 /* Is this operand a source register? */
259 unsigned int is_src_reg : 1;
260
261 /* Is this operand written? (i.e. is it a destination register) */
262 unsigned int is_dest_reg : 1;
263
264 /* Is this operand PC-relative? */
265 unsigned int is_pc_relative : 1;
266
267 /* By how many bits do we right shift the value before inserting? */
268 unsigned int rightshift : 2;
269
270 /* Return the bits for this operand to be ORed into an existing bundle. */
271 tilegx_bundle_bits (*insert) (int op);
272
273 /* Extract this operand and return it. */
274 unsigned int (*extract) (tilegx_bundle_bits bundle);
275 };
276
277 typedef enum
278 {
279 TILEGX_OPC_BPT,
280 TILEGX_OPC_INFO,
281 TILEGX_OPC_INFOL,
282 TILEGX_OPC_LD4S_TLS,
283 TILEGX_OPC_LD_TLS,
284 TILEGX_OPC_MOVE,
285 TILEGX_OPC_MOVEI,
286 TILEGX_OPC_MOVELI,
287 TILEGX_OPC_PREFETCH,
288 TILEGX_OPC_PREFETCH_ADD_L1,
289 TILEGX_OPC_PREFETCH_ADD_L1_FAULT,
290 TILEGX_OPC_PREFETCH_ADD_L2,
291 TILEGX_OPC_PREFETCH_ADD_L2_FAULT,
292 TILEGX_OPC_PREFETCH_ADD_L3,
293 TILEGX_OPC_PREFETCH_ADD_L3_FAULT,
294 TILEGX_OPC_PREFETCH_L1,
295 TILEGX_OPC_PREFETCH_L1_FAULT,
296 TILEGX_OPC_PREFETCH_L2,
297 TILEGX_OPC_PREFETCH_L2_FAULT,
298 TILEGX_OPC_PREFETCH_L3,
299 TILEGX_OPC_PREFETCH_L3_FAULT,
300 TILEGX_OPC_RAISE,
301 TILEGX_OPC_ADD,
302 TILEGX_OPC_ADDI,
303 TILEGX_OPC_ADDLI,
304 TILEGX_OPC_ADDX,
305 TILEGX_OPC_ADDXI,
306 TILEGX_OPC_ADDXLI,
307 TILEGX_OPC_ADDXSC,
308 TILEGX_OPC_AND,
309 TILEGX_OPC_ANDI,
310 TILEGX_OPC_BEQZ,
311 TILEGX_OPC_BEQZT,
312 TILEGX_OPC_BFEXTS,
313 TILEGX_OPC_BFEXTU,
314 TILEGX_OPC_BFINS,
315 TILEGX_OPC_BGEZ,
316 TILEGX_OPC_BGEZT,
317 TILEGX_OPC_BGTZ,
318 TILEGX_OPC_BGTZT,
319 TILEGX_OPC_BLBC,
320 TILEGX_OPC_BLBCT,
321 TILEGX_OPC_BLBS,
322 TILEGX_OPC_BLBST,
323 TILEGX_OPC_BLEZ,
324 TILEGX_OPC_BLEZT,
325 TILEGX_OPC_BLTZ,
326 TILEGX_OPC_BLTZT,
327 TILEGX_OPC_BNEZ,
328 TILEGX_OPC_BNEZT,
329 TILEGX_OPC_CLZ,
330 TILEGX_OPC_CMOVEQZ,
331 TILEGX_OPC_CMOVNEZ,
332 TILEGX_OPC_CMPEQ,
333 TILEGX_OPC_CMPEQI,
334 TILEGX_OPC_CMPEXCH,
335 TILEGX_OPC_CMPEXCH4,
336 TILEGX_OPC_CMPLES,
337 TILEGX_OPC_CMPLEU,
338 TILEGX_OPC_CMPLTS,
339 TILEGX_OPC_CMPLTSI,
340 TILEGX_OPC_CMPLTU,
341 TILEGX_OPC_CMPLTUI,
342 TILEGX_OPC_CMPNE,
343 TILEGX_OPC_CMUL,
344 TILEGX_OPC_CMULA,
345 TILEGX_OPC_CMULAF,
346 TILEGX_OPC_CMULF,
347 TILEGX_OPC_CMULFR,
348 TILEGX_OPC_CMULH,
349 TILEGX_OPC_CMULHR,
350 TILEGX_OPC_CRC32_32,
351 TILEGX_OPC_CRC32_8,
352 TILEGX_OPC_CTZ,
353 TILEGX_OPC_DBLALIGN,
354 TILEGX_OPC_DBLALIGN2,
355 TILEGX_OPC_DBLALIGN4,
356 TILEGX_OPC_DBLALIGN6,
357 TILEGX_OPC_DRAIN,
358 TILEGX_OPC_DTLBPR,
359 TILEGX_OPC_EXCH,
360 TILEGX_OPC_EXCH4,
361 TILEGX_OPC_FDOUBLE_ADD_FLAGS,
362 TILEGX_OPC_FDOUBLE_ADDSUB,
363 TILEGX_OPC_FDOUBLE_MUL_FLAGS,
364 TILEGX_OPC_FDOUBLE_PACK1,
365 TILEGX_OPC_FDOUBLE_PACK2,
366 TILEGX_OPC_FDOUBLE_SUB_FLAGS,
367 TILEGX_OPC_FDOUBLE_UNPACK_MAX,
368 TILEGX_OPC_FDOUBLE_UNPACK_MIN,
369 TILEGX_OPC_FETCHADD,
370 TILEGX_OPC_FETCHADD4,
371 TILEGX_OPC_FETCHADDGEZ,
372 TILEGX_OPC_FETCHADDGEZ4,
373 TILEGX_OPC_FETCHAND,
374 TILEGX_OPC_FETCHAND4,
375 TILEGX_OPC_FETCHOR,
376 TILEGX_OPC_FETCHOR4,
377 TILEGX_OPC_FINV,
378 TILEGX_OPC_FLUSH,
379 TILEGX_OPC_FLUSHWB,
380 TILEGX_OPC_FNOP,
381 TILEGX_OPC_FSINGLE_ADD1,
382 TILEGX_OPC_FSINGLE_ADDSUB2,
383 TILEGX_OPC_FSINGLE_MUL1,
384 TILEGX_OPC_FSINGLE_MUL2,
385 TILEGX_OPC_FSINGLE_PACK1,
386 TILEGX_OPC_FSINGLE_PACK2,
387 TILEGX_OPC_FSINGLE_SUB1,
388 TILEGX_OPC_ICOH,
389 TILEGX_OPC_ILL,
390 TILEGX_OPC_INV,
391 TILEGX_OPC_IRET,
392 TILEGX_OPC_J,
393 TILEGX_OPC_JAL,
394 TILEGX_OPC_JALR,
395 TILEGX_OPC_JALRP,
396 TILEGX_OPC_JR,
397 TILEGX_OPC_JRP,
398 TILEGX_OPC_LD,
399 TILEGX_OPC_LD1S,
400 TILEGX_OPC_LD1S_ADD,
401 TILEGX_OPC_LD1U,
402 TILEGX_OPC_LD1U_ADD,
403 TILEGX_OPC_LD2S,
404 TILEGX_OPC_LD2S_ADD,
405 TILEGX_OPC_LD2U,
406 TILEGX_OPC_LD2U_ADD,
407 TILEGX_OPC_LD4S,
408 TILEGX_OPC_LD4S_ADD,
409 TILEGX_OPC_LD4U,
410 TILEGX_OPC_LD4U_ADD,
411 TILEGX_OPC_LD_ADD,
412 TILEGX_OPC_LDNA,
413 TILEGX_OPC_LDNA_ADD,
414 TILEGX_OPC_LDNT,
415 TILEGX_OPC_LDNT1S,
416 TILEGX_OPC_LDNT1S_ADD,
417 TILEGX_OPC_LDNT1U,
418 TILEGX_OPC_LDNT1U_ADD,
419 TILEGX_OPC_LDNT2S,
420 TILEGX_OPC_LDNT2S_ADD,
421 TILEGX_OPC_LDNT2U,
422 TILEGX_OPC_LDNT2U_ADD,
423 TILEGX_OPC_LDNT4S,
424 TILEGX_OPC_LDNT4S_ADD,
425 TILEGX_OPC_LDNT4U,
426 TILEGX_OPC_LDNT4U_ADD,
427 TILEGX_OPC_LDNT_ADD,
428 TILEGX_OPC_LNK,
429 TILEGX_OPC_MF,
430 TILEGX_OPC_MFSPR,
431 TILEGX_OPC_MM,
432 TILEGX_OPC_MNZ,
433 TILEGX_OPC_MTSPR,
434 TILEGX_OPC_MUL_HS_HS,
435 TILEGX_OPC_MUL_HS_HU,
436 TILEGX_OPC_MUL_HS_LS,
437 TILEGX_OPC_MUL_HS_LU,
438 TILEGX_OPC_MUL_HU_HU,
439 TILEGX_OPC_MUL_HU_LS,
440 TILEGX_OPC_MUL_HU_LU,
441 TILEGX_OPC_MUL_LS_LS,
442 TILEGX_OPC_MUL_LS_LU,
443 TILEGX_OPC_MUL_LU_LU,
444 TILEGX_OPC_MULA_HS_HS,
445 TILEGX_OPC_MULA_HS_HU,
446 TILEGX_OPC_MULA_HS_LS,
447 TILEGX_OPC_MULA_HS_LU,
448 TILEGX_OPC_MULA_HU_HU,
449 TILEGX_OPC_MULA_HU_LS,
450 TILEGX_OPC_MULA_HU_LU,
451 TILEGX_OPC_MULA_LS_LS,
452 TILEGX_OPC_MULA_LS_LU,
453 TILEGX_OPC_MULA_LU_LU,
454 TILEGX_OPC_MULAX,
455 TILEGX_OPC_MULX,
456 TILEGX_OPC_MZ,
457 TILEGX_OPC_NAP,
458 TILEGX_OPC_NOP,
459 TILEGX_OPC_NOR,
460 TILEGX_OPC_OR,
461 TILEGX_OPC_ORI,
462 TILEGX_OPC_PCNT,
463 TILEGX_OPC_REVBITS,
464 TILEGX_OPC_REVBYTES,
465 TILEGX_OPC_ROTL,
466 TILEGX_OPC_ROTLI,
467 TILEGX_OPC_SHL,
468 TILEGX_OPC_SHL16INSLI,
469 TILEGX_OPC_SHL1ADD,
470 TILEGX_OPC_SHL1ADDX,
471 TILEGX_OPC_SHL2ADD,
472 TILEGX_OPC_SHL2ADDX,
473 TILEGX_OPC_SHL3ADD,
474 TILEGX_OPC_SHL3ADDX,
475 TILEGX_OPC_SHLI,
476 TILEGX_OPC_SHLX,
477 TILEGX_OPC_SHLXI,
478 TILEGX_OPC_SHRS,
479 TILEGX_OPC_SHRSI,
480 TILEGX_OPC_SHRU,
481 TILEGX_OPC_SHRUI,
482 TILEGX_OPC_SHRUX,
483 TILEGX_OPC_SHRUXI,
484 TILEGX_OPC_SHUFFLEBYTES,
485 TILEGX_OPC_ST,
486 TILEGX_OPC_ST1,
487 TILEGX_OPC_ST1_ADD,
488 TILEGX_OPC_ST2,
489 TILEGX_OPC_ST2_ADD,
490 TILEGX_OPC_ST4,
491 TILEGX_OPC_ST4_ADD,
492 TILEGX_OPC_ST_ADD,
493 TILEGX_OPC_STNT,
494 TILEGX_OPC_STNT1,
495 TILEGX_OPC_STNT1_ADD,
496 TILEGX_OPC_STNT2,
497 TILEGX_OPC_STNT2_ADD,
498 TILEGX_OPC_STNT4,
499 TILEGX_OPC_STNT4_ADD,
500 TILEGX_OPC_STNT_ADD,
501 TILEGX_OPC_SUB,
502 TILEGX_OPC_SUBX,
503 TILEGX_OPC_SUBXSC,
504 TILEGX_OPC_SWINT0,
505 TILEGX_OPC_SWINT1,
506 TILEGX_OPC_SWINT2,
507 TILEGX_OPC_SWINT3,
508 TILEGX_OPC_TBLIDXB0,
509 TILEGX_OPC_TBLIDXB1,
510 TILEGX_OPC_TBLIDXB2,
511 TILEGX_OPC_TBLIDXB3,
512 TILEGX_OPC_V1ADD,
513 TILEGX_OPC_V1ADDI,
514 TILEGX_OPC_V1ADDUC,
515 TILEGX_OPC_V1ADIFFU,
516 TILEGX_OPC_V1AVGU,
517 TILEGX_OPC_V1CMPEQ,
518 TILEGX_OPC_V1CMPEQI,
519 TILEGX_OPC_V1CMPLES,
520 TILEGX_OPC_V1CMPLEU,
521 TILEGX_OPC_V1CMPLTS,
522 TILEGX_OPC_V1CMPLTSI,
523 TILEGX_OPC_V1CMPLTU,
524 TILEGX_OPC_V1CMPLTUI,
525 TILEGX_OPC_V1CMPNE,
526 TILEGX_OPC_V1DDOTPU,
527 TILEGX_OPC_V1DDOTPUA,
528 TILEGX_OPC_V1DDOTPUS,
529 TILEGX_OPC_V1DDOTPUSA,
530 TILEGX_OPC_V1DOTP,
531 TILEGX_OPC_V1DOTPA,
532 TILEGX_OPC_V1DOTPU,
533 TILEGX_OPC_V1DOTPUA,
534 TILEGX_OPC_V1DOTPUS,
535 TILEGX_OPC_V1DOTPUSA,
536 TILEGX_OPC_V1INT_H,
537 TILEGX_OPC_V1INT_L,
538 TILEGX_OPC_V1MAXU,
539 TILEGX_OPC_V1MAXUI,
540 TILEGX_OPC_V1MINU,
541 TILEGX_OPC_V1MINUI,
542 TILEGX_OPC_V1MNZ,
543 TILEGX_OPC_V1MULTU,
544 TILEGX_OPC_V1MULU,
545 TILEGX_OPC_V1MULUS,
546 TILEGX_OPC_V1MZ,
547 TILEGX_OPC_V1SADAU,
548 TILEGX_OPC_V1SADU,
549 TILEGX_OPC_V1SHL,
550 TILEGX_OPC_V1SHLI,
551 TILEGX_OPC_V1SHRS,
552 TILEGX_OPC_V1SHRSI,
553 TILEGX_OPC_V1SHRU,
554 TILEGX_OPC_V1SHRUI,
555 TILEGX_OPC_V1SUB,
556 TILEGX_OPC_V1SUBUC,
557 TILEGX_OPC_V2ADD,
558 TILEGX_OPC_V2ADDI,
559 TILEGX_OPC_V2ADDSC,
560 TILEGX_OPC_V2ADIFFS,
561 TILEGX_OPC_V2AVGS,
562 TILEGX_OPC_V2CMPEQ,
563 TILEGX_OPC_V2CMPEQI,
564 TILEGX_OPC_V2CMPLES,
565 TILEGX_OPC_V2CMPLEU,
566 TILEGX_OPC_V2CMPLTS,
567 TILEGX_OPC_V2CMPLTSI,
568 TILEGX_OPC_V2CMPLTU,
569 TILEGX_OPC_V2CMPLTUI,
570 TILEGX_OPC_V2CMPNE,
571 TILEGX_OPC_V2DOTP,
572 TILEGX_OPC_V2DOTPA,
573 TILEGX_OPC_V2INT_H,
574 TILEGX_OPC_V2INT_L,
575 TILEGX_OPC_V2MAXS,
576 TILEGX_OPC_V2MAXSI,
577 TILEGX_OPC_V2MINS,
578 TILEGX_OPC_V2MINSI,
579 TILEGX_OPC_V2MNZ,
580 TILEGX_OPC_V2MULFSC,
581 TILEGX_OPC_V2MULS,
582 TILEGX_OPC_V2MULTS,
583 TILEGX_OPC_V2MZ,
584 TILEGX_OPC_V2PACKH,
585 TILEGX_OPC_V2PACKL,
586 TILEGX_OPC_V2PACKUC,
587 TILEGX_OPC_V2SADAS,
588 TILEGX_OPC_V2SADAU,
589 TILEGX_OPC_V2SADS,
590 TILEGX_OPC_V2SADU,
591 TILEGX_OPC_V2SHL,
592 TILEGX_OPC_V2SHLI,
593 TILEGX_OPC_V2SHLSC,
594 TILEGX_OPC_V2SHRS,
595 TILEGX_OPC_V2SHRSI,
596 TILEGX_OPC_V2SHRU,
597 TILEGX_OPC_V2SHRUI,
598 TILEGX_OPC_V2SUB,
599 TILEGX_OPC_V2SUBSC,
600 TILEGX_OPC_V4ADD,
601 TILEGX_OPC_V4ADDSC,
602 TILEGX_OPC_V4INT_H,
603 TILEGX_OPC_V4INT_L,
604 TILEGX_OPC_V4PACKSC,
605 TILEGX_OPC_V4SHL,
606 TILEGX_OPC_V4SHLSC,
607 TILEGX_OPC_V4SHRS,
608 TILEGX_OPC_V4SHRU,
609 TILEGX_OPC_V4SUB,
610 TILEGX_OPC_V4SUBSC,
611 TILEGX_OPC_WH64,
612 TILEGX_OPC_XOR,
613 TILEGX_OPC_XORI,
614 TILEGX_OPC_NONE
615 } tilegx_mnemonic;
616
617 enum
618 {
619 TILEGX_MAX_OPERANDS = 4 /* bfexts */
620 };
621
622 struct tilegx_opcode
623 {
624 /* The opcode mnemonic, e.g. "add" */
625 const char *name;
626
627 /* The enum value for this mnemonic. */
628 tilegx_mnemonic mnemonic;
629
630 /* A bit mask of which of the five pipes this instruction
631 is compatible with:
632 X0 0x01
633 X1 0x02
634 Y0 0x04
635 Y1 0x08
636 Y2 0x10 */
637 unsigned char pipes;
638
639 /* How many operands are there? */
640 unsigned char num_operands;
641
642 /* Which register does this write implicitly, or TREG_ZERO if none? */
643 unsigned char implicitly_written_register;
644
645 /* Can this be bundled with other instructions (almost always true). */
646 unsigned char can_bundle;
647
648 /* The description of the operands. Each of these is an
649 * index into the tilegx_operands[] table. */
650 unsigned char operands[TILEGX_NUM_PIPELINE_ENCODINGS][TILEGX_MAX_OPERANDS];
651
652 /* A mask of which bits have predefined values for each pipeline.
653 * This is useful for disassembly. */
654 tilegx_bundle_bits fixed_bit_masks[TILEGX_NUM_PIPELINE_ENCODINGS];
655
656 /* For each bit set in fixed_bit_masks, what the value is for this
657 * instruction. */
658 tilegx_bundle_bits fixed_bit_values[TILEGX_NUM_PIPELINE_ENCODINGS];
659 };
660
661 /* Used for non-textual disassembly into structs. */
662 struct tilegx_decoded_instruction
663 {
664 const struct tilegx_opcode *opcode;
665 const struct tilegx_operand *operands[TILEGX_MAX_OPERANDS];
666 long long operand_values[TILEGX_MAX_OPERANDS];
667 };
668
669 enum
670 {
671 ADDI_IMM8_OPCODE_X0 = 1,
672 ADDI_IMM8_OPCODE_X1 = 1,
673 ADDI_OPCODE_Y0 = 0,
674 ADDI_OPCODE_Y1 = 1,
675 ADDLI_OPCODE_X0 = 1,
676 ADDLI_OPCODE_X1 = 0,
677 ADDXI_IMM8_OPCODE_X0 = 2,
678 ADDXI_IMM8_OPCODE_X1 = 2,
679 ADDXI_OPCODE_Y0 = 1,
680 ADDXI_OPCODE_Y1 = 2,
681 ADDXLI_OPCODE_X0 = 2,
682 ADDXLI_OPCODE_X1 = 1,
683 ADDXSC_RRR_0_OPCODE_X0 = 1,
684 ADDXSC_RRR_0_OPCODE_X1 = 1,
685 ADDX_RRR_0_OPCODE_X0 = 2,
686 ADDX_RRR_0_OPCODE_X1 = 2,
687 ADDX_RRR_0_OPCODE_Y0 = 0,
688 ADDX_SPECIAL_0_OPCODE_Y1 = 0,
689 ADD_RRR_0_OPCODE_X0 = 3,
690 ADD_RRR_0_OPCODE_X1 = 3,
691 ADD_RRR_0_OPCODE_Y0 = 1,
692 ADD_SPECIAL_0_OPCODE_Y1 = 1,
693 ANDI_IMM8_OPCODE_X0 = 3,
694 ANDI_IMM8_OPCODE_X1 = 3,
695 ANDI_OPCODE_Y0 = 2,
696 ANDI_OPCODE_Y1 = 3,
697 AND_RRR_0_OPCODE_X0 = 4,
698 AND_RRR_0_OPCODE_X1 = 4,
699 AND_RRR_5_OPCODE_Y0 = 0,
700 AND_RRR_5_OPCODE_Y1 = 0,
701 BEQZT_BRANCH_OPCODE_X1 = 16,
702 BEQZ_BRANCH_OPCODE_X1 = 17,
703 BFEXTS_BF_OPCODE_X0 = 4,
704 BFEXTU_BF_OPCODE_X0 = 5,
705 BFINS_BF_OPCODE_X0 = 6,
706 BF_OPCODE_X0 = 3,
707 BGEZT_BRANCH_OPCODE_X1 = 18,
708 BGEZ_BRANCH_OPCODE_X1 = 19,
709 BGTZT_BRANCH_OPCODE_X1 = 20,
710 BGTZ_BRANCH_OPCODE_X1 = 21,
711 BLBCT_BRANCH_OPCODE_X1 = 22,
712 BLBC_BRANCH_OPCODE_X1 = 23,
713 BLBST_BRANCH_OPCODE_X1 = 24,
714 BLBS_BRANCH_OPCODE_X1 = 25,
715 BLEZT_BRANCH_OPCODE_X1 = 26,
716 BLEZ_BRANCH_OPCODE_X1 = 27,
717 BLTZT_BRANCH_OPCODE_X1 = 28,
718 BLTZ_BRANCH_OPCODE_X1 = 29,
719 BNEZT_BRANCH_OPCODE_X1 = 30,
720 BNEZ_BRANCH_OPCODE_X1 = 31,
721 BRANCH_OPCODE_X1 = 2,
722 CMOVEQZ_RRR_0_OPCODE_X0 = 5,
723 CMOVEQZ_RRR_4_OPCODE_Y0 = 0,
724 CMOVNEZ_RRR_0_OPCODE_X0 = 6,
725 CMOVNEZ_RRR_4_OPCODE_Y0 = 1,
726 CMPEQI_IMM8_OPCODE_X0 = 4,
727 CMPEQI_IMM8_OPCODE_X1 = 4,
728 CMPEQI_OPCODE_Y0 = 3,
729 CMPEQI_OPCODE_Y1 = 4,
730 CMPEQ_RRR_0_OPCODE_X0 = 7,
731 CMPEQ_RRR_0_OPCODE_X1 = 5,
732 CMPEQ_RRR_3_OPCODE_Y0 = 0,
733 CMPEQ_RRR_3_OPCODE_Y1 = 2,
734 CMPEXCH4_RRR_0_OPCODE_X1 = 6,
735 CMPEXCH_RRR_0_OPCODE_X1 = 7,
736 CMPLES_RRR_0_OPCODE_X0 = 8,
737 CMPLES_RRR_0_OPCODE_X1 = 8,
738 CMPLES_RRR_2_OPCODE_Y0 = 0,
739 CMPLES_RRR_2_OPCODE_Y1 = 0,
740 CMPLEU_RRR_0_OPCODE_X0 = 9,
741 CMPLEU_RRR_0_OPCODE_X1 = 9,
742 CMPLEU_RRR_2_OPCODE_Y0 = 1,
743 CMPLEU_RRR_2_OPCODE_Y1 = 1,
744 CMPLTSI_IMM8_OPCODE_X0 = 5,
745 CMPLTSI_IMM8_OPCODE_X1 = 5,
746 CMPLTSI_OPCODE_Y0 = 4,
747 CMPLTSI_OPCODE_Y1 = 5,
748 CMPLTS_RRR_0_OPCODE_X0 = 10,
749 CMPLTS_RRR_0_OPCODE_X1 = 10,
750 CMPLTS_RRR_2_OPCODE_Y0 = 2,
751 CMPLTS_RRR_2_OPCODE_Y1 = 2,
752 CMPLTUI_IMM8_OPCODE_X0 = 6,
753 CMPLTUI_IMM8_OPCODE_X1 = 6,
754 CMPLTU_RRR_0_OPCODE_X0 = 11,
755 CMPLTU_RRR_0_OPCODE_X1 = 11,
756 CMPLTU_RRR_2_OPCODE_Y0 = 3,
757 CMPLTU_RRR_2_OPCODE_Y1 = 3,
758 CMPNE_RRR_0_OPCODE_X0 = 12,
759 CMPNE_RRR_0_OPCODE_X1 = 12,
760 CMPNE_RRR_3_OPCODE_Y0 = 1,
761 CMPNE_RRR_3_OPCODE_Y1 = 3,
762 CMULAF_RRR_0_OPCODE_X0 = 13,
763 CMULA_RRR_0_OPCODE_X0 = 14,
764 CMULFR_RRR_0_OPCODE_X0 = 15,
765 CMULF_RRR_0_OPCODE_X0 = 16,
766 CMULHR_RRR_0_OPCODE_X0 = 17,
767 CMULH_RRR_0_OPCODE_X0 = 18,
768 CMUL_RRR_0_OPCODE_X0 = 19,
769 CNTLZ_UNARY_OPCODE_X0 = 1,
770 CNTLZ_UNARY_OPCODE_Y0 = 1,
771 CNTTZ_UNARY_OPCODE_X0 = 2,
772 CNTTZ_UNARY_OPCODE_Y0 = 2,
773 CRC32_32_RRR_0_OPCODE_X0 = 20,
774 CRC32_8_RRR_0_OPCODE_X0 = 21,
775 DBLALIGN2_RRR_0_OPCODE_X0 = 22,
776 DBLALIGN2_RRR_0_OPCODE_X1 = 13,
777 DBLALIGN4_RRR_0_OPCODE_X0 = 23,
778 DBLALIGN4_RRR_0_OPCODE_X1 = 14,
779 DBLALIGN6_RRR_0_OPCODE_X0 = 24,
780 DBLALIGN6_RRR_0_OPCODE_X1 = 15,
781 DBLALIGN_RRR_0_OPCODE_X0 = 25,
782 DRAIN_UNARY_OPCODE_X1 = 1,
783 DTLBPR_UNARY_OPCODE_X1 = 2,
784 EXCH4_RRR_0_OPCODE_X1 = 16,
785 EXCH_RRR_0_OPCODE_X1 = 17,
786 FDOUBLE_ADDSUB_RRR_0_OPCODE_X0 = 26,
787 FDOUBLE_ADD_FLAGS_RRR_0_OPCODE_X0 = 27,
788 FDOUBLE_MUL_FLAGS_RRR_0_OPCODE_X0 = 28,
789 FDOUBLE_PACK1_RRR_0_OPCODE_X0 = 29,
790 FDOUBLE_PACK2_RRR_0_OPCODE_X0 = 30,
791 FDOUBLE_SUB_FLAGS_RRR_0_OPCODE_X0 = 31,
792 FDOUBLE_UNPACK_MAX_RRR_0_OPCODE_X0 = 32,
793 FDOUBLE_UNPACK_MIN_RRR_0_OPCODE_X0 = 33,
794 FETCHADD4_RRR_0_OPCODE_X1 = 18,
795 FETCHADDGEZ4_RRR_0_OPCODE_X1 = 19,
796 FETCHADDGEZ_RRR_0_OPCODE_X1 = 20,
797 FETCHADD_RRR_0_OPCODE_X1 = 21,
798 FETCHAND4_RRR_0_OPCODE_X1 = 22,
799 FETCHAND_RRR_0_OPCODE_X1 = 23,
800 FETCHOR4_RRR_0_OPCODE_X1 = 24,
801 FETCHOR_RRR_0_OPCODE_X1 = 25,
802 FINV_UNARY_OPCODE_X1 = 3,
803 FLUSHWB_UNARY_OPCODE_X1 = 4,
804 FLUSH_UNARY_OPCODE_X1 = 5,
805 FNOP_UNARY_OPCODE_X0 = 3,
806 FNOP_UNARY_OPCODE_X1 = 6,
807 FNOP_UNARY_OPCODE_Y0 = 3,
808 FNOP_UNARY_OPCODE_Y1 = 8,
809 FSINGLE_ADD1_RRR_0_OPCODE_X0 = 34,
810 FSINGLE_ADDSUB2_RRR_0_OPCODE_X0 = 35,
811 FSINGLE_MUL1_RRR_0_OPCODE_X0 = 36,
812 FSINGLE_MUL2_RRR_0_OPCODE_X0 = 37,
813 FSINGLE_PACK1_UNARY_OPCODE_X0 = 4,
814 FSINGLE_PACK1_UNARY_OPCODE_Y0 = 4,
815 FSINGLE_PACK2_RRR_0_OPCODE_X0 = 38,
816 FSINGLE_SUB1_RRR_0_OPCODE_X0 = 39,
817 ICOH_UNARY_OPCODE_X1 = 7,
818 ILL_UNARY_OPCODE_X1 = 8,
819 ILL_UNARY_OPCODE_Y1 = 9,
820 IMM8_OPCODE_X0 = 4,
821 IMM8_OPCODE_X1 = 3,
822 INV_UNARY_OPCODE_X1 = 9,
823 IRET_UNARY_OPCODE_X1 = 10,
824 JALRP_UNARY_OPCODE_X1 = 11,
825 JALRP_UNARY_OPCODE_Y1 = 10,
826 JALR_UNARY_OPCODE_X1 = 12,
827 JALR_UNARY_OPCODE_Y1 = 11,
828 JAL_JUMP_OPCODE_X1 = 0,
829 JRP_UNARY_OPCODE_X1 = 13,
830 JRP_UNARY_OPCODE_Y1 = 12,
831 JR_UNARY_OPCODE_X1 = 14,
832 JR_UNARY_OPCODE_Y1 = 13,
833 JUMP_OPCODE_X1 = 4,
834 J_JUMP_OPCODE_X1 = 1,
835 LD1S_ADD_IMM8_OPCODE_X1 = 7,
836 LD1S_OPCODE_Y2 = 0,
837 LD1S_UNARY_OPCODE_X1 = 15,
838 LD1U_ADD_IMM8_OPCODE_X1 = 8,
839 LD1U_OPCODE_Y2 = 1,
840 LD1U_UNARY_OPCODE_X1 = 16,
841 LD2S_ADD_IMM8_OPCODE_X1 = 9,
842 LD2S_OPCODE_Y2 = 2,
843 LD2S_UNARY_OPCODE_X1 = 17,
844 LD2U_ADD_IMM8_OPCODE_X1 = 10,
845 LD2U_OPCODE_Y2 = 3,
846 LD2U_UNARY_OPCODE_X1 = 18,
847 LD4S_ADD_IMM8_OPCODE_X1 = 11,
848 LD4S_OPCODE_Y2 = 1,
849 LD4S_UNARY_OPCODE_X1 = 19,
850 LD4U_ADD_IMM8_OPCODE_X1 = 12,
851 LD4U_OPCODE_Y2 = 2,
852 LD4U_UNARY_OPCODE_X1 = 20,
853 LDNA_UNARY_OPCODE_X1 = 21,
854 LDNT1S_ADD_IMM8_OPCODE_X1 = 13,
855 LDNT1S_UNARY_OPCODE_X1 = 22,
856 LDNT1U_ADD_IMM8_OPCODE_X1 = 14,
857 LDNT1U_UNARY_OPCODE_X1 = 23,
858 LDNT2S_ADD_IMM8_OPCODE_X1 = 15,
859 LDNT2S_UNARY_OPCODE_X1 = 24,
860 LDNT2U_ADD_IMM8_OPCODE_X1 = 16,
861 LDNT2U_UNARY_OPCODE_X1 = 25,
862 LDNT4S_ADD_IMM8_OPCODE_X1 = 17,
863 LDNT4S_UNARY_OPCODE_X1 = 26,
864 LDNT4U_ADD_IMM8_OPCODE_X1 = 18,
865 LDNT4U_UNARY_OPCODE_X1 = 27,
866 LDNT_ADD_IMM8_OPCODE_X1 = 19,
867 LDNT_UNARY_OPCODE_X1 = 28,
868 LD_ADD_IMM8_OPCODE_X1 = 20,
869 LD_OPCODE_Y2 = 3,
870 LD_UNARY_OPCODE_X1 = 29,
871 LNK_UNARY_OPCODE_X1 = 30,
872 LNK_UNARY_OPCODE_Y1 = 14,
873 LWNA_ADD_IMM8_OPCODE_X1 = 21,
874 MFSPR_IMM8_OPCODE_X1 = 22,
875 MF_UNARY_OPCODE_X1 = 31,
876 MM_BF_OPCODE_X0 = 7,
877 MNZ_RRR_0_OPCODE_X0 = 40,
878 MNZ_RRR_0_OPCODE_X1 = 26,
879 MNZ_RRR_4_OPCODE_Y0 = 2,
880 MNZ_RRR_4_OPCODE_Y1 = 2,
881 MODE_OPCODE_YA2 = 1,
882 MODE_OPCODE_YB2 = 2,
883 MODE_OPCODE_YC2 = 3,
884 MTSPR_IMM8_OPCODE_X1 = 23,
885 MULAX_RRR_0_OPCODE_X0 = 41,
886 MULAX_RRR_3_OPCODE_Y0 = 2,
887 MULA_HS_HS_RRR_0_OPCODE_X0 = 42,
888 MULA_HS_HS_RRR_9_OPCODE_Y0 = 0,
889 MULA_HS_HU_RRR_0_OPCODE_X0 = 43,
890 MULA_HS_LS_RRR_0_OPCODE_X0 = 44,
891 MULA_HS_LU_RRR_0_OPCODE_X0 = 45,
892 MULA_HU_HU_RRR_0_OPCODE_X0 = 46,
893 MULA_HU_HU_RRR_9_OPCODE_Y0 = 1,
894 MULA_HU_LS_RRR_0_OPCODE_X0 = 47,
895 MULA_HU_LU_RRR_0_OPCODE_X0 = 48,
896 MULA_LS_LS_RRR_0_OPCODE_X0 = 49,
897 MULA_LS_LS_RRR_9_OPCODE_Y0 = 2,
898 MULA_LS_LU_RRR_0_OPCODE_X0 = 50,
899 MULA_LU_LU_RRR_0_OPCODE_X0 = 51,
900 MULA_LU_LU_RRR_9_OPCODE_Y0 = 3,
901 MULX_RRR_0_OPCODE_X0 = 52,
902 MULX_RRR_3_OPCODE_Y0 = 3,
903 MUL_HS_HS_RRR_0_OPCODE_X0 = 53,
904 MUL_HS_HS_RRR_8_OPCODE_Y0 = 0,
905 MUL_HS_HU_RRR_0_OPCODE_X0 = 54,
906 MUL_HS_LS_RRR_0_OPCODE_X0 = 55,
907 MUL_HS_LU_RRR_0_OPCODE_X0 = 56,
908 MUL_HU_HU_RRR_0_OPCODE_X0 = 57,
909 MUL_HU_HU_RRR_8_OPCODE_Y0 = 1,
910 MUL_HU_LS_RRR_0_OPCODE_X0 = 58,
911 MUL_HU_LU_RRR_0_OPCODE_X0 = 59,
912 MUL_LS_LS_RRR_0_OPCODE_X0 = 60,
913 MUL_LS_LS_RRR_8_OPCODE_Y0 = 2,
914 MUL_LS_LU_RRR_0_OPCODE_X0 = 61,
915 MUL_LU_LU_RRR_0_OPCODE_X0 = 62,
916 MUL_LU_LU_RRR_8_OPCODE_Y0 = 3,
917 MZ_RRR_0_OPCODE_X0 = 63,
918 MZ_RRR_0_OPCODE_X1 = 27,
919 MZ_RRR_4_OPCODE_Y0 = 3,
920 MZ_RRR_4_OPCODE_Y1 = 3,
921 NAP_UNARY_OPCODE_X1 = 32,
922 NOP_UNARY_OPCODE_X0 = 5,
923 NOP_UNARY_OPCODE_X1 = 33,
924 NOP_UNARY_OPCODE_Y0 = 5,
925 NOP_UNARY_OPCODE_Y1 = 15,
926 NOR_RRR_0_OPCODE_X0 = 64,
927 NOR_RRR_0_OPCODE_X1 = 28,
928 NOR_RRR_5_OPCODE_Y0 = 1,
929 NOR_RRR_5_OPCODE_Y1 = 1,
930 ORI_IMM8_OPCODE_X0 = 7,
931 ORI_IMM8_OPCODE_X1 = 24,
932 OR_RRR_0_OPCODE_X0 = 65,
933 OR_RRR_0_OPCODE_X1 = 29,
934 OR_RRR_5_OPCODE_Y0 = 2,
935 OR_RRR_5_OPCODE_Y1 = 2,
936 PCNT_UNARY_OPCODE_X0 = 6,
937 PCNT_UNARY_OPCODE_Y0 = 6,
938 REVBITS_UNARY_OPCODE_X0 = 7,
939 REVBITS_UNARY_OPCODE_Y0 = 7,
940 REVBYTES_UNARY_OPCODE_X0 = 8,
941 REVBYTES_UNARY_OPCODE_Y0 = 8,
942 ROTLI_SHIFT_OPCODE_X0 = 1,
943 ROTLI_SHIFT_OPCODE_X1 = 1,
944 ROTLI_SHIFT_OPCODE_Y0 = 0,
945 ROTLI_SHIFT_OPCODE_Y1 = 0,
946 ROTL_RRR_0_OPCODE_X0 = 66,
947 ROTL_RRR_0_OPCODE_X1 = 30,
948 ROTL_RRR_6_OPCODE_Y0 = 0,
949 ROTL_RRR_6_OPCODE_Y1 = 0,
950 RRR_0_OPCODE_X0 = 5,
951 RRR_0_OPCODE_X1 = 5,
952 RRR_0_OPCODE_Y0 = 5,
953 RRR_0_OPCODE_Y1 = 6,
954 RRR_1_OPCODE_Y0 = 6,
955 RRR_1_OPCODE_Y1 = 7,
956 RRR_2_OPCODE_Y0 = 7,
957 RRR_2_OPCODE_Y1 = 8,
958 RRR_3_OPCODE_Y0 = 8,
959 RRR_3_OPCODE_Y1 = 9,
960 RRR_4_OPCODE_Y0 = 9,
961 RRR_4_OPCODE_Y1 = 10,
962 RRR_5_OPCODE_Y0 = 10,
963 RRR_5_OPCODE_Y1 = 11,
964 RRR_6_OPCODE_Y0 = 11,
965 RRR_6_OPCODE_Y1 = 12,
966 RRR_7_OPCODE_Y0 = 12,
967 RRR_7_OPCODE_Y1 = 13,
968 RRR_8_OPCODE_Y0 = 13,
969 RRR_9_OPCODE_Y0 = 14,
970 SHIFT_OPCODE_X0 = 6,
971 SHIFT_OPCODE_X1 = 6,
972 SHIFT_OPCODE_Y0 = 15,
973 SHIFT_OPCODE_Y1 = 14,
974 SHL16INSLI_OPCODE_X0 = 7,
975 SHL16INSLI_OPCODE_X1 = 7,
976 SHL1ADDX_RRR_0_OPCODE_X0 = 67,
977 SHL1ADDX_RRR_0_OPCODE_X1 = 31,
978 SHL1ADDX_RRR_7_OPCODE_Y0 = 1,
979 SHL1ADDX_RRR_7_OPCODE_Y1 = 1,
980 SHL1ADD_RRR_0_OPCODE_X0 = 68,
981 SHL1ADD_RRR_0_OPCODE_X1 = 32,
982 SHL1ADD_RRR_1_OPCODE_Y0 = 0,
983 SHL1ADD_RRR_1_OPCODE_Y1 = 0,
984 SHL2ADDX_RRR_0_OPCODE_X0 = 69,
985 SHL2ADDX_RRR_0_OPCODE_X1 = 33,
986 SHL2ADDX_RRR_7_OPCODE_Y0 = 2,
987 SHL2ADDX_RRR_7_OPCODE_Y1 = 2,
988 SHL2ADD_RRR_0_OPCODE_X0 = 70,
989 SHL2ADD_RRR_0_OPCODE_X1 = 34,
990 SHL2ADD_RRR_1_OPCODE_Y0 = 1,
991 SHL2ADD_RRR_1_OPCODE_Y1 = 1,
992 SHL3ADDX_RRR_0_OPCODE_X0 = 71,
993 SHL3ADDX_RRR_0_OPCODE_X1 = 35,
994 SHL3ADDX_RRR_7_OPCODE_Y0 = 3,
995 SHL3ADDX_RRR_7_OPCODE_Y1 = 3,
996 SHL3ADD_RRR_0_OPCODE_X0 = 72,
997 SHL3ADD_RRR_0_OPCODE_X1 = 36,
998 SHL3ADD_RRR_1_OPCODE_Y0 = 2,
999 SHL3ADD_RRR_1_OPCODE_Y1 = 2,
1000 SHLI_SHIFT_OPCODE_X0 = 2,
1001 SHLI_SHIFT_OPCODE_X1 = 2,
1002 SHLI_SHIFT_OPCODE_Y0 = 1,
1003 SHLI_SHIFT_OPCODE_Y1 = 1,
1004 SHLXI_SHIFT_OPCODE_X0 = 3,
1005 SHLXI_SHIFT_OPCODE_X1 = 3,
1006 SHLX_RRR_0_OPCODE_X0 = 73,
1007 SHLX_RRR_0_OPCODE_X1 = 37,
1008 SHL_RRR_0_OPCODE_X0 = 74,
1009 SHL_RRR_0_OPCODE_X1 = 38,
1010 SHL_RRR_6_OPCODE_Y0 = 1,
1011 SHL_RRR_6_OPCODE_Y1 = 1,
1012 SHRSI_SHIFT_OPCODE_X0 = 4,
1013 SHRSI_SHIFT_OPCODE_X1 = 4,
1014 SHRSI_SHIFT_OPCODE_Y0 = 2,
1015 SHRSI_SHIFT_OPCODE_Y1 = 2,
1016 SHRS_RRR_0_OPCODE_X0 = 75,
1017 SHRS_RRR_0_OPCODE_X1 = 39,
1018 SHRS_RRR_6_OPCODE_Y0 = 2,
1019 SHRS_RRR_6_OPCODE_Y1 = 2,
1020 SHRUI_SHIFT_OPCODE_X0 = 5,
1021 SHRUI_SHIFT_OPCODE_X1 = 5,
1022 SHRUI_SHIFT_OPCODE_Y0 = 3,
1023 SHRUI_SHIFT_OPCODE_Y1 = 3,
1024 SHRUXI_SHIFT_OPCODE_X0 = 6,
1025 SHRUXI_SHIFT_OPCODE_X1 = 6,
1026 SHRUX_RRR_0_OPCODE_X0 = 76,
1027 SHRUX_RRR_0_OPCODE_X1 = 40,
1028 SHRU_RRR_0_OPCODE_X0 = 77,
1029 SHRU_RRR_0_OPCODE_X1 = 41,
1030 SHRU_RRR_6_OPCODE_Y0 = 3,
1031 SHRU_RRR_6_OPCODE_Y1 = 3,
1032 SHUFFLEBYTES_RRR_0_OPCODE_X0 = 78,
1033 ST1_ADD_IMM8_OPCODE_X1 = 25,
1034 ST1_OPCODE_Y2 = 0,
1035 ST1_RRR_0_OPCODE_X1 = 42,
1036 ST2_ADD_IMM8_OPCODE_X1 = 26,
1037 ST2_OPCODE_Y2 = 1,
1038 ST2_RRR_0_OPCODE_X1 = 43,
1039 ST4_ADD_IMM8_OPCODE_X1 = 27,
1040 ST4_OPCODE_Y2 = 2,
1041 ST4_RRR_0_OPCODE_X1 = 44,
1042 STNT1_ADD_IMM8_OPCODE_X1 = 28,
1043 STNT1_RRR_0_OPCODE_X1 = 45,
1044 STNT2_ADD_IMM8_OPCODE_X1 = 29,
1045 STNT2_RRR_0_OPCODE_X1 = 46,
1046 STNT4_ADD_IMM8_OPCODE_X1 = 30,
1047 STNT4_RRR_0_OPCODE_X1 = 47,
1048 STNT_ADD_IMM8_OPCODE_X1 = 31,
1049 STNT_RRR_0_OPCODE_X1 = 48,
1050 ST_ADD_IMM8_OPCODE_X1 = 32,
1051 ST_OPCODE_Y2 = 3,
1052 ST_RRR_0_OPCODE_X1 = 49,
1053 SUBXSC_RRR_0_OPCODE_X0 = 79,
1054 SUBXSC_RRR_0_OPCODE_X1 = 50,
1055 SUBX_RRR_0_OPCODE_X0 = 80,
1056 SUBX_RRR_0_OPCODE_X1 = 51,
1057 SUBX_RRR_0_OPCODE_Y0 = 2,
1058 SUBX_RRR_0_OPCODE_Y1 = 2,
1059 SUB_RRR_0_OPCODE_X0 = 81,
1060 SUB_RRR_0_OPCODE_X1 = 52,
1061 SUB_RRR_0_OPCODE_Y0 = 3,
1062 SUB_RRR_0_OPCODE_Y1 = 3,
1063 SWINT0_UNARY_OPCODE_X1 = 34,
1064 SWINT1_UNARY_OPCODE_X1 = 35,
1065 SWINT2_UNARY_OPCODE_X1 = 36,
1066 SWINT3_UNARY_OPCODE_X1 = 37,
1067 TBLIDXB0_UNARY_OPCODE_X0 = 9,
1068 TBLIDXB0_UNARY_OPCODE_Y0 = 9,
1069 TBLIDXB1_UNARY_OPCODE_X0 = 10,
1070 TBLIDXB1_UNARY_OPCODE_Y0 = 10,
1071 TBLIDXB2_UNARY_OPCODE_X0 = 11,
1072 TBLIDXB2_UNARY_OPCODE_Y0 = 11,
1073 TBLIDXB3_UNARY_OPCODE_X0 = 12,
1074 TBLIDXB3_UNARY_OPCODE_Y0 = 12,
1075 UNARY_RRR_0_OPCODE_X0 = 82,
1076 UNARY_RRR_0_OPCODE_X1 = 53,
1077 UNARY_RRR_1_OPCODE_Y0 = 3,
1078 UNARY_RRR_1_OPCODE_Y1 = 3,
1079 V1ADDI_IMM8_OPCODE_X0 = 8,
1080 V1ADDI_IMM8_OPCODE_X1 = 33,
1081 V1ADDUC_RRR_0_OPCODE_X0 = 83,
1082 V1ADDUC_RRR_0_OPCODE_X1 = 54,
1083 V1ADD_RRR_0_OPCODE_X0 = 84,
1084 V1ADD_RRR_0_OPCODE_X1 = 55,
1085 V1ADIFFU_RRR_0_OPCODE_X0 = 85,
1086 V1AVGU_RRR_0_OPCODE_X0 = 86,
1087 V1CMPEQI_IMM8_OPCODE_X0 = 9,
1088 V1CMPEQI_IMM8_OPCODE_X1 = 34,
1089 V1CMPEQ_RRR_0_OPCODE_X0 = 87,
1090 V1CMPEQ_RRR_0_OPCODE_X1 = 56,
1091 V1CMPLES_RRR_0_OPCODE_X0 = 88,
1092 V1CMPLES_RRR_0_OPCODE_X1 = 57,
1093 V1CMPLEU_RRR_0_OPCODE_X0 = 89,
1094 V1CMPLEU_RRR_0_OPCODE_X1 = 58,
1095 V1CMPLTSI_IMM8_OPCODE_X0 = 10,
1096 V1CMPLTSI_IMM8_OPCODE_X1 = 35,
1097 V1CMPLTS_RRR_0_OPCODE_X0 = 90,
1098 V1CMPLTS_RRR_0_OPCODE_X1 = 59,
1099 V1CMPLTUI_IMM8_OPCODE_X0 = 11,
1100 V1CMPLTUI_IMM8_OPCODE_X1 = 36,
1101 V1CMPLTU_RRR_0_OPCODE_X0 = 91,
1102 V1CMPLTU_RRR_0_OPCODE_X1 = 60,
1103 V1CMPNE_RRR_0_OPCODE_X0 = 92,
1104 V1CMPNE_RRR_0_OPCODE_X1 = 61,
1105 V1DDOTPUA_RRR_0_OPCODE_X0 = 161,
1106 V1DDOTPUSA_RRR_0_OPCODE_X0 = 93,
1107 V1DDOTPUS_RRR_0_OPCODE_X0 = 94,
1108 V1DDOTPU_RRR_0_OPCODE_X0 = 162,
1109 V1DOTPA_RRR_0_OPCODE_X0 = 95,
1110 V1DOTPUA_RRR_0_OPCODE_X0 = 163,
1111 V1DOTPUSA_RRR_0_OPCODE_X0 = 96,
1112 V1DOTPUS_RRR_0_OPCODE_X0 = 97,
1113 V1DOTPU_RRR_0_OPCODE_X0 = 164,
1114 V1DOTP_RRR_0_OPCODE_X0 = 98,
1115 V1INT_H_RRR_0_OPCODE_X0 = 99,
1116 V1INT_H_RRR_0_OPCODE_X1 = 62,
1117 V1INT_L_RRR_0_OPCODE_X0 = 100,
1118 V1INT_L_RRR_0_OPCODE_X1 = 63,
1119 V1MAXUI_IMM8_OPCODE_X0 = 12,
1120 V1MAXUI_IMM8_OPCODE_X1 = 37,
1121 V1MAXU_RRR_0_OPCODE_X0 = 101,
1122 V1MAXU_RRR_0_OPCODE_X1 = 64,
1123 V1MINUI_IMM8_OPCODE_X0 = 13,
1124 V1MINUI_IMM8_OPCODE_X1 = 38,
1125 V1MINU_RRR_0_OPCODE_X0 = 102,
1126 V1MINU_RRR_0_OPCODE_X1 = 65,
1127 V1MNZ_RRR_0_OPCODE_X0 = 103,
1128 V1MNZ_RRR_0_OPCODE_X1 = 66,
1129 V1MULTU_RRR_0_OPCODE_X0 = 104,
1130 V1MULUS_RRR_0_OPCODE_X0 = 105,
1131 V1MULU_RRR_0_OPCODE_X0 = 106,
1132 V1MZ_RRR_0_OPCODE_X0 = 107,
1133 V1MZ_RRR_0_OPCODE_X1 = 67,
1134 V1SADAU_RRR_0_OPCODE_X0 = 108,
1135 V1SADU_RRR_0_OPCODE_X0 = 109,
1136 V1SHLI_SHIFT_OPCODE_X0 = 7,
1137 V1SHLI_SHIFT_OPCODE_X1 = 7,
1138 V1SHL_RRR_0_OPCODE_X0 = 110,
1139 V1SHL_RRR_0_OPCODE_X1 = 68,
1140 V1SHRSI_SHIFT_OPCODE_X0 = 8,
1141 V1SHRSI_SHIFT_OPCODE_X1 = 8,
1142 V1SHRS_RRR_0_OPCODE_X0 = 111,
1143 V1SHRS_RRR_0_OPCODE_X1 = 69,
1144 V1SHRUI_SHIFT_OPCODE_X0 = 9,
1145 V1SHRUI_SHIFT_OPCODE_X1 = 9,
1146 V1SHRU_RRR_0_OPCODE_X0 = 112,
1147 V1SHRU_RRR_0_OPCODE_X1 = 70,
1148 V1SUBUC_RRR_0_OPCODE_X0 = 113,
1149 V1SUBUC_RRR_0_OPCODE_X1 = 71,
1150 V1SUB_RRR_0_OPCODE_X0 = 114,
1151 V1SUB_RRR_0_OPCODE_X1 = 72,
1152 V2ADDI_IMM8_OPCODE_X0 = 14,
1153 V2ADDI_IMM8_OPCODE_X1 = 39,
1154 V2ADDSC_RRR_0_OPCODE_X0 = 115,
1155 V2ADDSC_RRR_0_OPCODE_X1 = 73,
1156 V2ADD_RRR_0_OPCODE_X0 = 116,
1157 V2ADD_RRR_0_OPCODE_X1 = 74,
1158 V2ADIFFS_RRR_0_OPCODE_X0 = 117,
1159 V2AVGS_RRR_0_OPCODE_X0 = 118,
1160 V2CMPEQI_IMM8_OPCODE_X0 = 15,
1161 V2CMPEQI_IMM8_OPCODE_X1 = 40,
1162 V2CMPEQ_RRR_0_OPCODE_X0 = 119,
1163 V2CMPEQ_RRR_0_OPCODE_X1 = 75,
1164 V2CMPLES_RRR_0_OPCODE_X0 = 120,
1165 V2CMPLES_RRR_0_OPCODE_X1 = 76,
1166 V2CMPLEU_RRR_0_OPCODE_X0 = 121,
1167 V2CMPLEU_RRR_0_OPCODE_X1 = 77,
1168 V2CMPLTSI_IMM8_OPCODE_X0 = 16,
1169 V2CMPLTSI_IMM8_OPCODE_X1 = 41,
1170 V2CMPLTS_RRR_0_OPCODE_X0 = 122,
1171 V2CMPLTS_RRR_0_OPCODE_X1 = 78,
1172 V2CMPLTUI_IMM8_OPCODE_X0 = 17,
1173 V2CMPLTUI_IMM8_OPCODE_X1 = 42,
1174 V2CMPLTU_RRR_0_OPCODE_X0 = 123,
1175 V2CMPLTU_RRR_0_OPCODE_X1 = 79,
1176 V2CMPNE_RRR_0_OPCODE_X0 = 124,
1177 V2CMPNE_RRR_0_OPCODE_X1 = 80,
1178 V2DOTPA_RRR_0_OPCODE_X0 = 125,
1179 V2DOTP_RRR_0_OPCODE_X0 = 126,
1180 V2INT_H_RRR_0_OPCODE_X0 = 127,
1181 V2INT_H_RRR_0_OPCODE_X1 = 81,
1182 V2INT_L_RRR_0_OPCODE_X0 = 128,
1183 V2INT_L_RRR_0_OPCODE_X1 = 82,
1184 V2MAXSI_IMM8_OPCODE_X0 = 18,
1185 V2MAXSI_IMM8_OPCODE_X1 = 43,
1186 V2MAXS_RRR_0_OPCODE_X0 = 129,
1187 V2MAXS_RRR_0_OPCODE_X1 = 83,
1188 V2MINSI_IMM8_OPCODE_X0 = 19,
1189 V2MINSI_IMM8_OPCODE_X1 = 44,
1190 V2MINS_RRR_0_OPCODE_X0 = 130,
1191 V2MINS_RRR_0_OPCODE_X1 = 84,
1192 V2MNZ_RRR_0_OPCODE_X0 = 131,
1193 V2MNZ_RRR_0_OPCODE_X1 = 85,
1194 V2MULFSC_RRR_0_OPCODE_X0 = 132,
1195 V2MULS_RRR_0_OPCODE_X0 = 133,
1196 V2MULTS_RRR_0_OPCODE_X0 = 134,
1197 V2MZ_RRR_0_OPCODE_X0 = 135,
1198 V2MZ_RRR_0_OPCODE_X1 = 86,
1199 V2PACKH_RRR_0_OPCODE_X0 = 136,
1200 V2PACKH_RRR_0_OPCODE_X1 = 87,
1201 V2PACKL_RRR_0_OPCODE_X0 = 137,
1202 V2PACKL_RRR_0_OPCODE_X1 = 88,
1203 V2PACKUC_RRR_0_OPCODE_X0 = 138,
1204 V2PACKUC_RRR_0_OPCODE_X1 = 89,
1205 V2SADAS_RRR_0_OPCODE_X0 = 139,
1206 V2SADAU_RRR_0_OPCODE_X0 = 140,
1207 V2SADS_RRR_0_OPCODE_X0 = 141,
1208 V2SADU_RRR_0_OPCODE_X0 = 142,
1209 V2SHLI_SHIFT_OPCODE_X0 = 10,
1210 V2SHLI_SHIFT_OPCODE_X1 = 10,
1211 V2SHLSC_RRR_0_OPCODE_X0 = 143,
1212 V2SHLSC_RRR_0_OPCODE_X1 = 90,
1213 V2SHL_RRR_0_OPCODE_X0 = 144,
1214 V2SHL_RRR_0_OPCODE_X1 = 91,
1215 V2SHRSI_SHIFT_OPCODE_X0 = 11,
1216 V2SHRSI_SHIFT_OPCODE_X1 = 11,
1217 V2SHRS_RRR_0_OPCODE_X0 = 145,
1218 V2SHRS_RRR_0_OPCODE_X1 = 92,
1219 V2SHRUI_SHIFT_OPCODE_X0 = 12,
1220 V2SHRUI_SHIFT_OPCODE_X1 = 12,
1221 V2SHRU_RRR_0_OPCODE_X0 = 146,
1222 V2SHRU_RRR_0_OPCODE_X1 = 93,
1223 V2SUBSC_RRR_0_OPCODE_X0 = 147,
1224 V2SUBSC_RRR_0_OPCODE_X1 = 94,
1225 V2SUB_RRR_0_OPCODE_X0 = 148,
1226 V2SUB_RRR_0_OPCODE_X1 = 95,
1227 V4ADDSC_RRR_0_OPCODE_X0 = 149,
1228 V4ADDSC_RRR_0_OPCODE_X1 = 96,
1229 V4ADD_RRR_0_OPCODE_X0 = 150,
1230 V4ADD_RRR_0_OPCODE_X1 = 97,
1231 V4INT_H_RRR_0_OPCODE_X0 = 151,
1232 V4INT_H_RRR_0_OPCODE_X1 = 98,
1233 V4INT_L_RRR_0_OPCODE_X0 = 152,
1234 V4INT_L_RRR_0_OPCODE_X1 = 99,
1235 V4PACKSC_RRR_0_OPCODE_X0 = 153,
1236 V4PACKSC_RRR_0_OPCODE_X1 = 100,
1237 V4SHLSC_RRR_0_OPCODE_X0 = 154,
1238 V4SHLSC_RRR_0_OPCODE_X1 = 101,
1239 V4SHL_RRR_0_OPCODE_X0 = 155,
1240 V4SHL_RRR_0_OPCODE_X1 = 102,
1241 V4SHRS_RRR_0_OPCODE_X0 = 156,
1242 V4SHRS_RRR_0_OPCODE_X1 = 103,
1243 V4SHRU_RRR_0_OPCODE_X0 = 157,
1244 V4SHRU_RRR_0_OPCODE_X1 = 104,
1245 V4SUBSC_RRR_0_OPCODE_X0 = 158,
1246 V4SUBSC_RRR_0_OPCODE_X1 = 105,
1247 V4SUB_RRR_0_OPCODE_X0 = 159,
1248 V4SUB_RRR_0_OPCODE_X1 = 106,
1249 WH64_UNARY_OPCODE_X1 = 38,
1250 XORI_IMM8_OPCODE_X0 = 20,
1251 XORI_IMM8_OPCODE_X1 = 45,
1252 XOR_RRR_0_OPCODE_X0 = 160,
1253 XOR_RRR_0_OPCODE_X1 = 107,
1254 XOR_RRR_5_OPCODE_Y0 = 3,
1255 XOR_RRR_5_OPCODE_Y1 = 3
1256 };
1257
1258 static __inline unsigned int
get_BFEnd_X0(tilegx_bundle_bits num)1259 get_BFEnd_X0(tilegx_bundle_bits num)
1260 {
1261 const unsigned int n = (unsigned int)num;
1262 return (((n >> 12)) & 0x3f);
1263 }
1264
1265 static __inline unsigned int
get_BFOpcodeExtension_X0(tilegx_bundle_bits num)1266 get_BFOpcodeExtension_X0(tilegx_bundle_bits num)
1267 {
1268 const unsigned int n = (unsigned int)num;
1269 return (((n >> 24)) & 0xf);
1270 }
1271
1272 static __inline unsigned int
get_BFStart_X0(tilegx_bundle_bits num)1273 get_BFStart_X0(tilegx_bundle_bits num)
1274 {
1275 const unsigned int n = (unsigned int)num;
1276 return (((n >> 18)) & 0x3f);
1277 }
1278
1279 static __inline unsigned int
get_BrOff_X1(tilegx_bundle_bits n)1280 get_BrOff_X1(tilegx_bundle_bits n)
1281 {
1282 return (((unsigned int)(n >> 31)) & 0x0000003f) |
1283 (((unsigned int)(n >> 37)) & 0x0001ffc0);
1284 }
1285
1286 static __inline unsigned int
get_BrType_X1(tilegx_bundle_bits n)1287 get_BrType_X1(tilegx_bundle_bits n)
1288 {
1289 return (((unsigned int)(n >> 54)) & 0x1f);
1290 }
1291
1292 static __inline unsigned int
get_Dest_Imm8_X1(tilegx_bundle_bits n)1293 get_Dest_Imm8_X1(tilegx_bundle_bits n)
1294 {
1295 return (((unsigned int)(n >> 31)) & 0x0000003f) |
1296 (((unsigned int)(n >> 43)) & 0x000000c0);
1297 }
1298
1299 static __inline unsigned int
get_Dest_X0(tilegx_bundle_bits num)1300 get_Dest_X0(tilegx_bundle_bits num)
1301 {
1302 const unsigned int n = (unsigned int)num;
1303 return (((n >> 0)) & 0x3f);
1304 }
1305
1306 static __inline unsigned int
get_Dest_X1(tilegx_bundle_bits n)1307 get_Dest_X1(tilegx_bundle_bits n)
1308 {
1309 return (((unsigned int)(n >> 31)) & 0x3f);
1310 }
1311
1312 static __inline unsigned int
get_Dest_Y0(tilegx_bundle_bits num)1313 get_Dest_Y0(tilegx_bundle_bits num)
1314 {
1315 const unsigned int n = (unsigned int)num;
1316 return (((n >> 0)) & 0x3f);
1317 }
1318
1319 static __inline unsigned int
get_Dest_Y1(tilegx_bundle_bits n)1320 get_Dest_Y1(tilegx_bundle_bits n)
1321 {
1322 return (((unsigned int)(n >> 31)) & 0x3f);
1323 }
1324
1325 static __inline unsigned int
get_Imm16_X0(tilegx_bundle_bits num)1326 get_Imm16_X0(tilegx_bundle_bits num)
1327 {
1328 const unsigned int n = (unsigned int)num;
1329 return (((n >> 12)) & 0xffff);
1330 }
1331
1332 static __inline unsigned int
get_Imm16_X1(tilegx_bundle_bits n)1333 get_Imm16_X1(tilegx_bundle_bits n)
1334 {
1335 return (((unsigned int)(n >> 43)) & 0xffff);
1336 }
1337
1338 static __inline unsigned int
get_Imm8OpcodeExtension_X0(tilegx_bundle_bits num)1339 get_Imm8OpcodeExtension_X0(tilegx_bundle_bits num)
1340 {
1341 const unsigned int n = (unsigned int)num;
1342 return (((n >> 20)) & 0xff);
1343 }
1344
1345 static __inline unsigned int
get_Imm8OpcodeExtension_X1(tilegx_bundle_bits n)1346 get_Imm8OpcodeExtension_X1(tilegx_bundle_bits n)
1347 {
1348 return (((unsigned int)(n >> 51)) & 0xff);
1349 }
1350
1351 static __inline unsigned int
get_Imm8_X0(tilegx_bundle_bits num)1352 get_Imm8_X0(tilegx_bundle_bits num)
1353 {
1354 const unsigned int n = (unsigned int)num;
1355 return (((n >> 12)) & 0xff);
1356 }
1357
1358 static __inline unsigned int
get_Imm8_X1(tilegx_bundle_bits n)1359 get_Imm8_X1(tilegx_bundle_bits n)
1360 {
1361 return (((unsigned int)(n >> 43)) & 0xff);
1362 }
1363
1364 static __inline unsigned int
get_Imm8_Y0(tilegx_bundle_bits num)1365 get_Imm8_Y0(tilegx_bundle_bits num)
1366 {
1367 const unsigned int n = (unsigned int)num;
1368 return (((n >> 12)) & 0xff);
1369 }
1370
1371 static __inline unsigned int
get_Imm8_Y1(tilegx_bundle_bits n)1372 get_Imm8_Y1(tilegx_bundle_bits n)
1373 {
1374 return (((unsigned int)(n >> 43)) & 0xff);
1375 }
1376
1377 static __inline unsigned int
get_JumpOff_X1(tilegx_bundle_bits n)1378 get_JumpOff_X1(tilegx_bundle_bits n)
1379 {
1380 return (((unsigned int)(n >> 31)) & 0x7ffffff);
1381 }
1382
1383 static __inline unsigned int
get_JumpOpcodeExtension_X1(tilegx_bundle_bits n)1384 get_JumpOpcodeExtension_X1(tilegx_bundle_bits n)
1385 {
1386 return (((unsigned int)(n >> 58)) & 0x1);
1387 }
1388
1389 static __inline unsigned int
get_MF_Imm14_X1(tilegx_bundle_bits n)1390 get_MF_Imm14_X1(tilegx_bundle_bits n)
1391 {
1392 return (((unsigned int)(n >> 37)) & 0x3fff);
1393 }
1394
1395 static __inline unsigned int
get_MT_Imm14_X1(tilegx_bundle_bits n)1396 get_MT_Imm14_X1(tilegx_bundle_bits n)
1397 {
1398 return (((unsigned int)(n >> 31)) & 0x0000003f) |
1399 (((unsigned int)(n >> 37)) & 0x00003fc0);
1400 }
1401
1402 static __inline unsigned int
get_Mode(tilegx_bundle_bits n)1403 get_Mode(tilegx_bundle_bits n)
1404 {
1405 return (((unsigned int)(n >> 62)) & 0x3);
1406 }
1407
1408 static __inline unsigned int
get_Opcode_X0(tilegx_bundle_bits num)1409 get_Opcode_X0(tilegx_bundle_bits num)
1410 {
1411 const unsigned int n = (unsigned int)num;
1412 return (((n >> 28)) & 0x7);
1413 }
1414
1415 static __inline unsigned int
get_Opcode_X1(tilegx_bundle_bits n)1416 get_Opcode_X1(tilegx_bundle_bits n)
1417 {
1418 return (((unsigned int)(n >> 59)) & 0x7);
1419 }
1420
1421 static __inline unsigned int
get_Opcode_Y0(tilegx_bundle_bits num)1422 get_Opcode_Y0(tilegx_bundle_bits num)
1423 {
1424 const unsigned int n = (unsigned int)num;
1425 return (((n >> 27)) & 0xf);
1426 }
1427
1428 static __inline unsigned int
get_Opcode_Y1(tilegx_bundle_bits n)1429 get_Opcode_Y1(tilegx_bundle_bits n)
1430 {
1431 return (((unsigned int)(n >> 58)) & 0xf);
1432 }
1433
1434 static __inline unsigned int
get_Opcode_Y2(tilegx_bundle_bits n)1435 get_Opcode_Y2(tilegx_bundle_bits n)
1436 {
1437 return (((n >> 26)) & 0x00000001) |
1438 (((unsigned int)(n >> 56)) & 0x00000002);
1439 }
1440
1441 static __inline unsigned int
get_RRROpcodeExtension_X0(tilegx_bundle_bits num)1442 get_RRROpcodeExtension_X0(tilegx_bundle_bits num)
1443 {
1444 const unsigned int n = (unsigned int)num;
1445 return (((n >> 18)) & 0x3ff);
1446 }
1447
1448 static __inline unsigned int
get_RRROpcodeExtension_X1(tilegx_bundle_bits n)1449 get_RRROpcodeExtension_X1(tilegx_bundle_bits n)
1450 {
1451 return (((unsigned int)(n >> 49)) & 0x3ff);
1452 }
1453
1454 static __inline unsigned int
get_RRROpcodeExtension_Y0(tilegx_bundle_bits num)1455 get_RRROpcodeExtension_Y0(tilegx_bundle_bits num)
1456 {
1457 const unsigned int n = (unsigned int)num;
1458 return (((n >> 18)) & 0x3);
1459 }
1460
1461 static __inline unsigned int
get_RRROpcodeExtension_Y1(tilegx_bundle_bits n)1462 get_RRROpcodeExtension_Y1(tilegx_bundle_bits n)
1463 {
1464 return (((unsigned int)(n >> 49)) & 0x3);
1465 }
1466
1467 static __inline unsigned int
get_ShAmt_X0(tilegx_bundle_bits num)1468 get_ShAmt_X0(tilegx_bundle_bits num)
1469 {
1470 const unsigned int n = (unsigned int)num;
1471 return (((n >> 12)) & 0x3f);
1472 }
1473
1474 static __inline unsigned int
get_ShAmt_X1(tilegx_bundle_bits n)1475 get_ShAmt_X1(tilegx_bundle_bits n)
1476 {
1477 return (((unsigned int)(n >> 43)) & 0x3f);
1478 }
1479
1480 static __inline unsigned int
get_ShAmt_Y0(tilegx_bundle_bits num)1481 get_ShAmt_Y0(tilegx_bundle_bits num)
1482 {
1483 const unsigned int n = (unsigned int)num;
1484 return (((n >> 12)) & 0x3f);
1485 }
1486
1487 static __inline unsigned int
get_ShAmt_Y1(tilegx_bundle_bits n)1488 get_ShAmt_Y1(tilegx_bundle_bits n)
1489 {
1490 return (((unsigned int)(n >> 43)) & 0x3f);
1491 }
1492
1493 static __inline unsigned int
get_ShiftOpcodeExtension_X0(tilegx_bundle_bits num)1494 get_ShiftOpcodeExtension_X0(tilegx_bundle_bits num)
1495 {
1496 const unsigned int n = (unsigned int)num;
1497 return (((n >> 18)) & 0x3ff);
1498 }
1499
1500 static __inline unsigned int
get_ShiftOpcodeExtension_X1(tilegx_bundle_bits n)1501 get_ShiftOpcodeExtension_X1(tilegx_bundle_bits n)
1502 {
1503 return (((unsigned int)(n >> 49)) & 0x3ff);
1504 }
1505
1506 static __inline unsigned int
get_ShiftOpcodeExtension_Y0(tilegx_bundle_bits num)1507 get_ShiftOpcodeExtension_Y0(tilegx_bundle_bits num)
1508 {
1509 const unsigned int n = (unsigned int)num;
1510 return (((n >> 18)) & 0x3);
1511 }
1512
1513 static __inline unsigned int
get_ShiftOpcodeExtension_Y1(tilegx_bundle_bits n)1514 get_ShiftOpcodeExtension_Y1(tilegx_bundle_bits n)
1515 {
1516 return (((unsigned int)(n >> 49)) & 0x3);
1517 }
1518
1519 static __inline unsigned int
get_SrcA_X0(tilegx_bundle_bits num)1520 get_SrcA_X0(tilegx_bundle_bits num)
1521 {
1522 const unsigned int n = (unsigned int)num;
1523 return (((n >> 6)) & 0x3f);
1524 }
1525
1526 static __inline unsigned int
get_SrcA_X1(tilegx_bundle_bits n)1527 get_SrcA_X1(tilegx_bundle_bits n)
1528 {
1529 return (((unsigned int)(n >> 37)) & 0x3f);
1530 }
1531
1532 static __inline unsigned int
get_SrcA_Y0(tilegx_bundle_bits num)1533 get_SrcA_Y0(tilegx_bundle_bits num)
1534 {
1535 const unsigned int n = (unsigned int)num;
1536 return (((n >> 6)) & 0x3f);
1537 }
1538
1539 static __inline unsigned int
get_SrcA_Y1(tilegx_bundle_bits n)1540 get_SrcA_Y1(tilegx_bundle_bits n)
1541 {
1542 return (((unsigned int)(n >> 37)) & 0x3f);
1543 }
1544
1545 static __inline unsigned int
get_SrcA_Y2(tilegx_bundle_bits num)1546 get_SrcA_Y2(tilegx_bundle_bits num)
1547 {
1548 const unsigned int n = (unsigned int)num;
1549 return (((n >> 20)) & 0x3f);
1550 }
1551
1552 static __inline unsigned int
get_SrcBDest_Y2(tilegx_bundle_bits n)1553 get_SrcBDest_Y2(tilegx_bundle_bits n)
1554 {
1555 return (((unsigned int)(n >> 51)) & 0x3f);
1556 }
1557
1558 static __inline unsigned int
get_SrcB_X0(tilegx_bundle_bits num)1559 get_SrcB_X0(tilegx_bundle_bits num)
1560 {
1561 const unsigned int n = (unsigned int)num;
1562 return (((n >> 12)) & 0x3f);
1563 }
1564
1565 static __inline unsigned int
get_SrcB_X1(tilegx_bundle_bits n)1566 get_SrcB_X1(tilegx_bundle_bits n)
1567 {
1568 return (((unsigned int)(n >> 43)) & 0x3f);
1569 }
1570
1571 static __inline unsigned int
get_SrcB_Y0(tilegx_bundle_bits num)1572 get_SrcB_Y0(tilegx_bundle_bits num)
1573 {
1574 const unsigned int n = (unsigned int)num;
1575 return (((n >> 12)) & 0x3f);
1576 }
1577
1578 static __inline unsigned int
get_SrcB_Y1(tilegx_bundle_bits n)1579 get_SrcB_Y1(tilegx_bundle_bits n)
1580 {
1581 return (((unsigned int)(n >> 43)) & 0x3f);
1582 }
1583
1584 static __inline unsigned int
get_UnaryOpcodeExtension_X0(tilegx_bundle_bits num)1585 get_UnaryOpcodeExtension_X0(tilegx_bundle_bits num)
1586 {
1587 const unsigned int n = (unsigned int)num;
1588 return (((n >> 12)) & 0x3f);
1589 }
1590
1591 static __inline unsigned int
get_UnaryOpcodeExtension_X1(tilegx_bundle_bits n)1592 get_UnaryOpcodeExtension_X1(tilegx_bundle_bits n)
1593 {
1594 return (((unsigned int)(n >> 43)) & 0x3f);
1595 }
1596
1597 static __inline unsigned int
get_UnaryOpcodeExtension_Y0(tilegx_bundle_bits num)1598 get_UnaryOpcodeExtension_Y0(tilegx_bundle_bits num)
1599 {
1600 const unsigned int n = (unsigned int)num;
1601 return (((n >> 12)) & 0x3f);
1602 }
1603
1604 static __inline unsigned int
get_UnaryOpcodeExtension_Y1(tilegx_bundle_bits n)1605 get_UnaryOpcodeExtension_Y1(tilegx_bundle_bits n)
1606 {
1607 return (((unsigned int)(n >> 43)) & 0x3f);
1608 }
1609
1610 static __inline int
sign_extend(int n,int num_bits)1611 sign_extend(int n, int num_bits)
1612 {
1613 int shift = (int)(sizeof(int) * 8 - num_bits);
1614 return (n << shift) >> shift;
1615 }
1616
1617 static __inline tilegx_bundle_bits
create_BFEnd_X0(int num)1618 create_BFEnd_X0(int num)
1619 {
1620 const unsigned int n = (unsigned int)num;
1621 return ((n & 0x3f) << 12);
1622 }
1623
1624 static __inline tilegx_bundle_bits
create_BFOpcodeExtension_X0(int num)1625 create_BFOpcodeExtension_X0(int num)
1626 {
1627 const unsigned int n = (unsigned int)num;
1628 return ((n & 0xf) << 24);
1629 }
1630
1631 static __inline tilegx_bundle_bits
create_BFStart_X0(int num)1632 create_BFStart_X0(int num)
1633 {
1634 const unsigned int n = (unsigned int)num;
1635 return ((n & 0x3f) << 18);
1636 }
1637
1638 static __inline tilegx_bundle_bits
create_BrOff_X1(int num)1639 create_BrOff_X1(int num)
1640 {
1641 const unsigned int n = (unsigned int)num;
1642 return (((tilegx_bundle_bits)(n & 0x0000003f)) << 31) |
1643 (((tilegx_bundle_bits)(n & 0x0001ffc0)) << 37);
1644 }
1645
1646 static __inline tilegx_bundle_bits
create_BrType_X1(int num)1647 create_BrType_X1(int num)
1648 {
1649 const unsigned int n = (unsigned int)num;
1650 return (((tilegx_bundle_bits)(n & 0x1f)) << 54);
1651 }
1652
1653 static __inline tilegx_bundle_bits
create_Dest_Imm8_X1(int num)1654 create_Dest_Imm8_X1(int num)
1655 {
1656 const unsigned int n = (unsigned int)num;
1657 return (((tilegx_bundle_bits)(n & 0x0000003f)) << 31) |
1658 (((tilegx_bundle_bits)(n & 0x000000c0)) << 43);
1659 }
1660
1661 static __inline tilegx_bundle_bits
create_Dest_X0(int num)1662 create_Dest_X0(int num)
1663 {
1664 const unsigned int n = (unsigned int)num;
1665 return ((n & 0x3f) << 0);
1666 }
1667
1668 static __inline tilegx_bundle_bits
create_Dest_X1(int num)1669 create_Dest_X1(int num)
1670 {
1671 const unsigned int n = (unsigned int)num;
1672 return (((tilegx_bundle_bits)(n & 0x3f)) << 31);
1673 }
1674
1675 static __inline tilegx_bundle_bits
create_Dest_Y0(int num)1676 create_Dest_Y0(int num)
1677 {
1678 const unsigned int n = (unsigned int)num;
1679 return ((n & 0x3f) << 0);
1680 }
1681
1682 static __inline tilegx_bundle_bits
create_Dest_Y1(int num)1683 create_Dest_Y1(int num)
1684 {
1685 const unsigned int n = (unsigned int)num;
1686 return (((tilegx_bundle_bits)(n & 0x3f)) << 31);
1687 }
1688
1689 static __inline tilegx_bundle_bits
create_Imm16_X0(int num)1690 create_Imm16_X0(int num)
1691 {
1692 const unsigned int n = (unsigned int)num;
1693 return ((n & 0xffff) << 12);
1694 }
1695
1696 static __inline tilegx_bundle_bits
create_Imm16_X1(int num)1697 create_Imm16_X1(int num)
1698 {
1699 const unsigned int n = (unsigned int)num;
1700 return (((tilegx_bundle_bits)(n & 0xffff)) << 43);
1701 }
1702
1703 static __inline tilegx_bundle_bits
create_Imm8OpcodeExtension_X0(int num)1704 create_Imm8OpcodeExtension_X0(int num)
1705 {
1706 const unsigned int n = (unsigned int)num;
1707 return ((n & 0xff) << 20);
1708 }
1709
1710 static __inline tilegx_bundle_bits
create_Imm8OpcodeExtension_X1(int num)1711 create_Imm8OpcodeExtension_X1(int num)
1712 {
1713 const unsigned int n = (unsigned int)num;
1714 return (((tilegx_bundle_bits)(n & 0xff)) << 51);
1715 }
1716
1717 static __inline tilegx_bundle_bits
create_Imm8_X0(int num)1718 create_Imm8_X0(int num)
1719 {
1720 const unsigned int n = (unsigned int)num;
1721 return ((n & 0xff) << 12);
1722 }
1723
1724 static __inline tilegx_bundle_bits
create_Imm8_X1(int num)1725 create_Imm8_X1(int num)
1726 {
1727 const unsigned int n = (unsigned int)num;
1728 return (((tilegx_bundle_bits)(n & 0xff)) << 43);
1729 }
1730
1731 static __inline tilegx_bundle_bits
create_Imm8_Y0(int num)1732 create_Imm8_Y0(int num)
1733 {
1734 const unsigned int n = (unsigned int)num;
1735 return ((n & 0xff) << 12);
1736 }
1737
1738 static __inline tilegx_bundle_bits
create_Imm8_Y1(int num)1739 create_Imm8_Y1(int num)
1740 {
1741 const unsigned int n = (unsigned int)num;
1742 return (((tilegx_bundle_bits)(n & 0xff)) << 43);
1743 }
1744
1745 static __inline tilegx_bundle_bits
create_JumpOff_X1(int num)1746 create_JumpOff_X1(int num)
1747 {
1748 const unsigned int n = (unsigned int)num;
1749 return (((tilegx_bundle_bits)(n & 0x7ffffff)) << 31);
1750 }
1751
1752 static __inline tilegx_bundle_bits
create_JumpOpcodeExtension_X1(int num)1753 create_JumpOpcodeExtension_X1(int num)
1754 {
1755 const unsigned int n = (unsigned int)num;
1756 return (((tilegx_bundle_bits)(n & 0x1)) << 58);
1757 }
1758
1759 static __inline tilegx_bundle_bits
create_MF_Imm14_X1(int num)1760 create_MF_Imm14_X1(int num)
1761 {
1762 const unsigned int n = (unsigned int)num;
1763 return (((tilegx_bundle_bits)(n & 0x3fff)) << 37);
1764 }
1765
1766 static __inline tilegx_bundle_bits
create_MT_Imm14_X1(int num)1767 create_MT_Imm14_X1(int num)
1768 {
1769 const unsigned int n = (unsigned int)num;
1770 return (((tilegx_bundle_bits)(n & 0x0000003f)) << 31) |
1771 (((tilegx_bundle_bits)(n & 0x00003fc0)) << 37);
1772 }
1773
1774 static __inline tilegx_bundle_bits
create_Mode(int num)1775 create_Mode(int num)
1776 {
1777 const unsigned int n = (unsigned int)num;
1778 return (((tilegx_bundle_bits)(n & 0x3)) << 62);
1779 }
1780
1781 static __inline tilegx_bundle_bits
create_Opcode_X0(int num)1782 create_Opcode_X0(int num)
1783 {
1784 const unsigned int n = (unsigned int)num;
1785 return ((n & 0x7) << 28);
1786 }
1787
1788 static __inline tilegx_bundle_bits
create_Opcode_X1(int num)1789 create_Opcode_X1(int num)
1790 {
1791 const unsigned int n = (unsigned int)num;
1792 return (((tilegx_bundle_bits)(n & 0x7)) << 59);
1793 }
1794
1795 static __inline tilegx_bundle_bits
create_Opcode_Y0(int num)1796 create_Opcode_Y0(int num)
1797 {
1798 const unsigned int n = (unsigned int)num;
1799 return ((n & 0xf) << 27);
1800 }
1801
1802 static __inline tilegx_bundle_bits
create_Opcode_Y1(int num)1803 create_Opcode_Y1(int num)
1804 {
1805 const unsigned int n = (unsigned int)num;
1806 return (((tilegx_bundle_bits)(n & 0xf)) << 58);
1807 }
1808
1809 static __inline tilegx_bundle_bits
create_Opcode_Y2(int num)1810 create_Opcode_Y2(int num)
1811 {
1812 const unsigned int n = (unsigned int)num;
1813 return ((n & 0x00000001) << 26) |
1814 (((tilegx_bundle_bits)(n & 0x00000002)) << 56);
1815 }
1816
1817 static __inline tilegx_bundle_bits
create_RRROpcodeExtension_X0(int num)1818 create_RRROpcodeExtension_X0(int num)
1819 {
1820 const unsigned int n = (unsigned int)num;
1821 return ((n & 0x3ff) << 18);
1822 }
1823
1824 static __inline tilegx_bundle_bits
create_RRROpcodeExtension_X1(int num)1825 create_RRROpcodeExtension_X1(int num)
1826 {
1827 const unsigned int n = (unsigned int)num;
1828 return (((tilegx_bundle_bits)(n & 0x3ff)) << 49);
1829 }
1830
1831 static __inline tilegx_bundle_bits
create_RRROpcodeExtension_Y0(int num)1832 create_RRROpcodeExtension_Y0(int num)
1833 {
1834 const unsigned int n = (unsigned int)num;
1835 return ((n & 0x3) << 18);
1836 }
1837
1838 static __inline tilegx_bundle_bits
create_RRROpcodeExtension_Y1(int num)1839 create_RRROpcodeExtension_Y1(int num)
1840 {
1841 const unsigned int n = (unsigned int)num;
1842 return (((tilegx_bundle_bits)(n & 0x3)) << 49);
1843 }
1844
1845 static __inline tilegx_bundle_bits
create_ShAmt_X0(int num)1846 create_ShAmt_X0(int num)
1847 {
1848 const unsigned int n = (unsigned int)num;
1849 return ((n & 0x3f) << 12);
1850 }
1851
1852 static __inline tilegx_bundle_bits
create_ShAmt_X1(int num)1853 create_ShAmt_X1(int num)
1854 {
1855 const unsigned int n = (unsigned int)num;
1856 return (((tilegx_bundle_bits)(n & 0x3f)) << 43);
1857 }
1858
1859 static __inline tilegx_bundle_bits
create_ShAmt_Y0(int num)1860 create_ShAmt_Y0(int num)
1861 {
1862 const unsigned int n = (unsigned int)num;
1863 return ((n & 0x3f) << 12);
1864 }
1865
1866 static __inline tilegx_bundle_bits
create_ShAmt_Y1(int num)1867 create_ShAmt_Y1(int num)
1868 {
1869 const unsigned int n = (unsigned int)num;
1870 return (((tilegx_bundle_bits)(n & 0x3f)) << 43);
1871 }
1872
1873 static __inline tilegx_bundle_bits
create_ShiftOpcodeExtension_X0(int num)1874 create_ShiftOpcodeExtension_X0(int num)
1875 {
1876 const unsigned int n = (unsigned int)num;
1877 return ((n & 0x3ff) << 18);
1878 }
1879
1880 static __inline tilegx_bundle_bits
create_ShiftOpcodeExtension_X1(int num)1881 create_ShiftOpcodeExtension_X1(int num)
1882 {
1883 const unsigned int n = (unsigned int)num;
1884 return (((tilegx_bundle_bits)(n & 0x3ff)) << 49);
1885 }
1886
1887 static __inline tilegx_bundle_bits
create_ShiftOpcodeExtension_Y0(int num)1888 create_ShiftOpcodeExtension_Y0(int num)
1889 {
1890 const unsigned int n = (unsigned int)num;
1891 return ((n & 0x3) << 18);
1892 }
1893
1894 static __inline tilegx_bundle_bits
create_ShiftOpcodeExtension_Y1(int num)1895 create_ShiftOpcodeExtension_Y1(int num)
1896 {
1897 const unsigned int n = (unsigned int)num;
1898 return (((tilegx_bundle_bits)(n & 0x3)) << 49);
1899 }
1900
1901 static __inline tilegx_bundle_bits
create_SrcA_X0(int num)1902 create_SrcA_X0(int num)
1903 {
1904 const unsigned int n = (unsigned int)num;
1905 return ((n & 0x3f) << 6);
1906 }
1907
1908 static __inline tilegx_bundle_bits
create_SrcA_X1(int num)1909 create_SrcA_X1(int num)
1910 {
1911 const unsigned int n = (unsigned int)num;
1912 return (((tilegx_bundle_bits)(n & 0x3f)) << 37);
1913 }
1914
1915 static __inline tilegx_bundle_bits
create_SrcA_Y0(int num)1916 create_SrcA_Y0(int num)
1917 {
1918 const unsigned int n = (unsigned int)num;
1919 return ((n & 0x3f) << 6);
1920 }
1921
1922 static __inline tilegx_bundle_bits
create_SrcA_Y1(int num)1923 create_SrcA_Y1(int num)
1924 {
1925 const unsigned int n = (unsigned int)num;
1926 return (((tilegx_bundle_bits)(n & 0x3f)) << 37);
1927 }
1928
1929 static __inline tilegx_bundle_bits
create_SrcA_Y2(int num)1930 create_SrcA_Y2(int num)
1931 {
1932 const unsigned int n = (unsigned int)num;
1933 return ((n & 0x3f) << 20);
1934 }
1935
1936 static __inline tilegx_bundle_bits
create_SrcBDest_Y2(int num)1937 create_SrcBDest_Y2(int num)
1938 {
1939 const unsigned int n = (unsigned int)num;
1940 return (((tilegx_bundle_bits)(n & 0x3f)) << 51);
1941 }
1942
1943 static __inline tilegx_bundle_bits
create_SrcB_X0(int num)1944 create_SrcB_X0(int num)
1945 {
1946 const unsigned int n = (unsigned int)num;
1947 return ((n & 0x3f) << 12);
1948 }
1949
1950 static __inline tilegx_bundle_bits
create_SrcB_X1(int num)1951 create_SrcB_X1(int num)
1952 {
1953 const unsigned int n = (unsigned int)num;
1954 return (((tilegx_bundle_bits)(n & 0x3f)) << 43);
1955 }
1956
1957 static __inline tilegx_bundle_bits
create_SrcB_Y0(int num)1958 create_SrcB_Y0(int num)
1959 {
1960 const unsigned int n = (unsigned int)num;
1961 return ((n & 0x3f) << 12);
1962 }
1963
1964 static __inline tilegx_bundle_bits
create_SrcB_Y1(int num)1965 create_SrcB_Y1(int num)
1966 {
1967 const unsigned int n = (unsigned int)num;
1968 return (((tilegx_bundle_bits)(n & 0x3f)) << 43);
1969 }
1970
1971 static __inline tilegx_bundle_bits
create_UnaryOpcodeExtension_X0(int num)1972 create_UnaryOpcodeExtension_X0(int num)
1973 {
1974 const unsigned int n = (unsigned int)num;
1975 return ((n & 0x3f) << 12);
1976 }
1977
1978 static __inline tilegx_bundle_bits
create_UnaryOpcodeExtension_X1(int num)1979 create_UnaryOpcodeExtension_X1(int num)
1980 {
1981 const unsigned int n = (unsigned int)num;
1982 return (((tilegx_bundle_bits)(n & 0x3f)) << 43);
1983 }
1984
1985 static __inline tilegx_bundle_bits
create_UnaryOpcodeExtension_Y0(int num)1986 create_UnaryOpcodeExtension_Y0(int num)
1987 {
1988 const unsigned int n = (unsigned int)num;
1989 return ((n & 0x3f) << 12);
1990 }
1991
1992 static __inline tilegx_bundle_bits
create_UnaryOpcodeExtension_Y1(int num)1993 create_UnaryOpcodeExtension_Y1(int num)
1994 {
1995 const unsigned int n = (unsigned int)num;
1996 return (((tilegx_bundle_bits)(n & 0x3f)) << 43);
1997 }
1998
1999 const struct tilegx_opcode tilegx_opcodes[336] =
2000 {
2001 { "bpt", TILEGX_OPC_BPT, 0x2, 0, TREG_ZERO, 0,
2002 { { 0, }, { }, { 0, }, { 0, }, { 0, } },
2003 #ifndef DISASM_ONLY
2004 {
2005 0ULL,
2006 0xffffffff80000000ULL,
2007 0ULL,
2008 0ULL,
2009 0ULL
2010 },
2011 {
2012 -1ULL,
2013 0x286a44ae00000000ULL,
2014 -1ULL,
2015 -1ULL,
2016 -1ULL
2017 }
2018 #endif
2019 },
2020 { "info", TILEGX_OPC_INFO, 0xf, 1, TREG_ZERO, 1,
2021 { { 0 }, { 1 }, { 2 }, { 3 }, { 0, } },
2022 #ifndef DISASM_ONLY
2023 {
2024 0xc00000007ff00fffULL,
2025 0xfff807ff80000000ULL,
2026 0x0000000078000fffULL,
2027 0x3c0007ff80000000ULL,
2028 0ULL
2029 },
2030 {
2031 0x0000000040300fffULL,
2032 0x181807ff80000000ULL,
2033 0x0000000010000fffULL,
2034 0x0c0007ff80000000ULL,
2035 -1ULL
2036 }
2037 #endif
2038 },
2039 { "infol", TILEGX_OPC_INFOL, 0x3, 1, TREG_ZERO, 1,
2040 { { 4 }, { 5 }, { 0, }, { 0, }, { 0, } },
2041 #ifndef DISASM_ONLY
2042 {
2043 0xc000000070000fffULL,
2044 0xf80007ff80000000ULL,
2045 0ULL,
2046 0ULL,
2047 0ULL
2048 },
2049 {
2050 0x0000000070000fffULL,
2051 0x380007ff80000000ULL,
2052 -1ULL,
2053 -1ULL,
2054 -1ULL
2055 }
2056 #endif
2057 },
2058 { "ld4s_tls", TILEGX_OPC_LD4S_TLS, 0x2, 3, TREG_ZERO, 1,
2059 { { 0, }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
2060 #ifndef DISASM_ONLY
2061 {
2062 0ULL,
2063 0xfffff80000000000ULL,
2064 0ULL,
2065 0ULL,
2066 0ULL
2067 },
2068 {
2069 -1ULL,
2070 0x1858000000000000ULL,
2071 -1ULL,
2072 -1ULL,
2073 -1ULL
2074 }
2075 #endif
2076 },
2077 { "ld_tls", TILEGX_OPC_LD_TLS, 0x2, 3, TREG_ZERO, 1,
2078 { { 0, }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
2079 #ifndef DISASM_ONLY
2080 {
2081 0ULL,
2082 0xfffff80000000000ULL,
2083 0ULL,
2084 0ULL,
2085 0ULL
2086 },
2087 {
2088 -1ULL,
2089 0x18a0000000000000ULL,
2090 -1ULL,
2091 -1ULL,
2092 -1ULL
2093 }
2094 #endif
2095 },
2096 { "move", TILEGX_OPC_MOVE, 0xf, 2, TREG_ZERO, 1,
2097 { { 8, 9 }, { 6, 7 }, { 10, 11 }, { 12, 13 }, { 0, } },
2098 #ifndef DISASM_ONLY
2099 {
2100 0xc00000007ffff000ULL,
2101 0xfffff80000000000ULL,
2102 0x00000000780ff000ULL,
2103 0x3c07f80000000000ULL,
2104 0ULL
2105 },
2106 {
2107 0x000000005107f000ULL,
2108 0x283bf80000000000ULL,
2109 0x00000000500bf000ULL,
2110 0x2c05f80000000000ULL,
2111 -1ULL
2112 }
2113 #endif
2114 },
2115 { "movei", TILEGX_OPC_MOVEI, 0xf, 2, TREG_ZERO, 1,
2116 { { 8, 0 }, { 6, 1 }, { 10, 2 }, { 12, 3 }, { 0, } },
2117 #ifndef DISASM_ONLY
2118 {
2119 0xc00000007ff00fc0ULL,
2120 0xfff807e000000000ULL,
2121 0x0000000078000fc0ULL,
2122 0x3c0007e000000000ULL,
2123 0ULL
2124 },
2125 {
2126 0x0000000040100fc0ULL,
2127 0x180807e000000000ULL,
2128 0x0000000000000fc0ULL,
2129 0x040007e000000000ULL,
2130 -1ULL
2131 }
2132 #endif
2133 },
2134 { "moveli", TILEGX_OPC_MOVELI, 0x3, 2, TREG_ZERO, 1,
2135 { { 8, 4 }, { 6, 5 }, { 0, }, { 0, }, { 0, } },
2136 #ifndef DISASM_ONLY
2137 {
2138 0xc000000070000fc0ULL,
2139 0xf80007e000000000ULL,
2140 0ULL,
2141 0ULL,
2142 0ULL
2143 },
2144 {
2145 0x0000000010000fc0ULL,
2146 0x000007e000000000ULL,
2147 -1ULL,
2148 -1ULL,
2149 -1ULL
2150 }
2151 #endif
2152 },
2153 { "prefetch", TILEGX_OPC_PREFETCH, 0x12, 1, TREG_ZERO, 1,
2154 { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } },
2155 #ifndef DISASM_ONLY
2156 {
2157 0ULL,
2158 0xfffff81f80000000ULL,
2159 0ULL,
2160 0ULL,
2161 0xc3f8000004000000ULL
2162 },
2163 {
2164 -1ULL,
2165 0x286a801f80000000ULL,
2166 -1ULL,
2167 -1ULL,
2168 0x41f8000004000000ULL
2169 }
2170 #endif
2171 },
2172 { "prefetch_add_l1", TILEGX_OPC_PREFETCH_ADD_L1, 0x2, 2, TREG_ZERO, 1,
2173 { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } },
2174 #ifndef DISASM_ONLY
2175 {
2176 0ULL,
2177 0xfff8001f80000000ULL,
2178 0ULL,
2179 0ULL,
2180 0ULL
2181 },
2182 {
2183 -1ULL,
2184 0x1840001f80000000ULL,
2185 -1ULL,
2186 -1ULL,
2187 -1ULL
2188 }
2189 #endif
2190 },
2191 { "prefetch_add_l1_fault", TILEGX_OPC_PREFETCH_ADD_L1_FAULT, 0x2, 2, TREG_ZERO, 1,
2192 { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } },
2193 #ifndef DISASM_ONLY
2194 {
2195 0ULL,
2196 0xfff8001f80000000ULL,
2197 0ULL,
2198 0ULL,
2199 0ULL
2200 },
2201 {
2202 -1ULL,
2203 0x1838001f80000000ULL,
2204 -1ULL,
2205 -1ULL,
2206 -1ULL
2207 }
2208 #endif
2209 },
2210 { "prefetch_add_l2", TILEGX_OPC_PREFETCH_ADD_L2, 0x2, 2, TREG_ZERO, 1,
2211 { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } },
2212 #ifndef DISASM_ONLY
2213 {
2214 0ULL,
2215 0xfff8001f80000000ULL,
2216 0ULL,
2217 0ULL,
2218 0ULL
2219 },
2220 {
2221 -1ULL,
2222 0x1850001f80000000ULL,
2223 -1ULL,
2224 -1ULL,
2225 -1ULL
2226 }
2227 #endif
2228 },
2229 { "prefetch_add_l2_fault", TILEGX_OPC_PREFETCH_ADD_L2_FAULT, 0x2, 2, TREG_ZERO, 1,
2230 { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } },
2231 #ifndef DISASM_ONLY
2232 {
2233 0ULL,
2234 0xfff8001f80000000ULL,
2235 0ULL,
2236 0ULL,
2237 0ULL
2238 },
2239 {
2240 -1ULL,
2241 0x1848001f80000000ULL,
2242 -1ULL,
2243 -1ULL,
2244 -1ULL
2245 }
2246 #endif
2247 },
2248 { "prefetch_add_l3", TILEGX_OPC_PREFETCH_ADD_L3, 0x2, 2, TREG_ZERO, 1,
2249 { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } },
2250 #ifndef DISASM_ONLY
2251 {
2252 0ULL,
2253 0xfff8001f80000000ULL,
2254 0ULL,
2255 0ULL,
2256 0ULL
2257 },
2258 {
2259 -1ULL,
2260 0x1860001f80000000ULL,
2261 -1ULL,
2262 -1ULL,
2263 -1ULL
2264 }
2265 #endif
2266 },
2267 { "prefetch_add_l3_fault", TILEGX_OPC_PREFETCH_ADD_L3_FAULT, 0x2, 2, TREG_ZERO, 1,
2268 { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } },
2269 #ifndef DISASM_ONLY
2270 {
2271 0ULL,
2272 0xfff8001f80000000ULL,
2273 0ULL,
2274 0ULL,
2275 0ULL
2276 },
2277 {
2278 -1ULL,
2279 0x1858001f80000000ULL,
2280 -1ULL,
2281 -1ULL,
2282 -1ULL
2283 }
2284 #endif
2285 },
2286 { "prefetch_l1", TILEGX_OPC_PREFETCH_L1, 0x12, 1, TREG_ZERO, 1,
2287 { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } },
2288 #ifndef DISASM_ONLY
2289 {
2290 0ULL,
2291 0xfffff81f80000000ULL,
2292 0ULL,
2293 0ULL,
2294 0xc3f8000004000000ULL
2295 },
2296 {
2297 -1ULL,
2298 0x286a801f80000000ULL,
2299 -1ULL,
2300 -1ULL,
2301 0x41f8000004000000ULL
2302 }
2303 #endif
2304 },
2305 { "prefetch_l1_fault", TILEGX_OPC_PREFETCH_L1_FAULT, 0x12, 1, TREG_ZERO, 1,
2306 { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } },
2307 #ifndef DISASM_ONLY
2308 {
2309 0ULL,
2310 0xfffff81f80000000ULL,
2311 0ULL,
2312 0ULL,
2313 0xc3f8000004000000ULL
2314 },
2315 {
2316 -1ULL,
2317 0x286a781f80000000ULL,
2318 -1ULL,
2319 -1ULL,
2320 0x41f8000000000000ULL
2321 }
2322 #endif
2323 },
2324 { "prefetch_l2", TILEGX_OPC_PREFETCH_L2, 0x12, 1, TREG_ZERO, 1,
2325 { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } },
2326 #ifndef DISASM_ONLY
2327 {
2328 0ULL,
2329 0xfffff81f80000000ULL,
2330 0ULL,
2331 0ULL,
2332 0xc3f8000004000000ULL
2333 },
2334 {
2335 -1ULL,
2336 0x286a901f80000000ULL,
2337 -1ULL,
2338 -1ULL,
2339 0x43f8000004000000ULL
2340 }
2341 #endif
2342 },
2343 { "prefetch_l2_fault", TILEGX_OPC_PREFETCH_L2_FAULT, 0x12, 1, TREG_ZERO, 1,
2344 { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } },
2345 #ifndef DISASM_ONLY
2346 {
2347 0ULL,
2348 0xfffff81f80000000ULL,
2349 0ULL,
2350 0ULL,
2351 0xc3f8000004000000ULL
2352 },
2353 {
2354 -1ULL,
2355 0x286a881f80000000ULL,
2356 -1ULL,
2357 -1ULL,
2358 0x43f8000000000000ULL
2359 }
2360 #endif
2361 },
2362 { "prefetch_l3", TILEGX_OPC_PREFETCH_L3, 0x12, 1, TREG_ZERO, 1,
2363 { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } },
2364 #ifndef DISASM_ONLY
2365 {
2366 0ULL,
2367 0xfffff81f80000000ULL,
2368 0ULL,
2369 0ULL,
2370 0xc3f8000004000000ULL
2371 },
2372 {
2373 -1ULL,
2374 0x286aa01f80000000ULL,
2375 -1ULL,
2376 -1ULL,
2377 0x83f8000000000000ULL
2378 }
2379 #endif
2380 },
2381 { "prefetch_l3_fault", TILEGX_OPC_PREFETCH_L3_FAULT, 0x12, 1, TREG_ZERO, 1,
2382 { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } },
2383 #ifndef DISASM_ONLY
2384 {
2385 0ULL,
2386 0xfffff81f80000000ULL,
2387 0ULL,
2388 0ULL,
2389 0xc3f8000004000000ULL
2390 },
2391 {
2392 -1ULL,
2393 0x286a981f80000000ULL,
2394 -1ULL,
2395 -1ULL,
2396 0x81f8000004000000ULL
2397 }
2398 #endif
2399 },
2400 { "raise", TILEGX_OPC_RAISE, 0x2, 0, TREG_ZERO, 1,
2401 { { 0, }, { }, { 0, }, { 0, }, { 0, } },
2402 #ifndef DISASM_ONLY
2403 {
2404 0ULL,
2405 0xffffffff80000000ULL,
2406 0ULL,
2407 0ULL,
2408 0ULL
2409 },
2410 {
2411 -1ULL,
2412 0x286a44ae80000000ULL,
2413 -1ULL,
2414 -1ULL,
2415 -1ULL
2416 }
2417 #endif
2418 },
2419 { "add", TILEGX_OPC_ADD, 0xf, 3, TREG_ZERO, 1,
2420 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
2421 #ifndef DISASM_ONLY
2422 {
2423 0xc00000007ffc0000ULL,
2424 0xfffe000000000000ULL,
2425 0x00000000780c0000ULL,
2426 0x3c06000000000000ULL,
2427 0ULL
2428 },
2429 {
2430 0x00000000500c0000ULL,
2431 0x2806000000000000ULL,
2432 0x0000000028040000ULL,
2433 0x1802000000000000ULL,
2434 -1ULL
2435 }
2436 #endif
2437 },
2438 { "addi", TILEGX_OPC_ADDI, 0xf, 3, TREG_ZERO, 1,
2439 { { 8, 9, 0 }, { 6, 7, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } },
2440 #ifndef DISASM_ONLY
2441 {
2442 0xc00000007ff00000ULL,
2443 0xfff8000000000000ULL,
2444 0x0000000078000000ULL,
2445 0x3c00000000000000ULL,
2446 0ULL
2447 },
2448 {
2449 0x0000000040100000ULL,
2450 0x1808000000000000ULL,
2451 0ULL,
2452 0x0400000000000000ULL,
2453 -1ULL
2454 }
2455 #endif
2456 },
2457 { "addli", TILEGX_OPC_ADDLI, 0x3, 3, TREG_ZERO, 1,
2458 { { 8, 9, 4 }, { 6, 7, 5 }, { 0, }, { 0, }, { 0, } },
2459 #ifndef DISASM_ONLY
2460 {
2461 0xc000000070000000ULL,
2462 0xf800000000000000ULL,
2463 0ULL,
2464 0ULL,
2465 0ULL
2466 },
2467 {
2468 0x0000000010000000ULL,
2469 0ULL,
2470 -1ULL,
2471 -1ULL,
2472 -1ULL
2473 }
2474 #endif
2475 },
2476 { "addx", TILEGX_OPC_ADDX, 0xf, 3, TREG_ZERO, 1,
2477 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
2478 #ifndef DISASM_ONLY
2479 {
2480 0xc00000007ffc0000ULL,
2481 0xfffe000000000000ULL,
2482 0x00000000780c0000ULL,
2483 0x3c06000000000000ULL,
2484 0ULL
2485 },
2486 {
2487 0x0000000050080000ULL,
2488 0x2804000000000000ULL,
2489 0x0000000028000000ULL,
2490 0x1800000000000000ULL,
2491 -1ULL
2492 }
2493 #endif
2494 },
2495 { "addxi", TILEGX_OPC_ADDXI, 0xf, 3, TREG_ZERO, 1,
2496 { { 8, 9, 0 }, { 6, 7, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } },
2497 #ifndef DISASM_ONLY
2498 {
2499 0xc00000007ff00000ULL,
2500 0xfff8000000000000ULL,
2501 0x0000000078000000ULL,
2502 0x3c00000000000000ULL,
2503 0ULL
2504 },
2505 {
2506 0x0000000040200000ULL,
2507 0x1810000000000000ULL,
2508 0x0000000008000000ULL,
2509 0x0800000000000000ULL,
2510 -1ULL
2511 }
2512 #endif
2513 },
2514 { "addxli", TILEGX_OPC_ADDXLI, 0x3, 3, TREG_ZERO, 1,
2515 { { 8, 9, 4 }, { 6, 7, 5 }, { 0, }, { 0, }, { 0, } },
2516 #ifndef DISASM_ONLY
2517 {
2518 0xc000000070000000ULL,
2519 0xf800000000000000ULL,
2520 0ULL,
2521 0ULL,
2522 0ULL
2523 },
2524 {
2525 0x0000000020000000ULL,
2526 0x0800000000000000ULL,
2527 -1ULL,
2528 -1ULL,
2529 -1ULL
2530 }
2531 #endif
2532 },
2533 { "addxsc", TILEGX_OPC_ADDXSC, 0x3, 3, TREG_ZERO, 1,
2534 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
2535 #ifndef DISASM_ONLY
2536 {
2537 0xc00000007ffc0000ULL,
2538 0xfffe000000000000ULL,
2539 0ULL,
2540 0ULL,
2541 0ULL
2542 },
2543 {
2544 0x0000000050040000ULL,
2545 0x2802000000000000ULL,
2546 -1ULL,
2547 -1ULL,
2548 -1ULL
2549 }
2550 #endif
2551 },
2552 { "and", TILEGX_OPC_AND, 0xf, 3, TREG_ZERO, 1,
2553 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
2554 #ifndef DISASM_ONLY
2555 {
2556 0xc00000007ffc0000ULL,
2557 0xfffe000000000000ULL,
2558 0x00000000780c0000ULL,
2559 0x3c06000000000000ULL,
2560 0ULL
2561 },
2562 {
2563 0x0000000050100000ULL,
2564 0x2808000000000000ULL,
2565 0x0000000050000000ULL,
2566 0x2c00000000000000ULL,
2567 -1ULL
2568 }
2569 #endif
2570 },
2571 { "andi", TILEGX_OPC_ANDI, 0xf, 3, TREG_ZERO, 1,
2572 { { 8, 9, 0 }, { 6, 7, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } },
2573 #ifndef DISASM_ONLY
2574 {
2575 0xc00000007ff00000ULL,
2576 0xfff8000000000000ULL,
2577 0x0000000078000000ULL,
2578 0x3c00000000000000ULL,
2579 0ULL
2580 },
2581 {
2582 0x0000000040300000ULL,
2583 0x1818000000000000ULL,
2584 0x0000000010000000ULL,
2585 0x0c00000000000000ULL,
2586 -1ULL
2587 }
2588 #endif
2589 },
2590 { "beqz", TILEGX_OPC_BEQZ, 0x2, 2, TREG_ZERO, 1,
2591 { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
2592 #ifndef DISASM_ONLY
2593 {
2594 0ULL,
2595 0xffc0000000000000ULL,
2596 0ULL,
2597 0ULL,
2598 0ULL
2599 },
2600 {
2601 -1ULL,
2602 0x1440000000000000ULL,
2603 -1ULL,
2604 -1ULL,
2605 -1ULL
2606 }
2607 #endif
2608 },
2609 { "beqzt", TILEGX_OPC_BEQZT, 0x2, 2, TREG_ZERO, 1,
2610 { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
2611 #ifndef DISASM_ONLY
2612 {
2613 0ULL,
2614 0xffc0000000000000ULL,
2615 0ULL,
2616 0ULL,
2617 0ULL
2618 },
2619 {
2620 -1ULL,
2621 0x1400000000000000ULL,
2622 -1ULL,
2623 -1ULL,
2624 -1ULL
2625 }
2626 #endif
2627 },
2628 { "bfexts", TILEGX_OPC_BFEXTS, 0x1, 4, TREG_ZERO, 1,
2629 { { 8, 9, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } },
2630 #ifndef DISASM_ONLY
2631 {
2632 0xc00000007f000000ULL,
2633 0ULL,
2634 0ULL,
2635 0ULL,
2636 0ULL
2637 },
2638 {
2639 0x0000000034000000ULL,
2640 -1ULL,
2641 -1ULL,
2642 -1ULL,
2643 -1ULL
2644 }
2645 #endif
2646 },
2647 { "bfextu", TILEGX_OPC_BFEXTU, 0x1, 4, TREG_ZERO, 1,
2648 { { 8, 9, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } },
2649 #ifndef DISASM_ONLY
2650 {
2651 0xc00000007f000000ULL,
2652 0ULL,
2653 0ULL,
2654 0ULL,
2655 0ULL
2656 },
2657 {
2658 0x0000000035000000ULL,
2659 -1ULL,
2660 -1ULL,
2661 -1ULL,
2662 -1ULL
2663 }
2664 #endif
2665 },
2666 { "bfins", TILEGX_OPC_BFINS, 0x1, 4, TREG_ZERO, 1,
2667 { { 23, 9, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } },
2668 #ifndef DISASM_ONLY
2669 {
2670 0xc00000007f000000ULL,
2671 0ULL,
2672 0ULL,
2673 0ULL,
2674 0ULL
2675 },
2676 {
2677 0x0000000036000000ULL,
2678 -1ULL,
2679 -1ULL,
2680 -1ULL,
2681 -1ULL
2682 }
2683 #endif
2684 },
2685 { "bgez", TILEGX_OPC_BGEZ, 0x2, 2, TREG_ZERO, 1,
2686 { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
2687 #ifndef DISASM_ONLY
2688 {
2689 0ULL,
2690 0xffc0000000000000ULL,
2691 0ULL,
2692 0ULL,
2693 0ULL
2694 },
2695 {
2696 -1ULL,
2697 0x14c0000000000000ULL,
2698 -1ULL,
2699 -1ULL,
2700 -1ULL
2701 }
2702 #endif
2703 },
2704 { "bgezt", TILEGX_OPC_BGEZT, 0x2, 2, TREG_ZERO, 1,
2705 { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
2706 #ifndef DISASM_ONLY
2707 {
2708 0ULL,
2709 0xffc0000000000000ULL,
2710 0ULL,
2711 0ULL,
2712 0ULL
2713 },
2714 {
2715 -1ULL,
2716 0x1480000000000000ULL,
2717 -1ULL,
2718 -1ULL,
2719 -1ULL
2720 }
2721 #endif
2722 },
2723 { "bgtz", TILEGX_OPC_BGTZ, 0x2, 2, TREG_ZERO, 1,
2724 { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
2725 #ifndef DISASM_ONLY
2726 {
2727 0ULL,
2728 0xffc0000000000000ULL,
2729 0ULL,
2730 0ULL,
2731 0ULL
2732 },
2733 {
2734 -1ULL,
2735 0x1540000000000000ULL,
2736 -1ULL,
2737 -1ULL,
2738 -1ULL
2739 }
2740 #endif
2741 },
2742 { "bgtzt", TILEGX_OPC_BGTZT, 0x2, 2, TREG_ZERO, 1,
2743 { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
2744 #ifndef DISASM_ONLY
2745 {
2746 0ULL,
2747 0xffc0000000000000ULL,
2748 0ULL,
2749 0ULL,
2750 0ULL
2751 },
2752 {
2753 -1ULL,
2754 0x1500000000000000ULL,
2755 -1ULL,
2756 -1ULL,
2757 -1ULL
2758 }
2759 #endif
2760 },
2761 { "blbc", TILEGX_OPC_BLBC, 0x2, 2, TREG_ZERO, 1,
2762 { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
2763 #ifndef DISASM_ONLY
2764 {
2765 0ULL,
2766 0xffc0000000000000ULL,
2767 0ULL,
2768 0ULL,
2769 0ULL
2770 },
2771 {
2772 -1ULL,
2773 0x15c0000000000000ULL,
2774 -1ULL,
2775 -1ULL,
2776 -1ULL
2777 }
2778 #endif
2779 },
2780 { "blbct", TILEGX_OPC_BLBCT, 0x2, 2, TREG_ZERO, 1,
2781 { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
2782 #ifndef DISASM_ONLY
2783 {
2784 0ULL,
2785 0xffc0000000000000ULL,
2786 0ULL,
2787 0ULL,
2788 0ULL
2789 },
2790 {
2791 -1ULL,
2792 0x1580000000000000ULL,
2793 -1ULL,
2794 -1ULL,
2795 -1ULL
2796 }
2797 #endif
2798 },
2799 { "blbs", TILEGX_OPC_BLBS, 0x2, 2, TREG_ZERO, 1,
2800 { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
2801 #ifndef DISASM_ONLY
2802 {
2803 0ULL,
2804 0xffc0000000000000ULL,
2805 0ULL,
2806 0ULL,
2807 0ULL
2808 },
2809 {
2810 -1ULL,
2811 0x1640000000000000ULL,
2812 -1ULL,
2813 -1ULL,
2814 -1ULL
2815 }
2816 #endif
2817 },
2818 { "blbst", TILEGX_OPC_BLBST, 0x2, 2, TREG_ZERO, 1,
2819 { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
2820 #ifndef DISASM_ONLY
2821 {
2822 0ULL,
2823 0xffc0000000000000ULL,
2824 0ULL,
2825 0ULL,
2826 0ULL
2827 },
2828 {
2829 -1ULL,
2830 0x1600000000000000ULL,
2831 -1ULL,
2832 -1ULL,
2833 -1ULL
2834 }
2835 #endif
2836 },
2837 { "blez", TILEGX_OPC_BLEZ, 0x2, 2, TREG_ZERO, 1,
2838 { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
2839 #ifndef DISASM_ONLY
2840 {
2841 0ULL,
2842 0xffc0000000000000ULL,
2843 0ULL,
2844 0ULL,
2845 0ULL
2846 },
2847 {
2848 -1ULL,
2849 0x16c0000000000000ULL,
2850 -1ULL,
2851 -1ULL,
2852 -1ULL
2853 }
2854 #endif
2855 },
2856 { "blezt", TILEGX_OPC_BLEZT, 0x2, 2, TREG_ZERO, 1,
2857 { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
2858 #ifndef DISASM_ONLY
2859 {
2860 0ULL,
2861 0xffc0000000000000ULL,
2862 0ULL,
2863 0ULL,
2864 0ULL
2865 },
2866 {
2867 -1ULL,
2868 0x1680000000000000ULL,
2869 -1ULL,
2870 -1ULL,
2871 -1ULL
2872 }
2873 #endif
2874 },
2875 { "bltz", TILEGX_OPC_BLTZ, 0x2, 2, TREG_ZERO, 1,
2876 { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
2877 #ifndef DISASM_ONLY
2878 {
2879 0ULL,
2880 0xffc0000000000000ULL,
2881 0ULL,
2882 0ULL,
2883 0ULL
2884 },
2885 {
2886 -1ULL,
2887 0x1740000000000000ULL,
2888 -1ULL,
2889 -1ULL,
2890 -1ULL
2891 }
2892 #endif
2893 },
2894 { "bltzt", TILEGX_OPC_BLTZT, 0x2, 2, TREG_ZERO, 1,
2895 { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
2896 #ifndef DISASM_ONLY
2897 {
2898 0ULL,
2899 0xffc0000000000000ULL,
2900 0ULL,
2901 0ULL,
2902 0ULL
2903 },
2904 {
2905 -1ULL,
2906 0x1700000000000000ULL,
2907 -1ULL,
2908 -1ULL,
2909 -1ULL
2910 }
2911 #endif
2912 },
2913 { "bnez", TILEGX_OPC_BNEZ, 0x2, 2, TREG_ZERO, 1,
2914 { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
2915 #ifndef DISASM_ONLY
2916 {
2917 0ULL,
2918 0xffc0000000000000ULL,
2919 0ULL,
2920 0ULL,
2921 0ULL
2922 },
2923 {
2924 -1ULL,
2925 0x17c0000000000000ULL,
2926 -1ULL,
2927 -1ULL,
2928 -1ULL
2929 }
2930 #endif
2931 },
2932 { "bnezt", TILEGX_OPC_BNEZT, 0x2, 2, TREG_ZERO, 1,
2933 { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } },
2934 #ifndef DISASM_ONLY
2935 {
2936 0ULL,
2937 0xffc0000000000000ULL,
2938 0ULL,
2939 0ULL,
2940 0ULL
2941 },
2942 {
2943 -1ULL,
2944 0x1780000000000000ULL,
2945 -1ULL,
2946 -1ULL,
2947 -1ULL
2948 }
2949 #endif
2950 },
2951 { "clz", TILEGX_OPC_CLZ, 0x5, 2, TREG_ZERO, 1,
2952 { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } },
2953 #ifndef DISASM_ONLY
2954 {
2955 0xc00000007ffff000ULL,
2956 0ULL,
2957 0x00000000780ff000ULL,
2958 0ULL,
2959 0ULL
2960 },
2961 {
2962 0x0000000051481000ULL,
2963 -1ULL,
2964 0x00000000300c1000ULL,
2965 -1ULL,
2966 -1ULL
2967 }
2968 #endif
2969 },
2970 { "cmoveqz", TILEGX_OPC_CMOVEQZ, 0x5, 3, TREG_ZERO, 1,
2971 { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } },
2972 #ifndef DISASM_ONLY
2973 {
2974 0xc00000007ffc0000ULL,
2975 0ULL,
2976 0x00000000780c0000ULL,
2977 0ULL,
2978 0ULL
2979 },
2980 {
2981 0x0000000050140000ULL,
2982 -1ULL,
2983 0x0000000048000000ULL,
2984 -1ULL,
2985 -1ULL
2986 }
2987 #endif
2988 },
2989 { "cmovnez", TILEGX_OPC_CMOVNEZ, 0x5, 3, TREG_ZERO, 1,
2990 { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } },
2991 #ifndef DISASM_ONLY
2992 {
2993 0xc00000007ffc0000ULL,
2994 0ULL,
2995 0x00000000780c0000ULL,
2996 0ULL,
2997 0ULL
2998 },
2999 {
3000 0x0000000050180000ULL,
3001 -1ULL,
3002 0x0000000048040000ULL,
3003 -1ULL,
3004 -1ULL
3005 }
3006 #endif
3007 },
3008 { "cmpeq", TILEGX_OPC_CMPEQ, 0xf, 3, TREG_ZERO, 1,
3009 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
3010 #ifndef DISASM_ONLY
3011 {
3012 0xc00000007ffc0000ULL,
3013 0xfffe000000000000ULL,
3014 0x00000000780c0000ULL,
3015 0x3c06000000000000ULL,
3016 0ULL
3017 },
3018 {
3019 0x00000000501c0000ULL,
3020 0x280a000000000000ULL,
3021 0x0000000040000000ULL,
3022 0x2404000000000000ULL,
3023 -1ULL
3024 }
3025 #endif
3026 },
3027 { "cmpeqi", TILEGX_OPC_CMPEQI, 0xf, 3, TREG_ZERO, 1,
3028 { { 8, 9, 0 }, { 6, 7, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } },
3029 #ifndef DISASM_ONLY
3030 {
3031 0xc00000007ff00000ULL,
3032 0xfff8000000000000ULL,
3033 0x0000000078000000ULL,
3034 0x3c00000000000000ULL,
3035 0ULL
3036 },
3037 {
3038 0x0000000040400000ULL,
3039 0x1820000000000000ULL,
3040 0x0000000018000000ULL,
3041 0x1000000000000000ULL,
3042 -1ULL
3043 }
3044 #endif
3045 },
3046 { "cmpexch", TILEGX_OPC_CMPEXCH, 0x2, 3, TREG_ZERO, 1,
3047 { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
3048 #ifndef DISASM_ONLY
3049 {
3050 0ULL,
3051 0xfffe000000000000ULL,
3052 0ULL,
3053 0ULL,
3054 0ULL
3055 },
3056 {
3057 -1ULL,
3058 0x280e000000000000ULL,
3059 -1ULL,
3060 -1ULL,
3061 -1ULL
3062 }
3063 #endif
3064 },
3065 { "cmpexch4", TILEGX_OPC_CMPEXCH4, 0x2, 3, TREG_ZERO, 1,
3066 { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
3067 #ifndef DISASM_ONLY
3068 {
3069 0ULL,
3070 0xfffe000000000000ULL,
3071 0ULL,
3072 0ULL,
3073 0ULL
3074 },
3075 {
3076 -1ULL,
3077 0x280c000000000000ULL,
3078 -1ULL,
3079 -1ULL,
3080 -1ULL
3081 }
3082 #endif
3083 },
3084 { "cmples", TILEGX_OPC_CMPLES, 0xf, 3, TREG_ZERO, 1,
3085 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
3086 #ifndef DISASM_ONLY
3087 {
3088 0xc00000007ffc0000ULL,
3089 0xfffe000000000000ULL,
3090 0x00000000780c0000ULL,
3091 0x3c06000000000000ULL,
3092 0ULL
3093 },
3094 {
3095 0x0000000050200000ULL,
3096 0x2810000000000000ULL,
3097 0x0000000038000000ULL,
3098 0x2000000000000000ULL,
3099 -1ULL
3100 }
3101 #endif
3102 },
3103 { "cmpleu", TILEGX_OPC_CMPLEU, 0xf, 3, TREG_ZERO, 1,
3104 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
3105 #ifndef DISASM_ONLY
3106 {
3107 0xc00000007ffc0000ULL,
3108 0xfffe000000000000ULL,
3109 0x00000000780c0000ULL,
3110 0x3c06000000000000ULL,
3111 0ULL
3112 },
3113 {
3114 0x0000000050240000ULL,
3115 0x2812000000000000ULL,
3116 0x0000000038040000ULL,
3117 0x2002000000000000ULL,
3118 -1ULL
3119 }
3120 #endif
3121 },
3122 { "cmplts", TILEGX_OPC_CMPLTS, 0xf, 3, TREG_ZERO, 1,
3123 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
3124 #ifndef DISASM_ONLY
3125 {
3126 0xc00000007ffc0000ULL,
3127 0xfffe000000000000ULL,
3128 0x00000000780c0000ULL,
3129 0x3c06000000000000ULL,
3130 0ULL
3131 },
3132 {
3133 0x0000000050280000ULL,
3134 0x2814000000000000ULL,
3135 0x0000000038080000ULL,
3136 0x2004000000000000ULL,
3137 -1ULL
3138 }
3139 #endif
3140 },
3141 { "cmpltsi", TILEGX_OPC_CMPLTSI, 0xf, 3, TREG_ZERO, 1,
3142 { { 8, 9, 0 }, { 6, 7, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } },
3143 #ifndef DISASM_ONLY
3144 {
3145 0xc00000007ff00000ULL,
3146 0xfff8000000000000ULL,
3147 0x0000000078000000ULL,
3148 0x3c00000000000000ULL,
3149 0ULL
3150 },
3151 {
3152 0x0000000040500000ULL,
3153 0x1828000000000000ULL,
3154 0x0000000020000000ULL,
3155 0x1400000000000000ULL,
3156 -1ULL
3157 }
3158 #endif
3159 },
3160 { "cmpltu", TILEGX_OPC_CMPLTU, 0xf, 3, TREG_ZERO, 1,
3161 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
3162 #ifndef DISASM_ONLY
3163 {
3164 0xc00000007ffc0000ULL,
3165 0xfffe000000000000ULL,
3166 0x00000000780c0000ULL,
3167 0x3c06000000000000ULL,
3168 0ULL
3169 },
3170 {
3171 0x00000000502c0000ULL,
3172 0x2816000000000000ULL,
3173 0x00000000380c0000ULL,
3174 0x2006000000000000ULL,
3175 -1ULL
3176 }
3177 #endif
3178 },
3179 { "cmpltui", TILEGX_OPC_CMPLTUI, 0x3, 3, TREG_ZERO, 1,
3180 { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
3181 #ifndef DISASM_ONLY
3182 {
3183 0xc00000007ff00000ULL,
3184 0xfff8000000000000ULL,
3185 0ULL,
3186 0ULL,
3187 0ULL
3188 },
3189 {
3190 0x0000000040600000ULL,
3191 0x1830000000000000ULL,
3192 -1ULL,
3193 -1ULL,
3194 -1ULL
3195 }
3196 #endif
3197 },
3198 { "cmpne", TILEGX_OPC_CMPNE, 0xf, 3, TREG_ZERO, 1,
3199 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
3200 #ifndef DISASM_ONLY
3201 {
3202 0xc00000007ffc0000ULL,
3203 0xfffe000000000000ULL,
3204 0x00000000780c0000ULL,
3205 0x3c06000000000000ULL,
3206 0ULL
3207 },
3208 {
3209 0x0000000050300000ULL,
3210 0x2818000000000000ULL,
3211 0x0000000040040000ULL,
3212 0x2406000000000000ULL,
3213 -1ULL
3214 }
3215 #endif
3216 },
3217 { "cmul", TILEGX_OPC_CMUL, 0x1, 3, TREG_ZERO, 1,
3218 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3219 #ifndef DISASM_ONLY
3220 {
3221 0xc00000007ffc0000ULL,
3222 0ULL,
3223 0ULL,
3224 0ULL,
3225 0ULL
3226 },
3227 {
3228 0x00000000504c0000ULL,
3229 -1ULL,
3230 -1ULL,
3231 -1ULL,
3232 -1ULL
3233 }
3234 #endif
3235 },
3236 { "cmula", TILEGX_OPC_CMULA, 0x1, 3, TREG_ZERO, 1,
3237 { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3238 #ifndef DISASM_ONLY
3239 {
3240 0xc00000007ffc0000ULL,
3241 0ULL,
3242 0ULL,
3243 0ULL,
3244 0ULL
3245 },
3246 {
3247 0x0000000050380000ULL,
3248 -1ULL,
3249 -1ULL,
3250 -1ULL,
3251 -1ULL
3252 }
3253 #endif
3254 },
3255 { "cmulaf", TILEGX_OPC_CMULAF, 0x1, 3, TREG_ZERO, 1,
3256 { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3257 #ifndef DISASM_ONLY
3258 {
3259 0xc00000007ffc0000ULL,
3260 0ULL,
3261 0ULL,
3262 0ULL,
3263 0ULL
3264 },
3265 {
3266 0x0000000050340000ULL,
3267 -1ULL,
3268 -1ULL,
3269 -1ULL,
3270 -1ULL
3271 }
3272 #endif
3273 },
3274 { "cmulf", TILEGX_OPC_CMULF, 0x1, 3, TREG_ZERO, 1,
3275 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3276 #ifndef DISASM_ONLY
3277 {
3278 0xc00000007ffc0000ULL,
3279 0ULL,
3280 0ULL,
3281 0ULL,
3282 0ULL
3283 },
3284 {
3285 0x0000000050400000ULL,
3286 -1ULL,
3287 -1ULL,
3288 -1ULL,
3289 -1ULL
3290 }
3291 #endif
3292 },
3293 { "cmulfr", TILEGX_OPC_CMULFR, 0x1, 3, TREG_ZERO, 1,
3294 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3295 #ifndef DISASM_ONLY
3296 {
3297 0xc00000007ffc0000ULL,
3298 0ULL,
3299 0ULL,
3300 0ULL,
3301 0ULL
3302 },
3303 {
3304 0x00000000503c0000ULL,
3305 -1ULL,
3306 -1ULL,
3307 -1ULL,
3308 -1ULL
3309 }
3310 #endif
3311 },
3312 { "cmulh", TILEGX_OPC_CMULH, 0x1, 3, TREG_ZERO, 1,
3313 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3314 #ifndef DISASM_ONLY
3315 {
3316 0xc00000007ffc0000ULL,
3317 0ULL,
3318 0ULL,
3319 0ULL,
3320 0ULL
3321 },
3322 {
3323 0x0000000050480000ULL,
3324 -1ULL,
3325 -1ULL,
3326 -1ULL,
3327 -1ULL
3328 }
3329 #endif
3330 },
3331 { "cmulhr", TILEGX_OPC_CMULHR, 0x1, 3, TREG_ZERO, 1,
3332 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3333 #ifndef DISASM_ONLY
3334 {
3335 0xc00000007ffc0000ULL,
3336 0ULL,
3337 0ULL,
3338 0ULL,
3339 0ULL
3340 },
3341 {
3342 0x0000000050440000ULL,
3343 -1ULL,
3344 -1ULL,
3345 -1ULL,
3346 -1ULL
3347 }
3348 #endif
3349 },
3350 { "crc32_32", TILEGX_OPC_CRC32_32, 0x1, 3, TREG_ZERO, 1,
3351 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3352 #ifndef DISASM_ONLY
3353 {
3354 0xc00000007ffc0000ULL,
3355 0ULL,
3356 0ULL,
3357 0ULL,
3358 0ULL
3359 },
3360 {
3361 0x0000000050500000ULL,
3362 -1ULL,
3363 -1ULL,
3364 -1ULL,
3365 -1ULL
3366 }
3367 #endif
3368 },
3369 { "crc32_8", TILEGX_OPC_CRC32_8, 0x1, 3, TREG_ZERO, 1,
3370 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3371 #ifndef DISASM_ONLY
3372 {
3373 0xc00000007ffc0000ULL,
3374 0ULL,
3375 0ULL,
3376 0ULL,
3377 0ULL
3378 },
3379 {
3380 0x0000000050540000ULL,
3381 -1ULL,
3382 -1ULL,
3383 -1ULL,
3384 -1ULL
3385 }
3386 #endif
3387 },
3388 { "ctz", TILEGX_OPC_CTZ, 0x5, 2, TREG_ZERO, 1,
3389 { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } },
3390 #ifndef DISASM_ONLY
3391 {
3392 0xc00000007ffff000ULL,
3393 0ULL,
3394 0x00000000780ff000ULL,
3395 0ULL,
3396 0ULL
3397 },
3398 {
3399 0x0000000051482000ULL,
3400 -1ULL,
3401 0x00000000300c2000ULL,
3402 -1ULL,
3403 -1ULL
3404 }
3405 #endif
3406 },
3407 { "dblalign", TILEGX_OPC_DBLALIGN, 0x1, 3, TREG_ZERO, 1,
3408 { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3409 #ifndef DISASM_ONLY
3410 {
3411 0xc00000007ffc0000ULL,
3412 0ULL,
3413 0ULL,
3414 0ULL,
3415 0ULL
3416 },
3417 {
3418 0x0000000050640000ULL,
3419 -1ULL,
3420 -1ULL,
3421 -1ULL,
3422 -1ULL
3423 }
3424 #endif
3425 },
3426 { "dblalign2", TILEGX_OPC_DBLALIGN2, 0x3, 3, TREG_ZERO, 1,
3427 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
3428 #ifndef DISASM_ONLY
3429 {
3430 0xc00000007ffc0000ULL,
3431 0xfffe000000000000ULL,
3432 0ULL,
3433 0ULL,
3434 0ULL
3435 },
3436 {
3437 0x0000000050580000ULL,
3438 0x281a000000000000ULL,
3439 -1ULL,
3440 -1ULL,
3441 -1ULL
3442 }
3443 #endif
3444 },
3445 { "dblalign4", TILEGX_OPC_DBLALIGN4, 0x3, 3, TREG_ZERO, 1,
3446 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
3447 #ifndef DISASM_ONLY
3448 {
3449 0xc00000007ffc0000ULL,
3450 0xfffe000000000000ULL,
3451 0ULL,
3452 0ULL,
3453 0ULL
3454 },
3455 {
3456 0x00000000505c0000ULL,
3457 0x281c000000000000ULL,
3458 -1ULL,
3459 -1ULL,
3460 -1ULL
3461 }
3462 #endif
3463 },
3464 { "dblalign6", TILEGX_OPC_DBLALIGN6, 0x3, 3, TREG_ZERO, 1,
3465 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
3466 #ifndef DISASM_ONLY
3467 {
3468 0xc00000007ffc0000ULL,
3469 0xfffe000000000000ULL,
3470 0ULL,
3471 0ULL,
3472 0ULL
3473 },
3474 {
3475 0x0000000050600000ULL,
3476 0x281e000000000000ULL,
3477 -1ULL,
3478 -1ULL,
3479 -1ULL
3480 }
3481 #endif
3482 },
3483 { "drain", TILEGX_OPC_DRAIN, 0x2, 0, TREG_ZERO, 0,
3484 { { 0, }, { }, { 0, }, { 0, }, { 0, } },
3485 #ifndef DISASM_ONLY
3486 {
3487 0ULL,
3488 0xfffff80000000000ULL,
3489 0ULL,
3490 0ULL,
3491 0ULL
3492 },
3493 {
3494 -1ULL,
3495 0x286a080000000000ULL,
3496 -1ULL,
3497 -1ULL,
3498 -1ULL
3499 }
3500 #endif
3501 },
3502 { "dtlbpr", TILEGX_OPC_DTLBPR, 0x2, 1, TREG_ZERO, 1,
3503 { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } },
3504 #ifndef DISASM_ONLY
3505 {
3506 0ULL,
3507 0xfffff80000000000ULL,
3508 0ULL,
3509 0ULL,
3510 0ULL
3511 },
3512 {
3513 -1ULL,
3514 0x286a100000000000ULL,
3515 -1ULL,
3516 -1ULL,
3517 -1ULL
3518 }
3519 #endif
3520 },
3521 { "exch", TILEGX_OPC_EXCH, 0x2, 3, TREG_ZERO, 1,
3522 { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
3523 #ifndef DISASM_ONLY
3524 {
3525 0ULL,
3526 0xfffe000000000000ULL,
3527 0ULL,
3528 0ULL,
3529 0ULL
3530 },
3531 {
3532 -1ULL,
3533 0x2822000000000000ULL,
3534 -1ULL,
3535 -1ULL,
3536 -1ULL
3537 }
3538 #endif
3539 },
3540 { "exch4", TILEGX_OPC_EXCH4, 0x2, 3, TREG_ZERO, 1,
3541 { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
3542 #ifndef DISASM_ONLY
3543 {
3544 0ULL,
3545 0xfffe000000000000ULL,
3546 0ULL,
3547 0ULL,
3548 0ULL
3549 },
3550 {
3551 -1ULL,
3552 0x2820000000000000ULL,
3553 -1ULL,
3554 -1ULL,
3555 -1ULL
3556 }
3557 #endif
3558 },
3559 { "fdouble_add_flags", TILEGX_OPC_FDOUBLE_ADD_FLAGS, 0x1, 3, TREG_ZERO, 1,
3560 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3561 #ifndef DISASM_ONLY
3562 {
3563 0xc00000007ffc0000ULL,
3564 0ULL,
3565 0ULL,
3566 0ULL,
3567 0ULL
3568 },
3569 {
3570 0x00000000506c0000ULL,
3571 -1ULL,
3572 -1ULL,
3573 -1ULL,
3574 -1ULL
3575 }
3576 #endif
3577 },
3578 { "fdouble_addsub", TILEGX_OPC_FDOUBLE_ADDSUB, 0x1, 3, TREG_ZERO, 1,
3579 { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3580 #ifndef DISASM_ONLY
3581 {
3582 0xc00000007ffc0000ULL,
3583 0ULL,
3584 0ULL,
3585 0ULL,
3586 0ULL
3587 },
3588 {
3589 0x0000000050680000ULL,
3590 -1ULL,
3591 -1ULL,
3592 -1ULL,
3593 -1ULL
3594 }
3595 #endif
3596 },
3597 { "fdouble_mul_flags", TILEGX_OPC_FDOUBLE_MUL_FLAGS, 0x1, 3, TREG_ZERO, 1,
3598 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3599 #ifndef DISASM_ONLY
3600 {
3601 0xc00000007ffc0000ULL,
3602 0ULL,
3603 0ULL,
3604 0ULL,
3605 0ULL
3606 },
3607 {
3608 0x0000000050700000ULL,
3609 -1ULL,
3610 -1ULL,
3611 -1ULL,
3612 -1ULL
3613 }
3614 #endif
3615 },
3616 { "fdouble_pack1", TILEGX_OPC_FDOUBLE_PACK1, 0x1, 3, TREG_ZERO, 1,
3617 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3618 #ifndef DISASM_ONLY
3619 {
3620 0xc00000007ffc0000ULL,
3621 0ULL,
3622 0ULL,
3623 0ULL,
3624 0ULL
3625 },
3626 {
3627 0x0000000050740000ULL,
3628 -1ULL,
3629 -1ULL,
3630 -1ULL,
3631 -1ULL
3632 }
3633 #endif
3634 },
3635 { "fdouble_pack2", TILEGX_OPC_FDOUBLE_PACK2, 0x1, 3, TREG_ZERO, 1,
3636 { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3637 #ifndef DISASM_ONLY
3638 {
3639 0xc00000007ffc0000ULL,
3640 0ULL,
3641 0ULL,
3642 0ULL,
3643 0ULL
3644 },
3645 {
3646 0x0000000050780000ULL,
3647 -1ULL,
3648 -1ULL,
3649 -1ULL,
3650 -1ULL
3651 }
3652 #endif
3653 },
3654 { "fdouble_sub_flags", TILEGX_OPC_FDOUBLE_SUB_FLAGS, 0x1, 3, TREG_ZERO, 1,
3655 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3656 #ifndef DISASM_ONLY
3657 {
3658 0xc00000007ffc0000ULL,
3659 0ULL,
3660 0ULL,
3661 0ULL,
3662 0ULL
3663 },
3664 {
3665 0x00000000507c0000ULL,
3666 -1ULL,
3667 -1ULL,
3668 -1ULL,
3669 -1ULL
3670 }
3671 #endif
3672 },
3673 { "fdouble_unpack_max", TILEGX_OPC_FDOUBLE_UNPACK_MAX, 0x1, 3, TREG_ZERO, 1,
3674 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3675 #ifndef DISASM_ONLY
3676 {
3677 0xc00000007ffc0000ULL,
3678 0ULL,
3679 0ULL,
3680 0ULL,
3681 0ULL
3682 },
3683 {
3684 0x0000000050800000ULL,
3685 -1ULL,
3686 -1ULL,
3687 -1ULL,
3688 -1ULL
3689 }
3690 #endif
3691 },
3692 { "fdouble_unpack_min", TILEGX_OPC_FDOUBLE_UNPACK_MIN, 0x1, 3, TREG_ZERO, 1,
3693 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3694 #ifndef DISASM_ONLY
3695 {
3696 0xc00000007ffc0000ULL,
3697 0ULL,
3698 0ULL,
3699 0ULL,
3700 0ULL
3701 },
3702 {
3703 0x0000000050840000ULL,
3704 -1ULL,
3705 -1ULL,
3706 -1ULL,
3707 -1ULL
3708 }
3709 #endif
3710 },
3711 { "fetchadd", TILEGX_OPC_FETCHADD, 0x2, 3, TREG_ZERO, 1,
3712 { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
3713 #ifndef DISASM_ONLY
3714 {
3715 0ULL,
3716 0xfffe000000000000ULL,
3717 0ULL,
3718 0ULL,
3719 0ULL
3720 },
3721 {
3722 -1ULL,
3723 0x282a000000000000ULL,
3724 -1ULL,
3725 -1ULL,
3726 -1ULL
3727 }
3728 #endif
3729 },
3730 { "fetchadd4", TILEGX_OPC_FETCHADD4, 0x2, 3, TREG_ZERO, 1,
3731 { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
3732 #ifndef DISASM_ONLY
3733 {
3734 0ULL,
3735 0xfffe000000000000ULL,
3736 0ULL,
3737 0ULL,
3738 0ULL
3739 },
3740 {
3741 -1ULL,
3742 0x2824000000000000ULL,
3743 -1ULL,
3744 -1ULL,
3745 -1ULL
3746 }
3747 #endif
3748 },
3749 { "fetchaddgez", TILEGX_OPC_FETCHADDGEZ, 0x2, 3, TREG_ZERO, 1,
3750 { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
3751 #ifndef DISASM_ONLY
3752 {
3753 0ULL,
3754 0xfffe000000000000ULL,
3755 0ULL,
3756 0ULL,
3757 0ULL
3758 },
3759 {
3760 -1ULL,
3761 0x2828000000000000ULL,
3762 -1ULL,
3763 -1ULL,
3764 -1ULL
3765 }
3766 #endif
3767 },
3768 { "fetchaddgez4", TILEGX_OPC_FETCHADDGEZ4, 0x2, 3, TREG_ZERO, 1,
3769 { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
3770 #ifndef DISASM_ONLY
3771 {
3772 0ULL,
3773 0xfffe000000000000ULL,
3774 0ULL,
3775 0ULL,
3776 0ULL
3777 },
3778 {
3779 -1ULL,
3780 0x2826000000000000ULL,
3781 -1ULL,
3782 -1ULL,
3783 -1ULL
3784 }
3785 #endif
3786 },
3787 { "fetchand", TILEGX_OPC_FETCHAND, 0x2, 3, TREG_ZERO, 1,
3788 { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
3789 #ifndef DISASM_ONLY
3790 {
3791 0ULL,
3792 0xfffe000000000000ULL,
3793 0ULL,
3794 0ULL,
3795 0ULL
3796 },
3797 {
3798 -1ULL,
3799 0x282e000000000000ULL,
3800 -1ULL,
3801 -1ULL,
3802 -1ULL
3803 }
3804 #endif
3805 },
3806 { "fetchand4", TILEGX_OPC_FETCHAND4, 0x2, 3, TREG_ZERO, 1,
3807 { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
3808 #ifndef DISASM_ONLY
3809 {
3810 0ULL,
3811 0xfffe000000000000ULL,
3812 0ULL,
3813 0ULL,
3814 0ULL
3815 },
3816 {
3817 -1ULL,
3818 0x282c000000000000ULL,
3819 -1ULL,
3820 -1ULL,
3821 -1ULL
3822 }
3823 #endif
3824 },
3825 { "fetchor", TILEGX_OPC_FETCHOR, 0x2, 3, TREG_ZERO, 1,
3826 { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
3827 #ifndef DISASM_ONLY
3828 {
3829 0ULL,
3830 0xfffe000000000000ULL,
3831 0ULL,
3832 0ULL,
3833 0ULL
3834 },
3835 {
3836 -1ULL,
3837 0x2832000000000000ULL,
3838 -1ULL,
3839 -1ULL,
3840 -1ULL
3841 }
3842 #endif
3843 },
3844 { "fetchor4", TILEGX_OPC_FETCHOR4, 0x2, 3, TREG_ZERO, 1,
3845 { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
3846 #ifndef DISASM_ONLY
3847 {
3848 0ULL,
3849 0xfffe000000000000ULL,
3850 0ULL,
3851 0ULL,
3852 0ULL
3853 },
3854 {
3855 -1ULL,
3856 0x2830000000000000ULL,
3857 -1ULL,
3858 -1ULL,
3859 -1ULL
3860 }
3861 #endif
3862 },
3863 { "finv", TILEGX_OPC_FINV, 0x2, 1, TREG_ZERO, 1,
3864 { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } },
3865 #ifndef DISASM_ONLY
3866 {
3867 0ULL,
3868 0xfffff80000000000ULL,
3869 0ULL,
3870 0ULL,
3871 0ULL
3872 },
3873 {
3874 -1ULL,
3875 0x286a180000000000ULL,
3876 -1ULL,
3877 -1ULL,
3878 -1ULL
3879 }
3880 #endif
3881 },
3882 { "flush", TILEGX_OPC_FLUSH, 0x2, 1, TREG_ZERO, 1,
3883 { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } },
3884 #ifndef DISASM_ONLY
3885 {
3886 0ULL,
3887 0xfffff80000000000ULL,
3888 0ULL,
3889 0ULL,
3890 0ULL
3891 },
3892 {
3893 -1ULL,
3894 0x286a280000000000ULL,
3895 -1ULL,
3896 -1ULL,
3897 -1ULL
3898 }
3899 #endif
3900 },
3901 { "flushwb", TILEGX_OPC_FLUSHWB, 0x2, 0, TREG_ZERO, 1,
3902 { { 0, }, { }, { 0, }, { 0, }, { 0, } },
3903 #ifndef DISASM_ONLY
3904 {
3905 0ULL,
3906 0xfffff80000000000ULL,
3907 0ULL,
3908 0ULL,
3909 0ULL
3910 },
3911 {
3912 -1ULL,
3913 0x286a200000000000ULL,
3914 -1ULL,
3915 -1ULL,
3916 -1ULL
3917 }
3918 #endif
3919 },
3920 { "fnop", TILEGX_OPC_FNOP, 0xf, 0, TREG_ZERO, 1,
3921 { { }, { }, { }, { }, { 0, } },
3922 #ifndef DISASM_ONLY
3923 {
3924 0xc00000007ffff000ULL,
3925 0xfffff80000000000ULL,
3926 0x00000000780ff000ULL,
3927 0x3c07f80000000000ULL,
3928 0ULL
3929 },
3930 {
3931 0x0000000051483000ULL,
3932 0x286a300000000000ULL,
3933 0x00000000300c3000ULL,
3934 0x1c06400000000000ULL,
3935 -1ULL
3936 }
3937 #endif
3938 },
3939 { "fsingle_add1", TILEGX_OPC_FSINGLE_ADD1, 0x1, 3, TREG_ZERO, 1,
3940 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3941 #ifndef DISASM_ONLY
3942 {
3943 0xc00000007ffc0000ULL,
3944 0ULL,
3945 0ULL,
3946 0ULL,
3947 0ULL
3948 },
3949 {
3950 0x0000000050880000ULL,
3951 -1ULL,
3952 -1ULL,
3953 -1ULL,
3954 -1ULL
3955 }
3956 #endif
3957 },
3958 { "fsingle_addsub2", TILEGX_OPC_FSINGLE_ADDSUB2, 0x1, 3, TREG_ZERO, 1,
3959 { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3960 #ifndef DISASM_ONLY
3961 {
3962 0xc00000007ffc0000ULL,
3963 0ULL,
3964 0ULL,
3965 0ULL,
3966 0ULL
3967 },
3968 {
3969 0x00000000508c0000ULL,
3970 -1ULL,
3971 -1ULL,
3972 -1ULL,
3973 -1ULL
3974 }
3975 #endif
3976 },
3977 { "fsingle_mul1", TILEGX_OPC_FSINGLE_MUL1, 0x1, 3, TREG_ZERO, 1,
3978 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3979 #ifndef DISASM_ONLY
3980 {
3981 0xc00000007ffc0000ULL,
3982 0ULL,
3983 0ULL,
3984 0ULL,
3985 0ULL
3986 },
3987 {
3988 0x0000000050900000ULL,
3989 -1ULL,
3990 -1ULL,
3991 -1ULL,
3992 -1ULL
3993 }
3994 #endif
3995 },
3996 { "fsingle_mul2", TILEGX_OPC_FSINGLE_MUL2, 0x1, 3, TREG_ZERO, 1,
3997 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
3998 #ifndef DISASM_ONLY
3999 {
4000 0xc00000007ffc0000ULL,
4001 0ULL,
4002 0ULL,
4003 0ULL,
4004 0ULL
4005 },
4006 {
4007 0x0000000050940000ULL,
4008 -1ULL,
4009 -1ULL,
4010 -1ULL,
4011 -1ULL
4012 }
4013 #endif
4014 },
4015 { "fsingle_pack1", TILEGX_OPC_FSINGLE_PACK1, 0x5, 2, TREG_ZERO, 1,
4016 { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } },
4017 #ifndef DISASM_ONLY
4018 {
4019 0xc00000007ffff000ULL,
4020 0ULL,
4021 0x00000000780ff000ULL,
4022 0ULL,
4023 0ULL
4024 },
4025 {
4026 0x0000000051484000ULL,
4027 -1ULL,
4028 0x00000000300c4000ULL,
4029 -1ULL,
4030 -1ULL
4031 }
4032 #endif
4033 },
4034 { "fsingle_pack2", TILEGX_OPC_FSINGLE_PACK2, 0x1, 3, TREG_ZERO, 1,
4035 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
4036 #ifndef DISASM_ONLY
4037 {
4038 0xc00000007ffc0000ULL,
4039 0ULL,
4040 0ULL,
4041 0ULL,
4042 0ULL
4043 },
4044 {
4045 0x0000000050980000ULL,
4046 -1ULL,
4047 -1ULL,
4048 -1ULL,
4049 -1ULL
4050 }
4051 #endif
4052 },
4053 { "fsingle_sub1", TILEGX_OPC_FSINGLE_SUB1, 0x1, 3, TREG_ZERO, 1,
4054 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
4055 #ifndef DISASM_ONLY
4056 {
4057 0xc00000007ffc0000ULL,
4058 0ULL,
4059 0ULL,
4060 0ULL,
4061 0ULL
4062 },
4063 {
4064 0x00000000509c0000ULL,
4065 -1ULL,
4066 -1ULL,
4067 -1ULL,
4068 -1ULL
4069 }
4070 #endif
4071 },
4072 { "icoh", TILEGX_OPC_ICOH, 0x2, 1, TREG_ZERO, 1,
4073 { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } },
4074 #ifndef DISASM_ONLY
4075 {
4076 0ULL,
4077 0xfffff80000000000ULL,
4078 0ULL,
4079 0ULL,
4080 0ULL
4081 },
4082 {
4083 -1ULL,
4084 0x286a380000000000ULL,
4085 -1ULL,
4086 -1ULL,
4087 -1ULL
4088 }
4089 #endif
4090 },
4091 { "ill", TILEGX_OPC_ILL, 0xa, 0, TREG_ZERO, 1,
4092 { { 0, }, { }, { 0, }, { }, { 0, } },
4093 #ifndef DISASM_ONLY
4094 {
4095 0ULL,
4096 0xfffff80000000000ULL,
4097 0ULL,
4098 0x3c07f80000000000ULL,
4099 0ULL
4100 },
4101 {
4102 -1ULL,
4103 0x286a400000000000ULL,
4104 -1ULL,
4105 0x1c06480000000000ULL,
4106 -1ULL
4107 }
4108 #endif
4109 },
4110 { "inv", TILEGX_OPC_INV, 0x2, 1, TREG_ZERO, 1,
4111 { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } },
4112 #ifndef DISASM_ONLY
4113 {
4114 0ULL,
4115 0xfffff80000000000ULL,
4116 0ULL,
4117 0ULL,
4118 0ULL
4119 },
4120 {
4121 -1ULL,
4122 0x286a480000000000ULL,
4123 -1ULL,
4124 -1ULL,
4125 -1ULL
4126 }
4127 #endif
4128 },
4129 { "iret", TILEGX_OPC_IRET, 0x2, 0, TREG_ZERO, 1,
4130 { { 0, }, { }, { 0, }, { 0, }, { 0, } },
4131 #ifndef DISASM_ONLY
4132 {
4133 0ULL,
4134 0xfffff80000000000ULL,
4135 0ULL,
4136 0ULL,
4137 0ULL
4138 },
4139 {
4140 -1ULL,
4141 0x286a500000000000ULL,
4142 -1ULL,
4143 -1ULL,
4144 -1ULL
4145 }
4146 #endif
4147 },
4148 { "j", TILEGX_OPC_J, 0x2, 1, TREG_ZERO, 1,
4149 { { 0, }, { 25 }, { 0, }, { 0, }, { 0, } },
4150 #ifndef DISASM_ONLY
4151 {
4152 0ULL,
4153 0xfc00000000000000ULL,
4154 0ULL,
4155 0ULL,
4156 0ULL
4157 },
4158 {
4159 -1ULL,
4160 0x2400000000000000ULL,
4161 -1ULL,
4162 -1ULL,
4163 -1ULL
4164 }
4165 #endif
4166 },
4167 { "jal", TILEGX_OPC_JAL, 0x2, 1, TREG_LR, 1,
4168 { { 0, }, { 25 }, { 0, }, { 0, }, { 0, } },
4169 #ifndef DISASM_ONLY
4170 {
4171 0ULL,
4172 0xfc00000000000000ULL,
4173 0ULL,
4174 0ULL,
4175 0ULL
4176 },
4177 {
4178 -1ULL,
4179 0x2000000000000000ULL,
4180 -1ULL,
4181 -1ULL,
4182 -1ULL
4183 }
4184 #endif
4185 },
4186 { "jalr", TILEGX_OPC_JALR, 0xa, 1, TREG_LR, 1,
4187 { { 0, }, { 7 }, { 0, }, { 13 }, { 0, } },
4188 #ifndef DISASM_ONLY
4189 {
4190 0ULL,
4191 0xfffff80000000000ULL,
4192 0ULL,
4193 0x3c07f80000000000ULL,
4194 0ULL
4195 },
4196 {
4197 -1ULL,
4198 0x286a600000000000ULL,
4199 -1ULL,
4200 0x1c06580000000000ULL,
4201 -1ULL
4202 }
4203 #endif
4204 },
4205 { "jalrp", TILEGX_OPC_JALRP, 0xa, 1, TREG_LR, 1,
4206 { { 0, }, { 7 }, { 0, }, { 13 }, { 0, } },
4207 #ifndef DISASM_ONLY
4208 {
4209 0ULL,
4210 0xfffff80000000000ULL,
4211 0ULL,
4212 0x3c07f80000000000ULL,
4213 0ULL
4214 },
4215 {
4216 -1ULL,
4217 0x286a580000000000ULL,
4218 -1ULL,
4219 0x1c06500000000000ULL,
4220 -1ULL
4221 }
4222 #endif
4223 },
4224 { "jr", TILEGX_OPC_JR, 0xa, 1, TREG_ZERO, 1,
4225 { { 0, }, { 7 }, { 0, }, { 13 }, { 0, } },
4226 #ifndef DISASM_ONLY
4227 {
4228 0ULL,
4229 0xfffff80000000000ULL,
4230 0ULL,
4231 0x3c07f80000000000ULL,
4232 0ULL
4233 },
4234 {
4235 -1ULL,
4236 0x286a700000000000ULL,
4237 -1ULL,
4238 0x1c06680000000000ULL,
4239 -1ULL
4240 }
4241 #endif
4242 },
4243 { "jrp", TILEGX_OPC_JRP, 0xa, 1, TREG_ZERO, 1,
4244 { { 0, }, { 7 }, { 0, }, { 13 }, { 0, } },
4245 #ifndef DISASM_ONLY
4246 {
4247 0ULL,
4248 0xfffff80000000000ULL,
4249 0ULL,
4250 0x3c07f80000000000ULL,
4251 0ULL
4252 },
4253 {
4254 -1ULL,
4255 0x286a680000000000ULL,
4256 -1ULL,
4257 0x1c06600000000000ULL,
4258 -1ULL
4259 }
4260 #endif
4261 },
4262 { "ld", TILEGX_OPC_LD, 0x12, 2, TREG_ZERO, 1,
4263 { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } },
4264 #ifndef DISASM_ONLY
4265 {
4266 0ULL,
4267 0xfffff80000000000ULL,
4268 0ULL,
4269 0ULL,
4270 0xc200000004000000ULL
4271 },
4272 {
4273 -1ULL,
4274 0x286ae80000000000ULL,
4275 -1ULL,
4276 -1ULL,
4277 0x8200000004000000ULL
4278 }
4279 #endif
4280 },
4281 { "ld1s", TILEGX_OPC_LD1S, 0x12, 2, TREG_ZERO, 1,
4282 { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } },
4283 #ifndef DISASM_ONLY
4284 {
4285 0ULL,
4286 0xfffff80000000000ULL,
4287 0ULL,
4288 0ULL,
4289 0xc200000004000000ULL
4290 },
4291 {
4292 -1ULL,
4293 0x286a780000000000ULL,
4294 -1ULL,
4295 -1ULL,
4296 0x4000000000000000ULL
4297 }
4298 #endif
4299 },
4300 { "ld1s_add", TILEGX_OPC_LD1S_ADD, 0x2, 3, TREG_ZERO, 1,
4301 { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
4302 #ifndef DISASM_ONLY
4303 {
4304 0ULL,
4305 0xfff8000000000000ULL,
4306 0ULL,
4307 0ULL,
4308 0ULL
4309 },
4310 {
4311 -1ULL,
4312 0x1838000000000000ULL,
4313 -1ULL,
4314 -1ULL,
4315 -1ULL
4316 }
4317 #endif
4318 },
4319 { "ld1u", TILEGX_OPC_LD1U, 0x12, 2, TREG_ZERO, 1,
4320 { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } },
4321 #ifndef DISASM_ONLY
4322 {
4323 0ULL,
4324 0xfffff80000000000ULL,
4325 0ULL,
4326 0ULL,
4327 0xc200000004000000ULL
4328 },
4329 {
4330 -1ULL,
4331 0x286a800000000000ULL,
4332 -1ULL,
4333 -1ULL,
4334 0x4000000004000000ULL
4335 }
4336 #endif
4337 },
4338 { "ld1u_add", TILEGX_OPC_LD1U_ADD, 0x2, 3, TREG_ZERO, 1,
4339 { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
4340 #ifndef DISASM_ONLY
4341 {
4342 0ULL,
4343 0xfff8000000000000ULL,
4344 0ULL,
4345 0ULL,
4346 0ULL
4347 },
4348 {
4349 -1ULL,
4350 0x1840000000000000ULL,
4351 -1ULL,
4352 -1ULL,
4353 -1ULL
4354 }
4355 #endif
4356 },
4357 { "ld2s", TILEGX_OPC_LD2S, 0x12, 2, TREG_ZERO, 1,
4358 { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } },
4359 #ifndef DISASM_ONLY
4360 {
4361 0ULL,
4362 0xfffff80000000000ULL,
4363 0ULL,
4364 0ULL,
4365 0xc200000004000000ULL
4366 },
4367 {
4368 -1ULL,
4369 0x286a880000000000ULL,
4370 -1ULL,
4371 -1ULL,
4372 0x4200000000000000ULL
4373 }
4374 #endif
4375 },
4376 { "ld2s_add", TILEGX_OPC_LD2S_ADD, 0x2, 3, TREG_ZERO, 1,
4377 { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
4378 #ifndef DISASM_ONLY
4379 {
4380 0ULL,
4381 0xfff8000000000000ULL,
4382 0ULL,
4383 0ULL,
4384 0ULL
4385 },
4386 {
4387 -1ULL,
4388 0x1848000000000000ULL,
4389 -1ULL,
4390 -1ULL,
4391 -1ULL
4392 }
4393 #endif
4394 },
4395 { "ld2u", TILEGX_OPC_LD2U, 0x12, 2, TREG_ZERO, 1,
4396 { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } },
4397 #ifndef DISASM_ONLY
4398 {
4399 0ULL,
4400 0xfffff80000000000ULL,
4401 0ULL,
4402 0ULL,
4403 0xc200000004000000ULL
4404 },
4405 {
4406 -1ULL,
4407 0x286a900000000000ULL,
4408 -1ULL,
4409 -1ULL,
4410 0x4200000004000000ULL
4411 }
4412 #endif
4413 },
4414 { "ld2u_add", TILEGX_OPC_LD2U_ADD, 0x2, 3, TREG_ZERO, 1,
4415 { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
4416 #ifndef DISASM_ONLY
4417 {
4418 0ULL,
4419 0xfff8000000000000ULL,
4420 0ULL,
4421 0ULL,
4422 0ULL
4423 },
4424 {
4425 -1ULL,
4426 0x1850000000000000ULL,
4427 -1ULL,
4428 -1ULL,
4429 -1ULL
4430 }
4431 #endif
4432 },
4433 { "ld4s", TILEGX_OPC_LD4S, 0x12, 2, TREG_ZERO, 1,
4434 { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } },
4435 #ifndef DISASM_ONLY
4436 {
4437 0ULL,
4438 0xfffff80000000000ULL,
4439 0ULL,
4440 0ULL,
4441 0xc200000004000000ULL
4442 },
4443 {
4444 -1ULL,
4445 0x286a980000000000ULL,
4446 -1ULL,
4447 -1ULL,
4448 0x8000000004000000ULL
4449 }
4450 #endif
4451 },
4452 { "ld4s_add", TILEGX_OPC_LD4S_ADD, 0x2, 3, TREG_ZERO, 1,
4453 { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
4454 #ifndef DISASM_ONLY
4455 {
4456 0ULL,
4457 0xfff8000000000000ULL,
4458 0ULL,
4459 0ULL,
4460 0ULL
4461 },
4462 {
4463 -1ULL,
4464 0x1858000000000000ULL,
4465 -1ULL,
4466 -1ULL,
4467 -1ULL
4468 }
4469 #endif
4470 },
4471 { "ld4u", TILEGX_OPC_LD4U, 0x12, 2, TREG_ZERO, 1,
4472 { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } },
4473 #ifndef DISASM_ONLY
4474 {
4475 0ULL,
4476 0xfffff80000000000ULL,
4477 0ULL,
4478 0ULL,
4479 0xc200000004000000ULL
4480 },
4481 {
4482 -1ULL,
4483 0x286aa00000000000ULL,
4484 -1ULL,
4485 -1ULL,
4486 0x8200000000000000ULL
4487 }
4488 #endif
4489 },
4490 { "ld4u_add", TILEGX_OPC_LD4U_ADD, 0x2, 3, TREG_ZERO, 1,
4491 { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
4492 #ifndef DISASM_ONLY
4493 {
4494 0ULL,
4495 0xfff8000000000000ULL,
4496 0ULL,
4497 0ULL,
4498 0ULL
4499 },
4500 {
4501 -1ULL,
4502 0x1860000000000000ULL,
4503 -1ULL,
4504 -1ULL,
4505 -1ULL
4506 }
4507 #endif
4508 },
4509 { "ld_add", TILEGX_OPC_LD_ADD, 0x2, 3, TREG_ZERO, 1,
4510 { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
4511 #ifndef DISASM_ONLY
4512 {
4513 0ULL,
4514 0xfff8000000000000ULL,
4515 0ULL,
4516 0ULL,
4517 0ULL
4518 },
4519 {
4520 -1ULL,
4521 0x18a0000000000000ULL,
4522 -1ULL,
4523 -1ULL,
4524 -1ULL
4525 }
4526 #endif
4527 },
4528 { "ldna", TILEGX_OPC_LDNA, 0x2, 2, TREG_ZERO, 1,
4529 { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } },
4530 #ifndef DISASM_ONLY
4531 {
4532 0ULL,
4533 0xfffff80000000000ULL,
4534 0ULL,
4535 0ULL,
4536 0ULL
4537 },
4538 {
4539 -1ULL,
4540 0x286aa80000000000ULL,
4541 -1ULL,
4542 -1ULL,
4543 -1ULL
4544 }
4545 #endif
4546 },
4547 { "ldna_add", TILEGX_OPC_LDNA_ADD, 0x2, 3, TREG_ZERO, 1,
4548 { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
4549 #ifndef DISASM_ONLY
4550 {
4551 0ULL,
4552 0xfff8000000000000ULL,
4553 0ULL,
4554 0ULL,
4555 0ULL
4556 },
4557 {
4558 -1ULL,
4559 0x18a8000000000000ULL,
4560 -1ULL,
4561 -1ULL,
4562 -1ULL
4563 }
4564 #endif
4565 },
4566 { "ldnt", TILEGX_OPC_LDNT, 0x2, 2, TREG_ZERO, 1,
4567 { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } },
4568 #ifndef DISASM_ONLY
4569 {
4570 0ULL,
4571 0xfffff80000000000ULL,
4572 0ULL,
4573 0ULL,
4574 0ULL
4575 },
4576 {
4577 -1ULL,
4578 0x286ae00000000000ULL,
4579 -1ULL,
4580 -1ULL,
4581 -1ULL
4582 }
4583 #endif
4584 },
4585 { "ldnt1s", TILEGX_OPC_LDNT1S, 0x2, 2, TREG_ZERO, 1,
4586 { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } },
4587 #ifndef DISASM_ONLY
4588 {
4589 0ULL,
4590 0xfffff80000000000ULL,
4591 0ULL,
4592 0ULL,
4593 0ULL
4594 },
4595 {
4596 -1ULL,
4597 0x286ab00000000000ULL,
4598 -1ULL,
4599 -1ULL,
4600 -1ULL
4601 }
4602 #endif
4603 },
4604 { "ldnt1s_add", TILEGX_OPC_LDNT1S_ADD, 0x2, 3, TREG_ZERO, 1,
4605 { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
4606 #ifndef DISASM_ONLY
4607 {
4608 0ULL,
4609 0xfff8000000000000ULL,
4610 0ULL,
4611 0ULL,
4612 0ULL
4613 },
4614 {
4615 -1ULL,
4616 0x1868000000000000ULL,
4617 -1ULL,
4618 -1ULL,
4619 -1ULL
4620 }
4621 #endif
4622 },
4623 { "ldnt1u", TILEGX_OPC_LDNT1U, 0x2, 2, TREG_ZERO, 1,
4624 { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } },
4625 #ifndef DISASM_ONLY
4626 {
4627 0ULL,
4628 0xfffff80000000000ULL,
4629 0ULL,
4630 0ULL,
4631 0ULL
4632 },
4633 {
4634 -1ULL,
4635 0x286ab80000000000ULL,
4636 -1ULL,
4637 -1ULL,
4638 -1ULL
4639 }
4640 #endif
4641 },
4642 { "ldnt1u_add", TILEGX_OPC_LDNT1U_ADD, 0x2, 3, TREG_ZERO, 1,
4643 { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
4644 #ifndef DISASM_ONLY
4645 {
4646 0ULL,
4647 0xfff8000000000000ULL,
4648 0ULL,
4649 0ULL,
4650 0ULL
4651 },
4652 {
4653 -1ULL,
4654 0x1870000000000000ULL,
4655 -1ULL,
4656 -1ULL,
4657 -1ULL
4658 }
4659 #endif
4660 },
4661 { "ldnt2s", TILEGX_OPC_LDNT2S, 0x2, 2, TREG_ZERO, 1,
4662 { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } },
4663 #ifndef DISASM_ONLY
4664 {
4665 0ULL,
4666 0xfffff80000000000ULL,
4667 0ULL,
4668 0ULL,
4669 0ULL
4670 },
4671 {
4672 -1ULL,
4673 0x286ac00000000000ULL,
4674 -1ULL,
4675 -1ULL,
4676 -1ULL
4677 }
4678 #endif
4679 },
4680 { "ldnt2s_add", TILEGX_OPC_LDNT2S_ADD, 0x2, 3, TREG_ZERO, 1,
4681 { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
4682 #ifndef DISASM_ONLY
4683 {
4684 0ULL,
4685 0xfff8000000000000ULL,
4686 0ULL,
4687 0ULL,
4688 0ULL
4689 },
4690 {
4691 -1ULL,
4692 0x1878000000000000ULL,
4693 -1ULL,
4694 -1ULL,
4695 -1ULL
4696 }
4697 #endif
4698 },
4699 { "ldnt2u", TILEGX_OPC_LDNT2U, 0x2, 2, TREG_ZERO, 1,
4700 { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } },
4701 #ifndef DISASM_ONLY
4702 {
4703 0ULL,
4704 0xfffff80000000000ULL,
4705 0ULL,
4706 0ULL,
4707 0ULL
4708 },
4709 {
4710 -1ULL,
4711 0x286ac80000000000ULL,
4712 -1ULL,
4713 -1ULL,
4714 -1ULL
4715 }
4716 #endif
4717 },
4718 { "ldnt2u_add", TILEGX_OPC_LDNT2U_ADD, 0x2, 3, TREG_ZERO, 1,
4719 { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
4720 #ifndef DISASM_ONLY
4721 {
4722 0ULL,
4723 0xfff8000000000000ULL,
4724 0ULL,
4725 0ULL,
4726 0ULL
4727 },
4728 {
4729 -1ULL,
4730 0x1880000000000000ULL,
4731 -1ULL,
4732 -1ULL,
4733 -1ULL
4734 }
4735 #endif
4736 },
4737 { "ldnt4s", TILEGX_OPC_LDNT4S, 0x2, 2, TREG_ZERO, 1,
4738 { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } },
4739 #ifndef DISASM_ONLY
4740 {
4741 0ULL,
4742 0xfffff80000000000ULL,
4743 0ULL,
4744 0ULL,
4745 0ULL
4746 },
4747 {
4748 -1ULL,
4749 0x286ad00000000000ULL,
4750 -1ULL,
4751 -1ULL,
4752 -1ULL
4753 }
4754 #endif
4755 },
4756 { "ldnt4s_add", TILEGX_OPC_LDNT4S_ADD, 0x2, 3, TREG_ZERO, 1,
4757 { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
4758 #ifndef DISASM_ONLY
4759 {
4760 0ULL,
4761 0xfff8000000000000ULL,
4762 0ULL,
4763 0ULL,
4764 0ULL
4765 },
4766 {
4767 -1ULL,
4768 0x1888000000000000ULL,
4769 -1ULL,
4770 -1ULL,
4771 -1ULL
4772 }
4773 #endif
4774 },
4775 { "ldnt4u", TILEGX_OPC_LDNT4U, 0x2, 2, TREG_ZERO, 1,
4776 { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } },
4777 #ifndef DISASM_ONLY
4778 {
4779 0ULL,
4780 0xfffff80000000000ULL,
4781 0ULL,
4782 0ULL,
4783 0ULL
4784 },
4785 {
4786 -1ULL,
4787 0x286ad80000000000ULL,
4788 -1ULL,
4789 -1ULL,
4790 -1ULL
4791 }
4792 #endif
4793 },
4794 { "ldnt4u_add", TILEGX_OPC_LDNT4U_ADD, 0x2, 3, TREG_ZERO, 1,
4795 { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
4796 #ifndef DISASM_ONLY
4797 {
4798 0ULL,
4799 0xfff8000000000000ULL,
4800 0ULL,
4801 0ULL,
4802 0ULL
4803 },
4804 {
4805 -1ULL,
4806 0x1890000000000000ULL,
4807 -1ULL,
4808 -1ULL,
4809 -1ULL
4810 }
4811 #endif
4812 },
4813 { "ldnt_add", TILEGX_OPC_LDNT_ADD, 0x2, 3, TREG_ZERO, 1,
4814 { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } },
4815 #ifndef DISASM_ONLY
4816 {
4817 0ULL,
4818 0xfff8000000000000ULL,
4819 0ULL,
4820 0ULL,
4821 0ULL
4822 },
4823 {
4824 -1ULL,
4825 0x1898000000000000ULL,
4826 -1ULL,
4827 -1ULL,
4828 -1ULL
4829 }
4830 #endif
4831 },
4832 { "lnk", TILEGX_OPC_LNK, 0xa, 1, TREG_ZERO, 1,
4833 { { 0, }, { 6 }, { 0, }, { 12 }, { 0, } },
4834 #ifndef DISASM_ONLY
4835 {
4836 0ULL,
4837 0xfffff80000000000ULL,
4838 0ULL,
4839 0x3c07f80000000000ULL,
4840 0ULL
4841 },
4842 {
4843 -1ULL,
4844 0x286af00000000000ULL,
4845 -1ULL,
4846 0x1c06700000000000ULL,
4847 -1ULL
4848 }
4849 #endif
4850 },
4851 { "mf", TILEGX_OPC_MF, 0x2, 0, TREG_ZERO, 1,
4852 { { 0, }, { }, { 0, }, { 0, }, { 0, } },
4853 #ifndef DISASM_ONLY
4854 {
4855 0ULL,
4856 0xfffff80000000000ULL,
4857 0ULL,
4858 0ULL,
4859 0ULL
4860 },
4861 {
4862 -1ULL,
4863 0x286af80000000000ULL,
4864 -1ULL,
4865 -1ULL,
4866 -1ULL
4867 }
4868 #endif
4869 },
4870 { "mfspr", TILEGX_OPC_MFSPR, 0x2, 2, TREG_ZERO, 1,
4871 { { 0, }, { 6, 27 }, { 0, }, { 0, }, { 0, } },
4872 #ifndef DISASM_ONLY
4873 {
4874 0ULL,
4875 0xfff8000000000000ULL,
4876 0ULL,
4877 0ULL,
4878 0ULL
4879 },
4880 {
4881 -1ULL,
4882 0x18b0000000000000ULL,
4883 -1ULL,
4884 -1ULL,
4885 -1ULL
4886 }
4887 #endif
4888 },
4889 { "mm", TILEGX_OPC_MM, 0x1, 4, TREG_ZERO, 1,
4890 { { 23, 9, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } },
4891 #ifndef DISASM_ONLY
4892 {
4893 0xc00000007f000000ULL,
4894 0ULL,
4895 0ULL,
4896 0ULL,
4897 0ULL
4898 },
4899 {
4900 0x0000000037000000ULL,
4901 -1ULL,
4902 -1ULL,
4903 -1ULL,
4904 -1ULL
4905 }
4906 #endif
4907 },
4908 { "mnz", TILEGX_OPC_MNZ, 0xf, 3, TREG_ZERO, 1,
4909 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
4910 #ifndef DISASM_ONLY
4911 {
4912 0xc00000007ffc0000ULL,
4913 0xfffe000000000000ULL,
4914 0x00000000780c0000ULL,
4915 0x3c06000000000000ULL,
4916 0ULL
4917 },
4918 {
4919 0x0000000050a00000ULL,
4920 0x2834000000000000ULL,
4921 0x0000000048080000ULL,
4922 0x2804000000000000ULL,
4923 -1ULL
4924 }
4925 #endif
4926 },
4927 { "mtspr", TILEGX_OPC_MTSPR, 0x2, 2, TREG_ZERO, 1,
4928 { { 0, }, { 28, 7 }, { 0, }, { 0, }, { 0, } },
4929 #ifndef DISASM_ONLY
4930 {
4931 0ULL,
4932 0xfff8000000000000ULL,
4933 0ULL,
4934 0ULL,
4935 0ULL
4936 },
4937 {
4938 -1ULL,
4939 0x18b8000000000000ULL,
4940 -1ULL,
4941 -1ULL,
4942 -1ULL
4943 }
4944 #endif
4945 },
4946 { "mul_hs_hs", TILEGX_OPC_MUL_HS_HS, 0x5, 3, TREG_ZERO, 1,
4947 { { 8, 9, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } },
4948 #ifndef DISASM_ONLY
4949 {
4950 0xc00000007ffc0000ULL,
4951 0ULL,
4952 0x00000000780c0000ULL,
4953 0ULL,
4954 0ULL
4955 },
4956 {
4957 0x0000000050d40000ULL,
4958 -1ULL,
4959 0x0000000068000000ULL,
4960 -1ULL,
4961 -1ULL
4962 }
4963 #endif
4964 },
4965 { "mul_hs_hu", TILEGX_OPC_MUL_HS_HU, 0x1, 3, TREG_ZERO, 1,
4966 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
4967 #ifndef DISASM_ONLY
4968 {
4969 0xc00000007ffc0000ULL,
4970 0ULL,
4971 0ULL,
4972 0ULL,
4973 0ULL
4974 },
4975 {
4976 0x0000000050d80000ULL,
4977 -1ULL,
4978 -1ULL,
4979 -1ULL,
4980 -1ULL
4981 }
4982 #endif
4983 },
4984 { "mul_hs_ls", TILEGX_OPC_MUL_HS_LS, 0x1, 3, TREG_ZERO, 1,
4985 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
4986 #ifndef DISASM_ONLY
4987 {
4988 0xc00000007ffc0000ULL,
4989 0ULL,
4990 0ULL,
4991 0ULL,
4992 0ULL
4993 },
4994 {
4995 0x0000000050dc0000ULL,
4996 -1ULL,
4997 -1ULL,
4998 -1ULL,
4999 -1ULL
5000 }
5001 #endif
5002 },
5003 { "mul_hs_lu", TILEGX_OPC_MUL_HS_LU, 0x1, 3, TREG_ZERO, 1,
5004 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5005 #ifndef DISASM_ONLY
5006 {
5007 0xc00000007ffc0000ULL,
5008 0ULL,
5009 0ULL,
5010 0ULL,
5011 0ULL
5012 },
5013 {
5014 0x0000000050e00000ULL,
5015 -1ULL,
5016 -1ULL,
5017 -1ULL,
5018 -1ULL
5019 }
5020 #endif
5021 },
5022 { "mul_hu_hu", TILEGX_OPC_MUL_HU_HU, 0x5, 3, TREG_ZERO, 1,
5023 { { 8, 9, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } },
5024 #ifndef DISASM_ONLY
5025 {
5026 0xc00000007ffc0000ULL,
5027 0ULL,
5028 0x00000000780c0000ULL,
5029 0ULL,
5030 0ULL
5031 },
5032 {
5033 0x0000000050e40000ULL,
5034 -1ULL,
5035 0x0000000068040000ULL,
5036 -1ULL,
5037 -1ULL
5038 }
5039 #endif
5040 },
5041 { "mul_hu_ls", TILEGX_OPC_MUL_HU_LS, 0x1, 3, TREG_ZERO, 1,
5042 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5043 #ifndef DISASM_ONLY
5044 {
5045 0xc00000007ffc0000ULL,
5046 0ULL,
5047 0ULL,
5048 0ULL,
5049 0ULL
5050 },
5051 {
5052 0x0000000050e80000ULL,
5053 -1ULL,
5054 -1ULL,
5055 -1ULL,
5056 -1ULL
5057 }
5058 #endif
5059 },
5060 { "mul_hu_lu", TILEGX_OPC_MUL_HU_LU, 0x1, 3, TREG_ZERO, 1,
5061 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5062 #ifndef DISASM_ONLY
5063 {
5064 0xc00000007ffc0000ULL,
5065 0ULL,
5066 0ULL,
5067 0ULL,
5068 0ULL
5069 },
5070 {
5071 0x0000000050ec0000ULL,
5072 -1ULL,
5073 -1ULL,
5074 -1ULL,
5075 -1ULL
5076 }
5077 #endif
5078 },
5079 { "mul_ls_ls", TILEGX_OPC_MUL_LS_LS, 0x5, 3, TREG_ZERO, 1,
5080 { { 8, 9, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } },
5081 #ifndef DISASM_ONLY
5082 {
5083 0xc00000007ffc0000ULL,
5084 0ULL,
5085 0x00000000780c0000ULL,
5086 0ULL,
5087 0ULL
5088 },
5089 {
5090 0x0000000050f00000ULL,
5091 -1ULL,
5092 0x0000000068080000ULL,
5093 -1ULL,
5094 -1ULL
5095 }
5096 #endif
5097 },
5098 { "mul_ls_lu", TILEGX_OPC_MUL_LS_LU, 0x1, 3, TREG_ZERO, 1,
5099 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5100 #ifndef DISASM_ONLY
5101 {
5102 0xc00000007ffc0000ULL,
5103 0ULL,
5104 0ULL,
5105 0ULL,
5106 0ULL
5107 },
5108 {
5109 0x0000000050f40000ULL,
5110 -1ULL,
5111 -1ULL,
5112 -1ULL,
5113 -1ULL
5114 }
5115 #endif
5116 },
5117 { "mul_lu_lu", TILEGX_OPC_MUL_LU_LU, 0x5, 3, TREG_ZERO, 1,
5118 { { 8, 9, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } },
5119 #ifndef DISASM_ONLY
5120 {
5121 0xc00000007ffc0000ULL,
5122 0ULL,
5123 0x00000000780c0000ULL,
5124 0ULL,
5125 0ULL
5126 },
5127 {
5128 0x0000000050f80000ULL,
5129 -1ULL,
5130 0x00000000680c0000ULL,
5131 -1ULL,
5132 -1ULL
5133 }
5134 #endif
5135 },
5136 { "mula_hs_hs", TILEGX_OPC_MULA_HS_HS, 0x5, 3, TREG_ZERO, 1,
5137 { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } },
5138 #ifndef DISASM_ONLY
5139 {
5140 0xc00000007ffc0000ULL,
5141 0ULL,
5142 0x00000000780c0000ULL,
5143 0ULL,
5144 0ULL
5145 },
5146 {
5147 0x0000000050a80000ULL,
5148 -1ULL,
5149 0x0000000070000000ULL,
5150 -1ULL,
5151 -1ULL
5152 }
5153 #endif
5154 },
5155 { "mula_hs_hu", TILEGX_OPC_MULA_HS_HU, 0x1, 3, TREG_ZERO, 1,
5156 { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5157 #ifndef DISASM_ONLY
5158 {
5159 0xc00000007ffc0000ULL,
5160 0ULL,
5161 0ULL,
5162 0ULL,
5163 0ULL
5164 },
5165 {
5166 0x0000000050ac0000ULL,
5167 -1ULL,
5168 -1ULL,
5169 -1ULL,
5170 -1ULL
5171 }
5172 #endif
5173 },
5174 { "mula_hs_ls", TILEGX_OPC_MULA_HS_LS, 0x1, 3, TREG_ZERO, 1,
5175 { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5176 #ifndef DISASM_ONLY
5177 {
5178 0xc00000007ffc0000ULL,
5179 0ULL,
5180 0ULL,
5181 0ULL,
5182 0ULL
5183 },
5184 {
5185 0x0000000050b00000ULL,
5186 -1ULL,
5187 -1ULL,
5188 -1ULL,
5189 -1ULL
5190 }
5191 #endif
5192 },
5193 { "mula_hs_lu", TILEGX_OPC_MULA_HS_LU, 0x1, 3, TREG_ZERO, 1,
5194 { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5195 #ifndef DISASM_ONLY
5196 {
5197 0xc00000007ffc0000ULL,
5198 0ULL,
5199 0ULL,
5200 0ULL,
5201 0ULL
5202 },
5203 {
5204 0x0000000050b40000ULL,
5205 -1ULL,
5206 -1ULL,
5207 -1ULL,
5208 -1ULL
5209 }
5210 #endif
5211 },
5212 { "mula_hu_hu", TILEGX_OPC_MULA_HU_HU, 0x5, 3, TREG_ZERO, 1,
5213 { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } },
5214 #ifndef DISASM_ONLY
5215 {
5216 0xc00000007ffc0000ULL,
5217 0ULL,
5218 0x00000000780c0000ULL,
5219 0ULL,
5220 0ULL
5221 },
5222 {
5223 0x0000000050b80000ULL,
5224 -1ULL,
5225 0x0000000070040000ULL,
5226 -1ULL,
5227 -1ULL
5228 }
5229 #endif
5230 },
5231 { "mula_hu_ls", TILEGX_OPC_MULA_HU_LS, 0x1, 3, TREG_ZERO, 1,
5232 { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5233 #ifndef DISASM_ONLY
5234 {
5235 0xc00000007ffc0000ULL,
5236 0ULL,
5237 0ULL,
5238 0ULL,
5239 0ULL
5240 },
5241 {
5242 0x0000000050bc0000ULL,
5243 -1ULL,
5244 -1ULL,
5245 -1ULL,
5246 -1ULL
5247 }
5248 #endif
5249 },
5250 { "mula_hu_lu", TILEGX_OPC_MULA_HU_LU, 0x1, 3, TREG_ZERO, 1,
5251 { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5252 #ifndef DISASM_ONLY
5253 {
5254 0xc00000007ffc0000ULL,
5255 0ULL,
5256 0ULL,
5257 0ULL,
5258 0ULL
5259 },
5260 {
5261 0x0000000050c00000ULL,
5262 -1ULL,
5263 -1ULL,
5264 -1ULL,
5265 -1ULL
5266 }
5267 #endif
5268 },
5269 { "mula_ls_ls", TILEGX_OPC_MULA_LS_LS, 0x5, 3, TREG_ZERO, 1,
5270 { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } },
5271 #ifndef DISASM_ONLY
5272 {
5273 0xc00000007ffc0000ULL,
5274 0ULL,
5275 0x00000000780c0000ULL,
5276 0ULL,
5277 0ULL
5278 },
5279 {
5280 0x0000000050c40000ULL,
5281 -1ULL,
5282 0x0000000070080000ULL,
5283 -1ULL,
5284 -1ULL
5285 }
5286 #endif
5287 },
5288 { "mula_ls_lu", TILEGX_OPC_MULA_LS_LU, 0x1, 3, TREG_ZERO, 1,
5289 { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5290 #ifndef DISASM_ONLY
5291 {
5292 0xc00000007ffc0000ULL,
5293 0ULL,
5294 0ULL,
5295 0ULL,
5296 0ULL
5297 },
5298 {
5299 0x0000000050c80000ULL,
5300 -1ULL,
5301 -1ULL,
5302 -1ULL,
5303 -1ULL
5304 }
5305 #endif
5306 },
5307 { "mula_lu_lu", TILEGX_OPC_MULA_LU_LU, 0x5, 3, TREG_ZERO, 1,
5308 { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } },
5309 #ifndef DISASM_ONLY
5310 {
5311 0xc00000007ffc0000ULL,
5312 0ULL,
5313 0x00000000780c0000ULL,
5314 0ULL,
5315 0ULL
5316 },
5317 {
5318 0x0000000050cc0000ULL,
5319 -1ULL,
5320 0x00000000700c0000ULL,
5321 -1ULL,
5322 -1ULL
5323 }
5324 #endif
5325 },
5326 { "mulax", TILEGX_OPC_MULAX, 0x5, 3, TREG_ZERO, 1,
5327 { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } },
5328 #ifndef DISASM_ONLY
5329 {
5330 0xc00000007ffc0000ULL,
5331 0ULL,
5332 0x00000000780c0000ULL,
5333 0ULL,
5334 0ULL
5335 },
5336 {
5337 0x0000000050a40000ULL,
5338 -1ULL,
5339 0x0000000040080000ULL,
5340 -1ULL,
5341 -1ULL
5342 }
5343 #endif
5344 },
5345 { "mulx", TILEGX_OPC_MULX, 0x5, 3, TREG_ZERO, 1,
5346 { { 8, 9, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } },
5347 #ifndef DISASM_ONLY
5348 {
5349 0xc00000007ffc0000ULL,
5350 0ULL,
5351 0x00000000780c0000ULL,
5352 0ULL,
5353 0ULL
5354 },
5355 {
5356 0x0000000050d00000ULL,
5357 -1ULL,
5358 0x00000000400c0000ULL,
5359 -1ULL,
5360 -1ULL
5361 }
5362 #endif
5363 },
5364 { "mz", TILEGX_OPC_MZ, 0xf, 3, TREG_ZERO, 1,
5365 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
5366 #ifndef DISASM_ONLY
5367 {
5368 0xc00000007ffc0000ULL,
5369 0xfffe000000000000ULL,
5370 0x00000000780c0000ULL,
5371 0x3c06000000000000ULL,
5372 0ULL
5373 },
5374 {
5375 0x0000000050fc0000ULL,
5376 0x2836000000000000ULL,
5377 0x00000000480c0000ULL,
5378 0x2806000000000000ULL,
5379 -1ULL
5380 }
5381 #endif
5382 },
5383 { "nap", TILEGX_OPC_NAP, 0x2, 0, TREG_ZERO, 0,
5384 { { 0, }, { }, { 0, }, { 0, }, { 0, } },
5385 #ifndef DISASM_ONLY
5386 {
5387 0ULL,
5388 0xfffff80000000000ULL,
5389 0ULL,
5390 0ULL,
5391 0ULL
5392 },
5393 {
5394 -1ULL,
5395 0x286b000000000000ULL,
5396 -1ULL,
5397 -1ULL,
5398 -1ULL
5399 }
5400 #endif
5401 },
5402 { "nop", TILEGX_OPC_NOP, 0xf, 0, TREG_ZERO, 1,
5403 { { }, { }, { }, { }, { 0, } },
5404 #ifndef DISASM_ONLY
5405 {
5406 0xc00000007ffff000ULL,
5407 0xfffff80000000000ULL,
5408 0x00000000780ff000ULL,
5409 0x3c07f80000000000ULL,
5410 0ULL
5411 },
5412 {
5413 0x0000000051485000ULL,
5414 0x286b080000000000ULL,
5415 0x00000000300c5000ULL,
5416 0x1c06780000000000ULL,
5417 -1ULL
5418 }
5419 #endif
5420 },
5421 { "nor", TILEGX_OPC_NOR, 0xf, 3, TREG_ZERO, 1,
5422 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
5423 #ifndef DISASM_ONLY
5424 {
5425 0xc00000007ffc0000ULL,
5426 0xfffe000000000000ULL,
5427 0x00000000780c0000ULL,
5428 0x3c06000000000000ULL,
5429 0ULL
5430 },
5431 {
5432 0x0000000051000000ULL,
5433 0x2838000000000000ULL,
5434 0x0000000050040000ULL,
5435 0x2c02000000000000ULL,
5436 -1ULL
5437 }
5438 #endif
5439 },
5440 { "or", TILEGX_OPC_OR, 0xf, 3, TREG_ZERO, 1,
5441 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
5442 #ifndef DISASM_ONLY
5443 {
5444 0xc00000007ffc0000ULL,
5445 0xfffe000000000000ULL,
5446 0x00000000780c0000ULL,
5447 0x3c06000000000000ULL,
5448 0ULL
5449 },
5450 {
5451 0x0000000051040000ULL,
5452 0x283a000000000000ULL,
5453 0x0000000050080000ULL,
5454 0x2c04000000000000ULL,
5455 -1ULL
5456 }
5457 #endif
5458 },
5459 { "ori", TILEGX_OPC_ORI, 0x3, 3, TREG_ZERO, 1,
5460 { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
5461 #ifndef DISASM_ONLY
5462 {
5463 0xc00000007ff00000ULL,
5464 0xfff8000000000000ULL,
5465 0ULL,
5466 0ULL,
5467 0ULL
5468 },
5469 {
5470 0x0000000040700000ULL,
5471 0x18c0000000000000ULL,
5472 -1ULL,
5473 -1ULL,
5474 -1ULL
5475 }
5476 #endif
5477 },
5478 { "pcnt", TILEGX_OPC_PCNT, 0x5, 2, TREG_ZERO, 1,
5479 { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } },
5480 #ifndef DISASM_ONLY
5481 {
5482 0xc00000007ffff000ULL,
5483 0ULL,
5484 0x00000000780ff000ULL,
5485 0ULL,
5486 0ULL
5487 },
5488 {
5489 0x0000000051486000ULL,
5490 -1ULL,
5491 0x00000000300c6000ULL,
5492 -1ULL,
5493 -1ULL
5494 }
5495 #endif
5496 },
5497 { "revbits", TILEGX_OPC_REVBITS, 0x5, 2, TREG_ZERO, 1,
5498 { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } },
5499 #ifndef DISASM_ONLY
5500 {
5501 0xc00000007ffff000ULL,
5502 0ULL,
5503 0x00000000780ff000ULL,
5504 0ULL,
5505 0ULL
5506 },
5507 {
5508 0x0000000051487000ULL,
5509 -1ULL,
5510 0x00000000300c7000ULL,
5511 -1ULL,
5512 -1ULL
5513 }
5514 #endif
5515 },
5516 { "revbytes", TILEGX_OPC_REVBYTES, 0x5, 2, TREG_ZERO, 1,
5517 { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } },
5518 #ifndef DISASM_ONLY
5519 {
5520 0xc00000007ffff000ULL,
5521 0ULL,
5522 0x00000000780ff000ULL,
5523 0ULL,
5524 0ULL
5525 },
5526 {
5527 0x0000000051488000ULL,
5528 -1ULL,
5529 0x00000000300c8000ULL,
5530 -1ULL,
5531 -1ULL
5532 }
5533 #endif
5534 },
5535 { "rotl", TILEGX_OPC_ROTL, 0xf, 3, TREG_ZERO, 1,
5536 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
5537 #ifndef DISASM_ONLY
5538 {
5539 0xc00000007ffc0000ULL,
5540 0xfffe000000000000ULL,
5541 0x00000000780c0000ULL,
5542 0x3c06000000000000ULL,
5543 0ULL
5544 },
5545 {
5546 0x0000000051080000ULL,
5547 0x283c000000000000ULL,
5548 0x0000000058000000ULL,
5549 0x3000000000000000ULL,
5550 -1ULL
5551 }
5552 #endif
5553 },
5554 { "rotli", TILEGX_OPC_ROTLI, 0xf, 3, TREG_ZERO, 1,
5555 { { 8, 9, 29 }, { 6, 7, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } },
5556 #ifndef DISASM_ONLY
5557 {
5558 0xc00000007ffc0000ULL,
5559 0xfffe000000000000ULL,
5560 0x00000000780c0000ULL,
5561 0x3c06000000000000ULL,
5562 0ULL
5563 },
5564 {
5565 0x0000000060040000ULL,
5566 0x3002000000000000ULL,
5567 0x0000000078000000ULL,
5568 0x3800000000000000ULL,
5569 -1ULL
5570 }
5571 #endif
5572 },
5573 { "shl", TILEGX_OPC_SHL, 0xf, 3, TREG_ZERO, 1,
5574 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
5575 #ifndef DISASM_ONLY
5576 {
5577 0xc00000007ffc0000ULL,
5578 0xfffe000000000000ULL,
5579 0x00000000780c0000ULL,
5580 0x3c06000000000000ULL,
5581 0ULL
5582 },
5583 {
5584 0x0000000051280000ULL,
5585 0x284c000000000000ULL,
5586 0x0000000058040000ULL,
5587 0x3002000000000000ULL,
5588 -1ULL
5589 }
5590 #endif
5591 },
5592 { "shl16insli", TILEGX_OPC_SHL16INSLI, 0x3, 3, TREG_ZERO, 1,
5593 { { 8, 9, 4 }, { 6, 7, 5 }, { 0, }, { 0, }, { 0, } },
5594 #ifndef DISASM_ONLY
5595 {
5596 0xc000000070000000ULL,
5597 0xf800000000000000ULL,
5598 0ULL,
5599 0ULL,
5600 0ULL
5601 },
5602 {
5603 0x0000000070000000ULL,
5604 0x3800000000000000ULL,
5605 -1ULL,
5606 -1ULL,
5607 -1ULL
5608 }
5609 #endif
5610 },
5611 { "shl1add", TILEGX_OPC_SHL1ADD, 0xf, 3, TREG_ZERO, 1,
5612 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
5613 #ifndef DISASM_ONLY
5614 {
5615 0xc00000007ffc0000ULL,
5616 0xfffe000000000000ULL,
5617 0x00000000780c0000ULL,
5618 0x3c06000000000000ULL,
5619 0ULL
5620 },
5621 {
5622 0x0000000051100000ULL,
5623 0x2840000000000000ULL,
5624 0x0000000030000000ULL,
5625 0x1c00000000000000ULL,
5626 -1ULL
5627 }
5628 #endif
5629 },
5630 { "shl1addx", TILEGX_OPC_SHL1ADDX, 0xf, 3, TREG_ZERO, 1,
5631 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
5632 #ifndef DISASM_ONLY
5633 {
5634 0xc00000007ffc0000ULL,
5635 0xfffe000000000000ULL,
5636 0x00000000780c0000ULL,
5637 0x3c06000000000000ULL,
5638 0ULL
5639 },
5640 {
5641 0x00000000510c0000ULL,
5642 0x283e000000000000ULL,
5643 0x0000000060040000ULL,
5644 0x3402000000000000ULL,
5645 -1ULL
5646 }
5647 #endif
5648 },
5649 { "shl2add", TILEGX_OPC_SHL2ADD, 0xf, 3, TREG_ZERO, 1,
5650 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
5651 #ifndef DISASM_ONLY
5652 {
5653 0xc00000007ffc0000ULL,
5654 0xfffe000000000000ULL,
5655 0x00000000780c0000ULL,
5656 0x3c06000000000000ULL,
5657 0ULL
5658 },
5659 {
5660 0x0000000051180000ULL,
5661 0x2844000000000000ULL,
5662 0x0000000030040000ULL,
5663 0x1c02000000000000ULL,
5664 -1ULL
5665 }
5666 #endif
5667 },
5668 { "shl2addx", TILEGX_OPC_SHL2ADDX, 0xf, 3, TREG_ZERO, 1,
5669 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
5670 #ifndef DISASM_ONLY
5671 {
5672 0xc00000007ffc0000ULL,
5673 0xfffe000000000000ULL,
5674 0x00000000780c0000ULL,
5675 0x3c06000000000000ULL,
5676 0ULL
5677 },
5678 {
5679 0x0000000051140000ULL,
5680 0x2842000000000000ULL,
5681 0x0000000060080000ULL,
5682 0x3404000000000000ULL,
5683 -1ULL
5684 }
5685 #endif
5686 },
5687 { "shl3add", TILEGX_OPC_SHL3ADD, 0xf, 3, TREG_ZERO, 1,
5688 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
5689 #ifndef DISASM_ONLY
5690 {
5691 0xc00000007ffc0000ULL,
5692 0xfffe000000000000ULL,
5693 0x00000000780c0000ULL,
5694 0x3c06000000000000ULL,
5695 0ULL
5696 },
5697 {
5698 0x0000000051200000ULL,
5699 0x2848000000000000ULL,
5700 0x0000000030080000ULL,
5701 0x1c04000000000000ULL,
5702 -1ULL
5703 }
5704 #endif
5705 },
5706 { "shl3addx", TILEGX_OPC_SHL3ADDX, 0xf, 3, TREG_ZERO, 1,
5707 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
5708 #ifndef DISASM_ONLY
5709 {
5710 0xc00000007ffc0000ULL,
5711 0xfffe000000000000ULL,
5712 0x00000000780c0000ULL,
5713 0x3c06000000000000ULL,
5714 0ULL
5715 },
5716 {
5717 0x00000000511c0000ULL,
5718 0x2846000000000000ULL,
5719 0x00000000600c0000ULL,
5720 0x3406000000000000ULL,
5721 -1ULL
5722 }
5723 #endif
5724 },
5725 { "shli", TILEGX_OPC_SHLI, 0xf, 3, TREG_ZERO, 1,
5726 { { 8, 9, 29 }, { 6, 7, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } },
5727 #ifndef DISASM_ONLY
5728 {
5729 0xc00000007ffc0000ULL,
5730 0xfffe000000000000ULL,
5731 0x00000000780c0000ULL,
5732 0x3c06000000000000ULL,
5733 0ULL
5734 },
5735 {
5736 0x0000000060080000ULL,
5737 0x3004000000000000ULL,
5738 0x0000000078040000ULL,
5739 0x3802000000000000ULL,
5740 -1ULL
5741 }
5742 #endif
5743 },
5744 { "shlx", TILEGX_OPC_SHLX, 0x3, 3, TREG_ZERO, 1,
5745 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5746 #ifndef DISASM_ONLY
5747 {
5748 0xc00000007ffc0000ULL,
5749 0xfffe000000000000ULL,
5750 0ULL,
5751 0ULL,
5752 0ULL
5753 },
5754 {
5755 0x0000000051240000ULL,
5756 0x284a000000000000ULL,
5757 -1ULL,
5758 -1ULL,
5759 -1ULL
5760 }
5761 #endif
5762 },
5763 { "shlxi", TILEGX_OPC_SHLXI, 0x3, 3, TREG_ZERO, 1,
5764 { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } },
5765 #ifndef DISASM_ONLY
5766 {
5767 0xc00000007ffc0000ULL,
5768 0xfffe000000000000ULL,
5769 0ULL,
5770 0ULL,
5771 0ULL
5772 },
5773 {
5774 0x00000000600c0000ULL,
5775 0x3006000000000000ULL,
5776 -1ULL,
5777 -1ULL,
5778 -1ULL
5779 }
5780 #endif
5781 },
5782 { "shrs", TILEGX_OPC_SHRS, 0xf, 3, TREG_ZERO, 1,
5783 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
5784 #ifndef DISASM_ONLY
5785 {
5786 0xc00000007ffc0000ULL,
5787 0xfffe000000000000ULL,
5788 0x00000000780c0000ULL,
5789 0x3c06000000000000ULL,
5790 0ULL
5791 },
5792 {
5793 0x00000000512c0000ULL,
5794 0x284e000000000000ULL,
5795 0x0000000058080000ULL,
5796 0x3004000000000000ULL,
5797 -1ULL
5798 }
5799 #endif
5800 },
5801 { "shrsi", TILEGX_OPC_SHRSI, 0xf, 3, TREG_ZERO, 1,
5802 { { 8, 9, 29 }, { 6, 7, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } },
5803 #ifndef DISASM_ONLY
5804 {
5805 0xc00000007ffc0000ULL,
5806 0xfffe000000000000ULL,
5807 0x00000000780c0000ULL,
5808 0x3c06000000000000ULL,
5809 0ULL
5810 },
5811 {
5812 0x0000000060100000ULL,
5813 0x3008000000000000ULL,
5814 0x0000000078080000ULL,
5815 0x3804000000000000ULL,
5816 -1ULL
5817 }
5818 #endif
5819 },
5820 { "shru", TILEGX_OPC_SHRU, 0xf, 3, TREG_ZERO, 1,
5821 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
5822 #ifndef DISASM_ONLY
5823 {
5824 0xc00000007ffc0000ULL,
5825 0xfffe000000000000ULL,
5826 0x00000000780c0000ULL,
5827 0x3c06000000000000ULL,
5828 0ULL
5829 },
5830 {
5831 0x0000000051340000ULL,
5832 0x2852000000000000ULL,
5833 0x00000000580c0000ULL,
5834 0x3006000000000000ULL,
5835 -1ULL
5836 }
5837 #endif
5838 },
5839 { "shrui", TILEGX_OPC_SHRUI, 0xf, 3, TREG_ZERO, 1,
5840 { { 8, 9, 29 }, { 6, 7, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } },
5841 #ifndef DISASM_ONLY
5842 {
5843 0xc00000007ffc0000ULL,
5844 0xfffe000000000000ULL,
5845 0x00000000780c0000ULL,
5846 0x3c06000000000000ULL,
5847 0ULL
5848 },
5849 {
5850 0x0000000060140000ULL,
5851 0x300a000000000000ULL,
5852 0x00000000780c0000ULL,
5853 0x3806000000000000ULL,
5854 -1ULL
5855 }
5856 #endif
5857 },
5858 { "shrux", TILEGX_OPC_SHRUX, 0x3, 3, TREG_ZERO, 1,
5859 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
5860 #ifndef DISASM_ONLY
5861 {
5862 0xc00000007ffc0000ULL,
5863 0xfffe000000000000ULL,
5864 0ULL,
5865 0ULL,
5866 0ULL
5867 },
5868 {
5869 0x0000000051300000ULL,
5870 0x2850000000000000ULL,
5871 -1ULL,
5872 -1ULL,
5873 -1ULL
5874 }
5875 #endif
5876 },
5877 { "shruxi", TILEGX_OPC_SHRUXI, 0x3, 3, TREG_ZERO, 1,
5878 { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } },
5879 #ifndef DISASM_ONLY
5880 {
5881 0xc00000007ffc0000ULL,
5882 0xfffe000000000000ULL,
5883 0ULL,
5884 0ULL,
5885 0ULL
5886 },
5887 {
5888 0x0000000060180000ULL,
5889 0x300c000000000000ULL,
5890 -1ULL,
5891 -1ULL,
5892 -1ULL
5893 }
5894 #endif
5895 },
5896 { "shufflebytes", TILEGX_OPC_SHUFFLEBYTES, 0x1, 3, TREG_ZERO, 1,
5897 { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
5898 #ifndef DISASM_ONLY
5899 {
5900 0xc00000007ffc0000ULL,
5901 0ULL,
5902 0ULL,
5903 0ULL,
5904 0ULL
5905 },
5906 {
5907 0x0000000051380000ULL,
5908 -1ULL,
5909 -1ULL,
5910 -1ULL,
5911 -1ULL
5912 }
5913 #endif
5914 },
5915 { "st", TILEGX_OPC_ST, 0x12, 2, TREG_ZERO, 1,
5916 { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 14, 33 } },
5917 #ifndef DISASM_ONLY
5918 {
5919 0ULL,
5920 0xfffe000000000000ULL,
5921 0ULL,
5922 0ULL,
5923 0xc200000004000000ULL
5924 },
5925 {
5926 -1ULL,
5927 0x2862000000000000ULL,
5928 -1ULL,
5929 -1ULL,
5930 0xc200000004000000ULL
5931 }
5932 #endif
5933 },
5934 { "st1", TILEGX_OPC_ST1, 0x12, 2, TREG_ZERO, 1,
5935 { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 14, 33 } },
5936 #ifndef DISASM_ONLY
5937 {
5938 0ULL,
5939 0xfffe000000000000ULL,
5940 0ULL,
5941 0ULL,
5942 0xc200000004000000ULL
5943 },
5944 {
5945 -1ULL,
5946 0x2854000000000000ULL,
5947 -1ULL,
5948 -1ULL,
5949 0xc000000000000000ULL
5950 }
5951 #endif
5952 },
5953 { "st1_add", TILEGX_OPC_ST1_ADD, 0x2, 3, TREG_ZERO, 1,
5954 { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
5955 #ifndef DISASM_ONLY
5956 {
5957 0ULL,
5958 0xfff8000000000000ULL,
5959 0ULL,
5960 0ULL,
5961 0ULL
5962 },
5963 {
5964 -1ULL,
5965 0x18c8000000000000ULL,
5966 -1ULL,
5967 -1ULL,
5968 -1ULL
5969 }
5970 #endif
5971 },
5972 { "st2", TILEGX_OPC_ST2, 0x12, 2, TREG_ZERO, 1,
5973 { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 14, 33 } },
5974 #ifndef DISASM_ONLY
5975 {
5976 0ULL,
5977 0xfffe000000000000ULL,
5978 0ULL,
5979 0ULL,
5980 0xc200000004000000ULL
5981 },
5982 {
5983 -1ULL,
5984 0x2856000000000000ULL,
5985 -1ULL,
5986 -1ULL,
5987 0xc000000004000000ULL
5988 }
5989 #endif
5990 },
5991 { "st2_add", TILEGX_OPC_ST2_ADD, 0x2, 3, TREG_ZERO, 1,
5992 { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
5993 #ifndef DISASM_ONLY
5994 {
5995 0ULL,
5996 0xfff8000000000000ULL,
5997 0ULL,
5998 0ULL,
5999 0ULL
6000 },
6001 {
6002 -1ULL,
6003 0x18d0000000000000ULL,
6004 -1ULL,
6005 -1ULL,
6006 -1ULL
6007 }
6008 #endif
6009 },
6010 { "st4", TILEGX_OPC_ST4, 0x12, 2, TREG_ZERO, 1,
6011 { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 14, 33 } },
6012 #ifndef DISASM_ONLY
6013 {
6014 0ULL,
6015 0xfffe000000000000ULL,
6016 0ULL,
6017 0ULL,
6018 0xc200000004000000ULL
6019 },
6020 {
6021 -1ULL,
6022 0x2858000000000000ULL,
6023 -1ULL,
6024 -1ULL,
6025 0xc200000000000000ULL
6026 }
6027 #endif
6028 },
6029 { "st4_add", TILEGX_OPC_ST4_ADD, 0x2, 3, TREG_ZERO, 1,
6030 { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
6031 #ifndef DISASM_ONLY
6032 {
6033 0ULL,
6034 0xfff8000000000000ULL,
6035 0ULL,
6036 0ULL,
6037 0ULL
6038 },
6039 {
6040 -1ULL,
6041 0x18d8000000000000ULL,
6042 -1ULL,
6043 -1ULL,
6044 -1ULL
6045 }
6046 #endif
6047 },
6048 { "st_add", TILEGX_OPC_ST_ADD, 0x2, 3, TREG_ZERO, 1,
6049 { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
6050 #ifndef DISASM_ONLY
6051 {
6052 0ULL,
6053 0xfff8000000000000ULL,
6054 0ULL,
6055 0ULL,
6056 0ULL
6057 },
6058 {
6059 -1ULL,
6060 0x1900000000000000ULL,
6061 -1ULL,
6062 -1ULL,
6063 -1ULL
6064 }
6065 #endif
6066 },
6067 { "stnt", TILEGX_OPC_STNT, 0x2, 2, TREG_ZERO, 1,
6068 { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 0, } },
6069 #ifndef DISASM_ONLY
6070 {
6071 0ULL,
6072 0xfffe000000000000ULL,
6073 0ULL,
6074 0ULL,
6075 0ULL
6076 },
6077 {
6078 -1ULL,
6079 0x2860000000000000ULL,
6080 -1ULL,
6081 -1ULL,
6082 -1ULL
6083 }
6084 #endif
6085 },
6086 { "stnt1", TILEGX_OPC_STNT1, 0x2, 2, TREG_ZERO, 1,
6087 { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 0, } },
6088 #ifndef DISASM_ONLY
6089 {
6090 0ULL,
6091 0xfffe000000000000ULL,
6092 0ULL,
6093 0ULL,
6094 0ULL
6095 },
6096 {
6097 -1ULL,
6098 0x285a000000000000ULL,
6099 -1ULL,
6100 -1ULL,
6101 -1ULL
6102 }
6103 #endif
6104 },
6105 { "stnt1_add", TILEGX_OPC_STNT1_ADD, 0x2, 3, TREG_ZERO, 1,
6106 { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
6107 #ifndef DISASM_ONLY
6108 {
6109 0ULL,
6110 0xfff8000000000000ULL,
6111 0ULL,
6112 0ULL,
6113 0ULL
6114 },
6115 {
6116 -1ULL,
6117 0x18e0000000000000ULL,
6118 -1ULL,
6119 -1ULL,
6120 -1ULL
6121 }
6122 #endif
6123 },
6124 { "stnt2", TILEGX_OPC_STNT2, 0x2, 2, TREG_ZERO, 1,
6125 { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 0, } },
6126 #ifndef DISASM_ONLY
6127 {
6128 0ULL,
6129 0xfffe000000000000ULL,
6130 0ULL,
6131 0ULL,
6132 0ULL
6133 },
6134 {
6135 -1ULL,
6136 0x285c000000000000ULL,
6137 -1ULL,
6138 -1ULL,
6139 -1ULL
6140 }
6141 #endif
6142 },
6143 { "stnt2_add", TILEGX_OPC_STNT2_ADD, 0x2, 3, TREG_ZERO, 1,
6144 { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
6145 #ifndef DISASM_ONLY
6146 {
6147 0ULL,
6148 0xfff8000000000000ULL,
6149 0ULL,
6150 0ULL,
6151 0ULL
6152 },
6153 {
6154 -1ULL,
6155 0x18e8000000000000ULL,
6156 -1ULL,
6157 -1ULL,
6158 -1ULL
6159 }
6160 #endif
6161 },
6162 { "stnt4", TILEGX_OPC_STNT4, 0x2, 2, TREG_ZERO, 1,
6163 { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 0, } },
6164 #ifndef DISASM_ONLY
6165 {
6166 0ULL,
6167 0xfffe000000000000ULL,
6168 0ULL,
6169 0ULL,
6170 0ULL
6171 },
6172 {
6173 -1ULL,
6174 0x285e000000000000ULL,
6175 -1ULL,
6176 -1ULL,
6177 -1ULL
6178 }
6179 #endif
6180 },
6181 { "stnt4_add", TILEGX_OPC_STNT4_ADD, 0x2, 3, TREG_ZERO, 1,
6182 { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
6183 #ifndef DISASM_ONLY
6184 {
6185 0ULL,
6186 0xfff8000000000000ULL,
6187 0ULL,
6188 0ULL,
6189 0ULL
6190 },
6191 {
6192 -1ULL,
6193 0x18f0000000000000ULL,
6194 -1ULL,
6195 -1ULL,
6196 -1ULL
6197 }
6198 #endif
6199 },
6200 { "stnt_add", TILEGX_OPC_STNT_ADD, 0x2, 3, TREG_ZERO, 1,
6201 { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } },
6202 #ifndef DISASM_ONLY
6203 {
6204 0ULL,
6205 0xfff8000000000000ULL,
6206 0ULL,
6207 0ULL,
6208 0ULL
6209 },
6210 {
6211 -1ULL,
6212 0x18f8000000000000ULL,
6213 -1ULL,
6214 -1ULL,
6215 -1ULL
6216 }
6217 #endif
6218 },
6219 { "sub", TILEGX_OPC_SUB, 0xf, 3, TREG_ZERO, 1,
6220 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
6221 #ifndef DISASM_ONLY
6222 {
6223 0xc00000007ffc0000ULL,
6224 0xfffe000000000000ULL,
6225 0x00000000780c0000ULL,
6226 0x3c06000000000000ULL,
6227 0ULL
6228 },
6229 {
6230 0x0000000051440000ULL,
6231 0x2868000000000000ULL,
6232 0x00000000280c0000ULL,
6233 0x1806000000000000ULL,
6234 -1ULL
6235 }
6236 #endif
6237 },
6238 { "subx", TILEGX_OPC_SUBX, 0xf, 3, TREG_ZERO, 1,
6239 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
6240 #ifndef DISASM_ONLY
6241 {
6242 0xc00000007ffc0000ULL,
6243 0xfffe000000000000ULL,
6244 0x00000000780c0000ULL,
6245 0x3c06000000000000ULL,
6246 0ULL
6247 },
6248 {
6249 0x0000000051400000ULL,
6250 0x2866000000000000ULL,
6251 0x0000000028080000ULL,
6252 0x1804000000000000ULL,
6253 -1ULL
6254 }
6255 #endif
6256 },
6257 { "subxsc", TILEGX_OPC_SUBXSC, 0x3, 3, TREG_ZERO, 1,
6258 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6259 #ifndef DISASM_ONLY
6260 {
6261 0xc00000007ffc0000ULL,
6262 0xfffe000000000000ULL,
6263 0ULL,
6264 0ULL,
6265 0ULL
6266 },
6267 {
6268 0x00000000513c0000ULL,
6269 0x2864000000000000ULL,
6270 -1ULL,
6271 -1ULL,
6272 -1ULL
6273 }
6274 #endif
6275 },
6276 { "swint0", TILEGX_OPC_SWINT0, 0x2, 0, TREG_ZERO, 0,
6277 { { 0, }, { }, { 0, }, { 0, }, { 0, } },
6278 #ifndef DISASM_ONLY
6279 {
6280 0ULL,
6281 0xfffff80000000000ULL,
6282 0ULL,
6283 0ULL,
6284 0ULL
6285 },
6286 {
6287 -1ULL,
6288 0x286b100000000000ULL,
6289 -1ULL,
6290 -1ULL,
6291 -1ULL
6292 }
6293 #endif
6294 },
6295 { "swint1", TILEGX_OPC_SWINT1, 0x2, 0, TREG_ZERO, 0,
6296 { { 0, }, { }, { 0, }, { 0, }, { 0, } },
6297 #ifndef DISASM_ONLY
6298 {
6299 0ULL,
6300 0xfffff80000000000ULL,
6301 0ULL,
6302 0ULL,
6303 0ULL
6304 },
6305 {
6306 -1ULL,
6307 0x286b180000000000ULL,
6308 -1ULL,
6309 -1ULL,
6310 -1ULL
6311 }
6312 #endif
6313 },
6314 { "swint2", TILEGX_OPC_SWINT2, 0x2, 0, TREG_ZERO, 0,
6315 { { 0, }, { }, { 0, }, { 0, }, { 0, } },
6316 #ifndef DISASM_ONLY
6317 {
6318 0ULL,
6319 0xfffff80000000000ULL,
6320 0ULL,
6321 0ULL,
6322 0ULL
6323 },
6324 {
6325 -1ULL,
6326 0x286b200000000000ULL,
6327 -1ULL,
6328 -1ULL,
6329 -1ULL
6330 }
6331 #endif
6332 },
6333 { "swint3", TILEGX_OPC_SWINT3, 0x2, 0, TREG_ZERO, 0,
6334 { { 0, }, { }, { 0, }, { 0, }, { 0, } },
6335 #ifndef DISASM_ONLY
6336 {
6337 0ULL,
6338 0xfffff80000000000ULL,
6339 0ULL,
6340 0ULL,
6341 0ULL
6342 },
6343 {
6344 -1ULL,
6345 0x286b280000000000ULL,
6346 -1ULL,
6347 -1ULL,
6348 -1ULL
6349 }
6350 #endif
6351 },
6352 { "tblidxb0", TILEGX_OPC_TBLIDXB0, 0x5, 2, TREG_ZERO, 1,
6353 { { 23, 9 }, { 0, }, { 24, 11 }, { 0, }, { 0, } },
6354 #ifndef DISASM_ONLY
6355 {
6356 0xc00000007ffff000ULL,
6357 0ULL,
6358 0x00000000780ff000ULL,
6359 0ULL,
6360 0ULL
6361 },
6362 {
6363 0x0000000051489000ULL,
6364 -1ULL,
6365 0x00000000300c9000ULL,
6366 -1ULL,
6367 -1ULL
6368 }
6369 #endif
6370 },
6371 { "tblidxb1", TILEGX_OPC_TBLIDXB1, 0x5, 2, TREG_ZERO, 1,
6372 { { 23, 9 }, { 0, }, { 24, 11 }, { 0, }, { 0, } },
6373 #ifndef DISASM_ONLY
6374 {
6375 0xc00000007ffff000ULL,
6376 0ULL,
6377 0x00000000780ff000ULL,
6378 0ULL,
6379 0ULL
6380 },
6381 {
6382 0x000000005148a000ULL,
6383 -1ULL,
6384 0x00000000300ca000ULL,
6385 -1ULL,
6386 -1ULL
6387 }
6388 #endif
6389 },
6390 { "tblidxb2", TILEGX_OPC_TBLIDXB2, 0x5, 2, TREG_ZERO, 1,
6391 { { 23, 9 }, { 0, }, { 24, 11 }, { 0, }, { 0, } },
6392 #ifndef DISASM_ONLY
6393 {
6394 0xc00000007ffff000ULL,
6395 0ULL,
6396 0x00000000780ff000ULL,
6397 0ULL,
6398 0ULL
6399 },
6400 {
6401 0x000000005148b000ULL,
6402 -1ULL,
6403 0x00000000300cb000ULL,
6404 -1ULL,
6405 -1ULL
6406 }
6407 #endif
6408 },
6409 { "tblidxb3", TILEGX_OPC_TBLIDXB3, 0x5, 2, TREG_ZERO, 1,
6410 { { 23, 9 }, { 0, }, { 24, 11 }, { 0, }, { 0, } },
6411 #ifndef DISASM_ONLY
6412 {
6413 0xc00000007ffff000ULL,
6414 0ULL,
6415 0x00000000780ff000ULL,
6416 0ULL,
6417 0ULL
6418 },
6419 {
6420 0x000000005148c000ULL,
6421 -1ULL,
6422 0x00000000300cc000ULL,
6423 -1ULL,
6424 -1ULL
6425 }
6426 #endif
6427 },
6428 { "v1add", TILEGX_OPC_V1ADD, 0x3, 3, TREG_ZERO, 1,
6429 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6430 #ifndef DISASM_ONLY
6431 {
6432 0xc00000007ffc0000ULL,
6433 0xfffe000000000000ULL,
6434 0ULL,
6435 0ULL,
6436 0ULL
6437 },
6438 {
6439 0x0000000051500000ULL,
6440 0x286e000000000000ULL,
6441 -1ULL,
6442 -1ULL,
6443 -1ULL
6444 }
6445 #endif
6446 },
6447 { "v1addi", TILEGX_OPC_V1ADDI, 0x3, 3, TREG_ZERO, 1,
6448 { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
6449 #ifndef DISASM_ONLY
6450 {
6451 0xc00000007ff00000ULL,
6452 0xfff8000000000000ULL,
6453 0ULL,
6454 0ULL,
6455 0ULL
6456 },
6457 {
6458 0x0000000040800000ULL,
6459 0x1908000000000000ULL,
6460 -1ULL,
6461 -1ULL,
6462 -1ULL
6463 }
6464 #endif
6465 },
6466 { "v1adduc", TILEGX_OPC_V1ADDUC, 0x3, 3, TREG_ZERO, 1,
6467 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6468 #ifndef DISASM_ONLY
6469 {
6470 0xc00000007ffc0000ULL,
6471 0xfffe000000000000ULL,
6472 0ULL,
6473 0ULL,
6474 0ULL
6475 },
6476 {
6477 0x00000000514c0000ULL,
6478 0x286c000000000000ULL,
6479 -1ULL,
6480 -1ULL,
6481 -1ULL
6482 }
6483 #endif
6484 },
6485 { "v1adiffu", TILEGX_OPC_V1ADIFFU, 0x1, 3, TREG_ZERO, 1,
6486 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
6487 #ifndef DISASM_ONLY
6488 {
6489 0xc00000007ffc0000ULL,
6490 0ULL,
6491 0ULL,
6492 0ULL,
6493 0ULL
6494 },
6495 {
6496 0x0000000051540000ULL,
6497 -1ULL,
6498 -1ULL,
6499 -1ULL,
6500 -1ULL
6501 }
6502 #endif
6503 },
6504 { "v1avgu", TILEGX_OPC_V1AVGU, 0x1, 3, TREG_ZERO, 1,
6505 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
6506 #ifndef DISASM_ONLY
6507 {
6508 0xc00000007ffc0000ULL,
6509 0ULL,
6510 0ULL,
6511 0ULL,
6512 0ULL
6513 },
6514 {
6515 0x0000000051580000ULL,
6516 -1ULL,
6517 -1ULL,
6518 -1ULL,
6519 -1ULL
6520 }
6521 #endif
6522 },
6523 { "v1cmpeq", TILEGX_OPC_V1CMPEQ, 0x3, 3, TREG_ZERO, 1,
6524 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6525 #ifndef DISASM_ONLY
6526 {
6527 0xc00000007ffc0000ULL,
6528 0xfffe000000000000ULL,
6529 0ULL,
6530 0ULL,
6531 0ULL
6532 },
6533 {
6534 0x00000000515c0000ULL,
6535 0x2870000000000000ULL,
6536 -1ULL,
6537 -1ULL,
6538 -1ULL
6539 }
6540 #endif
6541 },
6542 { "v1cmpeqi", TILEGX_OPC_V1CMPEQI, 0x3, 3, TREG_ZERO, 1,
6543 { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
6544 #ifndef DISASM_ONLY
6545 {
6546 0xc00000007ff00000ULL,
6547 0xfff8000000000000ULL,
6548 0ULL,
6549 0ULL,
6550 0ULL
6551 },
6552 {
6553 0x0000000040900000ULL,
6554 0x1910000000000000ULL,
6555 -1ULL,
6556 -1ULL,
6557 -1ULL
6558 }
6559 #endif
6560 },
6561 { "v1cmples", TILEGX_OPC_V1CMPLES, 0x3, 3, TREG_ZERO, 1,
6562 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6563 #ifndef DISASM_ONLY
6564 {
6565 0xc00000007ffc0000ULL,
6566 0xfffe000000000000ULL,
6567 0ULL,
6568 0ULL,
6569 0ULL
6570 },
6571 {
6572 0x0000000051600000ULL,
6573 0x2872000000000000ULL,
6574 -1ULL,
6575 -1ULL,
6576 -1ULL
6577 }
6578 #endif
6579 },
6580 { "v1cmpleu", TILEGX_OPC_V1CMPLEU, 0x3, 3, TREG_ZERO, 1,
6581 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6582 #ifndef DISASM_ONLY
6583 {
6584 0xc00000007ffc0000ULL,
6585 0xfffe000000000000ULL,
6586 0ULL,
6587 0ULL,
6588 0ULL
6589 },
6590 {
6591 0x0000000051640000ULL,
6592 0x2874000000000000ULL,
6593 -1ULL,
6594 -1ULL,
6595 -1ULL
6596 }
6597 #endif
6598 },
6599 { "v1cmplts", TILEGX_OPC_V1CMPLTS, 0x3, 3, TREG_ZERO, 1,
6600 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6601 #ifndef DISASM_ONLY
6602 {
6603 0xc00000007ffc0000ULL,
6604 0xfffe000000000000ULL,
6605 0ULL,
6606 0ULL,
6607 0ULL
6608 },
6609 {
6610 0x0000000051680000ULL,
6611 0x2876000000000000ULL,
6612 -1ULL,
6613 -1ULL,
6614 -1ULL
6615 }
6616 #endif
6617 },
6618 { "v1cmpltsi", TILEGX_OPC_V1CMPLTSI, 0x3, 3, TREG_ZERO, 1,
6619 { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
6620 #ifndef DISASM_ONLY
6621 {
6622 0xc00000007ff00000ULL,
6623 0xfff8000000000000ULL,
6624 0ULL,
6625 0ULL,
6626 0ULL
6627 },
6628 {
6629 0x0000000040a00000ULL,
6630 0x1918000000000000ULL,
6631 -1ULL,
6632 -1ULL,
6633 -1ULL
6634 }
6635 #endif
6636 },
6637 { "v1cmpltu", TILEGX_OPC_V1CMPLTU, 0x3, 3, TREG_ZERO, 1,
6638 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6639 #ifndef DISASM_ONLY
6640 {
6641 0xc00000007ffc0000ULL,
6642 0xfffe000000000000ULL,
6643 0ULL,
6644 0ULL,
6645 0ULL
6646 },
6647 {
6648 0x00000000516c0000ULL,
6649 0x2878000000000000ULL,
6650 -1ULL,
6651 -1ULL,
6652 -1ULL
6653 }
6654 #endif
6655 },
6656 { "v1cmpltui", TILEGX_OPC_V1CMPLTUI, 0x3, 3, TREG_ZERO, 1,
6657 { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
6658 #ifndef DISASM_ONLY
6659 {
6660 0xc00000007ff00000ULL,
6661 0xfff8000000000000ULL,
6662 0ULL,
6663 0ULL,
6664 0ULL
6665 },
6666 {
6667 0x0000000040b00000ULL,
6668 0x1920000000000000ULL,
6669 -1ULL,
6670 -1ULL,
6671 -1ULL
6672 }
6673 #endif
6674 },
6675 { "v1cmpne", TILEGX_OPC_V1CMPNE, 0x3, 3, TREG_ZERO, 1,
6676 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6677 #ifndef DISASM_ONLY
6678 {
6679 0xc00000007ffc0000ULL,
6680 0xfffe000000000000ULL,
6681 0ULL,
6682 0ULL,
6683 0ULL
6684 },
6685 {
6686 0x0000000051700000ULL,
6687 0x287a000000000000ULL,
6688 -1ULL,
6689 -1ULL,
6690 -1ULL
6691 }
6692 #endif
6693 },
6694 { "v1ddotpu", TILEGX_OPC_V1DDOTPU, 0x1, 3, TREG_ZERO, 1,
6695 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
6696 #ifndef DISASM_ONLY
6697 {
6698 0xc00000007ffc0000ULL,
6699 0ULL,
6700 0ULL,
6701 0ULL,
6702 0ULL
6703 },
6704 {
6705 0x0000000052880000ULL,
6706 -1ULL,
6707 -1ULL,
6708 -1ULL,
6709 -1ULL
6710 }
6711 #endif
6712 },
6713 { "v1ddotpua", TILEGX_OPC_V1DDOTPUA, 0x1, 3, TREG_ZERO, 1,
6714 { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
6715 #ifndef DISASM_ONLY
6716 {
6717 0xc00000007ffc0000ULL,
6718 0ULL,
6719 0ULL,
6720 0ULL,
6721 0ULL
6722 },
6723 {
6724 0x0000000052840000ULL,
6725 -1ULL,
6726 -1ULL,
6727 -1ULL,
6728 -1ULL
6729 }
6730 #endif
6731 },
6732 { "v1ddotpus", TILEGX_OPC_V1DDOTPUS, 0x1, 3, TREG_ZERO, 1,
6733 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
6734 #ifndef DISASM_ONLY
6735 {
6736 0xc00000007ffc0000ULL,
6737 0ULL,
6738 0ULL,
6739 0ULL,
6740 0ULL
6741 },
6742 {
6743 0x0000000051780000ULL,
6744 -1ULL,
6745 -1ULL,
6746 -1ULL,
6747 -1ULL
6748 }
6749 #endif
6750 },
6751 { "v1ddotpusa", TILEGX_OPC_V1DDOTPUSA, 0x1, 3, TREG_ZERO, 1,
6752 { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
6753 #ifndef DISASM_ONLY
6754 {
6755 0xc00000007ffc0000ULL,
6756 0ULL,
6757 0ULL,
6758 0ULL,
6759 0ULL
6760 },
6761 {
6762 0x0000000051740000ULL,
6763 -1ULL,
6764 -1ULL,
6765 -1ULL,
6766 -1ULL
6767 }
6768 #endif
6769 },
6770 { "v1dotp", TILEGX_OPC_V1DOTP, 0x1, 3, TREG_ZERO, 1,
6771 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
6772 #ifndef DISASM_ONLY
6773 {
6774 0xc00000007ffc0000ULL,
6775 0ULL,
6776 0ULL,
6777 0ULL,
6778 0ULL
6779 },
6780 {
6781 0x0000000051880000ULL,
6782 -1ULL,
6783 -1ULL,
6784 -1ULL,
6785 -1ULL
6786 }
6787 #endif
6788 },
6789 { "v1dotpa", TILEGX_OPC_V1DOTPA, 0x1, 3, TREG_ZERO, 1,
6790 { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
6791 #ifndef DISASM_ONLY
6792 {
6793 0xc00000007ffc0000ULL,
6794 0ULL,
6795 0ULL,
6796 0ULL,
6797 0ULL
6798 },
6799 {
6800 0x00000000517c0000ULL,
6801 -1ULL,
6802 -1ULL,
6803 -1ULL,
6804 -1ULL
6805 }
6806 #endif
6807 },
6808 { "v1dotpu", TILEGX_OPC_V1DOTPU, 0x1, 3, TREG_ZERO, 1,
6809 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
6810 #ifndef DISASM_ONLY
6811 {
6812 0xc00000007ffc0000ULL,
6813 0ULL,
6814 0ULL,
6815 0ULL,
6816 0ULL
6817 },
6818 {
6819 0x0000000052900000ULL,
6820 -1ULL,
6821 -1ULL,
6822 -1ULL,
6823 -1ULL
6824 }
6825 #endif
6826 },
6827 { "v1dotpua", TILEGX_OPC_V1DOTPUA, 0x1, 3, TREG_ZERO, 1,
6828 { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
6829 #ifndef DISASM_ONLY
6830 {
6831 0xc00000007ffc0000ULL,
6832 0ULL,
6833 0ULL,
6834 0ULL,
6835 0ULL
6836 },
6837 {
6838 0x00000000528c0000ULL,
6839 -1ULL,
6840 -1ULL,
6841 -1ULL,
6842 -1ULL
6843 }
6844 #endif
6845 },
6846 { "v1dotpus", TILEGX_OPC_V1DOTPUS, 0x1, 3, TREG_ZERO, 1,
6847 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
6848 #ifndef DISASM_ONLY
6849 {
6850 0xc00000007ffc0000ULL,
6851 0ULL,
6852 0ULL,
6853 0ULL,
6854 0ULL
6855 },
6856 {
6857 0x0000000051840000ULL,
6858 -1ULL,
6859 -1ULL,
6860 -1ULL,
6861 -1ULL
6862 }
6863 #endif
6864 },
6865 { "v1dotpusa", TILEGX_OPC_V1DOTPUSA, 0x1, 3, TREG_ZERO, 1,
6866 { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
6867 #ifndef DISASM_ONLY
6868 {
6869 0xc00000007ffc0000ULL,
6870 0ULL,
6871 0ULL,
6872 0ULL,
6873 0ULL
6874 },
6875 {
6876 0x0000000051800000ULL,
6877 -1ULL,
6878 -1ULL,
6879 -1ULL,
6880 -1ULL
6881 }
6882 #endif
6883 },
6884 { "v1int_h", TILEGX_OPC_V1INT_H, 0x3, 3, TREG_ZERO, 1,
6885 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6886 #ifndef DISASM_ONLY
6887 {
6888 0xc00000007ffc0000ULL,
6889 0xfffe000000000000ULL,
6890 0ULL,
6891 0ULL,
6892 0ULL
6893 },
6894 {
6895 0x00000000518c0000ULL,
6896 0x287c000000000000ULL,
6897 -1ULL,
6898 -1ULL,
6899 -1ULL
6900 }
6901 #endif
6902 },
6903 { "v1int_l", TILEGX_OPC_V1INT_L, 0x3, 3, TREG_ZERO, 1,
6904 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6905 #ifndef DISASM_ONLY
6906 {
6907 0xc00000007ffc0000ULL,
6908 0xfffe000000000000ULL,
6909 0ULL,
6910 0ULL,
6911 0ULL
6912 },
6913 {
6914 0x0000000051900000ULL,
6915 0x287e000000000000ULL,
6916 -1ULL,
6917 -1ULL,
6918 -1ULL
6919 }
6920 #endif
6921 },
6922 { "v1maxu", TILEGX_OPC_V1MAXU, 0x3, 3, TREG_ZERO, 1,
6923 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6924 #ifndef DISASM_ONLY
6925 {
6926 0xc00000007ffc0000ULL,
6927 0xfffe000000000000ULL,
6928 0ULL,
6929 0ULL,
6930 0ULL
6931 },
6932 {
6933 0x0000000051940000ULL,
6934 0x2880000000000000ULL,
6935 -1ULL,
6936 -1ULL,
6937 -1ULL
6938 }
6939 #endif
6940 },
6941 { "v1maxui", TILEGX_OPC_V1MAXUI, 0x3, 3, TREG_ZERO, 1,
6942 { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
6943 #ifndef DISASM_ONLY
6944 {
6945 0xc00000007ff00000ULL,
6946 0xfff8000000000000ULL,
6947 0ULL,
6948 0ULL,
6949 0ULL
6950 },
6951 {
6952 0x0000000040c00000ULL,
6953 0x1928000000000000ULL,
6954 -1ULL,
6955 -1ULL,
6956 -1ULL
6957 }
6958 #endif
6959 },
6960 { "v1minu", TILEGX_OPC_V1MINU, 0x3, 3, TREG_ZERO, 1,
6961 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
6962 #ifndef DISASM_ONLY
6963 {
6964 0xc00000007ffc0000ULL,
6965 0xfffe000000000000ULL,
6966 0ULL,
6967 0ULL,
6968 0ULL
6969 },
6970 {
6971 0x0000000051980000ULL,
6972 0x2882000000000000ULL,
6973 -1ULL,
6974 -1ULL,
6975 -1ULL
6976 }
6977 #endif
6978 },
6979 { "v1minui", TILEGX_OPC_V1MINUI, 0x3, 3, TREG_ZERO, 1,
6980 { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
6981 #ifndef DISASM_ONLY
6982 {
6983 0xc00000007ff00000ULL,
6984 0xfff8000000000000ULL,
6985 0ULL,
6986 0ULL,
6987 0ULL
6988 },
6989 {
6990 0x0000000040d00000ULL,
6991 0x1930000000000000ULL,
6992 -1ULL,
6993 -1ULL,
6994 -1ULL
6995 }
6996 #endif
6997 },
6998 { "v1mnz", TILEGX_OPC_V1MNZ, 0x3, 3, TREG_ZERO, 1,
6999 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7000 #ifndef DISASM_ONLY
7001 {
7002 0xc00000007ffc0000ULL,
7003 0xfffe000000000000ULL,
7004 0ULL,
7005 0ULL,
7006 0ULL
7007 },
7008 {
7009 0x00000000519c0000ULL,
7010 0x2884000000000000ULL,
7011 -1ULL,
7012 -1ULL,
7013 -1ULL
7014 }
7015 #endif
7016 },
7017 { "v1multu", TILEGX_OPC_V1MULTU, 0x1, 3, TREG_ZERO, 1,
7018 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
7019 #ifndef DISASM_ONLY
7020 {
7021 0xc00000007ffc0000ULL,
7022 0ULL,
7023 0ULL,
7024 0ULL,
7025 0ULL
7026 },
7027 {
7028 0x0000000051a00000ULL,
7029 -1ULL,
7030 -1ULL,
7031 -1ULL,
7032 -1ULL
7033 }
7034 #endif
7035 },
7036 { "v1mulu", TILEGX_OPC_V1MULU, 0x1, 3, TREG_ZERO, 1,
7037 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
7038 #ifndef DISASM_ONLY
7039 {
7040 0xc00000007ffc0000ULL,
7041 0ULL,
7042 0ULL,
7043 0ULL,
7044 0ULL
7045 },
7046 {
7047 0x0000000051a80000ULL,
7048 -1ULL,
7049 -1ULL,
7050 -1ULL,
7051 -1ULL
7052 }
7053 #endif
7054 },
7055 { "v1mulus", TILEGX_OPC_V1MULUS, 0x1, 3, TREG_ZERO, 1,
7056 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
7057 #ifndef DISASM_ONLY
7058 {
7059 0xc00000007ffc0000ULL,
7060 0ULL,
7061 0ULL,
7062 0ULL,
7063 0ULL
7064 },
7065 {
7066 0x0000000051a40000ULL,
7067 -1ULL,
7068 -1ULL,
7069 -1ULL,
7070 -1ULL
7071 }
7072 #endif
7073 },
7074 { "v1mz", TILEGX_OPC_V1MZ, 0x3, 3, TREG_ZERO, 1,
7075 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7076 #ifndef DISASM_ONLY
7077 {
7078 0xc00000007ffc0000ULL,
7079 0xfffe000000000000ULL,
7080 0ULL,
7081 0ULL,
7082 0ULL
7083 },
7084 {
7085 0x0000000051ac0000ULL,
7086 0x2886000000000000ULL,
7087 -1ULL,
7088 -1ULL,
7089 -1ULL
7090 }
7091 #endif
7092 },
7093 { "v1sadau", TILEGX_OPC_V1SADAU, 0x1, 3, TREG_ZERO, 1,
7094 { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
7095 #ifndef DISASM_ONLY
7096 {
7097 0xc00000007ffc0000ULL,
7098 0ULL,
7099 0ULL,
7100 0ULL,
7101 0ULL
7102 },
7103 {
7104 0x0000000051b00000ULL,
7105 -1ULL,
7106 -1ULL,
7107 -1ULL,
7108 -1ULL
7109 }
7110 #endif
7111 },
7112 { "v1sadu", TILEGX_OPC_V1SADU, 0x1, 3, TREG_ZERO, 1,
7113 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
7114 #ifndef DISASM_ONLY
7115 {
7116 0xc00000007ffc0000ULL,
7117 0ULL,
7118 0ULL,
7119 0ULL,
7120 0ULL
7121 },
7122 {
7123 0x0000000051b40000ULL,
7124 -1ULL,
7125 -1ULL,
7126 -1ULL,
7127 -1ULL
7128 }
7129 #endif
7130 },
7131 { "v1shl", TILEGX_OPC_V1SHL, 0x3, 3, TREG_ZERO, 1,
7132 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7133 #ifndef DISASM_ONLY
7134 {
7135 0xc00000007ffc0000ULL,
7136 0xfffe000000000000ULL,
7137 0ULL,
7138 0ULL,
7139 0ULL
7140 },
7141 {
7142 0x0000000051b80000ULL,
7143 0x2888000000000000ULL,
7144 -1ULL,
7145 -1ULL,
7146 -1ULL
7147 }
7148 #endif
7149 },
7150 { "v1shli", TILEGX_OPC_V1SHLI, 0x3, 3, TREG_ZERO, 1,
7151 { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } },
7152 #ifndef DISASM_ONLY
7153 {
7154 0xc00000007ffc0000ULL,
7155 0xfffe000000000000ULL,
7156 0ULL,
7157 0ULL,
7158 0ULL
7159 },
7160 {
7161 0x00000000601c0000ULL,
7162 0x300e000000000000ULL,
7163 -1ULL,
7164 -1ULL,
7165 -1ULL
7166 }
7167 #endif
7168 },
7169 { "v1shrs", TILEGX_OPC_V1SHRS, 0x3, 3, TREG_ZERO, 1,
7170 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7171 #ifndef DISASM_ONLY
7172 {
7173 0xc00000007ffc0000ULL,
7174 0xfffe000000000000ULL,
7175 0ULL,
7176 0ULL,
7177 0ULL
7178 },
7179 {
7180 0x0000000051bc0000ULL,
7181 0x288a000000000000ULL,
7182 -1ULL,
7183 -1ULL,
7184 -1ULL
7185 }
7186 #endif
7187 },
7188 { "v1shrsi", TILEGX_OPC_V1SHRSI, 0x3, 3, TREG_ZERO, 1,
7189 { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } },
7190 #ifndef DISASM_ONLY
7191 {
7192 0xc00000007ffc0000ULL,
7193 0xfffe000000000000ULL,
7194 0ULL,
7195 0ULL,
7196 0ULL
7197 },
7198 {
7199 0x0000000060200000ULL,
7200 0x3010000000000000ULL,
7201 -1ULL,
7202 -1ULL,
7203 -1ULL
7204 }
7205 #endif
7206 },
7207 { "v1shru", TILEGX_OPC_V1SHRU, 0x3, 3, TREG_ZERO, 1,
7208 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7209 #ifndef DISASM_ONLY
7210 {
7211 0xc00000007ffc0000ULL,
7212 0xfffe000000000000ULL,
7213 0ULL,
7214 0ULL,
7215 0ULL
7216 },
7217 {
7218 0x0000000051c00000ULL,
7219 0x288c000000000000ULL,
7220 -1ULL,
7221 -1ULL,
7222 -1ULL
7223 }
7224 #endif
7225 },
7226 { "v1shrui", TILEGX_OPC_V1SHRUI, 0x3, 3, TREG_ZERO, 1,
7227 { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } },
7228 #ifndef DISASM_ONLY
7229 {
7230 0xc00000007ffc0000ULL,
7231 0xfffe000000000000ULL,
7232 0ULL,
7233 0ULL,
7234 0ULL
7235 },
7236 {
7237 0x0000000060240000ULL,
7238 0x3012000000000000ULL,
7239 -1ULL,
7240 -1ULL,
7241 -1ULL
7242 }
7243 #endif
7244 },
7245 { "v1sub", TILEGX_OPC_V1SUB, 0x3, 3, TREG_ZERO, 1,
7246 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7247 #ifndef DISASM_ONLY
7248 {
7249 0xc00000007ffc0000ULL,
7250 0xfffe000000000000ULL,
7251 0ULL,
7252 0ULL,
7253 0ULL
7254 },
7255 {
7256 0x0000000051c80000ULL,
7257 0x2890000000000000ULL,
7258 -1ULL,
7259 -1ULL,
7260 -1ULL
7261 }
7262 #endif
7263 },
7264 { "v1subuc", TILEGX_OPC_V1SUBUC, 0x3, 3, TREG_ZERO, 1,
7265 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7266 #ifndef DISASM_ONLY
7267 {
7268 0xc00000007ffc0000ULL,
7269 0xfffe000000000000ULL,
7270 0ULL,
7271 0ULL,
7272 0ULL
7273 },
7274 {
7275 0x0000000051c40000ULL,
7276 0x288e000000000000ULL,
7277 -1ULL,
7278 -1ULL,
7279 -1ULL
7280 }
7281 #endif
7282 },
7283 { "v2add", TILEGX_OPC_V2ADD, 0x3, 3, TREG_ZERO, 1,
7284 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7285 #ifndef DISASM_ONLY
7286 {
7287 0xc00000007ffc0000ULL,
7288 0xfffe000000000000ULL,
7289 0ULL,
7290 0ULL,
7291 0ULL
7292 },
7293 {
7294 0x0000000051d00000ULL,
7295 0x2894000000000000ULL,
7296 -1ULL,
7297 -1ULL,
7298 -1ULL
7299 }
7300 #endif
7301 },
7302 { "v2addi", TILEGX_OPC_V2ADDI, 0x3, 3, TREG_ZERO, 1,
7303 { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
7304 #ifndef DISASM_ONLY
7305 {
7306 0xc00000007ff00000ULL,
7307 0xfff8000000000000ULL,
7308 0ULL,
7309 0ULL,
7310 0ULL
7311 },
7312 {
7313 0x0000000040e00000ULL,
7314 0x1938000000000000ULL,
7315 -1ULL,
7316 -1ULL,
7317 -1ULL
7318 }
7319 #endif
7320 },
7321 { "v2addsc", TILEGX_OPC_V2ADDSC, 0x3, 3, TREG_ZERO, 1,
7322 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7323 #ifndef DISASM_ONLY
7324 {
7325 0xc00000007ffc0000ULL,
7326 0xfffe000000000000ULL,
7327 0ULL,
7328 0ULL,
7329 0ULL
7330 },
7331 {
7332 0x0000000051cc0000ULL,
7333 0x2892000000000000ULL,
7334 -1ULL,
7335 -1ULL,
7336 -1ULL
7337 }
7338 #endif
7339 },
7340 { "v2adiffs", TILEGX_OPC_V2ADIFFS, 0x1, 3, TREG_ZERO, 1,
7341 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
7342 #ifndef DISASM_ONLY
7343 {
7344 0xc00000007ffc0000ULL,
7345 0ULL,
7346 0ULL,
7347 0ULL,
7348 0ULL
7349 },
7350 {
7351 0x0000000051d40000ULL,
7352 -1ULL,
7353 -1ULL,
7354 -1ULL,
7355 -1ULL
7356 }
7357 #endif
7358 },
7359 { "v2avgs", TILEGX_OPC_V2AVGS, 0x1, 3, TREG_ZERO, 1,
7360 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
7361 #ifndef DISASM_ONLY
7362 {
7363 0xc00000007ffc0000ULL,
7364 0ULL,
7365 0ULL,
7366 0ULL,
7367 0ULL
7368 },
7369 {
7370 0x0000000051d80000ULL,
7371 -1ULL,
7372 -1ULL,
7373 -1ULL,
7374 -1ULL
7375 }
7376 #endif
7377 },
7378 { "v2cmpeq", TILEGX_OPC_V2CMPEQ, 0x3, 3, TREG_ZERO, 1,
7379 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7380 #ifndef DISASM_ONLY
7381 {
7382 0xc00000007ffc0000ULL,
7383 0xfffe000000000000ULL,
7384 0ULL,
7385 0ULL,
7386 0ULL
7387 },
7388 {
7389 0x0000000051dc0000ULL,
7390 0x2896000000000000ULL,
7391 -1ULL,
7392 -1ULL,
7393 -1ULL
7394 }
7395 #endif
7396 },
7397 { "v2cmpeqi", TILEGX_OPC_V2CMPEQI, 0x3, 3, TREG_ZERO, 1,
7398 { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
7399 #ifndef DISASM_ONLY
7400 {
7401 0xc00000007ff00000ULL,
7402 0xfff8000000000000ULL,
7403 0ULL,
7404 0ULL,
7405 0ULL
7406 },
7407 {
7408 0x0000000040f00000ULL,
7409 0x1940000000000000ULL,
7410 -1ULL,
7411 -1ULL,
7412 -1ULL
7413 }
7414 #endif
7415 },
7416 { "v2cmples", TILEGX_OPC_V2CMPLES, 0x3, 3, TREG_ZERO, 1,
7417 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7418 #ifndef DISASM_ONLY
7419 {
7420 0xc00000007ffc0000ULL,
7421 0xfffe000000000000ULL,
7422 0ULL,
7423 0ULL,
7424 0ULL
7425 },
7426 {
7427 0x0000000051e00000ULL,
7428 0x2898000000000000ULL,
7429 -1ULL,
7430 -1ULL,
7431 -1ULL
7432 }
7433 #endif
7434 },
7435 { "v2cmpleu", TILEGX_OPC_V2CMPLEU, 0x3, 3, TREG_ZERO, 1,
7436 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7437 #ifndef DISASM_ONLY
7438 {
7439 0xc00000007ffc0000ULL,
7440 0xfffe000000000000ULL,
7441 0ULL,
7442 0ULL,
7443 0ULL
7444 },
7445 {
7446 0x0000000051e40000ULL,
7447 0x289a000000000000ULL,
7448 -1ULL,
7449 -1ULL,
7450 -1ULL
7451 }
7452 #endif
7453 },
7454 { "v2cmplts", TILEGX_OPC_V2CMPLTS, 0x3, 3, TREG_ZERO, 1,
7455 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7456 #ifndef DISASM_ONLY
7457 {
7458 0xc00000007ffc0000ULL,
7459 0xfffe000000000000ULL,
7460 0ULL,
7461 0ULL,
7462 0ULL
7463 },
7464 {
7465 0x0000000051e80000ULL,
7466 0x289c000000000000ULL,
7467 -1ULL,
7468 -1ULL,
7469 -1ULL
7470 }
7471 #endif
7472 },
7473 { "v2cmpltsi", TILEGX_OPC_V2CMPLTSI, 0x3, 3, TREG_ZERO, 1,
7474 { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
7475 #ifndef DISASM_ONLY
7476 {
7477 0xc00000007ff00000ULL,
7478 0xfff8000000000000ULL,
7479 0ULL,
7480 0ULL,
7481 0ULL
7482 },
7483 {
7484 0x0000000041000000ULL,
7485 0x1948000000000000ULL,
7486 -1ULL,
7487 -1ULL,
7488 -1ULL
7489 }
7490 #endif
7491 },
7492 { "v2cmpltu", TILEGX_OPC_V2CMPLTU, 0x3, 3, TREG_ZERO, 1,
7493 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7494 #ifndef DISASM_ONLY
7495 {
7496 0xc00000007ffc0000ULL,
7497 0xfffe000000000000ULL,
7498 0ULL,
7499 0ULL,
7500 0ULL
7501 },
7502 {
7503 0x0000000051ec0000ULL,
7504 0x289e000000000000ULL,
7505 -1ULL,
7506 -1ULL,
7507 -1ULL
7508 }
7509 #endif
7510 },
7511 { "v2cmpltui", TILEGX_OPC_V2CMPLTUI, 0x3, 3, TREG_ZERO, 1,
7512 { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
7513 #ifndef DISASM_ONLY
7514 {
7515 0xc00000007ff00000ULL,
7516 0xfff8000000000000ULL,
7517 0ULL,
7518 0ULL,
7519 0ULL
7520 },
7521 {
7522 0x0000000041100000ULL,
7523 0x1950000000000000ULL,
7524 -1ULL,
7525 -1ULL,
7526 -1ULL
7527 }
7528 #endif
7529 },
7530 { "v2cmpne", TILEGX_OPC_V2CMPNE, 0x3, 3, TREG_ZERO, 1,
7531 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7532 #ifndef DISASM_ONLY
7533 {
7534 0xc00000007ffc0000ULL,
7535 0xfffe000000000000ULL,
7536 0ULL,
7537 0ULL,
7538 0ULL
7539 },
7540 {
7541 0x0000000051f00000ULL,
7542 0x28a0000000000000ULL,
7543 -1ULL,
7544 -1ULL,
7545 -1ULL
7546 }
7547 #endif
7548 },
7549 { "v2dotp", TILEGX_OPC_V2DOTP, 0x1, 3, TREG_ZERO, 1,
7550 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
7551 #ifndef DISASM_ONLY
7552 {
7553 0xc00000007ffc0000ULL,
7554 0ULL,
7555 0ULL,
7556 0ULL,
7557 0ULL
7558 },
7559 {
7560 0x0000000051f80000ULL,
7561 -1ULL,
7562 -1ULL,
7563 -1ULL,
7564 -1ULL
7565 }
7566 #endif
7567 },
7568 { "v2dotpa", TILEGX_OPC_V2DOTPA, 0x1, 3, TREG_ZERO, 1,
7569 { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
7570 #ifndef DISASM_ONLY
7571 {
7572 0xc00000007ffc0000ULL,
7573 0ULL,
7574 0ULL,
7575 0ULL,
7576 0ULL
7577 },
7578 {
7579 0x0000000051f40000ULL,
7580 -1ULL,
7581 -1ULL,
7582 -1ULL,
7583 -1ULL
7584 }
7585 #endif
7586 },
7587 { "v2int_h", TILEGX_OPC_V2INT_H, 0x3, 3, TREG_ZERO, 1,
7588 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7589 #ifndef DISASM_ONLY
7590 {
7591 0xc00000007ffc0000ULL,
7592 0xfffe000000000000ULL,
7593 0ULL,
7594 0ULL,
7595 0ULL
7596 },
7597 {
7598 0x0000000051fc0000ULL,
7599 0x28a2000000000000ULL,
7600 -1ULL,
7601 -1ULL,
7602 -1ULL
7603 }
7604 #endif
7605 },
7606 { "v2int_l", TILEGX_OPC_V2INT_L, 0x3, 3, TREG_ZERO, 1,
7607 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7608 #ifndef DISASM_ONLY
7609 {
7610 0xc00000007ffc0000ULL,
7611 0xfffe000000000000ULL,
7612 0ULL,
7613 0ULL,
7614 0ULL
7615 },
7616 {
7617 0x0000000052000000ULL,
7618 0x28a4000000000000ULL,
7619 -1ULL,
7620 -1ULL,
7621 -1ULL
7622 }
7623 #endif
7624 },
7625 { "v2maxs", TILEGX_OPC_V2MAXS, 0x3, 3, TREG_ZERO, 1,
7626 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7627 #ifndef DISASM_ONLY
7628 {
7629 0xc00000007ffc0000ULL,
7630 0xfffe000000000000ULL,
7631 0ULL,
7632 0ULL,
7633 0ULL
7634 },
7635 {
7636 0x0000000052040000ULL,
7637 0x28a6000000000000ULL,
7638 -1ULL,
7639 -1ULL,
7640 -1ULL
7641 }
7642 #endif
7643 },
7644 { "v2maxsi", TILEGX_OPC_V2MAXSI, 0x3, 3, TREG_ZERO, 1,
7645 { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
7646 #ifndef DISASM_ONLY
7647 {
7648 0xc00000007ff00000ULL,
7649 0xfff8000000000000ULL,
7650 0ULL,
7651 0ULL,
7652 0ULL
7653 },
7654 {
7655 0x0000000041200000ULL,
7656 0x1958000000000000ULL,
7657 -1ULL,
7658 -1ULL,
7659 -1ULL
7660 }
7661 #endif
7662 },
7663 { "v2mins", TILEGX_OPC_V2MINS, 0x3, 3, TREG_ZERO, 1,
7664 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7665 #ifndef DISASM_ONLY
7666 {
7667 0xc00000007ffc0000ULL,
7668 0xfffe000000000000ULL,
7669 0ULL,
7670 0ULL,
7671 0ULL
7672 },
7673 {
7674 0x0000000052080000ULL,
7675 0x28a8000000000000ULL,
7676 -1ULL,
7677 -1ULL,
7678 -1ULL
7679 }
7680 #endif
7681 },
7682 { "v2minsi", TILEGX_OPC_V2MINSI, 0x3, 3, TREG_ZERO, 1,
7683 { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
7684 #ifndef DISASM_ONLY
7685 {
7686 0xc00000007ff00000ULL,
7687 0xfff8000000000000ULL,
7688 0ULL,
7689 0ULL,
7690 0ULL
7691 },
7692 {
7693 0x0000000041300000ULL,
7694 0x1960000000000000ULL,
7695 -1ULL,
7696 -1ULL,
7697 -1ULL
7698 }
7699 #endif
7700 },
7701 { "v2mnz", TILEGX_OPC_V2MNZ, 0x3, 3, TREG_ZERO, 1,
7702 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7703 #ifndef DISASM_ONLY
7704 {
7705 0xc00000007ffc0000ULL,
7706 0xfffe000000000000ULL,
7707 0ULL,
7708 0ULL,
7709 0ULL
7710 },
7711 {
7712 0x00000000520c0000ULL,
7713 0x28aa000000000000ULL,
7714 -1ULL,
7715 -1ULL,
7716 -1ULL
7717 }
7718 #endif
7719 },
7720 { "v2mulfsc", TILEGX_OPC_V2MULFSC, 0x1, 3, TREG_ZERO, 1,
7721 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
7722 #ifndef DISASM_ONLY
7723 {
7724 0xc00000007ffc0000ULL,
7725 0ULL,
7726 0ULL,
7727 0ULL,
7728 0ULL
7729 },
7730 {
7731 0x0000000052100000ULL,
7732 -1ULL,
7733 -1ULL,
7734 -1ULL,
7735 -1ULL
7736 }
7737 #endif
7738 },
7739 { "v2muls", TILEGX_OPC_V2MULS, 0x1, 3, TREG_ZERO, 1,
7740 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
7741 #ifndef DISASM_ONLY
7742 {
7743 0xc00000007ffc0000ULL,
7744 0ULL,
7745 0ULL,
7746 0ULL,
7747 0ULL
7748 },
7749 {
7750 0x0000000052140000ULL,
7751 -1ULL,
7752 -1ULL,
7753 -1ULL,
7754 -1ULL
7755 }
7756 #endif
7757 },
7758 { "v2mults", TILEGX_OPC_V2MULTS, 0x1, 3, TREG_ZERO, 1,
7759 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
7760 #ifndef DISASM_ONLY
7761 {
7762 0xc00000007ffc0000ULL,
7763 0ULL,
7764 0ULL,
7765 0ULL,
7766 0ULL
7767 },
7768 {
7769 0x0000000052180000ULL,
7770 -1ULL,
7771 -1ULL,
7772 -1ULL,
7773 -1ULL
7774 }
7775 #endif
7776 },
7777 { "v2mz", TILEGX_OPC_V2MZ, 0x3, 3, TREG_ZERO, 1,
7778 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7779 #ifndef DISASM_ONLY
7780 {
7781 0xc00000007ffc0000ULL,
7782 0xfffe000000000000ULL,
7783 0ULL,
7784 0ULL,
7785 0ULL
7786 },
7787 {
7788 0x00000000521c0000ULL,
7789 0x28ac000000000000ULL,
7790 -1ULL,
7791 -1ULL,
7792 -1ULL
7793 }
7794 #endif
7795 },
7796 { "v2packh", TILEGX_OPC_V2PACKH, 0x3, 3, TREG_ZERO, 1,
7797 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7798 #ifndef DISASM_ONLY
7799 {
7800 0xc00000007ffc0000ULL,
7801 0xfffe000000000000ULL,
7802 0ULL,
7803 0ULL,
7804 0ULL
7805 },
7806 {
7807 0x0000000052200000ULL,
7808 0x28ae000000000000ULL,
7809 -1ULL,
7810 -1ULL,
7811 -1ULL
7812 }
7813 #endif
7814 },
7815 { "v2packl", TILEGX_OPC_V2PACKL, 0x3, 3, TREG_ZERO, 1,
7816 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7817 #ifndef DISASM_ONLY
7818 {
7819 0xc00000007ffc0000ULL,
7820 0xfffe000000000000ULL,
7821 0ULL,
7822 0ULL,
7823 0ULL
7824 },
7825 {
7826 0x0000000052240000ULL,
7827 0x28b0000000000000ULL,
7828 -1ULL,
7829 -1ULL,
7830 -1ULL
7831 }
7832 #endif
7833 },
7834 { "v2packuc", TILEGX_OPC_V2PACKUC, 0x3, 3, TREG_ZERO, 1,
7835 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7836 #ifndef DISASM_ONLY
7837 {
7838 0xc00000007ffc0000ULL,
7839 0xfffe000000000000ULL,
7840 0ULL,
7841 0ULL,
7842 0ULL
7843 },
7844 {
7845 0x0000000052280000ULL,
7846 0x28b2000000000000ULL,
7847 -1ULL,
7848 -1ULL,
7849 -1ULL
7850 }
7851 #endif
7852 },
7853 { "v2sadas", TILEGX_OPC_V2SADAS, 0x1, 3, TREG_ZERO, 1,
7854 { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
7855 #ifndef DISASM_ONLY
7856 {
7857 0xc00000007ffc0000ULL,
7858 0ULL,
7859 0ULL,
7860 0ULL,
7861 0ULL
7862 },
7863 {
7864 0x00000000522c0000ULL,
7865 -1ULL,
7866 -1ULL,
7867 -1ULL,
7868 -1ULL
7869 }
7870 #endif
7871 },
7872 { "v2sadau", TILEGX_OPC_V2SADAU, 0x1, 3, TREG_ZERO, 1,
7873 { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
7874 #ifndef DISASM_ONLY
7875 {
7876 0xc00000007ffc0000ULL,
7877 0ULL,
7878 0ULL,
7879 0ULL,
7880 0ULL
7881 },
7882 {
7883 0x0000000052300000ULL,
7884 -1ULL,
7885 -1ULL,
7886 -1ULL,
7887 -1ULL
7888 }
7889 #endif
7890 },
7891 { "v2sads", TILEGX_OPC_V2SADS, 0x1, 3, TREG_ZERO, 1,
7892 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
7893 #ifndef DISASM_ONLY
7894 {
7895 0xc00000007ffc0000ULL,
7896 0ULL,
7897 0ULL,
7898 0ULL,
7899 0ULL
7900 },
7901 {
7902 0x0000000052340000ULL,
7903 -1ULL,
7904 -1ULL,
7905 -1ULL,
7906 -1ULL
7907 }
7908 #endif
7909 },
7910 { "v2sadu", TILEGX_OPC_V2SADU, 0x1, 3, TREG_ZERO, 1,
7911 { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } },
7912 #ifndef DISASM_ONLY
7913 {
7914 0xc00000007ffc0000ULL,
7915 0ULL,
7916 0ULL,
7917 0ULL,
7918 0ULL
7919 },
7920 {
7921 0x0000000052380000ULL,
7922 -1ULL,
7923 -1ULL,
7924 -1ULL,
7925 -1ULL
7926 }
7927 #endif
7928 },
7929 { "v2shl", TILEGX_OPC_V2SHL, 0x3, 3, TREG_ZERO, 1,
7930 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7931 #ifndef DISASM_ONLY
7932 {
7933 0xc00000007ffc0000ULL,
7934 0xfffe000000000000ULL,
7935 0ULL,
7936 0ULL,
7937 0ULL
7938 },
7939 {
7940 0x0000000052400000ULL,
7941 0x28b6000000000000ULL,
7942 -1ULL,
7943 -1ULL,
7944 -1ULL
7945 }
7946 #endif
7947 },
7948 { "v2shli", TILEGX_OPC_V2SHLI, 0x3, 3, TREG_ZERO, 1,
7949 { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } },
7950 #ifndef DISASM_ONLY
7951 {
7952 0xc00000007ffc0000ULL,
7953 0xfffe000000000000ULL,
7954 0ULL,
7955 0ULL,
7956 0ULL
7957 },
7958 {
7959 0x0000000060280000ULL,
7960 0x3014000000000000ULL,
7961 -1ULL,
7962 -1ULL,
7963 -1ULL
7964 }
7965 #endif
7966 },
7967 { "v2shlsc", TILEGX_OPC_V2SHLSC, 0x3, 3, TREG_ZERO, 1,
7968 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7969 #ifndef DISASM_ONLY
7970 {
7971 0xc00000007ffc0000ULL,
7972 0xfffe000000000000ULL,
7973 0ULL,
7974 0ULL,
7975 0ULL
7976 },
7977 {
7978 0x00000000523c0000ULL,
7979 0x28b4000000000000ULL,
7980 -1ULL,
7981 -1ULL,
7982 -1ULL
7983 }
7984 #endif
7985 },
7986 { "v2shrs", TILEGX_OPC_V2SHRS, 0x3, 3, TREG_ZERO, 1,
7987 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
7988 #ifndef DISASM_ONLY
7989 {
7990 0xc00000007ffc0000ULL,
7991 0xfffe000000000000ULL,
7992 0ULL,
7993 0ULL,
7994 0ULL
7995 },
7996 {
7997 0x0000000052440000ULL,
7998 0x28b8000000000000ULL,
7999 -1ULL,
8000 -1ULL,
8001 -1ULL
8002 }
8003 #endif
8004 },
8005 { "v2shrsi", TILEGX_OPC_V2SHRSI, 0x3, 3, TREG_ZERO, 1,
8006 { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } },
8007 #ifndef DISASM_ONLY
8008 {
8009 0xc00000007ffc0000ULL,
8010 0xfffe000000000000ULL,
8011 0ULL,
8012 0ULL,
8013 0ULL
8014 },
8015 {
8016 0x00000000602c0000ULL,
8017 0x3016000000000000ULL,
8018 -1ULL,
8019 -1ULL,
8020 -1ULL
8021 }
8022 #endif
8023 },
8024 { "v2shru", TILEGX_OPC_V2SHRU, 0x3, 3, TREG_ZERO, 1,
8025 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
8026 #ifndef DISASM_ONLY
8027 {
8028 0xc00000007ffc0000ULL,
8029 0xfffe000000000000ULL,
8030 0ULL,
8031 0ULL,
8032 0ULL
8033 },
8034 {
8035 0x0000000052480000ULL,
8036 0x28ba000000000000ULL,
8037 -1ULL,
8038 -1ULL,
8039 -1ULL
8040 }
8041 #endif
8042 },
8043 { "v2shrui", TILEGX_OPC_V2SHRUI, 0x3, 3, TREG_ZERO, 1,
8044 { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } },
8045 #ifndef DISASM_ONLY
8046 {
8047 0xc00000007ffc0000ULL,
8048 0xfffe000000000000ULL,
8049 0ULL,
8050 0ULL,
8051 0ULL
8052 },
8053 {
8054 0x0000000060300000ULL,
8055 0x3018000000000000ULL,
8056 -1ULL,
8057 -1ULL,
8058 -1ULL
8059 }
8060 #endif
8061 },
8062 { "v2sub", TILEGX_OPC_V2SUB, 0x3, 3, TREG_ZERO, 1,
8063 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
8064 #ifndef DISASM_ONLY
8065 {
8066 0xc00000007ffc0000ULL,
8067 0xfffe000000000000ULL,
8068 0ULL,
8069 0ULL,
8070 0ULL
8071 },
8072 {
8073 0x0000000052500000ULL,
8074 0x28be000000000000ULL,
8075 -1ULL,
8076 -1ULL,
8077 -1ULL
8078 }
8079 #endif
8080 },
8081 { "v2subsc", TILEGX_OPC_V2SUBSC, 0x3, 3, TREG_ZERO, 1,
8082 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
8083 #ifndef DISASM_ONLY
8084 {
8085 0xc00000007ffc0000ULL,
8086 0xfffe000000000000ULL,
8087 0ULL,
8088 0ULL,
8089 0ULL
8090 },
8091 {
8092 0x00000000524c0000ULL,
8093 0x28bc000000000000ULL,
8094 -1ULL,
8095 -1ULL,
8096 -1ULL
8097 }
8098 #endif
8099 },
8100 { "v4add", TILEGX_OPC_V4ADD, 0x3, 3, TREG_ZERO, 1,
8101 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
8102 #ifndef DISASM_ONLY
8103 {
8104 0xc00000007ffc0000ULL,
8105 0xfffe000000000000ULL,
8106 0ULL,
8107 0ULL,
8108 0ULL
8109 },
8110 {
8111 0x0000000052580000ULL,
8112 0x28c2000000000000ULL,
8113 -1ULL,
8114 -1ULL,
8115 -1ULL
8116 }
8117 #endif
8118 },
8119 { "v4addsc", TILEGX_OPC_V4ADDSC, 0x3, 3, TREG_ZERO, 1,
8120 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
8121 #ifndef DISASM_ONLY
8122 {
8123 0xc00000007ffc0000ULL,
8124 0xfffe000000000000ULL,
8125 0ULL,
8126 0ULL,
8127 0ULL
8128 },
8129 {
8130 0x0000000052540000ULL,
8131 0x28c0000000000000ULL,
8132 -1ULL,
8133 -1ULL,
8134 -1ULL
8135 }
8136 #endif
8137 },
8138 { "v4int_h", TILEGX_OPC_V4INT_H, 0x3, 3, TREG_ZERO, 1,
8139 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
8140 #ifndef DISASM_ONLY
8141 {
8142 0xc00000007ffc0000ULL,
8143 0xfffe000000000000ULL,
8144 0ULL,
8145 0ULL,
8146 0ULL
8147 },
8148 {
8149 0x00000000525c0000ULL,
8150 0x28c4000000000000ULL,
8151 -1ULL,
8152 -1ULL,
8153 -1ULL
8154 }
8155 #endif
8156 },
8157 { "v4int_l", TILEGX_OPC_V4INT_L, 0x3, 3, TREG_ZERO, 1,
8158 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
8159 #ifndef DISASM_ONLY
8160 {
8161 0xc00000007ffc0000ULL,
8162 0xfffe000000000000ULL,
8163 0ULL,
8164 0ULL,
8165 0ULL
8166 },
8167 {
8168 0x0000000052600000ULL,
8169 0x28c6000000000000ULL,
8170 -1ULL,
8171 -1ULL,
8172 -1ULL
8173 }
8174 #endif
8175 },
8176 { "v4packsc", TILEGX_OPC_V4PACKSC, 0x3, 3, TREG_ZERO, 1,
8177 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
8178 #ifndef DISASM_ONLY
8179 {
8180 0xc00000007ffc0000ULL,
8181 0xfffe000000000000ULL,
8182 0ULL,
8183 0ULL,
8184 0ULL
8185 },
8186 {
8187 0x0000000052640000ULL,
8188 0x28c8000000000000ULL,
8189 -1ULL,
8190 -1ULL,
8191 -1ULL
8192 }
8193 #endif
8194 },
8195 { "v4shl", TILEGX_OPC_V4SHL, 0x3, 3, TREG_ZERO, 1,
8196 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
8197 #ifndef DISASM_ONLY
8198 {
8199 0xc00000007ffc0000ULL,
8200 0xfffe000000000000ULL,
8201 0ULL,
8202 0ULL,
8203 0ULL
8204 },
8205 {
8206 0x00000000526c0000ULL,
8207 0x28cc000000000000ULL,
8208 -1ULL,
8209 -1ULL,
8210 -1ULL
8211 }
8212 #endif
8213 },
8214 { "v4shlsc", TILEGX_OPC_V4SHLSC, 0x3, 3, TREG_ZERO, 1,
8215 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
8216 #ifndef DISASM_ONLY
8217 {
8218 0xc00000007ffc0000ULL,
8219 0xfffe000000000000ULL,
8220 0ULL,
8221 0ULL,
8222 0ULL
8223 },
8224 {
8225 0x0000000052680000ULL,
8226 0x28ca000000000000ULL,
8227 -1ULL,
8228 -1ULL,
8229 -1ULL
8230 }
8231 #endif
8232 },
8233 { "v4shrs", TILEGX_OPC_V4SHRS, 0x3, 3, TREG_ZERO, 1,
8234 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
8235 #ifndef DISASM_ONLY
8236 {
8237 0xc00000007ffc0000ULL,
8238 0xfffe000000000000ULL,
8239 0ULL,
8240 0ULL,
8241 0ULL
8242 },
8243 {
8244 0x0000000052700000ULL,
8245 0x28ce000000000000ULL,
8246 -1ULL,
8247 -1ULL,
8248 -1ULL
8249 }
8250 #endif
8251 },
8252 { "v4shru", TILEGX_OPC_V4SHRU, 0x3, 3, TREG_ZERO, 1,
8253 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
8254 #ifndef DISASM_ONLY
8255 {
8256 0xc00000007ffc0000ULL,
8257 0xfffe000000000000ULL,
8258 0ULL,
8259 0ULL,
8260 0ULL
8261 },
8262 {
8263 0x0000000052740000ULL,
8264 0x28d0000000000000ULL,
8265 -1ULL,
8266 -1ULL,
8267 -1ULL
8268 }
8269 #endif
8270 },
8271 { "v4sub", TILEGX_OPC_V4SUB, 0x3, 3, TREG_ZERO, 1,
8272 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
8273 #ifndef DISASM_ONLY
8274 {
8275 0xc00000007ffc0000ULL,
8276 0xfffe000000000000ULL,
8277 0ULL,
8278 0ULL,
8279 0ULL
8280 },
8281 {
8282 0x00000000527c0000ULL,
8283 0x28d4000000000000ULL,
8284 -1ULL,
8285 -1ULL,
8286 -1ULL
8287 }
8288 #endif
8289 },
8290 { "v4subsc", TILEGX_OPC_V4SUBSC, 0x3, 3, TREG_ZERO, 1,
8291 { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } },
8292 #ifndef DISASM_ONLY
8293 {
8294 0xc00000007ffc0000ULL,
8295 0xfffe000000000000ULL,
8296 0ULL,
8297 0ULL,
8298 0ULL
8299 },
8300 {
8301 0x0000000052780000ULL,
8302 0x28d2000000000000ULL,
8303 -1ULL,
8304 -1ULL,
8305 -1ULL
8306 }
8307 #endif
8308 },
8309 { "wh64", TILEGX_OPC_WH64, 0x2, 1, TREG_ZERO, 1,
8310 { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } },
8311 #ifndef DISASM_ONLY
8312 {
8313 0ULL,
8314 0xfffff80000000000ULL,
8315 0ULL,
8316 0ULL,
8317 0ULL
8318 },
8319 {
8320 -1ULL,
8321 0x286b300000000000ULL,
8322 -1ULL,
8323 -1ULL,
8324 -1ULL
8325 }
8326 #endif
8327 },
8328 { "xor", TILEGX_OPC_XOR, 0xf, 3, TREG_ZERO, 1,
8329 { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } },
8330 #ifndef DISASM_ONLY
8331 {
8332 0xc00000007ffc0000ULL,
8333 0xfffe000000000000ULL,
8334 0x00000000780c0000ULL,
8335 0x3c06000000000000ULL,
8336 0ULL
8337 },
8338 {
8339 0x0000000052800000ULL,
8340 0x28d6000000000000ULL,
8341 0x00000000500c0000ULL,
8342 0x2c06000000000000ULL,
8343 -1ULL
8344 }
8345 #endif
8346 },
8347 { "xori", TILEGX_OPC_XORI, 0x3, 3, TREG_ZERO, 1,
8348 { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } },
8349 #ifndef DISASM_ONLY
8350 {
8351 0xc00000007ff00000ULL,
8352 0xfff8000000000000ULL,
8353 0ULL,
8354 0ULL,
8355 0ULL
8356 },
8357 {
8358 0x0000000041400000ULL,
8359 0x1968000000000000ULL,
8360 -1ULL,
8361 -1ULL,
8362 -1ULL
8363 }
8364 #endif
8365 },
8366 { NULL, TILEGX_OPC_NONE, 0, 0, TREG_ZERO, 0, { { 0, } },
8367 #ifndef DISASM_ONLY
8368 { 0, }, { 0, }
8369 #endif
8370 }
8371 };
8372
8373 #define BITFIELD(start, size) ((start) | (((1 << (size)) - 1) << 6))
8374 #define CHILD(array_index) (TILEGX_OPC_NONE + (array_index))
8375
8376 static const unsigned short decode_X0_fsm[936] =
8377 {
8378 BITFIELD(22, 9) /* index 0 */,
8379 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8380 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8381 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8382 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8383 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8384 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8385 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8386 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8387 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8388 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8389 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8390 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8391 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8392 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8393 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8394 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8395 CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
8396 CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
8397 CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
8398 CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
8399 CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
8400 CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
8401 CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
8402 CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
8403 CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
8404 CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
8405 CHILD(513), CHILD(513), CHILD(513), CHILD(513), TILEGX_OPC_ADDXLI,
8406 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8407 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8408 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8409 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8410 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8411 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8412 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8413 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8414 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8415 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8416 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8417 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8418 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8419 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8420 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8421 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_NONE,
8422 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8423 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8424 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8425 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_BFEXTS,
8426 TILEGX_OPC_BFEXTS, TILEGX_OPC_BFEXTS, TILEGX_OPC_BFEXTS, TILEGX_OPC_BFEXTU,
8427 TILEGX_OPC_BFEXTU, TILEGX_OPC_BFEXTU, TILEGX_OPC_BFEXTU, TILEGX_OPC_BFINS,
8428 TILEGX_OPC_BFINS, TILEGX_OPC_BFINS, TILEGX_OPC_BFINS, TILEGX_OPC_MM,
8429 TILEGX_OPC_MM, TILEGX_OPC_MM, TILEGX_OPC_MM, TILEGX_OPC_NONE,
8430 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8431 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8432 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8433 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8434 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8435 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8436 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8437 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, CHILD(528), CHILD(578),
8438 CHILD(583), CHILD(588), CHILD(593), CHILD(598), TILEGX_OPC_NONE,
8439 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8440 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8441 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8442 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8443 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8444 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8445 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8446 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8447 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8448 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8449 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8450 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8451 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8452 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8453 TILEGX_OPC_NONE, CHILD(603), CHILD(620), CHILD(637), CHILD(654), CHILD(671),
8454 CHILD(703), CHILD(797), CHILD(814), CHILD(831), CHILD(848), CHILD(865),
8455 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8456 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8457 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8458 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8459 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8460 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8461 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8462 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8463 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8464 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8465 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8466 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8467 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8468 TILEGX_OPC_NONE, CHILD(889), TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8469 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8470 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8471 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8472 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8473 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8474 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8475 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8476 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8477 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8478 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8479 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8480 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8481 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8482 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8483 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8484 TILEGX_OPC_NONE, CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
8485 CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
8486 CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
8487 CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
8488 CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
8489 CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
8490 CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
8491 CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
8492 CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
8493 CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
8494 CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906),
8495 BITFIELD(6, 2) /* index 513 */,
8496 TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, CHILD(518),
8497 BITFIELD(8, 2) /* index 518 */,
8498 TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, CHILD(523),
8499 BITFIELD(10, 2) /* index 523 */,
8500 TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_MOVELI,
8501 BITFIELD(20, 2) /* index 528 */,
8502 TILEGX_OPC_NONE, CHILD(533), TILEGX_OPC_ADDXI, CHILD(548),
8503 BITFIELD(6, 2) /* index 533 */,
8504 TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(538),
8505 BITFIELD(8, 2) /* index 538 */,
8506 TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(543),
8507 BITFIELD(10, 2) /* index 543 */,
8508 TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_MOVEI,
8509 BITFIELD(0, 2) /* index 548 */,
8510 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(553),
8511 BITFIELD(2, 2) /* index 553 */,
8512 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(558),
8513 BITFIELD(4, 2) /* index 558 */,
8514 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(563),
8515 BITFIELD(6, 2) /* index 563 */,
8516 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(568),
8517 BITFIELD(8, 2) /* index 568 */,
8518 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(573),
8519 BITFIELD(10, 2) /* index 573 */,
8520 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_INFO,
8521 BITFIELD(20, 2) /* index 578 */,
8522 TILEGX_OPC_CMPEQI, TILEGX_OPC_CMPLTSI, TILEGX_OPC_CMPLTUI, TILEGX_OPC_ORI,
8523 BITFIELD(20, 2) /* index 583 */,
8524 TILEGX_OPC_V1ADDI, TILEGX_OPC_V1CMPEQI, TILEGX_OPC_V1CMPLTSI,
8525 TILEGX_OPC_V1CMPLTUI,
8526 BITFIELD(20, 2) /* index 588 */,
8527 TILEGX_OPC_V1MAXUI, TILEGX_OPC_V1MINUI, TILEGX_OPC_V2ADDI,
8528 TILEGX_OPC_V2CMPEQI,
8529 BITFIELD(20, 2) /* index 593 */,
8530 TILEGX_OPC_V2CMPLTSI, TILEGX_OPC_V2CMPLTUI, TILEGX_OPC_V2MAXSI,
8531 TILEGX_OPC_V2MINSI,
8532 BITFIELD(20, 2) /* index 598 */,
8533 TILEGX_OPC_XORI, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8534 BITFIELD(18, 4) /* index 603 */,
8535 TILEGX_OPC_NONE, TILEGX_OPC_ADDXSC, TILEGX_OPC_ADDX, TILEGX_OPC_ADD,
8536 TILEGX_OPC_AND, TILEGX_OPC_CMOVEQZ, TILEGX_OPC_CMOVNEZ, TILEGX_OPC_CMPEQ,
8537 TILEGX_OPC_CMPLES, TILEGX_OPC_CMPLEU, TILEGX_OPC_CMPLTS, TILEGX_OPC_CMPLTU,
8538 TILEGX_OPC_CMPNE, TILEGX_OPC_CMULAF, TILEGX_OPC_CMULA, TILEGX_OPC_CMULFR,
8539 BITFIELD(18, 4) /* index 620 */,
8540 TILEGX_OPC_CMULF, TILEGX_OPC_CMULHR, TILEGX_OPC_CMULH, TILEGX_OPC_CMUL,
8541 TILEGX_OPC_CRC32_32, TILEGX_OPC_CRC32_8, TILEGX_OPC_DBLALIGN2,
8542 TILEGX_OPC_DBLALIGN4, TILEGX_OPC_DBLALIGN6, TILEGX_OPC_DBLALIGN,
8543 TILEGX_OPC_FDOUBLE_ADDSUB, TILEGX_OPC_FDOUBLE_ADD_FLAGS,
8544 TILEGX_OPC_FDOUBLE_MUL_FLAGS, TILEGX_OPC_FDOUBLE_PACK1,
8545 TILEGX_OPC_FDOUBLE_PACK2, TILEGX_OPC_FDOUBLE_SUB_FLAGS,
8546 BITFIELD(18, 4) /* index 637 */,
8547 TILEGX_OPC_FDOUBLE_UNPACK_MAX, TILEGX_OPC_FDOUBLE_UNPACK_MIN,
8548 TILEGX_OPC_FSINGLE_ADD1, TILEGX_OPC_FSINGLE_ADDSUB2,
8549 TILEGX_OPC_FSINGLE_MUL1, TILEGX_OPC_FSINGLE_MUL2, TILEGX_OPC_FSINGLE_PACK2,
8550 TILEGX_OPC_FSINGLE_SUB1, TILEGX_OPC_MNZ, TILEGX_OPC_MULAX,
8551 TILEGX_OPC_MULA_HS_HS, TILEGX_OPC_MULA_HS_HU, TILEGX_OPC_MULA_HS_LS,
8552 TILEGX_OPC_MULA_HS_LU, TILEGX_OPC_MULA_HU_HU, TILEGX_OPC_MULA_HU_LS,
8553 BITFIELD(18, 4) /* index 654 */,
8554 TILEGX_OPC_MULA_HU_LU, TILEGX_OPC_MULA_LS_LS, TILEGX_OPC_MULA_LS_LU,
8555 TILEGX_OPC_MULA_LU_LU, TILEGX_OPC_MULX, TILEGX_OPC_MUL_HS_HS,
8556 TILEGX_OPC_MUL_HS_HU, TILEGX_OPC_MUL_HS_LS, TILEGX_OPC_MUL_HS_LU,
8557 TILEGX_OPC_MUL_HU_HU, TILEGX_OPC_MUL_HU_LS, TILEGX_OPC_MUL_HU_LU,
8558 TILEGX_OPC_MUL_LS_LS, TILEGX_OPC_MUL_LS_LU, TILEGX_OPC_MUL_LU_LU,
8559 TILEGX_OPC_MZ,
8560 BITFIELD(18, 4) /* index 671 */,
8561 TILEGX_OPC_NOR, CHILD(688), TILEGX_OPC_ROTL, TILEGX_OPC_SHL1ADDX,
8562 TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL2ADDX, TILEGX_OPC_SHL2ADD,
8563 TILEGX_OPC_SHL3ADDX, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHLX, TILEGX_OPC_SHL,
8564 TILEGX_OPC_SHRS, TILEGX_OPC_SHRUX, TILEGX_OPC_SHRU, TILEGX_OPC_SHUFFLEBYTES,
8565 TILEGX_OPC_SUBXSC,
8566 BITFIELD(12, 2) /* index 688 */,
8567 TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(693),
8568 BITFIELD(14, 2) /* index 693 */,
8569 TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(698),
8570 BITFIELD(16, 2) /* index 698 */,
8571 TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_MOVE,
8572 BITFIELD(18, 4) /* index 703 */,
8573 TILEGX_OPC_SUBX, TILEGX_OPC_SUB, CHILD(720), TILEGX_OPC_V1ADDUC,
8574 TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADIFFU, TILEGX_OPC_V1AVGU,
8575 TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLEU,
8576 TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPNE,
8577 TILEGX_OPC_V1DDOTPUSA, TILEGX_OPC_V1DDOTPUS, TILEGX_OPC_V1DOTPA,
8578 BITFIELD(12, 4) /* index 720 */,
8579 TILEGX_OPC_NONE, CHILD(737), CHILD(742), CHILD(747), CHILD(752), CHILD(757),
8580 CHILD(762), CHILD(767), CHILD(772), CHILD(777), CHILD(782), CHILD(787),
8581 CHILD(792), TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8582 BITFIELD(16, 2) /* index 737 */,
8583 TILEGX_OPC_CLZ, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8584 BITFIELD(16, 2) /* index 742 */,
8585 TILEGX_OPC_CTZ, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8586 BITFIELD(16, 2) /* index 747 */,
8587 TILEGX_OPC_FNOP, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8588 BITFIELD(16, 2) /* index 752 */,
8589 TILEGX_OPC_FSINGLE_PACK1, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8590 BITFIELD(16, 2) /* index 757 */,
8591 TILEGX_OPC_NOP, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8592 BITFIELD(16, 2) /* index 762 */,
8593 TILEGX_OPC_PCNT, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8594 BITFIELD(16, 2) /* index 767 */,
8595 TILEGX_OPC_REVBITS, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8596 BITFIELD(16, 2) /* index 772 */,
8597 TILEGX_OPC_REVBYTES, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8598 BITFIELD(16, 2) /* index 777 */,
8599 TILEGX_OPC_TBLIDXB0, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8600 BITFIELD(16, 2) /* index 782 */,
8601 TILEGX_OPC_TBLIDXB1, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8602 BITFIELD(16, 2) /* index 787 */,
8603 TILEGX_OPC_TBLIDXB2, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8604 BITFIELD(16, 2) /* index 792 */,
8605 TILEGX_OPC_TBLIDXB3, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8606 BITFIELD(18, 4) /* index 797 */,
8607 TILEGX_OPC_V1DOTPUSA, TILEGX_OPC_V1DOTPUS, TILEGX_OPC_V1DOTP,
8608 TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_L, TILEGX_OPC_V1MAXU,
8609 TILEGX_OPC_V1MINU, TILEGX_OPC_V1MNZ, TILEGX_OPC_V1MULTU, TILEGX_OPC_V1MULUS,
8610 TILEGX_OPC_V1MULU, TILEGX_OPC_V1MZ, TILEGX_OPC_V1SADAU, TILEGX_OPC_V1SADU,
8611 TILEGX_OPC_V1SHL, TILEGX_OPC_V1SHRS,
8612 BITFIELD(18, 4) /* index 814 */,
8613 TILEGX_OPC_V1SHRU, TILEGX_OPC_V1SUBUC, TILEGX_OPC_V1SUB, TILEGX_OPC_V2ADDSC,
8614 TILEGX_OPC_V2ADD, TILEGX_OPC_V2ADIFFS, TILEGX_OPC_V2AVGS,
8615 TILEGX_OPC_V2CMPEQ, TILEGX_OPC_V2CMPLES, TILEGX_OPC_V2CMPLEU,
8616 TILEGX_OPC_V2CMPLTS, TILEGX_OPC_V2CMPLTU, TILEGX_OPC_V2CMPNE,
8617 TILEGX_OPC_V2DOTPA, TILEGX_OPC_V2DOTP, TILEGX_OPC_V2INT_H,
8618 BITFIELD(18, 4) /* index 831 */,
8619 TILEGX_OPC_V2INT_L, TILEGX_OPC_V2MAXS, TILEGX_OPC_V2MINS, TILEGX_OPC_V2MNZ,
8620 TILEGX_OPC_V2MULFSC, TILEGX_OPC_V2MULS, TILEGX_OPC_V2MULTS, TILEGX_OPC_V2MZ,
8621 TILEGX_OPC_V2PACKH, TILEGX_OPC_V2PACKL, TILEGX_OPC_V2PACKUC,
8622 TILEGX_OPC_V2SADAS, TILEGX_OPC_V2SADAU, TILEGX_OPC_V2SADS,
8623 TILEGX_OPC_V2SADU, TILEGX_OPC_V2SHLSC,
8624 BITFIELD(18, 4) /* index 848 */,
8625 TILEGX_OPC_V2SHL, TILEGX_OPC_V2SHRS, TILEGX_OPC_V2SHRU, TILEGX_OPC_V2SUBSC,
8626 TILEGX_OPC_V2SUB, TILEGX_OPC_V4ADDSC, TILEGX_OPC_V4ADD, TILEGX_OPC_V4INT_H,
8627 TILEGX_OPC_V4INT_L, TILEGX_OPC_V4PACKSC, TILEGX_OPC_V4SHLSC,
8628 TILEGX_OPC_V4SHL, TILEGX_OPC_V4SHRS, TILEGX_OPC_V4SHRU, TILEGX_OPC_V4SUBSC,
8629 TILEGX_OPC_V4SUB,
8630 BITFIELD(18, 3) /* index 865 */,
8631 CHILD(874), CHILD(877), CHILD(880), CHILD(883), CHILD(886), TILEGX_OPC_NONE,
8632 TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8633 BITFIELD(21, 1) /* index 874 */,
8634 TILEGX_OPC_XOR, TILEGX_OPC_NONE,
8635 BITFIELD(21, 1) /* index 877 */,
8636 TILEGX_OPC_V1DDOTPUA, TILEGX_OPC_NONE,
8637 BITFIELD(21, 1) /* index 880 */,
8638 TILEGX_OPC_V1DDOTPU, TILEGX_OPC_NONE,
8639 BITFIELD(21, 1) /* index 883 */,
8640 TILEGX_OPC_V1DOTPUA, TILEGX_OPC_NONE,
8641 BITFIELD(21, 1) /* index 886 */,
8642 TILEGX_OPC_V1DOTPU, TILEGX_OPC_NONE,
8643 BITFIELD(18, 4) /* index 889 */,
8644 TILEGX_OPC_NONE, TILEGX_OPC_ROTLI, TILEGX_OPC_SHLI, TILEGX_OPC_SHLXI,
8645 TILEGX_OPC_SHRSI, TILEGX_OPC_SHRUI, TILEGX_OPC_SHRUXI, TILEGX_OPC_V1SHLI,
8646 TILEGX_OPC_V1SHRSI, TILEGX_OPC_V1SHRUI, TILEGX_OPC_V2SHLI,
8647 TILEGX_OPC_V2SHRSI, TILEGX_OPC_V2SHRUI, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8648 TILEGX_OPC_NONE,
8649 BITFIELD(0, 2) /* index 906 */,
8650 TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
8651 CHILD(911),
8652 BITFIELD(2, 2) /* index 911 */,
8653 TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
8654 CHILD(916),
8655 BITFIELD(4, 2) /* index 916 */,
8656 TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
8657 CHILD(921),
8658 BITFIELD(6, 2) /* index 921 */,
8659 TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
8660 CHILD(926),
8661 BITFIELD(8, 2) /* index 926 */,
8662 TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
8663 CHILD(931),
8664 BITFIELD(10, 2) /* index 931 */,
8665 TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
8666 TILEGX_OPC_INFOL,
8667 };
8668
8669 static const unsigned short decode_X1_fsm[1266] =
8670 {
8671 BITFIELD(53, 9) /* index 0 */,
8672 CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
8673 CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
8674 CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
8675 CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
8676 CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
8677 CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
8678 CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
8679 CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
8680 CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
8681 CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513),
8682 CHILD(513), CHILD(513), CHILD(513), CHILD(513), TILEGX_OPC_ADDXLI,
8683 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8684 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8685 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8686 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8687 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8688 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8689 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8690 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8691 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8692 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8693 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8694 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8695 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8696 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8697 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI,
8698 TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_NONE,
8699 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8700 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8701 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8702 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8703 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8704 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8705 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8706 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_BEQZT,
8707 TILEGX_OPC_BEQZT, TILEGX_OPC_BEQZ, TILEGX_OPC_BEQZ, TILEGX_OPC_BGEZT,
8708 TILEGX_OPC_BGEZT, TILEGX_OPC_BGEZ, TILEGX_OPC_BGEZ, TILEGX_OPC_BGTZT,
8709 TILEGX_OPC_BGTZT, TILEGX_OPC_BGTZ, TILEGX_OPC_BGTZ, TILEGX_OPC_BLBCT,
8710 TILEGX_OPC_BLBCT, TILEGX_OPC_BLBC, TILEGX_OPC_BLBC, TILEGX_OPC_BLBST,
8711 TILEGX_OPC_BLBST, TILEGX_OPC_BLBS, TILEGX_OPC_BLBS, TILEGX_OPC_BLEZT,
8712 TILEGX_OPC_BLEZT, TILEGX_OPC_BLEZ, TILEGX_OPC_BLEZ, TILEGX_OPC_BLTZT,
8713 TILEGX_OPC_BLTZT, TILEGX_OPC_BLTZ, TILEGX_OPC_BLTZ, TILEGX_OPC_BNEZT,
8714 TILEGX_OPC_BNEZT, TILEGX_OPC_BNEZ, TILEGX_OPC_BNEZ, CHILD(528), CHILD(578),
8715 CHILD(598), CHILD(703), CHILD(723), CHILD(728), CHILD(753), CHILD(758),
8716 CHILD(763), CHILD(768), CHILD(773), CHILD(778), TILEGX_OPC_NONE,
8717 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8718 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8719 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8720 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8721 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8722 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8723 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8724 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8725 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8726 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8727 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8728 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8729 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_JAL,
8730 TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL,
8731 TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL,
8732 TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL,
8733 TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL,
8734 TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL,
8735 TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL,
8736 TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL,
8737 TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_J, TILEGX_OPC_J,
8738 TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J,
8739 TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J,
8740 TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J,
8741 TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J,
8742 TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J,
8743 TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J,
8744 CHILD(783), CHILD(800), CHILD(832), CHILD(849), CHILD(1168), CHILD(1185),
8745 CHILD(1202), TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8746 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8747 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8748 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8749 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8750 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8751 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8752 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8753 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8754 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8755 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8756 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8757 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8758 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8759 TILEGX_OPC_NONE, TILEGX_OPC_NONE, CHILD(1219), TILEGX_OPC_NONE,
8760 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8761 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8762 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8763 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8764 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8765 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8766 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8767 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8768 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8769 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8770 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8771 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8772 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8773 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8774 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8775 TILEGX_OPC_NONE, TILEGX_OPC_NONE, CHILD(1236), CHILD(1236), CHILD(1236),
8776 CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
8777 CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
8778 CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
8779 CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
8780 CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
8781 CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
8782 CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
8783 CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
8784 CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
8785 CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
8786 CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
8787 CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236),
8788 CHILD(1236),
8789 BITFIELD(37, 2) /* index 513 */,
8790 TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, CHILD(518),
8791 BITFIELD(39, 2) /* index 518 */,
8792 TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, CHILD(523),
8793 BITFIELD(41, 2) /* index 523 */,
8794 TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_MOVELI,
8795 BITFIELD(51, 2) /* index 528 */,
8796 TILEGX_OPC_NONE, CHILD(533), TILEGX_OPC_ADDXI, CHILD(548),
8797 BITFIELD(37, 2) /* index 533 */,
8798 TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(538),
8799 BITFIELD(39, 2) /* index 538 */,
8800 TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(543),
8801 BITFIELD(41, 2) /* index 543 */,
8802 TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_MOVEI,
8803 BITFIELD(31, 2) /* index 548 */,
8804 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(553),
8805 BITFIELD(33, 2) /* index 553 */,
8806 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(558),
8807 BITFIELD(35, 2) /* index 558 */,
8808 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(563),
8809 BITFIELD(37, 2) /* index 563 */,
8810 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(568),
8811 BITFIELD(39, 2) /* index 568 */,
8812 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(573),
8813 BITFIELD(41, 2) /* index 573 */,
8814 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_INFO,
8815 BITFIELD(51, 2) /* index 578 */,
8816 TILEGX_OPC_CMPEQI, TILEGX_OPC_CMPLTSI, TILEGX_OPC_CMPLTUI, CHILD(583),
8817 BITFIELD(31, 2) /* index 583 */,
8818 TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD, CHILD(588),
8819 BITFIELD(33, 2) /* index 588 */,
8820 TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD, CHILD(593),
8821 BITFIELD(35, 2) /* index 593 */,
8822 TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD,
8823 TILEGX_OPC_PREFETCH_ADD_L1_FAULT,
8824 BITFIELD(51, 2) /* index 598 */,
8825 CHILD(603), CHILD(618), CHILD(633), CHILD(648),
8826 BITFIELD(31, 2) /* index 603 */,
8827 TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD, CHILD(608),
8828 BITFIELD(33, 2) /* index 608 */,
8829 TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD, CHILD(613),
8830 BITFIELD(35, 2) /* index 613 */,
8831 TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD,
8832 TILEGX_OPC_PREFETCH_ADD_L1,
8833 BITFIELD(31, 2) /* index 618 */,
8834 TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD, CHILD(623),
8835 BITFIELD(33, 2) /* index 623 */,
8836 TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD, CHILD(628),
8837 BITFIELD(35, 2) /* index 628 */,
8838 TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD,
8839 TILEGX_OPC_PREFETCH_ADD_L2_FAULT,
8840 BITFIELD(31, 2) /* index 633 */,
8841 TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, CHILD(638),
8842 BITFIELD(33, 2) /* index 638 */,
8843 TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, CHILD(643),
8844 BITFIELD(35, 2) /* index 643 */,
8845 TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD,
8846 TILEGX_OPC_PREFETCH_ADD_L2,
8847 BITFIELD(31, 2) /* index 648 */,
8848 CHILD(653), CHILD(653), CHILD(653), CHILD(673),
8849 BITFIELD(43, 2) /* index 653 */,
8850 CHILD(658), TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD,
8851 BITFIELD(45, 2) /* index 658 */,
8852 CHILD(663), TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD,
8853 BITFIELD(47, 2) /* index 663 */,
8854 CHILD(668), TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD,
8855 BITFIELD(49, 2) /* index 668 */,
8856 TILEGX_OPC_LD4S_TLS, TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD,
8857 TILEGX_OPC_LD4S_ADD,
8858 BITFIELD(33, 2) /* index 673 */,
8859 CHILD(653), CHILD(653), CHILD(653), CHILD(678),
8860 BITFIELD(35, 2) /* index 678 */,
8861 CHILD(653), CHILD(653), CHILD(653), CHILD(683),
8862 BITFIELD(43, 2) /* index 683 */,
8863 CHILD(688), TILEGX_OPC_PREFETCH_ADD_L3_FAULT,
8864 TILEGX_OPC_PREFETCH_ADD_L3_FAULT, TILEGX_OPC_PREFETCH_ADD_L3_FAULT,
8865 BITFIELD(45, 2) /* index 688 */,
8866 CHILD(693), TILEGX_OPC_PREFETCH_ADD_L3_FAULT,
8867 TILEGX_OPC_PREFETCH_ADD_L3_FAULT, TILEGX_OPC_PREFETCH_ADD_L3_FAULT,
8868 BITFIELD(47, 2) /* index 693 */,
8869 CHILD(698), TILEGX_OPC_PREFETCH_ADD_L3_FAULT,
8870 TILEGX_OPC_PREFETCH_ADD_L3_FAULT, TILEGX_OPC_PREFETCH_ADD_L3_FAULT,
8871 BITFIELD(49, 2) /* index 698 */,
8872 TILEGX_OPC_LD4S_TLS, TILEGX_OPC_PREFETCH_ADD_L3_FAULT,
8873 TILEGX_OPC_PREFETCH_ADD_L3_FAULT, TILEGX_OPC_PREFETCH_ADD_L3_FAULT,
8874 BITFIELD(51, 2) /* index 703 */,
8875 CHILD(708), TILEGX_OPC_LDNT1S_ADD, TILEGX_OPC_LDNT1U_ADD,
8876 TILEGX_OPC_LDNT2S_ADD,
8877 BITFIELD(31, 2) /* index 708 */,
8878 TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, CHILD(713),
8879 BITFIELD(33, 2) /* index 713 */,
8880 TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, CHILD(718),
8881 BITFIELD(35, 2) /* index 718 */,
8882 TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD,
8883 TILEGX_OPC_PREFETCH_ADD_L3,
8884 BITFIELD(51, 2) /* index 723 */,
8885 TILEGX_OPC_LDNT2U_ADD, TILEGX_OPC_LDNT4S_ADD, TILEGX_OPC_LDNT4U_ADD,
8886 TILEGX_OPC_LDNT_ADD,
8887 BITFIELD(51, 2) /* index 728 */,
8888 CHILD(733), TILEGX_OPC_LDNA_ADD, TILEGX_OPC_MFSPR, TILEGX_OPC_MTSPR,
8889 BITFIELD(43, 2) /* index 733 */,
8890 CHILD(738), TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD,
8891 BITFIELD(45, 2) /* index 738 */,
8892 CHILD(743), TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD,
8893 BITFIELD(47, 2) /* index 743 */,
8894 CHILD(748), TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD,
8895 BITFIELD(49, 2) /* index 748 */,
8896 TILEGX_OPC_LD_TLS, TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD,
8897 BITFIELD(51, 2) /* index 753 */,
8898 TILEGX_OPC_ORI, TILEGX_OPC_ST1_ADD, TILEGX_OPC_ST2_ADD, TILEGX_OPC_ST4_ADD,
8899 BITFIELD(51, 2) /* index 758 */,
8900 TILEGX_OPC_STNT1_ADD, TILEGX_OPC_STNT2_ADD, TILEGX_OPC_STNT4_ADD,
8901 TILEGX_OPC_STNT_ADD,
8902 BITFIELD(51, 2) /* index 763 */,
8903 TILEGX_OPC_ST_ADD, TILEGX_OPC_V1ADDI, TILEGX_OPC_V1CMPEQI,
8904 TILEGX_OPC_V1CMPLTSI,
8905 BITFIELD(51, 2) /* index 768 */,
8906 TILEGX_OPC_V1CMPLTUI, TILEGX_OPC_V1MAXUI, TILEGX_OPC_V1MINUI,
8907 TILEGX_OPC_V2ADDI,
8908 BITFIELD(51, 2) /* index 773 */,
8909 TILEGX_OPC_V2CMPEQI, TILEGX_OPC_V2CMPLTSI, TILEGX_OPC_V2CMPLTUI,
8910 TILEGX_OPC_V2MAXSI,
8911 BITFIELD(51, 2) /* index 778 */,
8912 TILEGX_OPC_V2MINSI, TILEGX_OPC_XORI, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8913 BITFIELD(49, 4) /* index 783 */,
8914 TILEGX_OPC_NONE, TILEGX_OPC_ADDXSC, TILEGX_OPC_ADDX, TILEGX_OPC_ADD,
8915 TILEGX_OPC_AND, TILEGX_OPC_CMPEQ, TILEGX_OPC_CMPEXCH4, TILEGX_OPC_CMPEXCH,
8916 TILEGX_OPC_CMPLES, TILEGX_OPC_CMPLEU, TILEGX_OPC_CMPLTS, TILEGX_OPC_CMPLTU,
8917 TILEGX_OPC_CMPNE, TILEGX_OPC_DBLALIGN2, TILEGX_OPC_DBLALIGN4,
8918 TILEGX_OPC_DBLALIGN6,
8919 BITFIELD(49, 4) /* index 800 */,
8920 TILEGX_OPC_EXCH4, TILEGX_OPC_EXCH, TILEGX_OPC_FETCHADD4,
8921 TILEGX_OPC_FETCHADDGEZ4, TILEGX_OPC_FETCHADDGEZ, TILEGX_OPC_FETCHADD,
8922 TILEGX_OPC_FETCHAND4, TILEGX_OPC_FETCHAND, TILEGX_OPC_FETCHOR4,
8923 TILEGX_OPC_FETCHOR, TILEGX_OPC_MNZ, TILEGX_OPC_MZ, TILEGX_OPC_NOR,
8924 CHILD(817), TILEGX_OPC_ROTL, TILEGX_OPC_SHL1ADDX,
8925 BITFIELD(43, 2) /* index 817 */,
8926 TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(822),
8927 BITFIELD(45, 2) /* index 822 */,
8928 TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(827),
8929 BITFIELD(47, 2) /* index 827 */,
8930 TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_MOVE,
8931 BITFIELD(49, 4) /* index 832 */,
8932 TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL2ADDX, TILEGX_OPC_SHL2ADD,
8933 TILEGX_OPC_SHL3ADDX, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHLX, TILEGX_OPC_SHL,
8934 TILEGX_OPC_SHRS, TILEGX_OPC_SHRUX, TILEGX_OPC_SHRU, TILEGX_OPC_ST1,
8935 TILEGX_OPC_ST2, TILEGX_OPC_ST4, TILEGX_OPC_STNT1, TILEGX_OPC_STNT2,
8936 TILEGX_OPC_STNT4,
8937 BITFIELD(46, 7) /* index 849 */,
8938 TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_STNT,
8939 TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_STNT,
8940 TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_ST,
8941 TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_SUBXSC,
8942 TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBXSC,
8943 TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBX,
8944 TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, TILEGX_OPC_SUBX,
8945 TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, TILEGX_OPC_SUB,
8946 TILEGX_OPC_SUB, TILEGX_OPC_SUB, TILEGX_OPC_SUB, TILEGX_OPC_SUB,
8947 TILEGX_OPC_SUB, TILEGX_OPC_SUB, TILEGX_OPC_SUB, CHILD(978), CHILD(987),
8948 CHILD(1066), CHILD(1150), CHILD(1159), TILEGX_OPC_NONE, TILEGX_OPC_NONE,
8949 TILEGX_OPC_NONE, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC,
8950 TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC,
8951 TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADD,
8952 TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADD,
8953 TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADD, TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPEQ,
8954 TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPEQ,
8955 TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPEQ,
8956 TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLES,
8957 TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLES,
8958 TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLEU,
8959 TILEGX_OPC_V1CMPLEU, TILEGX_OPC_V1CMPLEU, TILEGX_OPC_V1CMPLEU,
8960 TILEGX_OPC_V1CMPLEU, TILEGX_OPC_V1CMPLEU, TILEGX_OPC_V1CMPLEU,
8961 TILEGX_OPC_V1CMPLEU, TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTS,
8962 TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTS,
8963 TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTS,
8964 TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPLTU,
8965 TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPLTU,
8966 TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPNE,
8967 TILEGX_OPC_V1CMPNE, TILEGX_OPC_V1CMPNE, TILEGX_OPC_V1CMPNE,
8968 TILEGX_OPC_V1CMPNE, TILEGX_OPC_V1CMPNE, TILEGX_OPC_V1CMPNE,
8969 TILEGX_OPC_V1CMPNE, TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_H,
8970 TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_H,
8971 TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_H,
8972 TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L,
8973 TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L,
8974 TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L,
8975 BITFIELD(43, 3) /* index 978 */,
8976 TILEGX_OPC_NONE, TILEGX_OPC_DRAIN, TILEGX_OPC_DTLBPR, TILEGX_OPC_FINV,
8977 TILEGX_OPC_FLUSHWB, TILEGX_OPC_FLUSH, TILEGX_OPC_FNOP, TILEGX_OPC_ICOH,
8978 BITFIELD(43, 3) /* index 987 */,
8979 CHILD(996), TILEGX_OPC_INV, TILEGX_OPC_IRET, TILEGX_OPC_JALRP,
8980 TILEGX_OPC_JALR, TILEGX_OPC_JRP, TILEGX_OPC_JR, CHILD(1051),
8981 BITFIELD(31, 2) /* index 996 */,
8982 CHILD(1001), CHILD(1026), TILEGX_OPC_ILL, TILEGX_OPC_ILL,
8983 BITFIELD(33, 2) /* index 1001 */,
8984 TILEGX_OPC_ILL, TILEGX_OPC_ILL, TILEGX_OPC_ILL, CHILD(1006),
8985 BITFIELD(35, 2) /* index 1006 */,
8986 TILEGX_OPC_ILL, CHILD(1011), TILEGX_OPC_ILL, TILEGX_OPC_ILL,
8987 BITFIELD(37, 2) /* index 1011 */,
8988 TILEGX_OPC_ILL, CHILD(1016), TILEGX_OPC_ILL, TILEGX_OPC_ILL,
8989 BITFIELD(39, 2) /* index 1016 */,
8990 TILEGX_OPC_ILL, CHILD(1021), TILEGX_OPC_ILL, TILEGX_OPC_ILL,
8991 BITFIELD(41, 2) /* index 1021 */,
8992 TILEGX_OPC_ILL, TILEGX_OPC_ILL, TILEGX_OPC_BPT, TILEGX_OPC_ILL,
8993 BITFIELD(33, 2) /* index 1026 */,
8994 TILEGX_OPC_ILL, TILEGX_OPC_ILL, TILEGX_OPC_ILL, CHILD(1031),
8995 BITFIELD(35, 2) /* index 1031 */,
8996 TILEGX_OPC_ILL, CHILD(1036), TILEGX_OPC_ILL, TILEGX_OPC_ILL,
8997 BITFIELD(37, 2) /* index 1036 */,
8998 TILEGX_OPC_ILL, CHILD(1041), TILEGX_OPC_ILL, TILEGX_OPC_ILL,
8999 BITFIELD(39, 2) /* index 1041 */,
9000 TILEGX_OPC_ILL, CHILD(1046), TILEGX_OPC_ILL, TILEGX_OPC_ILL,
9001 BITFIELD(41, 2) /* index 1046 */,
9002 TILEGX_OPC_ILL, TILEGX_OPC_ILL, TILEGX_OPC_RAISE, TILEGX_OPC_ILL,
9003 BITFIELD(31, 2) /* index 1051 */,
9004 TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, CHILD(1056),
9005 BITFIELD(33, 2) /* index 1056 */,
9006 TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, CHILD(1061),
9007 BITFIELD(35, 2) /* index 1061 */,
9008 TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S,
9009 TILEGX_OPC_PREFETCH_L1_FAULT,
9010 BITFIELD(43, 3) /* index 1066 */,
9011 CHILD(1075), CHILD(1090), CHILD(1105), CHILD(1120), CHILD(1135),
9012 TILEGX_OPC_LDNA, TILEGX_OPC_LDNT1S, TILEGX_OPC_LDNT1U,
9013 BITFIELD(31, 2) /* index 1075 */,
9014 TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, CHILD(1080),
9015 BITFIELD(33, 2) /* index 1080 */,
9016 TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, CHILD(1085),
9017 BITFIELD(35, 2) /* index 1085 */,
9018 TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_PREFETCH,
9019 BITFIELD(31, 2) /* index 1090 */,
9020 TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, CHILD(1095),
9021 BITFIELD(33, 2) /* index 1095 */,
9022 TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, CHILD(1100),
9023 BITFIELD(35, 2) /* index 1100 */,
9024 TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S,
9025 TILEGX_OPC_PREFETCH_L2_FAULT,
9026 BITFIELD(31, 2) /* index 1105 */,
9027 TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, CHILD(1110),
9028 BITFIELD(33, 2) /* index 1110 */,
9029 TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, CHILD(1115),
9030 BITFIELD(35, 2) /* index 1115 */,
9031 TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_PREFETCH_L2,
9032 BITFIELD(31, 2) /* index 1120 */,
9033 TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, CHILD(1125),
9034 BITFIELD(33, 2) /* index 1125 */,
9035 TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, CHILD(1130),
9036 BITFIELD(35, 2) /* index 1130 */,
9037 TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S,
9038 TILEGX_OPC_PREFETCH_L3_FAULT,
9039 BITFIELD(31, 2) /* index 1135 */,
9040 TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, CHILD(1140),
9041 BITFIELD(33, 2) /* index 1140 */,
9042 TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, CHILD(1145),
9043 BITFIELD(35, 2) /* index 1145 */,
9044 TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_PREFETCH_L3,
9045 BITFIELD(43, 3) /* index 1150 */,
9046 TILEGX_OPC_LDNT2S, TILEGX_OPC_LDNT2U, TILEGX_OPC_LDNT4S, TILEGX_OPC_LDNT4U,
9047 TILEGX_OPC_LDNT, TILEGX_OPC_LD, TILEGX_OPC_LNK, TILEGX_OPC_MF,
9048 BITFIELD(43, 3) /* index 1159 */,
9049 TILEGX_OPC_NAP, TILEGX_OPC_NOP, TILEGX_OPC_SWINT0, TILEGX_OPC_SWINT1,
9050 TILEGX_OPC_SWINT2, TILEGX_OPC_SWINT3, TILEGX_OPC_WH64, TILEGX_OPC_NONE,
9051 BITFIELD(49, 4) /* index 1168 */,
9052 TILEGX_OPC_V1MAXU, TILEGX_OPC_V1MINU, TILEGX_OPC_V1MNZ, TILEGX_OPC_V1MZ,
9053 TILEGX_OPC_V1SHL, TILEGX_OPC_V1SHRS, TILEGX_OPC_V1SHRU, TILEGX_OPC_V1SUBUC,
9054 TILEGX_OPC_V1SUB, TILEGX_OPC_V2ADDSC, TILEGX_OPC_V2ADD, TILEGX_OPC_V2CMPEQ,
9055 TILEGX_OPC_V2CMPLES, TILEGX_OPC_V2CMPLEU, TILEGX_OPC_V2CMPLTS,
9056 TILEGX_OPC_V2CMPLTU,
9057 BITFIELD(49, 4) /* index 1185 */,
9058 TILEGX_OPC_V2CMPNE, TILEGX_OPC_V2INT_H, TILEGX_OPC_V2INT_L,
9059 TILEGX_OPC_V2MAXS, TILEGX_OPC_V2MINS, TILEGX_OPC_V2MNZ, TILEGX_OPC_V2MZ,
9060 TILEGX_OPC_V2PACKH, TILEGX_OPC_V2PACKL, TILEGX_OPC_V2PACKUC,
9061 TILEGX_OPC_V2SHLSC, TILEGX_OPC_V2SHL, TILEGX_OPC_V2SHRS, TILEGX_OPC_V2SHRU,
9062 TILEGX_OPC_V2SUBSC, TILEGX_OPC_V2SUB,
9063 BITFIELD(49, 4) /* index 1202 */,
9064 TILEGX_OPC_V4ADDSC, TILEGX_OPC_V4ADD, TILEGX_OPC_V4INT_H,
9065 TILEGX_OPC_V4INT_L, TILEGX_OPC_V4PACKSC, TILEGX_OPC_V4SHLSC,
9066 TILEGX_OPC_V4SHL, TILEGX_OPC_V4SHRS, TILEGX_OPC_V4SHRU, TILEGX_OPC_V4SUBSC,
9067 TILEGX_OPC_V4SUB, TILEGX_OPC_XOR, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
9068 TILEGX_OPC_NONE, TILEGX_OPC_NONE,
9069 BITFIELD(49, 4) /* index 1219 */,
9070 TILEGX_OPC_NONE, TILEGX_OPC_ROTLI, TILEGX_OPC_SHLI, TILEGX_OPC_SHLXI,
9071 TILEGX_OPC_SHRSI, TILEGX_OPC_SHRUI, TILEGX_OPC_SHRUXI, TILEGX_OPC_V1SHLI,
9072 TILEGX_OPC_V1SHRSI, TILEGX_OPC_V1SHRUI, TILEGX_OPC_V2SHLI,
9073 TILEGX_OPC_V2SHRSI, TILEGX_OPC_V2SHRUI, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
9074 TILEGX_OPC_NONE,
9075 BITFIELD(31, 2) /* index 1236 */,
9076 TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
9077 CHILD(1241),
9078 BITFIELD(33, 2) /* index 1241 */,
9079 TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
9080 CHILD(1246),
9081 BITFIELD(35, 2) /* index 1246 */,
9082 TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
9083 CHILD(1251),
9084 BITFIELD(37, 2) /* index 1251 */,
9085 TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
9086 CHILD(1256),
9087 BITFIELD(39, 2) /* index 1256 */,
9088 TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
9089 CHILD(1261),
9090 BITFIELD(41, 2) /* index 1261 */,
9091 TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI,
9092 TILEGX_OPC_INFOL,
9093 };
9094
9095 static const unsigned short decode_Y0_fsm[178] =
9096 {
9097 BITFIELD(27, 4) /* index 0 */,
9098 CHILD(17), TILEGX_OPC_ADDXI, CHILD(32), TILEGX_OPC_CMPEQI,
9099 TILEGX_OPC_CMPLTSI, CHILD(62), CHILD(67), CHILD(118), CHILD(123),
9100 CHILD(128), CHILD(133), CHILD(153), CHILD(158), CHILD(163), CHILD(168),
9101 CHILD(173),
9102 BITFIELD(6, 2) /* index 17 */,
9103 TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(22),
9104 BITFIELD(8, 2) /* index 22 */,
9105 TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(27),
9106 BITFIELD(10, 2) /* index 27 */,
9107 TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_MOVEI,
9108 BITFIELD(0, 2) /* index 32 */,
9109 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(37),
9110 BITFIELD(2, 2) /* index 37 */,
9111 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(42),
9112 BITFIELD(4, 2) /* index 42 */,
9113 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(47),
9114 BITFIELD(6, 2) /* index 47 */,
9115 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(52),
9116 BITFIELD(8, 2) /* index 52 */,
9117 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(57),
9118 BITFIELD(10, 2) /* index 57 */,
9119 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_INFO,
9120 BITFIELD(18, 2) /* index 62 */,
9121 TILEGX_OPC_ADDX, TILEGX_OPC_ADD, TILEGX_OPC_SUBX, TILEGX_OPC_SUB,
9122 BITFIELD(15, 5) /* index 67 */,
9123 TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD,
9124 TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD,
9125 TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL2ADD,
9126 TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD,
9127 TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD,
9128 TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD,
9129 TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD,
9130 TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD, CHILD(100),
9131 CHILD(109), TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
9132 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
9133 BITFIELD(12, 3) /* index 100 */,
9134 TILEGX_OPC_NONE, TILEGX_OPC_CLZ, TILEGX_OPC_CTZ, TILEGX_OPC_FNOP,
9135 TILEGX_OPC_FSINGLE_PACK1, TILEGX_OPC_NOP, TILEGX_OPC_PCNT,
9136 TILEGX_OPC_REVBITS,
9137 BITFIELD(12, 3) /* index 109 */,
9138 TILEGX_OPC_REVBYTES, TILEGX_OPC_TBLIDXB0, TILEGX_OPC_TBLIDXB1,
9139 TILEGX_OPC_TBLIDXB2, TILEGX_OPC_TBLIDXB3, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
9140 TILEGX_OPC_NONE,
9141 BITFIELD(18, 2) /* index 118 */,
9142 TILEGX_OPC_CMPLES, TILEGX_OPC_CMPLEU, TILEGX_OPC_CMPLTS, TILEGX_OPC_CMPLTU,
9143 BITFIELD(18, 2) /* index 123 */,
9144 TILEGX_OPC_CMPEQ, TILEGX_OPC_CMPNE, TILEGX_OPC_MULAX, TILEGX_OPC_MULX,
9145 BITFIELD(18, 2) /* index 128 */,
9146 TILEGX_OPC_CMOVEQZ, TILEGX_OPC_CMOVNEZ, TILEGX_OPC_MNZ, TILEGX_OPC_MZ,
9147 BITFIELD(18, 2) /* index 133 */,
9148 TILEGX_OPC_AND, TILEGX_OPC_NOR, CHILD(138), TILEGX_OPC_XOR,
9149 BITFIELD(12, 2) /* index 138 */,
9150 TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(143),
9151 BITFIELD(14, 2) /* index 143 */,
9152 TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(148),
9153 BITFIELD(16, 2) /* index 148 */,
9154 TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_MOVE,
9155 BITFIELD(18, 2) /* index 153 */,
9156 TILEGX_OPC_ROTL, TILEGX_OPC_SHL, TILEGX_OPC_SHRS, TILEGX_OPC_SHRU,
9157 BITFIELD(18, 2) /* index 158 */,
9158 TILEGX_OPC_NONE, TILEGX_OPC_SHL1ADDX, TILEGX_OPC_SHL2ADDX,
9159 TILEGX_OPC_SHL3ADDX,
9160 BITFIELD(18, 2) /* index 163 */,
9161 TILEGX_OPC_MUL_HS_HS, TILEGX_OPC_MUL_HU_HU, TILEGX_OPC_MUL_LS_LS,
9162 TILEGX_OPC_MUL_LU_LU,
9163 BITFIELD(18, 2) /* index 168 */,
9164 TILEGX_OPC_MULA_HS_HS, TILEGX_OPC_MULA_HU_HU, TILEGX_OPC_MULA_LS_LS,
9165 TILEGX_OPC_MULA_LU_LU,
9166 BITFIELD(18, 2) /* index 173 */,
9167 TILEGX_OPC_ROTLI, TILEGX_OPC_SHLI, TILEGX_OPC_SHRSI, TILEGX_OPC_SHRUI,
9168 };
9169
9170 static const unsigned short decode_Y1_fsm[167] =
9171 {
9172 BITFIELD(58, 4) /* index 0 */,
9173 TILEGX_OPC_NONE, CHILD(17), TILEGX_OPC_ADDXI, CHILD(32), TILEGX_OPC_CMPEQI,
9174 TILEGX_OPC_CMPLTSI, CHILD(62), CHILD(67), CHILD(117), CHILD(122),
9175 CHILD(127), CHILD(132), CHILD(152), CHILD(157), CHILD(162), TILEGX_OPC_NONE,
9176 BITFIELD(37, 2) /* index 17 */,
9177 TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(22),
9178 BITFIELD(39, 2) /* index 22 */,
9179 TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(27),
9180 BITFIELD(41, 2) /* index 27 */,
9181 TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_MOVEI,
9182 BITFIELD(31, 2) /* index 32 */,
9183 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(37),
9184 BITFIELD(33, 2) /* index 37 */,
9185 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(42),
9186 BITFIELD(35, 2) /* index 42 */,
9187 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(47),
9188 BITFIELD(37, 2) /* index 47 */,
9189 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(52),
9190 BITFIELD(39, 2) /* index 52 */,
9191 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(57),
9192 BITFIELD(41, 2) /* index 57 */,
9193 TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_INFO,
9194 BITFIELD(49, 2) /* index 62 */,
9195 TILEGX_OPC_ADDX, TILEGX_OPC_ADD, TILEGX_OPC_SUBX, TILEGX_OPC_SUB,
9196 BITFIELD(47, 4) /* index 67 */,
9197 TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD,
9198 TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD,
9199 TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL3ADD,
9200 TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD, CHILD(84),
9201 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE,
9202 BITFIELD(43, 3) /* index 84 */,
9203 CHILD(93), CHILD(96), CHILD(99), CHILD(102), CHILD(105), CHILD(108),
9204 CHILD(111), CHILD(114),
9205 BITFIELD(46, 1) /* index 93 */,
9206 TILEGX_OPC_NONE, TILEGX_OPC_FNOP,
9207 BITFIELD(46, 1) /* index 96 */,
9208 TILEGX_OPC_NONE, TILEGX_OPC_ILL,
9209 BITFIELD(46, 1) /* index 99 */,
9210 TILEGX_OPC_NONE, TILEGX_OPC_JALRP,
9211 BITFIELD(46, 1) /* index 102 */,
9212 TILEGX_OPC_NONE, TILEGX_OPC_JALR,
9213 BITFIELD(46, 1) /* index 105 */,
9214 TILEGX_OPC_NONE, TILEGX_OPC_JRP,
9215 BITFIELD(46, 1) /* index 108 */,
9216 TILEGX_OPC_NONE, TILEGX_OPC_JR,
9217 BITFIELD(46, 1) /* index 111 */,
9218 TILEGX_OPC_NONE, TILEGX_OPC_LNK,
9219 BITFIELD(46, 1) /* index 114 */,
9220 TILEGX_OPC_NONE, TILEGX_OPC_NOP,
9221 BITFIELD(49, 2) /* index 117 */,
9222 TILEGX_OPC_CMPLES, TILEGX_OPC_CMPLEU, TILEGX_OPC_CMPLTS, TILEGX_OPC_CMPLTU,
9223 BITFIELD(49, 2) /* index 122 */,
9224 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_CMPEQ, TILEGX_OPC_CMPNE,
9225 BITFIELD(49, 2) /* index 127 */,
9226 TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_MNZ, TILEGX_OPC_MZ,
9227 BITFIELD(49, 2) /* index 132 */,
9228 TILEGX_OPC_AND, TILEGX_OPC_NOR, CHILD(137), TILEGX_OPC_XOR,
9229 BITFIELD(43, 2) /* index 137 */,
9230 TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(142),
9231 BITFIELD(45, 2) /* index 142 */,
9232 TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(147),
9233 BITFIELD(47, 2) /* index 147 */,
9234 TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_MOVE,
9235 BITFIELD(49, 2) /* index 152 */,
9236 TILEGX_OPC_ROTL, TILEGX_OPC_SHL, TILEGX_OPC_SHRS, TILEGX_OPC_SHRU,
9237 BITFIELD(49, 2) /* index 157 */,
9238 TILEGX_OPC_NONE, TILEGX_OPC_SHL1ADDX, TILEGX_OPC_SHL2ADDX,
9239 TILEGX_OPC_SHL3ADDX,
9240 BITFIELD(49, 2) /* index 162 */,
9241 TILEGX_OPC_ROTLI, TILEGX_OPC_SHLI, TILEGX_OPC_SHRSI, TILEGX_OPC_SHRUI,
9242 };
9243
9244 static const unsigned short decode_Y2_fsm[118] =
9245 {
9246 BITFIELD(62, 2) /* index 0 */,
9247 TILEGX_OPC_NONE, CHILD(5), CHILD(66), CHILD(109),
9248 BITFIELD(55, 3) /* index 5 */,
9249 CHILD(14), CHILD(14), CHILD(14), CHILD(17), CHILD(40), CHILD(40), CHILD(40),
9250 CHILD(43),
9251 BITFIELD(26, 1) /* index 14 */,
9252 TILEGX_OPC_LD1S, TILEGX_OPC_LD1U,
9253 BITFIELD(26, 1) /* index 17 */,
9254 CHILD(20), CHILD(30),
9255 BITFIELD(51, 2) /* index 20 */,
9256 TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, CHILD(25),
9257 BITFIELD(53, 2) /* index 25 */,
9258 TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S,
9259 TILEGX_OPC_PREFETCH_L1_FAULT,
9260 BITFIELD(51, 2) /* index 30 */,
9261 TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, CHILD(35),
9262 BITFIELD(53, 2) /* index 35 */,
9263 TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_PREFETCH,
9264 BITFIELD(26, 1) /* index 40 */,
9265 TILEGX_OPC_LD2S, TILEGX_OPC_LD2U,
9266 BITFIELD(26, 1) /* index 43 */,
9267 CHILD(46), CHILD(56),
9268 BITFIELD(51, 2) /* index 46 */,
9269 TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, CHILD(51),
9270 BITFIELD(53, 2) /* index 51 */,
9271 TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S,
9272 TILEGX_OPC_PREFETCH_L2_FAULT,
9273 BITFIELD(51, 2) /* index 56 */,
9274 TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, CHILD(61),
9275 BITFIELD(53, 2) /* index 61 */,
9276 TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_PREFETCH_L2,
9277 BITFIELD(56, 2) /* index 66 */,
9278 CHILD(71), CHILD(74), CHILD(90), CHILD(93),
9279 BITFIELD(26, 1) /* index 71 */,
9280 TILEGX_OPC_NONE, TILEGX_OPC_LD4S,
9281 BITFIELD(26, 1) /* index 74 */,
9282 TILEGX_OPC_NONE, CHILD(77),
9283 BITFIELD(51, 2) /* index 77 */,
9284 TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, CHILD(82),
9285 BITFIELD(53, 2) /* index 82 */,
9286 TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, CHILD(87),
9287 BITFIELD(55, 1) /* index 87 */,
9288 TILEGX_OPC_LD4S, TILEGX_OPC_PREFETCH_L3_FAULT,
9289 BITFIELD(26, 1) /* index 90 */,
9290 TILEGX_OPC_LD4U, TILEGX_OPC_LD,
9291 BITFIELD(26, 1) /* index 93 */,
9292 CHILD(96), TILEGX_OPC_LD,
9293 BITFIELD(51, 2) /* index 96 */,
9294 TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, CHILD(101),
9295 BITFIELD(53, 2) /* index 101 */,
9296 TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, CHILD(106),
9297 BITFIELD(55, 1) /* index 106 */,
9298 TILEGX_OPC_LD4U, TILEGX_OPC_PREFETCH_L3,
9299 BITFIELD(26, 1) /* index 109 */,
9300 CHILD(112), CHILD(115),
9301 BITFIELD(57, 1) /* index 112 */,
9302 TILEGX_OPC_ST1, TILEGX_OPC_ST4,
9303 BITFIELD(57, 1) /* index 115 */,
9304 TILEGX_OPC_ST2, TILEGX_OPC_ST,
9305 };
9306
9307 #undef BITFIELD
9308 #undef CHILD
9309
9310 const unsigned short * const
9311 tilegx_bundle_decoder_fsms[TILEGX_NUM_PIPELINE_ENCODINGS] =
9312 {
9313 decode_X0_fsm,
9314 decode_X1_fsm,
9315 decode_Y0_fsm,
9316 decode_Y1_fsm,
9317 decode_Y2_fsm
9318 };
9319
9320 const struct tilegx_operand tilegx_operands[35] =
9321 {
9322 {
9323 TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM8_X0),
9324 8, 1, 0, 0, 0, 0,
9325 create_Imm8_X0, get_Imm8_X0
9326 },
9327 {
9328 TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM8_X1),
9329 8, 1, 0, 0, 0, 0,
9330 create_Imm8_X1, get_Imm8_X1
9331 },
9332 {
9333 TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM8_Y0),
9334 8, 1, 0, 0, 0, 0,
9335 create_Imm8_Y0, get_Imm8_Y0
9336 },
9337 {
9338 TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM8_Y1),
9339 8, 1, 0, 0, 0, 0,
9340 create_Imm8_Y1, get_Imm8_Y1
9341 },
9342 {
9343 TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM16_X0_HW0_LAST),
9344 16, 1, 0, 0, 0, 0,
9345 create_Imm16_X0, get_Imm16_X0
9346 },
9347 {
9348 TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM16_X1_HW0_LAST),
9349 16, 1, 0, 0, 0, 0,
9350 create_Imm16_X1, get_Imm16_X1
9351 },
9352 {
9353 TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
9354 6, 0, 0, 1, 0, 0,
9355 create_Dest_X1, get_Dest_X1
9356 },
9357 {
9358 TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
9359 6, 0, 1, 0, 0, 0,
9360 create_SrcA_X1, get_SrcA_X1
9361 },
9362 {
9363 TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
9364 6, 0, 0, 1, 0, 0,
9365 create_Dest_X0, get_Dest_X0
9366 },
9367 {
9368 TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
9369 6, 0, 1, 0, 0, 0,
9370 create_SrcA_X0, get_SrcA_X0
9371 },
9372 {
9373 TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
9374 6, 0, 0, 1, 0, 0,
9375 create_Dest_Y0, get_Dest_Y0
9376 },
9377 {
9378 TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
9379 6, 0, 1, 0, 0, 0,
9380 create_SrcA_Y0, get_SrcA_Y0
9381 },
9382 {
9383 TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
9384 6, 0, 0, 1, 0, 0,
9385 create_Dest_Y1, get_Dest_Y1
9386 },
9387 {
9388 TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
9389 6, 0, 1, 0, 0, 0,
9390 create_SrcA_Y1, get_SrcA_Y1
9391 },
9392 {
9393 TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
9394 6, 0, 1, 0, 0, 0,
9395 create_SrcA_Y2, get_SrcA_Y2
9396 },
9397 {
9398 TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
9399 6, 0, 1, 1, 0, 0,
9400 create_SrcA_X1, get_SrcA_X1
9401 },
9402 {
9403 TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
9404 6, 0, 1, 0, 0, 0,
9405 create_SrcB_X0, get_SrcB_X0
9406 },
9407 {
9408 TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
9409 6, 0, 1, 0, 0, 0,
9410 create_SrcB_X1, get_SrcB_X1
9411 },
9412 {
9413 TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
9414 6, 0, 1, 0, 0, 0,
9415 create_SrcB_Y0, get_SrcB_Y0
9416 },
9417 {
9418 TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
9419 6, 0, 1, 0, 0, 0,
9420 create_SrcB_Y1, get_SrcB_Y1
9421 },
9422 {
9423 TILEGX_OP_TYPE_ADDRESS, BFD_RELOC(TILEGX_BROFF_X1),
9424 17, 1, 0, 0, 1, TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES,
9425 create_BrOff_X1, get_BrOff_X1
9426 },
9427 {
9428 TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_MMSTART_X0),
9429 6, 0, 0, 0, 0, 0,
9430 create_BFStart_X0, get_BFStart_X0
9431 },
9432 {
9433 TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_MMEND_X0),
9434 6, 0, 0, 0, 0, 0,
9435 create_BFEnd_X0, get_BFEnd_X0
9436 },
9437 {
9438 TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
9439 6, 0, 1, 1, 0, 0,
9440 create_Dest_X0, get_Dest_X0
9441 },
9442 {
9443 TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
9444 6, 0, 1, 1, 0, 0,
9445 create_Dest_Y0, get_Dest_Y0
9446 },
9447 {
9448 TILEGX_OP_TYPE_ADDRESS, BFD_RELOC(TILEGX_JUMPOFF_X1),
9449 27, 1, 0, 0, 1, TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES,
9450 create_JumpOff_X1, get_JumpOff_X1
9451 },
9452 {
9453 TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
9454 6, 0, 0, 1, 0, 0,
9455 create_SrcBDest_Y2, get_SrcBDest_Y2
9456 },
9457 {
9458 TILEGX_OP_TYPE_SPR, BFD_RELOC(TILEGX_MF_IMM14_X1),
9459 14, 0, 0, 0, 0, 0,
9460 create_MF_Imm14_X1, get_MF_Imm14_X1
9461 },
9462 {
9463 TILEGX_OP_TYPE_SPR, BFD_RELOC(TILEGX_MT_IMM14_X1),
9464 14, 0, 0, 0, 0, 0,
9465 create_MT_Imm14_X1, get_MT_Imm14_X1
9466 },
9467 {
9468 TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_SHAMT_X0),
9469 6, 0, 0, 0, 0, 0,
9470 create_ShAmt_X0, get_ShAmt_X0
9471 },
9472 {
9473 TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_SHAMT_X1),
9474 6, 0, 0, 0, 0, 0,
9475 create_ShAmt_X1, get_ShAmt_X1
9476 },
9477 {
9478 TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_SHAMT_Y0),
9479 6, 0, 0, 0, 0, 0,
9480 create_ShAmt_Y0, get_ShAmt_Y0
9481 },
9482 {
9483 TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_SHAMT_Y1),
9484 6, 0, 0, 0, 0, 0,
9485 create_ShAmt_Y1, get_ShAmt_Y1
9486 },
9487 {
9488 TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE),
9489 6, 0, 1, 0, 0, 0,
9490 create_SrcBDest_Y2, get_SrcBDest_Y2
9491 },
9492 {
9493 TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_DEST_IMM8_X1),
9494 8, 1, 0, 0, 0, 0,
9495 create_Dest_Imm8_X1, get_Dest_Imm8_X1
9496 }
9497 };
9498
9499 /* Given a set of bundle bits and a specific pipe, returns which
9500 * instruction the bundle contains in that pipe.
9501 */
9502 const struct tilegx_opcode *
find_opcode(tilegx_bundle_bits bits,tilegx_pipeline pipe)9503 find_opcode(tilegx_bundle_bits bits, tilegx_pipeline pipe)
9504 {
9505 const unsigned short *table = tilegx_bundle_decoder_fsms[pipe];
9506 int index = 0;
9507
9508 while (1)
9509 {
9510 unsigned short bitspec = table[index];
9511 unsigned int bitfield =
9512 ((unsigned int)(bits >> (bitspec & 63))) & (bitspec >> 6);
9513
9514 unsigned short next = table[index + 1 + bitfield];
9515 if (next <= TILEGX_OPC_NONE)
9516 return &tilegx_opcodes[next];
9517
9518 index = next - TILEGX_OPC_NONE;
9519 }
9520 }
9521
9522 int
parse_insn_tilegx(tilegx_bundle_bits bits,unsigned long long pc,struct tilegx_decoded_instruction decoded[TILEGX_MAX_INSTRUCTIONS_PER_BUNDLE])9523 parse_insn_tilegx(tilegx_bundle_bits bits,
9524 unsigned long long pc,
9525 struct tilegx_decoded_instruction
9526 decoded[TILEGX_MAX_INSTRUCTIONS_PER_BUNDLE])
9527 {
9528 int num_instructions = 0;
9529 int pipe;
9530
9531 int min_pipe, max_pipe;
9532 if ((bits & TILEGX_BUNDLE_MODE_MASK) == 0)
9533 {
9534 min_pipe = TILEGX_PIPELINE_X0;
9535 max_pipe = TILEGX_PIPELINE_X1;
9536 }
9537 else
9538 {
9539 min_pipe = TILEGX_PIPELINE_Y0;
9540 max_pipe = TILEGX_PIPELINE_Y2;
9541 }
9542
9543 /* For each pipe, find an instruction that fits. */
9544 for (pipe = min_pipe; pipe <= max_pipe; pipe++)
9545 {
9546 const struct tilegx_opcode *opc;
9547 struct tilegx_decoded_instruction *d;
9548 int i;
9549
9550 d = &decoded[num_instructions++];
9551 opc = find_opcode (bits, (tilegx_pipeline)pipe);
9552 d->opcode = opc;
9553
9554 /* Decode each operand, sign extending, etc. as appropriate. */
9555 for (i = 0; i < opc->num_operands; i++)
9556 {
9557 const struct tilegx_operand *op =
9558 &tilegx_operands[opc->operands[pipe][i]];
9559 int raw_opval = op->extract (bits);
9560 long long opval;
9561
9562 if (op->is_signed)
9563 {
9564 /* Sign-extend the operand. */
9565 int shift = (int)((sizeof(int) * 8) - op->num_bits);
9566 raw_opval = (raw_opval << shift) >> shift;
9567 }
9568
9569 /* Adjust PC-relative scaled branch offsets. */
9570 if (op->type == TILEGX_OP_TYPE_ADDRESS)
9571 opval = (raw_opval * TILEGX_BUNDLE_SIZE_IN_BYTES) + pc;
9572 else
9573 opval = raw_opval;
9574
9575 /* Record the final value. */
9576 d->operands[i] = op;
9577 d->operand_values[i] = opval;
9578 }
9579 }
9580
9581 return num_instructions;
9582 }
9583
9584 struct tilegx_spr
9585 {
9586 /* The number */
9587 int number;
9588
9589 /* The name */
9590 const char *name;
9591 };
9592
9593 static int
tilegx_spr_compare(const void * a_ptr,const void * b_ptr)9594 tilegx_spr_compare (const void *a_ptr, const void *b_ptr)
9595 {
9596 const struct tilegx_spr *a = (const struct tilegx_spr *) a_ptr;
9597 const struct tilegx_spr *b = (const struct tilegx_spr *) b_ptr;
9598 return (a->number - b->number);
9599 }
9600
9601 const struct tilegx_spr tilegx_sprs[] = {
9602 { 0, "MPL_MEM_ERROR_SET_0" },
9603 { 1, "MPL_MEM_ERROR_SET_1" },
9604 { 2, "MPL_MEM_ERROR_SET_2" },
9605 { 3, "MPL_MEM_ERROR_SET_3" },
9606 { 4, "MPL_MEM_ERROR" },
9607 { 5, "MEM_ERROR_CBOX_ADDR" },
9608 { 6, "MEM_ERROR_CBOX_STATUS" },
9609 { 7, "MEM_ERROR_ENABLE" },
9610 { 8, "MEM_ERROR_MBOX_ADDR" },
9611 { 9, "MEM_ERROR_MBOX_STATUS" },
9612 { 10, "SBOX_ERROR" },
9613 { 11, "XDN_DEMUX_ERROR" },
9614 { 256, "MPL_SINGLE_STEP_3_SET_0" },
9615 { 257, "MPL_SINGLE_STEP_3_SET_1" },
9616 { 258, "MPL_SINGLE_STEP_3_SET_2" },
9617 { 259, "MPL_SINGLE_STEP_3_SET_3" },
9618 { 260, "MPL_SINGLE_STEP_3" },
9619 { 261, "SINGLE_STEP_CONTROL_3" },
9620 { 512, "MPL_SINGLE_STEP_2_SET_0" },
9621 { 513, "MPL_SINGLE_STEP_2_SET_1" },
9622 { 514, "MPL_SINGLE_STEP_2_SET_2" },
9623 { 515, "MPL_SINGLE_STEP_2_SET_3" },
9624 { 516, "MPL_SINGLE_STEP_2" },
9625 { 517, "SINGLE_STEP_CONTROL_2" },
9626 { 768, "MPL_SINGLE_STEP_1_SET_0" },
9627 { 769, "MPL_SINGLE_STEP_1_SET_1" },
9628 { 770, "MPL_SINGLE_STEP_1_SET_2" },
9629 { 771, "MPL_SINGLE_STEP_1_SET_3" },
9630 { 772, "MPL_SINGLE_STEP_1" },
9631 { 773, "SINGLE_STEP_CONTROL_1" },
9632 { 1024, "MPL_SINGLE_STEP_0_SET_0" },
9633 { 1025, "MPL_SINGLE_STEP_0_SET_1" },
9634 { 1026, "MPL_SINGLE_STEP_0_SET_2" },
9635 { 1027, "MPL_SINGLE_STEP_0_SET_3" },
9636 { 1028, "MPL_SINGLE_STEP_0" },
9637 { 1029, "SINGLE_STEP_CONTROL_0" },
9638 { 1280, "MPL_IDN_COMPLETE_SET_0" },
9639 { 1281, "MPL_IDN_COMPLETE_SET_1" },
9640 { 1282, "MPL_IDN_COMPLETE_SET_2" },
9641 { 1283, "MPL_IDN_COMPLETE_SET_3" },
9642 { 1284, "MPL_IDN_COMPLETE" },
9643 { 1285, "IDN_COMPLETE_PENDING" },
9644 { 1536, "MPL_UDN_COMPLETE_SET_0" },
9645 { 1537, "MPL_UDN_COMPLETE_SET_1" },
9646 { 1538, "MPL_UDN_COMPLETE_SET_2" },
9647 { 1539, "MPL_UDN_COMPLETE_SET_3" },
9648 { 1540, "MPL_UDN_COMPLETE" },
9649 { 1541, "UDN_COMPLETE_PENDING" },
9650 { 1792, "MPL_ITLB_MISS_SET_0" },
9651 { 1793, "MPL_ITLB_MISS_SET_1" },
9652 { 1794, "MPL_ITLB_MISS_SET_2" },
9653 { 1795, "MPL_ITLB_MISS_SET_3" },
9654 { 1796, "MPL_ITLB_MISS" },
9655 { 1797, "ITLB_TSB_BASE_ADDR_0" },
9656 { 1798, "ITLB_TSB_BASE_ADDR_1" },
9657 { 1920, "ITLB_CURRENT_ATTR" },
9658 { 1921, "ITLB_CURRENT_PA" },
9659 { 1922, "ITLB_CURRENT_VA" },
9660 { 1923, "ITLB_INDEX" },
9661 { 1924, "ITLB_MATCH_0" },
9662 { 1925, "ITLB_PERF" },
9663 { 1926, "ITLB_PR" },
9664 { 1927, "ITLB_TSB_ADDR_0" },
9665 { 1928, "ITLB_TSB_ADDR_1" },
9666 { 1929, "ITLB_TSB_FILL_CURRENT_ATTR" },
9667 { 1930, "ITLB_TSB_FILL_MATCH" },
9668 { 1931, "NUMBER_ITLB" },
9669 { 1932, "REPLACEMENT_ITLB" },
9670 { 1933, "WIRED_ITLB" },
9671 { 2048, "MPL_ILL_SET_0" },
9672 { 2049, "MPL_ILL_SET_1" },
9673 { 2050, "MPL_ILL_SET_2" },
9674 { 2051, "MPL_ILL_SET_3" },
9675 { 2052, "MPL_ILL" },
9676 { 2304, "MPL_GPV_SET_0" },
9677 { 2305, "MPL_GPV_SET_1" },
9678 { 2306, "MPL_GPV_SET_2" },
9679 { 2307, "MPL_GPV_SET_3" },
9680 { 2308, "MPL_GPV" },
9681 { 2309, "GPV_REASON" },
9682 { 2560, "MPL_IDN_ACCESS_SET_0" },
9683 { 2561, "MPL_IDN_ACCESS_SET_1" },
9684 { 2562, "MPL_IDN_ACCESS_SET_2" },
9685 { 2563, "MPL_IDN_ACCESS_SET_3" },
9686 { 2564, "MPL_IDN_ACCESS" },
9687 { 2565, "IDN_DEMUX_COUNT_0" },
9688 { 2566, "IDN_DEMUX_COUNT_1" },
9689 { 2567, "IDN_FLUSH_EGRESS" },
9690 { 2568, "IDN_PENDING" },
9691 { 2569, "IDN_ROUTE_ORDER" },
9692 { 2570, "IDN_SP_FIFO_CNT" },
9693 { 2688, "IDN_DATA_AVAIL" },
9694 { 2816, "MPL_UDN_ACCESS_SET_0" },
9695 { 2817, "MPL_UDN_ACCESS_SET_1" },
9696 { 2818, "MPL_UDN_ACCESS_SET_2" },
9697 { 2819, "MPL_UDN_ACCESS_SET_3" },
9698 { 2820, "MPL_UDN_ACCESS" },
9699 { 2821, "UDN_DEMUX_COUNT_0" },
9700 { 2822, "UDN_DEMUX_COUNT_1" },
9701 { 2823, "UDN_DEMUX_COUNT_2" },
9702 { 2824, "UDN_DEMUX_COUNT_3" },
9703 { 2825, "UDN_FLUSH_EGRESS" },
9704 { 2826, "UDN_PENDING" },
9705 { 2827, "UDN_ROUTE_ORDER" },
9706 { 2828, "UDN_SP_FIFO_CNT" },
9707 { 2944, "UDN_DATA_AVAIL" },
9708 { 3072, "MPL_SWINT_3_SET_0" },
9709 { 3073, "MPL_SWINT_3_SET_1" },
9710 { 3074, "MPL_SWINT_3_SET_2" },
9711 { 3075, "MPL_SWINT_3_SET_3" },
9712 { 3076, "MPL_SWINT_3" },
9713 { 3328, "MPL_SWINT_2_SET_0" },
9714 { 3329, "MPL_SWINT_2_SET_1" },
9715 { 3330, "MPL_SWINT_2_SET_2" },
9716 { 3331, "MPL_SWINT_2_SET_3" },
9717 { 3332, "MPL_SWINT_2" },
9718 { 3584, "MPL_SWINT_1_SET_0" },
9719 { 3585, "MPL_SWINT_1_SET_1" },
9720 { 3586, "MPL_SWINT_1_SET_2" },
9721 { 3587, "MPL_SWINT_1_SET_3" },
9722 { 3588, "MPL_SWINT_1" },
9723 { 3840, "MPL_SWINT_0_SET_0" },
9724 { 3841, "MPL_SWINT_0_SET_1" },
9725 { 3842, "MPL_SWINT_0_SET_2" },
9726 { 3843, "MPL_SWINT_0_SET_3" },
9727 { 3844, "MPL_SWINT_0" },
9728 { 4096, "MPL_ILL_TRANS_SET_0" },
9729 { 4097, "MPL_ILL_TRANS_SET_1" },
9730 { 4098, "MPL_ILL_TRANS_SET_2" },
9731 { 4099, "MPL_ILL_TRANS_SET_3" },
9732 { 4100, "MPL_ILL_TRANS" },
9733 { 4101, "ILL_TRANS_REASON" },
9734 { 4102, "ILL_VA_PC" },
9735 { 4352, "MPL_UNALIGN_DATA_SET_0" },
9736 { 4353, "MPL_UNALIGN_DATA_SET_1" },
9737 { 4354, "MPL_UNALIGN_DATA_SET_2" },
9738 { 4355, "MPL_UNALIGN_DATA_SET_3" },
9739 { 4356, "MPL_UNALIGN_DATA" },
9740 { 4608, "MPL_DTLB_MISS_SET_0" },
9741 { 4609, "MPL_DTLB_MISS_SET_1" },
9742 { 4610, "MPL_DTLB_MISS_SET_2" },
9743 { 4611, "MPL_DTLB_MISS_SET_3" },
9744 { 4612, "MPL_DTLB_MISS" },
9745 { 4613, "DTLB_TSB_BASE_ADDR_0" },
9746 { 4614, "DTLB_TSB_BASE_ADDR_1" },
9747 { 4736, "AAR" },
9748 { 4737, "CACHE_PINNED_WAYS" },
9749 { 4738, "DTLB_BAD_ADDR" },
9750 { 4739, "DTLB_BAD_ADDR_REASON" },
9751 { 4740, "DTLB_CURRENT_ATTR" },
9752 { 4741, "DTLB_CURRENT_PA" },
9753 { 4742, "DTLB_CURRENT_VA" },
9754 { 4743, "DTLB_INDEX" },
9755 { 4744, "DTLB_MATCH_0" },
9756 { 4745, "DTLB_PERF" },
9757 { 4746, "DTLB_TSB_ADDR_0" },
9758 { 4747, "DTLB_TSB_ADDR_1" },
9759 { 4748, "DTLB_TSB_FILL_CURRENT_ATTR" },
9760 { 4749, "DTLB_TSB_FILL_MATCH" },
9761 { 4750, "NUMBER_DTLB" },
9762 { 4751, "REPLACEMENT_DTLB" },
9763 { 4752, "WIRED_DTLB" },
9764 { 4864, "MPL_DTLB_ACCESS_SET_0" },
9765 { 4865, "MPL_DTLB_ACCESS_SET_1" },
9766 { 4866, "MPL_DTLB_ACCESS_SET_2" },
9767 { 4867, "MPL_DTLB_ACCESS_SET_3" },
9768 { 4868, "MPL_DTLB_ACCESS" },
9769 { 5120, "MPL_IDN_FIREWALL_SET_0" },
9770 { 5121, "MPL_IDN_FIREWALL_SET_1" },
9771 { 5122, "MPL_IDN_FIREWALL_SET_2" },
9772 { 5123, "MPL_IDN_FIREWALL_SET_3" },
9773 { 5124, "MPL_IDN_FIREWALL" },
9774 { 5125, "IDN_DIRECTION_PROTECT" },
9775 { 5376, "MPL_UDN_FIREWALL_SET_0" },
9776 { 5377, "MPL_UDN_FIREWALL_SET_1" },
9777 { 5378, "MPL_UDN_FIREWALL_SET_2" },
9778 { 5379, "MPL_UDN_FIREWALL_SET_3" },
9779 { 5380, "MPL_UDN_FIREWALL" },
9780 { 5381, "UDN_DIRECTION_PROTECT" },
9781 { 5632, "MPL_TILE_TIMER_SET_0" },
9782 { 5633, "MPL_TILE_TIMER_SET_1" },
9783 { 5634, "MPL_TILE_TIMER_SET_2" },
9784 { 5635, "MPL_TILE_TIMER_SET_3" },
9785 { 5636, "MPL_TILE_TIMER" },
9786 { 5637, "TILE_TIMER_CONTROL" },
9787 { 5888, "MPL_AUX_TILE_TIMER_SET_0" },
9788 { 5889, "MPL_AUX_TILE_TIMER_SET_1" },
9789 { 5890, "MPL_AUX_TILE_TIMER_SET_2" },
9790 { 5891, "MPL_AUX_TILE_TIMER_SET_3" },
9791 { 5892, "MPL_AUX_TILE_TIMER" },
9792 { 5893, "AUX_TILE_TIMER_CONTROL" },
9793 { 6144, "MPL_IDN_TIMER_SET_0" },
9794 { 6145, "MPL_IDN_TIMER_SET_1" },
9795 { 6146, "MPL_IDN_TIMER_SET_2" },
9796 { 6147, "MPL_IDN_TIMER_SET_3" },
9797 { 6148, "MPL_IDN_TIMER" },
9798 { 6149, "IDN_DEADLOCK_COUNT" },
9799 { 6150, "IDN_DEADLOCK_TIMEOUT" },
9800 { 6400, "MPL_UDN_TIMER_SET_0" },
9801 { 6401, "MPL_UDN_TIMER_SET_1" },
9802 { 6402, "MPL_UDN_TIMER_SET_2" },
9803 { 6403, "MPL_UDN_TIMER_SET_3" },
9804 { 6404, "MPL_UDN_TIMER" },
9805 { 6405, "UDN_DEADLOCK_COUNT" },
9806 { 6406, "UDN_DEADLOCK_TIMEOUT" },
9807 { 6656, "MPL_IDN_AVAIL_SET_0" },
9808 { 6657, "MPL_IDN_AVAIL_SET_1" },
9809 { 6658, "MPL_IDN_AVAIL_SET_2" },
9810 { 6659, "MPL_IDN_AVAIL_SET_3" },
9811 { 6660, "MPL_IDN_AVAIL" },
9812 { 6661, "IDN_AVAIL_EN" },
9813 { 6912, "MPL_UDN_AVAIL_SET_0" },
9814 { 6913, "MPL_UDN_AVAIL_SET_1" },
9815 { 6914, "MPL_UDN_AVAIL_SET_2" },
9816 { 6915, "MPL_UDN_AVAIL_SET_3" },
9817 { 6916, "MPL_UDN_AVAIL" },
9818 { 6917, "UDN_AVAIL_EN" },
9819 { 7168, "MPL_IPI_3_SET_0" },
9820 { 7169, "MPL_IPI_3_SET_1" },
9821 { 7170, "MPL_IPI_3_SET_2" },
9822 { 7171, "MPL_IPI_3_SET_3" },
9823 { 7172, "MPL_IPI_3" },
9824 { 7173, "IPI_EVENT_3" },
9825 { 7174, "IPI_EVENT_RESET_3" },
9826 { 7175, "IPI_EVENT_SET_3" },
9827 { 7176, "IPI_MASK_3" },
9828 { 7177, "IPI_MASK_RESET_3" },
9829 { 7178, "IPI_MASK_SET_3" },
9830 { 7424, "MPL_IPI_2_SET_0" },
9831 { 7425, "MPL_IPI_2_SET_1" },
9832 { 7426, "MPL_IPI_2_SET_2" },
9833 { 7427, "MPL_IPI_2_SET_3" },
9834 { 7428, "MPL_IPI_2" },
9835 { 7429, "IPI_EVENT_2" },
9836 { 7430, "IPI_EVENT_RESET_2" },
9837 { 7431, "IPI_EVENT_SET_2" },
9838 { 7432, "IPI_MASK_2" },
9839 { 7433, "IPI_MASK_RESET_2" },
9840 { 7434, "IPI_MASK_SET_2" },
9841 { 7680, "MPL_IPI_1_SET_0" },
9842 { 7681, "MPL_IPI_1_SET_1" },
9843 { 7682, "MPL_IPI_1_SET_2" },
9844 { 7683, "MPL_IPI_1_SET_3" },
9845 { 7684, "MPL_IPI_1" },
9846 { 7685, "IPI_EVENT_1" },
9847 { 7686, "IPI_EVENT_RESET_1" },
9848 { 7687, "IPI_EVENT_SET_1" },
9849 { 7688, "IPI_MASK_1" },
9850 { 7689, "IPI_MASK_RESET_1" },
9851 { 7690, "IPI_MASK_SET_1" },
9852 { 7936, "MPL_IPI_0_SET_0" },
9853 { 7937, "MPL_IPI_0_SET_1" },
9854 { 7938, "MPL_IPI_0_SET_2" },
9855 { 7939, "MPL_IPI_0_SET_3" },
9856 { 7940, "MPL_IPI_0" },
9857 { 7941, "IPI_EVENT_0" },
9858 { 7942, "IPI_EVENT_RESET_0" },
9859 { 7943, "IPI_EVENT_SET_0" },
9860 { 7944, "IPI_MASK_0" },
9861 { 7945, "IPI_MASK_RESET_0" },
9862 { 7946, "IPI_MASK_SET_0" },
9863 { 8192, "MPL_PERF_COUNT_SET_0" },
9864 { 8193, "MPL_PERF_COUNT_SET_1" },
9865 { 8194, "MPL_PERF_COUNT_SET_2" },
9866 { 8195, "MPL_PERF_COUNT_SET_3" },
9867 { 8196, "MPL_PERF_COUNT" },
9868 { 8197, "PERF_COUNT_0" },
9869 { 8198, "PERF_COUNT_1" },
9870 { 8199, "PERF_COUNT_CTL" },
9871 { 8200, "PERF_COUNT_DN_CTL" },
9872 { 8201, "PERF_COUNT_STS" },
9873 { 8202, "WATCH_MASK" },
9874 { 8203, "WATCH_VAL" },
9875 { 8448, "MPL_AUX_PERF_COUNT_SET_0" },
9876 { 8449, "MPL_AUX_PERF_COUNT_SET_1" },
9877 { 8450, "MPL_AUX_PERF_COUNT_SET_2" },
9878 { 8451, "MPL_AUX_PERF_COUNT_SET_3" },
9879 { 8452, "MPL_AUX_PERF_COUNT" },
9880 { 8453, "AUX_PERF_COUNT_0" },
9881 { 8454, "AUX_PERF_COUNT_1" },
9882 { 8455, "AUX_PERF_COUNT_CTL" },
9883 { 8456, "AUX_PERF_COUNT_STS" },
9884 { 8704, "MPL_INTCTRL_3_SET_0" },
9885 { 8705, "MPL_INTCTRL_3_SET_1" },
9886 { 8706, "MPL_INTCTRL_3_SET_2" },
9887 { 8707, "MPL_INTCTRL_3_SET_3" },
9888 { 8708, "MPL_INTCTRL_3" },
9889 { 8709, "INTCTRL_3_STATUS" },
9890 { 8710, "INTERRUPT_MASK_3" },
9891 { 8711, "INTERRUPT_MASK_RESET_3" },
9892 { 8712, "INTERRUPT_MASK_SET_3" },
9893 { 8713, "INTERRUPT_VECTOR_BASE_3" },
9894 { 8714, "SINGLE_STEP_EN_0_3" },
9895 { 8715, "SINGLE_STEP_EN_1_3" },
9896 { 8716, "SINGLE_STEP_EN_2_3" },
9897 { 8717, "SINGLE_STEP_EN_3_3" },
9898 { 8832, "EX_CONTEXT_3_0" },
9899 { 8833, "EX_CONTEXT_3_1" },
9900 { 8834, "SYSTEM_SAVE_3_0" },
9901 { 8835, "SYSTEM_SAVE_3_1" },
9902 { 8836, "SYSTEM_SAVE_3_2" },
9903 { 8837, "SYSTEM_SAVE_3_3" },
9904 { 8960, "MPL_INTCTRL_2_SET_0" },
9905 { 8961, "MPL_INTCTRL_2_SET_1" },
9906 { 8962, "MPL_INTCTRL_2_SET_2" },
9907 { 8963, "MPL_INTCTRL_2_SET_3" },
9908 { 8964, "MPL_INTCTRL_2" },
9909 { 8965, "INTCTRL_2_STATUS" },
9910 { 8966, "INTERRUPT_MASK_2" },
9911 { 8967, "INTERRUPT_MASK_RESET_2" },
9912 { 8968, "INTERRUPT_MASK_SET_2" },
9913 { 8969, "INTERRUPT_VECTOR_BASE_2" },
9914 { 8970, "SINGLE_STEP_EN_0_2" },
9915 { 8971, "SINGLE_STEP_EN_1_2" },
9916 { 8972, "SINGLE_STEP_EN_2_2" },
9917 { 8973, "SINGLE_STEP_EN_3_2" },
9918 { 9088, "EX_CONTEXT_2_0" },
9919 { 9089, "EX_CONTEXT_2_1" },
9920 { 9090, "SYSTEM_SAVE_2_0" },
9921 { 9091, "SYSTEM_SAVE_2_1" },
9922 { 9092, "SYSTEM_SAVE_2_2" },
9923 { 9093, "SYSTEM_SAVE_2_3" },
9924 { 9216, "MPL_INTCTRL_1_SET_0" },
9925 { 9217, "MPL_INTCTRL_1_SET_1" },
9926 { 9218, "MPL_INTCTRL_1_SET_2" },
9927 { 9219, "MPL_INTCTRL_1_SET_3" },
9928 { 9220, "MPL_INTCTRL_1" },
9929 { 9221, "INTCTRL_1_STATUS" },
9930 { 9222, "INTERRUPT_MASK_1" },
9931 { 9223, "INTERRUPT_MASK_RESET_1" },
9932 { 9224, "INTERRUPT_MASK_SET_1" },
9933 { 9225, "INTERRUPT_VECTOR_BASE_1" },
9934 { 9226, "SINGLE_STEP_EN_0_1" },
9935 { 9227, "SINGLE_STEP_EN_1_1" },
9936 { 9228, "SINGLE_STEP_EN_2_1" },
9937 { 9229, "SINGLE_STEP_EN_3_1" },
9938 { 9344, "EX_CONTEXT_1_0" },
9939 { 9345, "EX_CONTEXT_1_1" },
9940 { 9346, "SYSTEM_SAVE_1_0" },
9941 { 9347, "SYSTEM_SAVE_1_1" },
9942 { 9348, "SYSTEM_SAVE_1_2" },
9943 { 9349, "SYSTEM_SAVE_1_3" },
9944 { 9472, "MPL_INTCTRL_0_SET_0" },
9945 { 9473, "MPL_INTCTRL_0_SET_1" },
9946 { 9474, "MPL_INTCTRL_0_SET_2" },
9947 { 9475, "MPL_INTCTRL_0_SET_3" },
9948 { 9476, "MPL_INTCTRL_0" },
9949 { 9477, "INTCTRL_0_STATUS" },
9950 { 9478, "INTERRUPT_MASK_0" },
9951 { 9479, "INTERRUPT_MASK_RESET_0" },
9952 { 9480, "INTERRUPT_MASK_SET_0" },
9953 { 9481, "INTERRUPT_VECTOR_BASE_0" },
9954 { 9482, "SINGLE_STEP_EN_0_0" },
9955 { 9483, "SINGLE_STEP_EN_1_0" },
9956 { 9484, "SINGLE_STEP_EN_2_0" },
9957 { 9485, "SINGLE_STEP_EN_3_0" },
9958 { 9600, "EX_CONTEXT_0_0" },
9959 { 9601, "EX_CONTEXT_0_1" },
9960 { 9602, "SYSTEM_SAVE_0_0" },
9961 { 9603, "SYSTEM_SAVE_0_1" },
9962 { 9604, "SYSTEM_SAVE_0_2" },
9963 { 9605, "SYSTEM_SAVE_0_3" },
9964 { 9728, "MPL_BOOT_ACCESS_SET_0" },
9965 { 9729, "MPL_BOOT_ACCESS_SET_1" },
9966 { 9730, "MPL_BOOT_ACCESS_SET_2" },
9967 { 9731, "MPL_BOOT_ACCESS_SET_3" },
9968 { 9732, "MPL_BOOT_ACCESS" },
9969 { 9733, "BIG_ENDIAN_CONFIG" },
9970 { 9734, "CACHE_INVALIDATION_COMPRESSION_MODE" },
9971 { 9735, "CACHE_INVALIDATION_MASK_0" },
9972 { 9736, "CACHE_INVALIDATION_MASK_1" },
9973 { 9737, "CACHE_INVALIDATION_MASK_2" },
9974 { 9738, "CBOX_CACHEASRAM_CONFIG" },
9975 { 9739, "CBOX_CACHE_CONFIG" },
9976 { 9740, "CBOX_HOME_MAP_ADDR" },
9977 { 9741, "CBOX_HOME_MAP_DATA" },
9978 { 9742, "CBOX_MMAP_0" },
9979 { 9743, "CBOX_MMAP_1" },
9980 { 9744, "CBOX_MMAP_2" },
9981 { 9745, "CBOX_MMAP_3" },
9982 { 9746, "CBOX_MSR" },
9983 { 9747, "DIAG_BCST_CTL" },
9984 { 9748, "DIAG_BCST_MASK" },
9985 { 9749, "DIAG_BCST_TRIGGER" },
9986 { 9750, "DIAG_MUX_CTL" },
9987 { 9751, "DIAG_TRACE_CTL" },
9988 { 9752, "DIAG_TRACE_DATA" },
9989 { 9753, "DIAG_TRACE_STS" },
9990 { 9754, "IDN_DEMUX_BUF_THRESH" },
9991 { 9755, "L1_I_PIN_WAY_0" },
9992 { 9756, "MEM_ROUTE_ORDER" },
9993 { 9757, "MEM_STRIPE_CONFIG" },
9994 { 9758, "PERF_COUNT_PLS" },
9995 { 9759, "PSEUDO_RANDOM_NUMBER_MODIFY" },
9996 { 9760, "QUIESCE_CTL" },
9997 { 9761, "RSHIM_COORD" },
9998 { 9762, "SBOX_CONFIG" },
9999 { 9763, "UDN_DEMUX_BUF_THRESH" },
10000 { 9764, "XDN_CORE_STARVATION_COUNT" },
10001 { 9765, "XDN_ROUND_ROBIN_ARB_CTL" },
10002 { 9856, "CYCLE_MODIFY" },
10003 { 9857, "I_AAR" },
10004 { 9984, "MPL_WORLD_ACCESS_SET_0" },
10005 { 9985, "MPL_WORLD_ACCESS_SET_1" },
10006 { 9986, "MPL_WORLD_ACCESS_SET_2" },
10007 { 9987, "MPL_WORLD_ACCESS_SET_3" },
10008 { 9988, "MPL_WORLD_ACCESS" },
10009 { 9989, "DONE" },
10010 { 9990, "DSTREAM_PF" },
10011 { 9991, "FAIL" },
10012 { 9992, "INTERRUPT_CRITICAL_SECTION" },
10013 { 9993, "PASS" },
10014 { 9994, "PSEUDO_RANDOM_NUMBER" },
10015 { 9995, "TILE_COORD" },
10016 { 9996, "TILE_RTF_HWM" },
10017 { 10112, "CMPEXCH_VALUE" },
10018 { 10113, "CYCLE" },
10019 { 10114, "EVENT_BEGIN" },
10020 { 10115, "EVENT_END" },
10021 { 10116, "PROC_STATUS" },
10022 { 10117, "SIM_CONTROL" },
10023 { 10118, "SIM_SOCKET" },
10024 { 10119, "STATUS_SATURATE" },
10025 { 10240, "MPL_I_ASID_SET_0" },
10026 { 10241, "MPL_I_ASID_SET_1" },
10027 { 10242, "MPL_I_ASID_SET_2" },
10028 { 10243, "MPL_I_ASID_SET_3" },
10029 { 10244, "MPL_I_ASID" },
10030 { 10245, "I_ASID" },
10031 { 10496, "MPL_D_ASID_SET_0" },
10032 { 10497, "MPL_D_ASID_SET_1" },
10033 { 10498, "MPL_D_ASID_SET_2" },
10034 { 10499, "MPL_D_ASID_SET_3" },
10035 { 10500, "MPL_D_ASID" },
10036 { 10501, "D_ASID" },
10037 { 10752, "MPL_DOUBLE_FAULT_SET_0" },
10038 { 10753, "MPL_DOUBLE_FAULT_SET_1" },
10039 { 10754, "MPL_DOUBLE_FAULT_SET_2" },
10040 { 10755, "MPL_DOUBLE_FAULT_SET_3" },
10041 { 10756, "MPL_DOUBLE_FAULT" },
10042 { 10757, "LAST_INTERRUPT_REASON" },
10043 };
10044
10045 const int tilegx_num_sprs = 441;
10046
10047 const char *
get_tilegx_spr_name(int num)10048 get_tilegx_spr_name (int num)
10049 {
10050 void *result;
10051 struct tilegx_spr key;
10052
10053 key.number = num;
10054 result = bsearch((const void *) &key, (const void *) tilegx_sprs,
10055 tilegx_num_sprs, sizeof (struct tilegx_spr),
10056 tilegx_spr_compare);
10057
10058 if (result == NULL)
10059 {
10060 return (NULL);
10061 }
10062 else
10063 {
10064 struct tilegx_spr *result_ptr = (struct tilegx_spr *) result;
10065 return (result_ptr->name);
10066 }
10067 }
10068
10069 int
print_insn_tilegx(unsigned char * memaddr)10070 print_insn_tilegx (unsigned char * memaddr)
10071 {
10072 struct tilegx_decoded_instruction
10073 decoded[TILEGX_MAX_INSTRUCTIONS_PER_BUNDLE];
10074 unsigned char opbuf[TILEGX_BUNDLE_SIZE_IN_BYTES];
10075 int i, num_instructions, num_printed;
10076 tilegx_mnemonic padding_mnemonic;
10077
10078 memcpy((void *)opbuf, (void *)memaddr, TILEGX_BUNDLE_SIZE_IN_BYTES);
10079
10080 /* Parse the instructions in the bundle. */
10081 num_instructions =
10082 parse_insn_tilegx (*(unsigned long long *)opbuf, (unsigned long long)memaddr, decoded);
10083
10084 /* Print the instructions in the bundle. */
10085 printf("{ ");
10086 num_printed = 0;
10087
10088 /* Determine which nop opcode is used for padding and should be skipped. */
10089 padding_mnemonic = TILEGX_OPC_FNOP;
10090 for (i = 0; i < num_instructions; i++)
10091 {
10092 if (!decoded[i].opcode->can_bundle)
10093 {
10094 /* Instructions that cannot be bundled are padded out with nops,
10095 rather than fnops. Displaying them is always clutter. */
10096 padding_mnemonic = TILEGX_OPC_NOP;
10097 break;
10098 }
10099 }
10100
10101 for (i = 0; i < num_instructions; i++)
10102 {
10103 const struct tilegx_opcode *opcode = decoded[i].opcode;
10104 const char *name;
10105 int j;
10106
10107 /* Do not print out fnops, unless everything is an fnop, in
10108 which case we will print out just the last one. */
10109 if (opcode->mnemonic == padding_mnemonic
10110 && (num_printed > 0 || i + 1 < num_instructions))
10111 continue;
10112
10113 if (num_printed > 0)
10114 printf(" ; ");
10115 ++num_printed;
10116
10117 name = opcode->name;
10118 if (name == NULL)
10119 name = "<invalid>";
10120 printf("%s", name);
10121
10122 for (j = 0; j < opcode->num_operands; j++)
10123 {
10124 unsigned long long num;
10125 const struct tilegx_operand *op;
10126 const char *spr_name;
10127
10128 if (j > 0)
10129 printf (",");
10130 printf (" ");
10131
10132 num = decoded[i].operand_values[j];
10133
10134 op = decoded[i].operands[j];
10135 switch (op->type)
10136 {
10137 case TILEGX_OP_TYPE_REGISTER:
10138 printf ("%s", tilegx_register_names[(int)num]);
10139 break;
10140 case TILEGX_OP_TYPE_SPR:
10141 spr_name = get_tilegx_spr_name(num);
10142 if (spr_name != NULL)
10143 printf ("%s", spr_name);
10144 else
10145 printf ("%d", (int)num);
10146 break;
10147 case TILEGX_OP_TYPE_IMMEDIATE:
10148 printf ("%d", (int)num);
10149 break;
10150 case TILEGX_OP_TYPE_ADDRESS:
10151 printf ("0x%016llx", num);
10152 break;
10153 default:
10154 abort ();
10155 }
10156 }
10157 }
10158 printf (" }\n");
10159
10160 return TILEGX_BUNDLE_SIZE_IN_BYTES;
10161 }
10162