/* TILEPro opcode information.
 *
 * Copyright 2011 Tilera Corporation. All Rights Reserved.
 *
 *   This program is free software; you can redistribute it and/or
 *   modify it under the terms of the GNU General Public License
 *   as published by the Free Software Foundation, version 2.
 *
 *   This program is distributed in the hope that it will be useful, but
 *   WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
 *   NON INFRINGEMENT.  See the GNU General Public License for
 *   more details.
 *
 *
 *
 *
 *
 */

#ifndef __ARCH_OPCODE_H__
#define __ARCH_OPCODE_H__

#ifndef __ASSEMBLER__

typedef unsigned long long tilepro_bundle_bits;

/* This is the bit that determines if a bundle is in the Y encoding. */
#define TILEPRO_BUNDLE_Y_ENCODING_MASK ((tilepro_bundle_bits)1 << 63)

enum
{
  /* Maximum number of instructions in a bundle (2 for X, 3 for Y). */
  TILEPRO_MAX_INSTRUCTIONS_PER_BUNDLE = 3,

  /* How many different pipeline encodings are there? X0, X1, Y0, Y1, Y2. */
  TILEPRO_NUM_PIPELINE_ENCODINGS = 5,

  /* Log base 2 of TILEPRO_BUNDLE_SIZE_IN_BYTES. */
  TILEPRO_LOG2_BUNDLE_SIZE_IN_BYTES = 3,

  /* Instructions take this many bytes. */
  TILEPRO_BUNDLE_SIZE_IN_BYTES = 1 << TILEPRO_LOG2_BUNDLE_SIZE_IN_BYTES,

  /* Log base 2 of TILEPRO_BUNDLE_ALIGNMENT_IN_BYTES. */
  TILEPRO_LOG2_BUNDLE_ALIGNMENT_IN_BYTES = 3,

  /* Bundles should be aligned modulo this number of bytes. */
  TILEPRO_BUNDLE_ALIGNMENT_IN_BYTES =
    (1 << TILEPRO_LOG2_BUNDLE_ALIGNMENT_IN_BYTES),

  /* Log base 2 of TILEPRO_SN_INSTRUCTION_SIZE_IN_BYTES. */
  TILEPRO_LOG2_SN_INSTRUCTION_SIZE_IN_BYTES = 1,

  /* Static network instructions take this many bytes. */
  TILEPRO_SN_INSTRUCTION_SIZE_IN_BYTES =
    (1 << TILEPRO_LOG2_SN_INSTRUCTION_SIZE_IN_BYTES),

  /* Number of registers (some are magic, such as network I/O). */
  TILEPRO_NUM_REGISTERS = 64,

  /* Number of static network registers. */
  TILEPRO_NUM_SN_REGISTERS = 4
};

/* Make a few "tile_" variables to simplify common code between
   architectures.  */

typedef tilepro_bundle_bits tile_bundle_bits;
#define TILE_BUNDLE_SIZE_IN_BYTES TILEPRO_BUNDLE_SIZE_IN_BYTES
#define TILE_BUNDLE_ALIGNMENT_IN_BYTES TILEPRO_BUNDLE_ALIGNMENT_IN_BYTES
#define TILE_LOG2_BUNDLE_ALIGNMENT_IN_BYTES \
  TILEPRO_LOG2_BUNDLE_ALIGNMENT_IN_BYTES

/* 64-bit pattern for a { bpt ; nop } bundle. */
#define TILEPRO_BPT_BUNDLE 0x400b3cae70166000ULL

static __inline unsigned int
get_BrOff_SN(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 0)) & 0x3ff);
}

static __inline unsigned int
get_BrOff_X1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 43)) & 0x00007fff) |
         (((unsigned int)(n >> 20)) & 0x00018000);
}

static __inline unsigned int
get_BrType_X1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 31)) & 0xf);
}

static __inline unsigned int
get_Dest_Imm8_X1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 31)) & 0x0000003f) |
         (((unsigned int)(n >> 43)) & 0x000000c0);
}

static __inline unsigned int
get_Dest_SN(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 2)) & 0x3);
}

static __inline unsigned int
get_Dest_X0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 0)) & 0x3f);
}

static __inline unsigned int
get_Dest_X1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 31)) & 0x3f);
}

static __inline unsigned int
get_Dest_Y0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 0)) & 0x3f);
}

static __inline unsigned int
get_Dest_Y1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 31)) & 0x3f);
}

static __inline unsigned int
get_Imm16_X0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 12)) & 0xffff);
}

static __inline unsigned int
get_Imm16_X1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 43)) & 0xffff);
}

static __inline unsigned int
get_Imm8_SN(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 0)) & 0xff);
}

static __inline unsigned int
get_Imm8_X0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 12)) & 0xff);
}

static __inline unsigned int
get_Imm8_X1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 43)) & 0xff);
}

static __inline unsigned int
get_Imm8_Y0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 12)) & 0xff);
}

static __inline unsigned int
get_Imm8_Y1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 43)) & 0xff);
}

static __inline unsigned int
get_ImmOpcodeExtension_X0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 20)) & 0x7f);
}

static __inline unsigned int
get_ImmOpcodeExtension_X1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 51)) & 0x7f);
}

static __inline unsigned int
get_ImmRROpcodeExtension_SN(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 8)) & 0x3);
}

static __inline unsigned int
get_JOffLong_X1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 43)) & 0x00007fff) |
         (((unsigned int)(n >> 20)) & 0x00018000) |
         (((unsigned int)(n >> 14)) & 0x001e0000) |
         (((unsigned int)(n >> 16)) & 0x07e00000) |
         (((unsigned int)(n >> 31)) & 0x18000000);
}

static __inline unsigned int
get_JOff_X1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 43)) & 0x00007fff) |
         (((unsigned int)(n >> 20)) & 0x00018000) |
         (((unsigned int)(n >> 14)) & 0x001e0000) |
         (((unsigned int)(n >> 16)) & 0x07e00000) |
         (((unsigned int)(n >> 31)) & 0x08000000);
}

static __inline unsigned int
get_MF_Imm15_X1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 37)) & 0x00003fff) |
         (((unsigned int)(n >> 44)) & 0x00004000);
}

static __inline unsigned int
get_MMEnd_X0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 18)) & 0x1f);
}

static __inline unsigned int
get_MMEnd_X1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 49)) & 0x1f);
}

