Linux Audio

Check our new training course

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