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