static __inline unsigned int
get_MMStart_X0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 23)) & 0x1f);
}

static __inline unsigned int
get_MMStart_X1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 54)) & 0x1f);
}

static __inline unsigned int
get_MT_Imm15_X1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 31)) & 0x0000003f) |
         (((unsigned int)(n >> 37)) & 0x00003fc0) |
         (((unsigned int)(n >> 44)) & 0x00004000);
}

static __inline unsigned int
get_Mode(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 63)) & 0x1);
}

static __inline unsigned int
get_NoRegOpcodeExtension_SN(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 0)) & 0xf);
}

static __inline unsigned int
get_Opcode_SN(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 10)) & 0x3f);
}

static __inline unsigned int
get_Opcode_X0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 28)) & 0x7);
}

static __inline unsigned int
get_Opcode_X1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 59)) & 0xf);
}

static __inline unsigned int
get_Opcode_Y0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 27)) & 0xf);
}

static __inline unsigned int
get_Opcode_Y1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 59)) & 0xf);
}

static __inline unsigned int
get_Opcode_Y2(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 56)) & 0x7);
}

static __inline unsigned int
get_RROpcodeExtension_SN(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 4)) & 0xf);
}

static __inline unsigned int
get_RRROpcodeExtension_X0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 18)) & 0x1ff);
}

static __inline unsigned int
get_RRROpcodeExtension_X1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 49)) & 0x1ff);
}

static __inline unsigned int
get_RRROpcodeExtension_Y0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 18)) & 0x3);
}

static __inline unsigned int
get_RRROpcodeExtension_Y1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 49)) & 0x3);
}

static __inline unsigned int
get_RouteOpcodeExtension_SN(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 0)) & 0x3ff);
}

static __inline unsigned int
get_S_X0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 27)) & 0x1);
}

static __inline unsigned int
get_S_X1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 58)) & 0x1);
}

static __inline unsigned int
get_ShAmt_X0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 12)) & 0x1f);
}

static __inline unsigned int
get_ShAmt_X1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 43)) & 0x1f);
}

static __inline unsigned int
get_ShAmt_Y0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 12)) & 0x1f);
}

static __inline unsigned int
get_ShAmt_Y1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 43)) & 0x1f);
}

static __inline unsigned int
get_SrcA_X0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 6)) & 0x3f);
}

static __inline unsigned int
get_SrcA_X1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 37)) & 0x3f);
}

static __inline unsigned int
get_SrcA_Y0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 6)) & 0x3f);
}

static __inline unsigned int
get_SrcA_Y1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 37)) & 0x3f);
}

static __inline unsigned int
get_SrcA_Y2(tilepro_bundle_bits n)
{
  return (((n >> 26)) & 0x00000001) |
         (((unsigned int)(n >> 50)) & 0x0000003e);
}

static __inline unsigned int
get_SrcBDest_Y2(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 20)) & 0x3f);
}

static __inline unsigned int
get_SrcB_X0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 12)) & 0x3f);
}

static __inline unsigned int
get_SrcB_X1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 43)) & 0x3f);
}

static __inline unsigned int
get_SrcB_Y0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 12)) & 0x3f);
}

static __inline unsigned int
get_SrcB_Y1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 43)) & 0x3f);
}

static __inline unsigned int
get_Src_SN(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 0)) & 0x3);
}

static __inline unsigned int
get_UnOpcodeExtension_X0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 12)) & 0x1f);
}

static __inline unsigned int
get_UnOpcodeExtension_X1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 43)) & 0x1f);
}

static __inline unsigned int
get_UnOpcodeExtension_Y0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 12)) & 0x1f);
}

static __inline unsigned int
get_UnOpcodeExtension_Y1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 43)) & 0x1f);
}

static __inline unsigned int
get_UnShOpcodeExtension_X0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 17)) & 0x3ff);
}

static __inline unsigned int
get_UnShOpcodeExtension_X1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 48)) & 0x3ff);
}

static __inline unsigned int
get_UnShOpcodeExtension_Y0(tilepro_bundle_bits num)
{
  const unsigned int n = (unsigned int)num;
  return (((n >> 17)) & 0x7);
}

static __inline unsigned int
get_UnShOpcodeExtension_Y1(tilepro_bundle_bits n)
{
  return (((unsigned int)(n >> 48)) & 0x7);
}


static __inline int
sign_extend(int n, int num_bits)
{
  int shift = (int)(sizeof(int) * 8 - num_bits);
  return (n << shift) >> shift;
}



static __inline tilepro_bundle_bits
create_BrOff_SN(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x3ff) << 0);
}

static __inline tilepro_bundle_bits
create_BrOff_X1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x00007fff)) << 43) |
         (((tilepro_bundle_bits)(n & 0x00018000)) << 20);
}

static __inline tilepro_bundle_bits
create_BrType_X1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0xf)) << 31);
}

static __inline tilepro_bundle_bits
create_Dest_Imm8_X1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x0000003f)) << 31) |
         (((tilepro_bundle_bits)(n & 0x000000c0)) << 43);
}

static __inline tilepro_bundle_bits
create_Dest_SN(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x3) << 2);
}

static __inline tilepro_bundle_bits
create_Dest_X0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x3f) << 0);
}

static __inline tilepro_bundle_bits
create_Dest_X1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x3f)) << 31);
}

static __inline tilepro_bundle_bits
create_Dest_Y0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x3f) << 0);
}

static __inline tilepro_bundle_bits
create_Dest_Y1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x3f)) << 31);
}

static __inline tilepro_bundle_bits
create_Imm16_X0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0xffff) << 12);
}

static __inline tilepro_bundle_bits
create_Imm16_X1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0xffff)) << 43);
}

static __inline tilepro_bundle_bits
create_Imm8_SN(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0xff) << 0);
}

static __inline tilepro_bundle_bits
create_Imm8_X0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0xff) << 12);
}

static __inline tilepro_bundle_bits
create_Imm8_X1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0xff)) << 43);
}

static __inline tilepro_bundle_bits
create_Imm8_Y0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0xff) << 12);
}

static __inline tilepro_bundle_bits
create_Imm8_Y1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0xff)) << 43);
}

static __inline tilepro_bundle_bits
create_ImmOpcodeExtension_X0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x7f) << 20);
}

static __inline tilepro_bundle_bits
create_ImmOpcodeExtension_X1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x7f)) << 51);
}

static __inline tilepro_bundle_bits
create_ImmRROpcodeExtension_SN(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x3) << 8);
}

static __inline tilepro_bundle_bits
create_JOffLong_X1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x00007fff)) << 43) |
         (((tilepro_bundle_bits)(n & 0x00018000)) << 20) |
         (((tilepro_bundle_bits)(n & 0x001e0000)) << 14) |
         (((tilepro_bundle_bits)(n & 0x07e00000)) << 16) |
         (((tilepro_bundle_bits)(n & 0x18000000)) << 31);
}

static __inline tilepro_bundle_bits
create_JOff_X1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x00007fff)) << 43) |
         (((tilepro_bundle_bits)(n & 0x00018000)) << 20) |
         (((tilepro_bundle_bits)(n & 0x001e0000)) << 14) |
         (((tilepro_bundle_bits)(n & 0x07e00000)) << 16) |
         (((tilepro_bundle_bits)(n & 0x08000000)) << 31);
}

static __inline tilepro_bundle_bits
create_MF_Imm15_X1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x00003fff)) << 37) |
         (((tilepro_bundle_bits)(n & 0x00004000)) << 44);
}

static __inline tilepro_bundle_bits
create_MMEnd_X0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x1f) << 18);
}

static __inline tilepro_bundle_bits
create_MMEnd_X1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x1f)) << 49);
}

static __inline tilepro_bundle_bits
create_MMStart_X0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x1f) << 23);
}

static __inline tilepro_bundle_bits
create_MMStart_X1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x1f)) << 54);
}

static __inline tilepro_bundle_bits
create_MT_Imm15_X1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x0000003f)) << 31) |
         (((tilepro_bundle_bits)(n & 0x00003fc0)) << 37) |
         (((tilepro_bundle_bits)(n & 0x00004000)) << 44);
}

static __inline tilepro_bundle_bits
create_Mode(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x1)) << 63);
}

static __inline tilepro_bundle_bits
create_NoRegOpcodeExtension_SN(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0xf) << 0);
}

static __inline tilepro_bundle_bits
create_Opcode_SN(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x3f) << 10);
}

static __inline tilepro_bundle_bits
create_Opcode_X0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x7) << 28);
}

static __inline tilepro_bundle_bits
create_Opcode_X1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0xf)) << 59);
}

static __inline tilepro_bundle_bits
create_Opcode_Y0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0xf) << 27);
}

static __inline tilepro_bundle_bits
create_Opcode_Y1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0xf)) << 59);
}

static __inline tilepro_bundle_bits
create_Opcode_Y2(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x7)) << 56);
}

static __inline tilepro_bundle_bits
create_RROpcodeExtension_SN(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0xf) << 4);
}

static __inline tilepro_bundle_bits
create_RRROpcodeExtension_X0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x1ff) << 18);
}

static __inline tilepro_bundle_bits
create_RRROpcodeExtension_X1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x1ff)) << 49);
}

static __inline tilepro_bundle_bits
create_RRROpcodeExtension_Y0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x3) << 18);
}

static __inline tilepro_bundle_bits
create_RRROpcodeExtension_Y1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x3)) << 49);
}

static __inline tilepro_bundle_bits
create_RouteOpcodeExtension_SN(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x3ff) << 0);
}

static __inline tilepro_bundle_bits
create_S_X0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x1) << 27);
}

static __inline tilepro_bundle_bits
create_S_X1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x1)) << 58);
}

static __inline tilepro_bundle_bits
create_ShAmt_X0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x1f) << 12);
}

static __inline tilepro_bundle_bits
create_ShAmt_X1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x1f)) << 43);
}

static __inline tilepro_bundle_bits
create_ShAmt_Y0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x1f) << 12);
}

static __inline tilepro_bundle_bits
create_ShAmt_Y1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x1f)) << 43);
}

static __inline tilepro_bundle_bits
create_SrcA_X0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x3f) << 6);
}

static __inline tilepro_bundle_bits
create_SrcA_X1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x3f)) << 37);
}

static __inline tilepro_bundle_bits
create_SrcA_Y0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x3f) << 6);
}

static __inline tilepro_bundle_bits
create_SrcA_Y1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x3f)) << 37);
}

static __inline tilepro_bundle_bits
create_SrcA_Y2(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x00000001) << 26) |
         (((tilepro_bundle_bits)(n & 0x0000003e)) << 50);
}

static __inline tilepro_bundle_bits
create_SrcBDest_Y2(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x3f) << 20);
}

static __inline tilepro_bundle_bits
create_SrcB_X0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x3f) << 12);
}

static __inline tilepro_bundle_bits
create_SrcB_X1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x3f)) << 43);
}

static __inline tilepro_bundle_bits
create_SrcB_Y0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x3f) << 12);
}

static __inline tilepro_bundle_bits
create_SrcB_Y1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x3f)) << 43);
}

static __inline tilepro_bundle_bits
create_Src_SN(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x3) << 0);
}

static __inline tilepro_bundle_bits
create_UnOpcodeExtension_X0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x1f) << 12);
}

static __inline tilepro_bundle_bits
create_UnOpcodeExtension_X1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x1f)) << 43);
}

static __inline tilepro_bundle_bits
create_UnOpcodeExtension_Y0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x1f) << 12);
}

static __inline tilepro_bundle_bits
create_UnOpcodeExtension_Y1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x1f)) << 43);
}

static __inline tilepro_bundle_bits
create_UnShOpcodeExtension_X0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x3ff) << 17);
}

static __inline tilepro_bundle_bits
create_UnShOpcodeExtension_X1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x3ff)) << 48);
}

static __inline tilepro_bundle_bits
create_UnShOpcodeExtension_Y0(int num)
{
  const unsigned int n = (unsigned int)num;
  return ((n & 0x7) << 17);
}

static __inline tilepro_bundle_bits
create_UnShOpcodeExtension_Y1(int num)
{
  const unsigned int n = (unsigned int)num;
  return (((tilepro_bundle_bits)(n & 0x7)) << 48);
}


enum
{
  ADDBS_U_SPECIAL_0_OPCODE_X0 = 98,
  ADDBS_U_SPECIAL_0_OPCODE_X1 = 68,
  ADDB_SPECIAL_0_OPCODE_X0 = 1,
  ADDB_SPECIAL_0_OPCODE_X1 = 1,
  ADDHS_SPECIAL_0_OPCODE_X0 = 99,
  ADDHS_SPECIAL_0_OPCODE_X1 = 69,
  ADDH_SPECIAL_0_OPCODE_X0 = 2,
  ADDH_SPECIAL_0_OPCODE_X1 = 2,
  ADDIB_IMM_0_OPCODE_X0 = 1,
  ADDIB_IMM_0_OPCODE_X1 = 1,
  ADDIH_IMM_0_OPCODE_X0 = 2,
  ADDIH_IMM_0_OPCODE_X1 = 2,
  ADDI_IMM_0_OPCODE_X0 = 3,
  ADDI_IMM_0_OPCODE_X1 = 3,
  ADDI_IMM_1_OPCODE_SN = 1,
  ADDI_OPCODE_Y0 = 9,
  ADDI_OPCODE_Y1 = 7,
  ADDLIS_OPCODE_X0 = 1,
  ADDLIS_OPCODE_X1 = 2,
  ADDLI_OPCODE_X0 = 2,
  ADDLI_OPCODE_X1 = 3,
  ADDS_SPECIAL_0_OPCODE_X0 = 96,
  ADDS_SPECIAL_0_OPCODE_X1 = 66,
  ADD_SPECIAL_0_OPCODE_X0 = 3,
  ADD_SPECIAL_0_OPCODE_X1 = 3,
  ADD_SPECIAL_0_OPCODE_Y0 = 0,
  ADD_SPECIAL_0_OPCODE_Y1 = 0,
  ADIFFB_U_SPECIAL_0_OPCODE_X0 = 4,
  ADIFFH_SPECIAL_0_OPCODE_X0 = 5,
  ANDI_IMM_0_OPCODE_X0 = 1,
  ANDI_IMM_0_OPCODE_X1 = 4,
  ANDI_OPCODE_Y0 = 10,
  ANDI_OPCODE_Y1 = 8,
  AND_SPECIAL_0_OPCODE_X0 = 6,
  AND_SPECIAL_0_OPCODE_X1 = 4,
  AND_SPECIAL_2_OPCODE_Y0 = 0,
  AND_SPECIAL_2_OPCODE_Y1 = 0,
  AULI_OPCODE_X0 = 3,
  AULI_OPCODE_X1 = 4,
  AVGB_U_SPECIAL_0_OPCODE_X0 = 7,
  AVGH_SPECIAL_0_OPCODE_X0 = 8,
  BBNST_BRANCH_OPCODE_X1 = 15,
  BBNS_BRANCH_OPCODE_X1 = 14,
  BBNS_OPCODE_SN = 63,
  BBST_BRANCH_OPCODE_X1 = 13,
  BBS_BRANCH_OPCODE_X1 = 12,
  BBS_OPCODE_SN = 62,
  BGEZT_BRANCH_OPCODE_X1 = 7,
  BGEZ_BRANCH_OPCODE_X1 = 6,
  BGEZ_OPCODE_SN = 61,
  BGZT_BRANCH_OPCODE_X1 = 5,
  BGZ_BRANCH_OPCODE_X1 = 4,
  BGZ_OPCODE_SN = 58,
  BITX_UN_0_SHUN_0_OPCODE_X0 = 1,
  BITX_UN_0_SHUN_0_OPCODE_Y0 = 1,
  BLEZT_BRANCH_OPCODE_X1 = 11,
  BLEZ_BRANCH_OPCODE_X1 = 10,
  BLEZ_OPCODE_SN = 59,
  BLZT_BRANCH_OPCODE_X1 = 9,
  BLZ_BRANCH_OPCODE_X1 = 8,
  BLZ_OPCODE_SN = 60,
  BNZT_BRANCH_OPCODE_X1 = 3,
  BNZ_BRANCH_OPCODE_X1 = 2,
  BNZ_OPCODE_SN = 57,
  BPT_NOREG_RR_IMM_0_OPCODE_SN = 1,
  BRANCH_OPCODE_X1 = 5,
  BYTEX_UN_0_SHUN_0_OPCODE_X0 = 2,
  BYTEX_UN_0_SHUN_0_OPCODE_Y0 = 2,
  BZT_BRANCH_OPCODE_X1 = 1,
  BZ_BRANCH_OPCODE_X1 = 0,
  BZ_OPCODE_SN = 56,
  CLZ_UN_0_SHUN_0_OPCODE_X0 = 3,
  CLZ_UN_0_SHUN_0_OPCODE_Y0 = 3,
  CRC32_32_SPECIAL_0_OPCODE_X0 = 9,
  CRC32_8_SPECIAL_0_OPCODE_X0 = 10,
  CTZ_UN_0_SHUN_0_OPCODE_X0 = 4,
  CTZ_UN_0_SHUN_0_OPCODE_Y0 = 4,
  DRAIN_UN_0_SHUN_0_OPCODE_X1 = 1,
  DTLBPR_UN_0_SHUN_0_OPCODE_X1 = 2,
  DWORD_ALIGN_SPECIAL_0_OPCODE_X0 = 95,
  FINV_UN_0_SHUN_0_OPCODE_X1 = 3,
  FLUSH_UN_0_SHUN_0_OPCODE_X1 = 4,
  FNOP_NOREG_RR_IMM_0_OPCODE_SN = 3,
  FNOP_UN_0_SHUN_0_OPCODE_X0 = 5,
  FNOP_UN_0_SHUN_0_OPCODE_X1 = 5,
  FNOP_UN_0_SHUN_0_OPCODE_Y0 = 5,
  FNOP_UN_0_SHUN_0_OPCODE_Y1 = 1,
  HALT_NOREG_RR_IMM_0_OPCODE_SN = 0,
  ICOH_UN_0_SHUN_0_OPCODE_X1 = 6,
  ILL_UN_0_SHUN_0_OPCODE_X1 = 7,
  ILL_UN_0_SHUN_0_OPCODE_Y1 = 2,
  IMM_0_OPCODE_SN = 0,
  IMM_0_OPCODE_X0 = 4,
  IMM_0_OPCODE_X1 = 6,
  IMM_1_OPCODE_SN = 1,
  IMM_OPCODE_0_X0 = 5,
  INTHB_SPECIAL_0_OPCODE_X0 = 11,
  INTHB_SPECIAL_0_OPCODE_X1 = 5,
  INTHH_SPECIAL_0_OPCODE_X0 = 12,
  INTHH_SPECIAL_0_OPCODE_X1 = 6,
  INTLB_SPECIAL_0_OPCODE_X0 = 13,
  INTLB_SPECIAL_0_OPCODE_X1 = 7,
  INTLH_SPECIAL_0_OPCODE_X0 = 14,
  INTLH_SPECIAL_0_OPCODE_X1 = 8,
  INV_UN_0_SHUN_0_OPCODE_X1 = 8,
  IRET_UN_0_SHUN_0_OPCODE_X1 = 9,
  JALB_OPCODE_X1 = 13,
  JALF_OPCODE_X1 = 12,
  JALRP_SPECIAL_0_OPCODE_X1 = 9,
  JALRR_IMM_1_OPCODE_SN = 3,
  JALR_RR_IMM_0_OPCODE_SN = 5,
  JALR_SPECIAL_0_OPCODE_X1 = 10,
  JB_OPCODE_X1 = 11,
  JF_OPCODE_X1 = 10,
  JRP_SPECIAL_0_OPCODE_X1 = 11,
  JRR_IMM_1_OPCODE_SN = 2,
  JR_RR_IMM_0_OPCODE_SN = 4,
  JR_SPECIAL_0_OPCODE_X1 = 12,
  LBADD_IMM_0_OPCODE_X1 = 22,
  LBADD_U_IMM_0_OPCODE_X1 = 23,
  LB_OPCODE_Y2 = 0,
  LB_UN_0_SHUN_0_OPCODE_X1 = 10,
  LB_U_OPCODE_Y2 = 1,
  LB_U_UN_0_SHUN_0_OPCODE_X1 = 11,
  LHADD_IMM_0_OPCODE_X1 = 24,
  LHADD_U_IMM_0_OPCODE_X1 = 25,
  LH_OPCODE_Y2 = 2,
  LH_UN_0_SHUN_0_OPCODE_X1 = 12,
  LH_U_OPCODE_Y2 = 3,
  LH_U_UN_0_SHUN_0_OPCODE_X1 = 13,
  LNK_SPECIAL_0_OPCODE_X1 = 13,
  LWADD_IMM_0_OPCODE_X1 = 26,
  LWADD_NA_IMM_0_OPCODE_X1 = 27,
  LW_NA_UN_0_SHUN_0_OPCODE_X1 = 24,
  LW_OPCODE_Y2 = 4,
  LW_UN_0_SHUN_0_OPCODE_X1 = 14,
  MAXB_U_SPECIAL_0_OPCODE_X0 = 15,
  MAXB_U_SPECIAL_0_OPCODE_X1 = 14,
  MAXH_SPECIAL_0_OPCODE_X0 = 16,
  MAXH_SPECIAL_0_OPCODE_X1 = 15,
  MAXIB_U_IMM_0_OPCODE_X0 = 4,
  MAXIB_U_IMM_0_OPCODE_X1 = 5,
  MAXIH_IMM_0_OPCODE_X0 = 5,
  MAXIH_IMM_0_OPCODE_X1 = 6,
  MFSPR_IMM_0_OPCODE_X1 = 7,
  MF_UN_0_SHUN_0_OPCODE_X1 = 15,
  MINB_U_SPECIAL_0_OPCODE_X0 = 17,
  MINB_U_SPECIAL_0_OPCODE_X1 = 16,
  MINH_SPECIAL_0_OPCODE_X0 = 18,
  MINH_SPECIAL_0_OPCODE_X1 = 17,
  MINIB_U_IMM_0_OPCODE_X0 = 6,
  MINIB_U_IMM_0_OPCODE_X1 = 8,
  MINIH_IMM_0_OPCODE_X0 = 7,
  MINIH_IMM_0_OPCODE_X1 = 9,
  MM_OPCODE_X0 = 6,
  MM_OPCODE_X1 = 7,
  MNZB_SPECIAL_0_OPCODE_X0 = 19,
  MNZB_SPECIAL_0_OPCODE_X1 = 18,
  MNZH_SPECIAL_0_OPCODE_X0 = 20,
  MNZH_SPECIAL_0_OPCODE_X1 = 19,
  MNZ_SPECIAL_0_OPCODE_X0 = 21,
  MNZ_SPECIAL_0_OPCODE_X1 = 20,
  MNZ_SPECIAL_1_OPCODE_Y0 = 0,
  MNZ_SPECIAL_1_OPCODE_Y1 = 1,
  MOVEI_IMM_1_OPCODE_SN = 0,
  MOVE_RR_IMM_0_OPCODE_SN = 8,
  MTSPR_IMM_0_OPCODE_X1 = 10,
  MULHHA_SS_SPECIAL_0_OPCODE_X0 = 22,
  MULHHA_SS_SPECIAL_7_OPCODE_Y0 = 0,
  MULHHA_SU_SPECIAL_0_OPCODE_X0 = 23,
  MULHHA_UU_SPECIAL_0_OPCODE_X0 = 24,
  MULHHA_UU_SPECIAL_7_OPCODE_Y0 = 1,
  MULHHSA_UU_SPECIAL_0_OPCODE_X0 = 25,
  MULHH_SS_SPECIAL_0_OPCODE_X0 = 26,
  MULHH_SS_SPECIAL_6_OPCODE_Y0 = 0,
  MULHH_SU_SPECIAL_0_OPCODE_X0 = 27,
  MULHH_UU_SPECIAL_0_OPCODE_X0 = 28,
  MULHH_UU_SPECIAL_6_OPCODE_Y0 = 1,
  MULHLA_SS_SPECIAL_0_OPCODE_X0 = 29,
  MULHLA_SU_SPECIAL_0_OPCODE_X0 = 30,
  MULHLA_US_SPECIAL_0_OPCODE_X0 = 31,
  MULHLA_UU_SPECIAL_0_OPCODE_X0 = 32,
  MULHLSA_UU_SPECIAL_0_OPCODE_X0 = 33,
  MULHLSA_UU_SPECIAL_5_OPCODE_Y0 = 0,
  MULHL_SS_SPECIAL_0_OPCODE_X0 = 34,
  MULHL_SU_SPECIAL_0_OPCODE_X0 = 35,
  MULHL_US_SPECIAL_0_OPCODE_X0 = 36,
  MULHL_UU_SPECIAL_0_OPCODE_X0 = 37,
  MULLLA_SS_SPECIAL_0_OPCODE_X0 = 38,
  MULLLA_SS_SPECIAL_7_OPCODE_Y0 = 2,
  MULLLA_SU_SPECIAL_0_OPCODE_X0 = 39,
  MULLLA_UU_SPECIAL_0_OPCODE_X0 = 40,
  MULLLA_UU_SPECIAL_7_OPCODE_Y0 = 3,
  MULLLSA_UU_SPECIAL_0_OPCODE_X0 = 41,
  MULLL_SS_SPECIAL_0_OPCODE_X0 = 42,
  MULLL_SS_SPECIAL_6_OPCODE_Y0 = 2,
  MULLL_SU_SPECIAL_0_OPCODE_X0 = 43,
  MULLL_UU_SPECIAL_0_OPCODE_X0 = 44,
  MULLL_UU_SPECIAL_6_OPCODE_Y0 = 3,
  MVNZ_SPECIAL_0_OPCODE_X0 = 45,
  MVNZ_SPECIAL_1_OPCODE_Y0 = 1,
  MVZ_SPECIAL_0_OPCODE_X0 = 46,
  MVZ_SPECIAL_1_OPCODE_Y0 = 2,
  MZB_SPECIAL_0_OPCODE_X0 = 47,
  MZB_SPECIAL_0_OPCODE_X1 = 21,
  MZH_SPECIAL_0_OPCODE_X0 = 48,
  MZH_SPECIAL_0_OPCODE_X1 = 22,
  MZ_SPECIAL_0_OPCODE_X0 = 49,
  MZ_SPECIAL_0_OPCODE_X1 = 23,
  MZ_SPECIAL_1_OPCODE_Y0 = 3,
  MZ_SPECIAL_1_OPCODE_Y1 = 2,
  NAP_UN_0_SHUN_0_OPCODE_X1 = 16,
  NOP_NOREG_RR_IMM_0_OPCODE_SN = 2,
  NOP_UN_0_SHUN_0_OPCODE_X0 = 6,
  NOP_UN_0_SHUN_0_OPCODE_X1 = 17,
  NOP_UN_0_SHUN_0_OPCODE_Y0 = 6,
  NOP_UN_0_SHUN_0_OPCODE_Y1 = 3,
  NOREG_RR_IMM_0_OPCODE_SN = 0,
  NOR_SPECIAL_0_OPCODE_X0 = 50,
  NOR_SPECIAL_0_OPCODE_X1 = 24,
  NOR_SPECIAL_2_OPCODE_Y0 = 1,
  NOR_SPECIAL_2_OPCODE_Y1 = 1,
  ORI_IMM_0_OPCODE_X0 = 8,
  ORI_IMM_0_OPCODE_X1 = 11,
  ORI_OPCODE_Y0 = 11,
  ORI_OPCODE_Y1 = 9,
  OR_SPECIAL_0_OPCODE_X0 = 51,
  OR_SPECIAL_0_OPCODE_X1 = 25,
  OR_SPECIAL_2_OPCODE_Y0 = 2,
  OR_SPECIAL_2_OPCODE_Y1 = 2,
  PACKBS_U_SPECIAL_0_OPCODE_X0 = 103,
  PACKBS_U_SPECIAL_0_OPCODE_X1 = 73,
  PACKHB_SPECIAL_0_OPCODE_X0 = 52,
  PACKHB_SPECIAL_0_OPCODE_X1 = 26,
  PACKHS_SPECIAL_0_OPCODE_X0 = 102,
  PACKHS_SPECIAL_0_OPCODE_X1 = 72,
  PACKLB_SPECIAL_0_OPCODE_X0 = 53,
  PACKLB_SPECIAL_0_OPCODE_X1 = 27,
  PCNT_UN_0_SHUN_0_OPCODE_X0 = 7,
  PCNT_UN_0_SHUN_0_OPCODE_Y0 = 7,
  RLI_SHUN_0_OPCODE_X0 = 1,
  RLI_SHUN_0_OPCODE_X1 = 1,
  RLI_SHUN_0_OPCODE_Y0 = 1,
  RLI_SHUN_0_OPCODE_Y1 = 1,
  RL_SPECIAL_0_OPCODE_X0 = 54,
  RL_SPECIAL_0_OPCODE_X1 = 28,
  RL_SPECIAL_3_OPCODE_Y0 = 0,
  RL_SPECIAL_3_OPCODE_Y1 = 0,
  RR_IMM_0_OPCODE_SN = 0,
  S1A_SPECIAL_0_OPCODE_X0 = 55,
  S1A_SPECIAL_0_OPCODE_X1 = 29,
  S1A_SPECIAL_0_OPCODE_Y0 = 1,
  S1A_SPECIAL_0_OPCODE_Y1 = 1,
  S2A_SPECIAL_0_OPCODE_X0 = 56,
  S2A_SPECIAL_0_OPCODE_X1 = 30,
  S2A_SPECIAL_0_OPCODE_Y0 = 2,
  S2A_SPECIAL_0_OPCODE_Y1 = 2,
  S3A_SPECIAL_0_OPCODE_X0 = 57,
  S3A_SPECIAL_0_OPCODE_X1 = 31,
  S3A_SPECIAL_5_OPCODE_Y0 = 1,
  S3A_SPECIAL_5_OPCODE_Y1 = 1,
  SADAB_U_SPECIAL_0_OPCODE_X0 = 58,
  SADAH_SPECIAL_0_OPCODE_X0 = 59,
  SADAH_U_SPECIAL_0_OPCODE_X0 = 60,
  SADB_U_SPECIAL_0_OPCODE_X0 = 61,
  SADH_SPECIAL_0_OPCODE_X0 = 62,
  SADH_U_SPECIAL_0_OPCODE_X0 = 63,
  SBADD_IMM_0_OPCODE_X1 = 28,
  SB_OPCODE_Y2 = 5,
  SB_SPECIAL_0_OPCODE_X1 = 32,
  SEQB_SPECIAL_0_OPCODE_X0 = 64,
  SEQB_SPECIAL_0_OPCODE_X1 = 33,
  SEQH_SPECIAL_0_OPCODE_X0 = 65,
  SEQH_SPECIAL_0_OPCODE_X1 = 34,
  SEQIB_IMM_0_OPCODE_X0 = 9,
  SEQIB_IMM_0_OPCODE_X1 = 12,
  SEQIH_IMM_0_OPCODE_X0 = 10,
  SEQIH_IMM_0_OPCODE_X1 = 13,
  SEQI_IMM_0_OPCODE_X0 = 11,
  SEQI_IMM_0_OPCODE_X1 = 14,
  SEQI_OPCODE_Y0 = 12,
  SEQI_OPCODE_Y1 = 10,
  SEQ_SPECIAL_0_OPCODE_X0 = 66,
  SEQ_SPECIAL_0_OPCODE_X1 = 35,
  SEQ_SPECIAL_5_OPCODE_Y0 = 2,
  SEQ_SPECIAL_5_OPCODE_Y1 = 2,
  SHADD_IMM_0_OPCODE_X1 = 29,
  SHL8II_IMM_0_OPCODE_SN = 3,
  SHLB_SPECIAL_0_OPCODE_X0 = 67,
  SHLB_SPECIAL_0_OPCODE_X1 = 36,
  SHLH_SPECIAL_0_OPCODE_X0 = 68,
  SHLH_SPECIAL_0_OPCODE_X1 = 37,
  SHLIB_SHUN_0_OPCODE_X0 = 2,
  SHLIB_SHUN_0_OPCODE_X1 = 2,
  SHLIH_SHUN_0_OPCODE_X0 = 3,
  SHLIH_SHUN_0_OPCODE_X1 = 3,
  SHLI_SHUN_0_OPCODE_X0 = 4,
  SHLI_SHUN_0_OPCODE_X1 = 4,
  SHLI_SHUN_0_OPCODE_Y0 = 2,
  SHLI_SHUN_0_OPCODE_Y1 = 2,
  SHL_SPECIAL_0_OPCODE_X0 = 69,
  SHL_SPECIAL_0_OPCODE_X1 = 38,
  SHL_SPECIAL_3_OPCODE_Y0 = 1,
  SHL_SPECIAL_3_OPCODE_Y1 = 1,
  SHR1_RR_IMM_0_OPCODE_SN = 9,
  SHRB_SPECIAL_0_OPCODE_X0 = 70,
  SHRB_SPECIAL_0_OPCODE_X1 = 39,
  SHRH_SPECIAL_0_OPCODE_X0 = 71,
  SHRH_SPECIAL_0_OPCODE_X1 = 40,
  SHRIB_SHUN_0_OPCODE_X0 = 5,
  SHRIB_SHUN_0_OPCODE_X1 = 5,
  SHRIH_SHUN_0_OPCODE_X0 = 6,
  SHRIH_SHUN_0_OPCODE_X1 = 6,
  SHRI_SHUN_0_OPCODE_X0 = 7,
  SHRI_SHUN_0_OPCODE_X1 = 7,
  SHRI_SHUN_0_OPCODE_Y0 = 3,
  SHRI_SHUN_0_OPCODE_Y1 = 3,
  SHR_SPECIAL_0_OPCODE_X0 = 72,
  SHR_SPECIAL_0_OPCODE_X1 = 41,
  SHR_SPECIAL_3_OPCODE_Y0 = 2,
  SHR_SPECIAL_3_OPCODE_Y1 = 2,
  SHUN_0_OPCODE_X0 = 7,
  SHUN_0_OPCODE_X1 = 8,
  SHUN_0_OPCODE_Y0 = 13,
  SHUN_0_OPCODE_Y1 = 11,
  SH_OPCODE_Y2 = 6,
  SH_SPECIAL_0_OPCODE_X1 = 42,
  SLTB_SPECIAL_0_OPCODE_X0 = 73,
  SLTB_SPECIAL_0_OPCODE_X1 = 43,
  SLTB_U_SPECIAL_0_OPCODE_X0 = 74,
  SLTB_U_SPECIAL_0_OPCODE_X1 = 44,
  SLTEB_SPECIAL_0_OPCODE_X0 = 75,
  SLTEB_SPECIAL_0_OPCODE_X1 = 45,
  SLTEB_U_SPECIAL_0_OPCODE_X0 = 76,
  SLTEB_U_SPECIAL_0_OPCODE_X1 = 46,
  SLTEH_SPECIAL_0_OPCODE_X0 = 77,
  SLTEH_SPECIAL_0_OPCODE_X1 = 47,
  SLTEH_U_SPECIAL_0_OPCODE_X0 = 78,
  SLTEH_U_SPECIAL_0_OPCODE_X1 = 48,
  SLTE_SPECIAL_0_OPCODE_X0 = 79,
  SLTE_SPECIAL_0_OPCODE_X1 = 49,
  SLTE_SPECIAL_4_OPCODE_Y0 = 0,
  SLTE_SPECIAL_4_OPCODE_Y1 = 0,
  SLTE_U_SPECIAL_0_OPCODE_X0 = 80,
  SLTE_U_SPECIAL_0_OPCODE_X1 = 50,
  SLTE_U_SPECIAL_4_OPCODE_Y0 = 1,
  SLTE_U_SPECIAL_4_OPCODE_Y1 = 1,
  SLTH_SPECIAL_0_OPCODE_X0 = 81,
  SLTH_SPECIAL_0_OPCODE_X1 = 51,
  SLTH_U_SPECIAL_0_OPCODE_X0 = 82,
  SLTH_U_SPECIAL_0_OPCODE_X1 = 52,
  SLTIB_IMM_0_OPCODE_X0 = 12,
  SLTIB_IMM_0_OPCODE_X1 = 15,
  SLTIB_U_IMM_0_OPCODE_X0 = 13,
  SLTIB_U_IMM_0_OPCODE_X1 = 16,
  SLTIH_IMM_0_OPCODE_X0 = 14,
  SLTIH_IMM_0_OPCODE_X1 = 17,
  SLTIH_U_IMM_0_OPCODE_X0 = 15,
  SLTIH_U_IMM_0_OPCODE_X1 = 18,
  SLTI_IMM_0_OPCODE_X0 = 16,
  SLTI_IMM_0_OPCODE_X1 = 19,
  SLTI_OPCODE_Y0 = 14,
  SLTI_OPCODE_Y1 = 12,
  SLTI_U_IMM_0_OPCODE_X0 = 17,
  SLTI_U_IMM_0_OPCODE_X1 = 20,
  SLTI_U_OPCODE_Y0 = 15,
  SLTI_U_OPCODE_Y1 = 13,
  SLT_SPECIAL_0_OPCODE_X0 = 83,
  SLT_SPECIAL_0_OPCODE_X1 = 53,
  SLT_SPECIAL_4_OPCODE_Y0 = 2,
  SLT_SPECIAL_4_OPCODE_Y1 = 2,
  SLT_U_SPECIAL_0_OPCODE_X0 = 84,
  SLT_U_SPECIAL_0_OPCODE_X1 = 54,
  SLT_U_SPECIAL_4_OPCODE_Y0 = 3,
  SLT_U_SPECIAL_4_OPCODE_Y1 = 3,
  SNEB_SPECIAL_0_OPCODE_X0 = 85,
  SNEB_SPECIAL_0_OPCODE_X1 = 55,
  SNEH_SPECIAL_0_OPCODE_X0 = 86,
  SNEH_SPECIAL_0_OPCODE_X1 = 56,
  SNE_SPECIAL_0_OPCODE_X0 = 87,
  SNE_SPECIAL_0_OPCODE_X1 = 57,
  SNE_SPECIAL_5_OPCODE_Y0 = 3,
  SNE_SPECIAL_5_OPCODE_Y1 = 3,
  SPECIAL_0_OPCODE_X0 = 0,
  SPECIAL_0_OPCODE_X1 = 1,
  SPECIAL_0_OPCODE_Y0 = 1,
  SPECIAL_0_OPCODE_Y1 = 1,
  SPECIAL_1_OPCODE_Y0 = 2,
  SPECIAL_1_OPCODE_Y1 = 2,
  SPECIAL_2_OPCODE_Y0 = 3,
  SPECIAL_2_OPCODE_Y1 = 3,
  SPECIAL_3_OPCODE_Y0 = 4,
  SPECIAL_3_OPCODE_Y1 = 4,
  SPECIAL_4_OPCODE_Y0 = 5,
  SPECIAL_4_OPCODE_Y1 = 5,
  SPECIAL_5_OPCODE_Y0 = 6,
  SPECIAL_5_OPCODE_Y1 = 6,
  SPECIAL_6_OPCODE_Y0 = 7,
  SPECIAL_7_OPCODE_Y0 = 8,
  SRAB_SPECIAL_0_OPCODE_X0 = 88,
  SRAB_SPECIAL_0_OPCODE_X1 = 58,
  SRAH_SPECIAL_0_OPCODE_X0 = 89,
  SRAH_SPECIAL_0_OPCODE_X1 = 59,
  SRAIB_SHUN_0_OPCODE_X0 = 8,
  SRAIB_SHUN_0_OPCODE_X1 = 8,
  SRAIH_SHUN_0_OPCODE_X0 = 9,
  SRAIH_SHUN_0_OPCODE_X1 = 9,
  SRAI_SHUN_0_OPCODE_X0 = 10,
  SRAI_SHUN_0_OPCODE_X1 = 10,
  SRAI_SHUN_0_OPCODE_Y0 = 4,
  SRAI_SHUN_0_OPCODE_Y1 = 4,
  SRA_SPECIAL_0_OPCODE_X0 = 90,
  SRA_SPECIAL_0_OPCODE_X1 = 60,
  SRA_SPECIAL_3_OPCODE_Y0 = 3,
  SRA_SPECIAL_3_OPCODE_Y1 = 3,
  SUBBS_U_SPECIAL_0_OPCODE_X0 = 100,
  SUBBS_U_SPECIAL_0_OPCODE_X1 = 70,
  SUBB_SPECIAL_0_OPCODE_X0 = 91,
  SUBB_SPECIAL_0_OPCODE_X1 = 61,
  SUBHS_SPECIAL_0_OPCODE_X0 = 101,
  SUBHS_SPECIAL_0_OPCODE_X1 = 71,
  SUBH_SPECIAL_0_OPCODE_X0 = 92,
  SUBH_SPECIAL_0_OPCODE_X1 = 62,
  SUBS_SPECIAL_0_OPCODE_X0 = 97,
  SUBS_SPECIAL_0_OPCODE_X1 = 67,
  SUB_SPECIAL_0_OPCODE_X0 = 93,
  SUB_SPECIAL_0_OPCODE_X1 = 63,
  SUB_SPECIAL_0_OPCODE_Y0 = 3,
  SUB_SPECIAL_0_OPCODE_Y1 = 3,
  SWADD_IMM_0_OPCODE_X1 = 30,
  SWINT0_UN_0_SHUN_0_OPCODE_X1 = 18,
  SWINT1_UN_0_SHUN_0_OPCODE_X1 = 19,
  SWINT2_UN_0_SHUN_0_OPCODE_X1 = 20,
  SWINT3_UN_0_SHUN_0_OPCODE_X1 = 21,
  SW_OPCODE_Y2 = 7,
  SW_SPECIAL_0_OPCODE_X1 = 64,
  TBLIDXB0_UN_0_SHUN_0_OPCODE_X0 = 8,
  TBLIDXB0_UN_0_SHUN_0_OPCODE_Y0 = 8,
  TBLIDXB1_UN_0_SHUN_0_OPCODE_X0 = 9,
  TBLIDXB1_UN_0_SHUN_0_OPCODE_Y0 = 9,
  TBLIDXB2_UN_0_SHUN_0_OPCODE_X0 = 10,
  TBLIDXB2_UN_0_SHUN_0_OPCODE_Y0 = 10,
  TBLIDXB3_UN_0_SHUN_0_OPCODE_X0 = 11,
  TBLIDXB3_UN_0_SHUN_0_OPCODE_Y0 = 11,
  TNS_UN_0_SHUN_0_OPCODE_X1 = 22,
  UN_0_SHUN_0_OPCODE_X0 = 11,
  UN_0_SHUN_0_OPCODE_X1 = 11,
  UN_0_SHUN_0_OPCODE_Y0 = 5,
  UN_0_SHUN_0_OPCODE_Y1 = 5,
  WH64_UN_0_SHUN_0_OPCODE_X1 = 23,
  XORI_IMM_0_OPCODE_X0 = 2,
  XORI_IMM_0_OPCODE_X1 = 21,
  XOR_SPECIAL_0_OPCODE_X0 = 94,
  XOR_SPECIAL_0_OPCODE_X1 = 65,
  XOR_SPECIAL_2_OPCODE_Y0 = 3,
  XOR_SPECIAL_2_OPCODE_Y1 = 3
};


#endif /* __ASSEMBLER__ */

#endif /* __ARCH_OPCODE_H__ */
