/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|*                                                                            *|
|* Target Register Enum Values                                                *|
|*                                                                            *|
|* Automatically generated file, do not edit!                                 *|
|*                                                                            *|
\*===----------------------------------------------------------------------===*/


#ifdef GET_REGINFO_ENUM
#undef GET_REGINFO_ENUM

namespace llvm {

class MCRegisterClass;
extern const MCRegisterClass MipsMCRegisterClasses[];

namespace Mips {
enum {
  NoRegister,
  AT = 1,
  DSPCCond = 2,
  DSPCarry = 3,
  DSPEFI = 4,
  DSPOutFlag = 5,
  DSPPos = 6,
  DSPSCount = 7,
  FP = 8,
  GP = 9,
  MSAAccess = 10,
  MSACSR = 11,
  MSAIR = 12,
  MSAMap = 13,
  MSAModify = 14,
  MSARequest = 15,
  MSASave = 16,
  MSAUnmap = 17,
  PC = 18,
  RA = 19,
  SP = 20,
  ZERO = 21,
  A0 = 22,
  A1 = 23,
  A2 = 24,
  A3 = 25,
  AC0 = 26,
  AC1 = 27,
  AC2 = 28,
  AC3 = 29,
  AT_64 = 30,
  COP00 = 31,
  COP01 = 32,
  COP02 = 33,
  COP03 = 34,
  COP04 = 35,
  COP05 = 36,
  COP06 = 37,
  COP07 = 38,
  COP08 = 39,
  COP09 = 40,
  COP20 = 41,
  COP21 = 42,
  COP22 = 43,
  COP23 = 44,
  COP24 = 45,
  COP25 = 46,
  COP26 = 47,
  COP27 = 48,
  COP28 = 49,
  COP29 = 50,
  COP30 = 51,
  COP31 = 52,
  COP32 = 53,
  COP33 = 54,
  COP34 = 55,
  COP35 = 56,
  COP36 = 57,
  COP37 = 58,
  COP38 = 59,
  COP39 = 60,
  COP010 = 61,
  COP011 = 62,
  COP012 = 63,
  COP013 = 64,
  COP014 = 65,
  COP015 = 66,
  COP016 = 67,
  COP017 = 68,
  COP018 = 69,
  COP019 = 70,
  COP020 = 71,
  COP021 = 72,
  COP022 = 73,
  COP023 = 74,
  COP024 = 75,
  COP025 = 76,
  COP026 = 77,
  COP027 = 78,
  COP028 = 79,
  COP029 = 80,
  COP030 = 81,
  COP031 = 82,
  COP210 = 83,
  COP211 = 84,
  COP212 = 85,
  COP213 = 86,
  COP214 = 87,
  COP215 = 88,
  COP216 = 89,
  COP217 = 90,
  COP218 = 91,
  COP219 = 92,
  COP220 = 93,
  COP221 = 94,
  COP222 = 95,
  COP223 = 96,
  COP224 = 97,
  COP225 = 98,
  COP226 = 99,
  COP227 = 100,
  COP228 = 101,
  COP229 = 102,
  COP230 = 103,
  COP231 = 104,
  COP310 = 105,
  COP311 = 106,
  COP312 = 107,
  COP313 = 108,
  COP314 = 109,
  COP315 = 110,
  COP316 = 111,
  COP317 = 112,
  COP318 = 113,
  COP319 = 114,
  COP320 = 115,
  COP321 = 116,
  COP322 = 117,
  COP323 = 118,
  COP324 = 119,
  COP325 = 120,
  COP326 = 121,
  COP327 = 122,
  COP328 = 123,
  COP329 = 124,
  COP330 = 125,
  COP331 = 126,
  D0 = 127,
  D1 = 128,
  D2 = 129,
  D3 = 130,
  D4 = 131,
  D5 = 132,
  D6 = 133,
  D7 = 134,
  D8 = 135,
  D9 = 136,
  D10 = 137,
  D11 = 138,
  D12 = 139,
  D13 = 140,
  D14 = 141,
  D15 = 142,
  DSPOutFlag20 = 143,
  DSPOutFlag21 = 144,
  DSPOutFlag22 = 145,
  DSPOutFlag23 = 146,
  F0 = 147,
  F1 = 148,
  F2 = 149,
  F3 = 150,
  F4 = 151,
  F5 = 152,
  F6 = 153,
  F7 = 154,
  F8 = 155,
  F9 = 156,
  F10 = 157,
  F11 = 158,
  F12 = 159,
  F13 = 160,
  F14 = 161,
  F15 = 162,
  F16 = 163,
  F17 = 164,
  F18 = 165,
  F19 = 166,
  F20 = 167,
  F21 = 168,
  F22 = 169,
  F23 = 170,
  F24 = 171,
  F25 = 172,
  F26 = 173,
  F27 = 174,
  F28 = 175,
  F29 = 176,
  F30 = 177,
  F31 = 178,
  FCC0 = 179,
  FCC1 = 180,
  FCC2 = 181,
  FCC3 = 182,
  FCC4 = 183,
  FCC5 = 184,
  FCC6 = 185,
  FCC7 = 186,
  FCR0 = 187,
  FCR1 = 188,
  FCR2 = 189,
  FCR3 = 190,
  FCR4 = 191,
  FCR5 = 192,
  FCR6 = 193,
  FCR7 = 194,
  FCR8 = 195,
  FCR9 = 196,
  FCR10 = 197,
  FCR11 = 198,
  FCR12 = 199,
  FCR13 = 200,
  FCR14 = 201,
  FCR15 = 202,
  FCR16 = 203,
  FCR17 = 204,
  FCR18 = 205,
  FCR19 = 206,
  FCR20 = 207,
  FCR21 = 208,
  FCR22 = 209,
  FCR23 = 210,
  FCR24 = 211,
  FCR25 = 212,
  FCR26 = 213,
  FCR27 = 214,
  FCR28 = 215,
  FCR29 = 216,
  FCR30 = 217,
  FCR31 = 218,
  FP_64 = 219,
  F_HI0 = 220,
  F_HI1 = 221,
  F_HI2 = 222,
  F_HI3 = 223,
  F_HI4 = 224,
  F_HI5 = 225,
  F_HI6 = 226,
  F_HI7 = 227,
  F_HI8 = 228,
  F_HI9 = 229,
  F_HI10 = 230,
  F_HI11 = 231,
  F_HI12 = 232,
  F_HI13 = 233,
  F_HI14 = 234,
  F_HI15 = 235,
  F_HI16 = 236,
  F_HI17 = 237,
  F_HI18 = 238,
  F_HI19 = 239,
  F_HI20 = 240,
  F_HI21 = 241,
  F_HI22 = 242,
  F_HI23 = 243,
  F_HI24 = 244,
  F_HI25 = 245,
  F_HI26 = 246,
  F_HI27 = 247,
  F_HI28 = 248,
  F_HI29 = 249,
  F_HI30 = 250,
  F_HI31 = 251,
  GP_64 = 252,
  HI0 = 253,
  HI1 = 254,
  HI2 = 255,
  HI3 = 256,
  HWR0 = 257,
  HWR1 = 258,
  HWR2 = 259,
  HWR3 = 260,
  HWR4 = 261,
  HWR5 = 262,
  HWR6 = 263,
  HWR7 = 264,
  HWR8 = 265,
  HWR9 = 266,
  HWR10 = 267,
  HWR11 = 268,
  HWR12 = 269,
  HWR13 = 270,
  HWR14 = 271,
  HWR15 = 272,
  HWR16 = 273,
  HWR17 = 274,
  HWR18 = 275,
  HWR19 = 276,
  HWR20 = 277,
  HWR21 = 278,
  HWR22 = 279,
  HWR23 = 280,
  HWR24 = 281,
  HWR25 = 282,
  HWR26 = 283,
  HWR27 = 284,
  HWR28 = 285,
  HWR29 = 286,
  HWR30 = 287,
  HWR31 = 288,
  K0 = 289,
  K1 = 290,
  LO0 = 291,
  LO1 = 292,
  LO2 = 293,
  LO3 = 294,
  MPL0 = 295,
  MPL1 = 296,
  MPL2 = 297,
  P0 = 298,
  P1 = 299,
  P2 = 300,
  RA_64 = 301,
  S0 = 302,
  S1 = 303,
  S2 = 304,
  S3 = 305,
  S4 = 306,
  S5 = 307,
  S6 = 308,
  S7 = 309,
  SP_64 = 310,
  T0 = 311,
  T1 = 312,
  T2 = 313,
  T3 = 314,
  T4 = 315,
  T5 = 316,
  T6 = 317,
  T7 = 318,
  T8 = 319,
  T9 = 320,
  V0 = 321,
  V1 = 322,
  W0 = 323,
  W1 = 324,
  W2 = 325,
  W3 = 326,
  W4 = 327,
  W5 = 328,
  W6 = 329,
  W7 = 330,
  W8 = 331,
  W9 = 332,
  W10 = 333,
  W11 = 334,
  W12 = 335,
  W13 = 336,
  W14 = 337,
  W15 = 338,
  W16 = 339,
  W17 = 340,
  W18 = 341,
  W19 = 342,
  W20 = 343,
  W21 = 344,
  W22 = 345,
  W23 = 346,
  W24 = 347,
  W25 = 348,
  W26 = 349,
  W27 = 350,
  W28 = 351,
  W29 = 352,
  W30 = 353,
  W31 = 354,
  ZERO_64 = 355,
  A0_64 = 356,
  A1_64 = 357,
  A2_64 = 358,
  A3_64 = 359,
  AC0_64 = 360,
  D0_64 = 361,
  D1_64 = 362,
  D2_64 = 363,
  D3_64 = 364,
  D4_64 = 365,
  D5_64 = 366,
  D6_64 = 367,
  D7_64 = 368,
  D8_64 = 369,
  D9_64 = 370,
  D10_64 = 371,
  D11_64 = 372,
  D12_64 = 373,
  D13_64 = 374,
  D14_64 = 375,
  D15_64 = 376,
  D16_64 = 377,
  D17_64 = 378,
  D18_64 = 379,
  D19_64 = 380,
  D20_64 = 381,
  D21_64 = 382,
  D22_64 = 383,
  D23_64 = 384,
  D24_64 = 385,
  D25_64 = 386,
  D26_64 = 387,
  D27_64 = 388,
  D28_64 = 389,
  D29_64 = 390,
  D30_64 = 391,
  D31_64 = 392,
  DSPOutFlag16_19 = 393,
  HI0_64 = 394,
  K0_64 = 395,
  K1_64 = 396,
  LO0_64 = 397,
  S0_64 = 398,
  S1_64 = 399,
  S2_64 = 400,
  S3_64 = 401,
  S4_64 = 402,
  S5_64 = 403,
  S6_64 = 404,
  S7_64 = 405,
  T0_64 = 406,
  T1_64 = 407,
  T2_64 = 408,
  T3_64 = 409,
  T4_64 = 410,
  T5_64 = 411,
  T6_64 = 412,
  T7_64 = 413,
  T8_64 = 414,
  T9_64 = 415,
  V0_64 = 416,
  V1_64 = 417,
  NUM_TARGET_REGS 	// 418
};
} // end namespace Mips

// Register classes

namespace Mips {
enum {
  MSA128F16RegClassID = 0,
  MSA128F16_with_sub_64_in_OddSPRegClassID = 1,
  OddSPRegClassID = 2,
  CCRRegClassID = 3,
  COP0RegClassID = 4,
  COP2RegClassID = 5,
  COP3RegClassID = 6,
  DSPRRegClassID = 7,
  FGR32RegClassID = 8,
  FGRCCRegClassID = 9,
  FGRH32RegClassID = 10,
  GPR32RegClassID = 11,
  HWRegsRegClassID = 12,
  GPR32NONZERORegClassID = 13,
  OddSP_with_sub_hiRegClassID = 14,
  FGR32_and_OddSPRegClassID = 15,
  FGRH32_and_OddSPRegClassID = 16,
  OddSP_with_sub_hi_with_sub_hi_in_FGRH32RegClassID = 17,
  CPU16RegsPlusSPRegClassID = 18,
  CPU16RegsRegClassID = 19,
  FCCRegClassID = 20,
  GPRMM16RegClassID = 21,
  GPRMM16MovePRegClassID = 22,
  GPRMM16ZeroRegClassID = 23,
  MSACtrlRegClassID = 24,
  OddSP_with_sub_hi_with_sub_hi_in_FGR32RegClassID = 25,
  CPU16Regs_and_GPRMM16ZeroRegClassID = 26,
  GPR32NONZERO_and_GPRMM16MovePRegClassID = 27,
  GPRMM16MovePPairSecondRegClassID = 28,
  CPU16Regs_and_GPRMM16MovePRegClassID = 29,
  GPRMM16MoveP_and_GPRMM16ZeroRegClassID = 30,
  HI32DSPRegClassID = 31,
  LO32DSPRegClassID = 32,
  CPU16Regs_and_GPRMM16MovePPairSecondRegClassID = 33,
  GPRMM16MovePPairFirstRegClassID = 34,
  GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroRegClassID = 35,
  GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondRegClassID = 36,
  CPURARegRegClassID = 37,
  CPUSPRegRegClassID = 38,
  DSPCCRegClassID = 39,
  GP32RegClassID = 40,
  GPR32ZERORegClassID = 41,
  HI32RegClassID = 42,
  LO32RegClassID = 43,
  SP32RegClassID = 44,
  FGR64RegClassID = 45,
  GPR64RegClassID = 46,
  GPR64_with_sub_32_in_GPR32NONZERORegClassID = 47,
  AFGR64RegClassID = 48,
  FGR64_and_OddSPRegClassID = 49,
  GPR64_with_sub_32_in_CPU16RegsPlusSPRegClassID = 50,
  AFGR64_and_OddSPRegClassID = 51,
  GPR64_with_sub_32_in_CPU16RegsRegClassID = 52,
  GPR64_with_sub_32_in_GPRMM16MovePRegClassID = 53,
  GPR64_with_sub_32_in_GPRMM16ZeroRegClassID = 54,
  GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16ZeroRegClassID = 55,
  GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MovePRegClassID = 56,
  GPR64_with_sub_32_in_GPRMM16MovePPairSecondRegClassID = 57,
  ACC64DSPRegClassID = 58,
  GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePRegClassID = 59,
  GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16ZeroRegClassID = 60,
  GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePPairSecondRegClassID = 61,
  GPR64_with_sub_32_in_GPRMM16MovePPairFirstRegClassID = 62,
  GPR64_with_sub_32_in_GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroRegClassID = 63,
  OCTEON_MPLRegClassID = 64,
  OCTEON_PRegClassID = 65,
  GPR64_with_sub_32_in_GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondRegClassID = 66,
  ACC64RegClassID = 67,
  GP64RegClassID = 68,
  GPR64_with_sub_32_in_CPURARegRegClassID = 69,
  GPR64_with_sub_32_in_GPR32ZERORegClassID = 70,
  HI64RegClassID = 71,
  LO64RegClassID = 72,
  SP64RegClassID = 73,
  MSA128BRegClassID = 74,
  MSA128DRegClassID = 75,
  MSA128HRegClassID = 76,
  MSA128WRegClassID = 77,
  MSA128B_with_sub_64_in_OddSPRegClassID = 78,
  MSA128WEvensRegClassID = 79,
  ACC128RegClassID = 80,

  };
} // end namespace Mips


// Subregister indices

namespace Mips {
enum {
  NoSubRegister,
  sub_32,	// 1
  sub_64,	// 2
  sub_dsp16_19,	// 3
  sub_dsp20,	// 4
  sub_dsp21,	// 5
  sub_dsp22,	// 6
  sub_dsp23,	// 7
  sub_hi,	// 8
  sub_lo,	// 9
  sub_hi_then_sub_32,	// 10
  sub_32_sub_hi_then_sub_32,	// 11
  NUM_TARGET_SUBREGS
};
} // end namespace Mips

} // end namespace llvm

#endif // GET_REGINFO_ENUM

/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|*                                                                            *|
|* MC Register Information                                                    *|
|*                                                                            *|
|* Automatically generated file, do not edit!                                 *|
|*                                                                            *|
\*===----------------------------------------------------------------------===*/


#ifdef GET_REGINFO_MC_DESC
#undef GET_REGINFO_MC_DESC

namespace llvm {

extern const MCPhysReg MipsRegDiffLists[] = {
  /* 0 */ 0, 0,
  /* 2 */ 4, 1, 1, 1, 1, 0,
  /* 8 */ 388, 65286, 1, 1, 1, 0,
  /* 14 */ 20, 1, 0,
  /* 17 */ 21, 1, 0,
  /* 20 */ 22, 1, 0,
  /* 23 */ 23, 1, 0,
  /* 26 */ 24, 1, 0,
  /* 29 */ 25, 1, 0,
  /* 32 */ 26, 1, 0,
  /* 35 */ 27, 1, 0,
  /* 38 */ 28, 1, 0,
  /* 41 */ 29, 1, 0,
  /* 44 */ 30, 1, 0,
  /* 47 */ 31, 1, 0,
  /* 50 */ 32, 1, 0,
  /* 53 */ 33, 1, 0,
  /* 56 */ 34, 1, 0,
  /* 59 */ 35, 1, 0,
  /* 62 */ 65415, 1, 0,
  /* 65 */ 65513, 1, 0,
  /* 68 */ 3, 0,
  /* 70 */ 4, 0,
  /* 72 */ 6, 0,
  /* 74 */ 11, 0,
  /* 76 */ 12, 0,
  /* 78 */ 22, 0,
  /* 80 */ 23, 0,
  /* 82 */ 29, 0,
  /* 84 */ 30, 0,
  /* 86 */ 65308, 72, 0,
  /* 89 */ 65346, 72, 0,
  /* 92 */ 38, 65322, 73, 0,
  /* 96 */ 95, 0,
  /* 98 */ 96, 0,
  /* 100 */ 106, 0,
  /* 102 */ 211, 0,
  /* 104 */ 243, 0,
  /* 106 */ 282, 0,
  /* 108 */ 290, 0,
  /* 110 */ 334, 0,
  /* 112 */ 64983, 0,
  /* 114 */ 65060, 0,
  /* 116 */ 65148, 0,
  /* 118 */ 65202, 0,
  /* 120 */ 65205, 0,
  /* 122 */ 65246, 0,
  /* 124 */ 65254, 0,
  /* 126 */ 65271, 0,
  /* 128 */ 65293, 0,
  /* 130 */ 37, 65430, 103, 65395, 65309, 0,
  /* 136 */ 65325, 0,
  /* 138 */ 65395, 0,
  /* 140 */ 65396, 0,
  /* 142 */ 65397, 0,
  /* 144 */ 65398, 0,
  /* 146 */ 65410, 0,
  /* 148 */ 65415, 0,
  /* 150 */ 65430, 0,
  /* 152 */ 65440, 0,
  /* 154 */ 65441, 0,
  /* 156 */ 141, 65498, 0,
  /* 159 */ 65516, 234, 65498, 0,
  /* 163 */ 65515, 235, 65498, 0,
  /* 167 */ 65514, 236, 65498, 0,
  /* 171 */ 65513, 237, 65498, 0,
  /* 175 */ 65512, 238, 65498, 0,
  /* 179 */ 65511, 239, 65498, 0,
  /* 183 */ 65510, 240, 65498, 0,
  /* 187 */ 65509, 241, 65498, 0,
  /* 191 */ 65508, 242, 65498, 0,
  /* 195 */ 65507, 243, 65498, 0,
  /* 199 */ 65506, 244, 65498, 0,
  /* 203 */ 65505, 245, 65498, 0,
  /* 207 */ 65504, 246, 65498, 0,
  /* 211 */ 65503, 247, 65498, 0,
  /* 215 */ 65502, 248, 65498, 0,
  /* 219 */ 65501, 249, 65498, 0,
  /* 223 */ 65500, 250, 65498, 0,
  /* 227 */ 265, 65498, 0,
  /* 230 */ 65271, 371, 65499, 0,
  /* 234 */ 65309, 368, 65502, 0,
  /* 238 */ 65507, 0,
  /* 240 */ 65510, 0,
  /* 242 */ 65511, 0,
  /* 244 */ 65512, 0,
  /* 246 */ 65516, 0,
  /* 248 */ 65521, 0,
  /* 250 */ 65522, 0,
  /* 252 */ 65535, 0,
};

extern const LaneBitmask MipsLaneMaskLists[] = {
  /* 0 */ LaneBitmask(0x00000000), LaneBitmask::getAll(),
  /* 2 */ LaneBitmask(0x00000001), LaneBitmask::getAll(),
  /* 4 */ LaneBitmask(0x00000002), LaneBitmask(0x00000004), LaneBitmask(0x00000008), LaneBitmask(0x00000010), LaneBitmask(0x00000020), LaneBitmask::getAll(),
  /* 10 */ LaneBitmask(0x00000001), LaneBitmask(0x00000040), LaneBitmask::getAll(),
};

extern const uint16_t MipsSubRegIdxLists[] = {
  /* 0 */ 1, 0,
  /* 2 */ 3, 4, 5, 6, 7, 0,
  /* 8 */ 2, 9, 8, 0,
  /* 12 */ 9, 1, 8, 10, 11, 0,
};

extern const MCRegisterInfo::SubRegCoveredBits MipsSubRegIdxRanges[] = {
  { 65535, 65535 },
  { 0, 32 },	// sub_32
  { 0, 64 },	// sub_64
  { 16, 4 },	// sub_dsp16_19
  { 20, 1 },	// sub_dsp20
  { 21, 1 },	// sub_dsp21
  { 22, 1 },	// sub_dsp22
  { 23, 1 },	// sub_dsp23
  { 32, 32 },	// sub_hi
  { 0, 32 },	// sub_lo
  { 32, 32 },	// sub_hi_then_sub_32
  { 0, 64 },	// sub_32_sub_hi_then_sub_32
};

extern const char MipsRegStrings[] = {
  /* 0 */ 'C', 'O', 'P', '0', '0', 0,
  /* 6 */ 'C', 'O', 'P', '0', '1', '0', 0,
  /* 13 */ 'C', 'O', 'P', '2', '1', '0', 0,
  /* 20 */ 'C', 'O', 'P', '3', '1', '0', 0,
  /* 27 */ 'D', '1', '0', 0,
  /* 31 */ 'F', '1', '0', 0,
  /* 35 */ 'F', '_', 'H', 'I', '1', '0', 0,
  /* 42 */ 'F', 'C', 'R', '1', '0', 0,
  /* 48 */ 'H', 'W', 'R', '1', '0', 0,
  /* 54 */ 'W', '1', '0', 0,
  /* 58 */ 'C', 'O', 'P', '0', '2', '0', 0,
  /* 65 */ 'C', 'O', 'P', '2', '2', '0', 0,
  /* 72 */ 'C', 'O', 'P', '3', '2', '0', 0,
  /* 79 */ 'F', '2', '0', 0,
  /* 83 */ 'F', '_', 'H', 'I', '2', '0', 0,
  /* 90 */ 'C', 'O', 'P', '2', '0', 0,
  /* 96 */ 'F', 'C', 'R', '2', '0', 0,
  /* 102 */ 'H', 'W', 'R', '2', '0', 0,
  /* 108 */ 'W', '2', '0', 0,
  /* 112 */ 'D', 'S', 'P', 'O', 'u', 't', 'F', 'l', 'a', 'g', '2', '0', 0,
  /* 125 */ 'C', 'O', 'P', '0', '3', '0', 0,
  /* 132 */ 'C', 'O', 'P', '2', '3', '0', 0,
  /* 139 */ 'C', 'O', 'P', '3', '3', '0', 0,
  /* 146 */ 'F', '3', '0', 0,
  /* 150 */ 'F', '_', 'H', 'I', '3', '0', 0,
  /* 157 */ 'C', 'O', 'P', '3', '0', 0,
  /* 163 */ 'F', 'C', 'R', '3', '0', 0,
  /* 169 */ 'H', 'W', 'R', '3', '0', 0,
  /* 175 */ 'W', '3', '0', 0,
  /* 179 */ 'A', '0', 0,
  /* 182 */ 'A', 'C', '0', 0,
  /* 186 */ 'F', 'C', 'C', '0', 0,
  /* 191 */ 'D', '0', 0,
  /* 194 */ 'F', '0', 0,
  /* 197 */ 'F', '_', 'H', 'I', '0', 0,
  /* 203 */ 'K', '0', 0,
  /* 206 */ 'M', 'P', 'L', '0', 0,
  /* 211 */ 'L', 'O', '0', 0,
  /* 215 */ 'P', '0', 0,
  /* 218 */ 'F', 'C', 'R', '0', 0,
  /* 223 */ 'H', 'W', 'R', '0', 0,
  /* 228 */ 'S', '0', 0,
  /* 231 */ 'T', '0', 0,
  /* 234 */ 'V', '0', 0,
  /* 237 */ 'W', '0', 0,
  /* 240 */ 'C', 'O', 'P', '0', '1', 0,
  /* 246 */ 'C', 'O', 'P', '0', '1', '1', 0,
  /* 253 */ 'C', 'O', 'P', '2', '1', '1', 0,
  /* 260 */ 'C', 'O', 'P', '3', '1', '1', 0,
  /* 267 */ 'D', '1', '1', 0,
  /* 271 */ 'F', '1', '1', 0,
  /* 275 */ 'F', '_', 'H', 'I', '1', '1', 0,
  /* 282 */ 'F', 'C', 'R', '1', '1', 0,
  /* 288 */ 'H', 'W', 'R', '1', '1', 0,
  /* 294 */ 'W', '1', '1', 0,
  /* 298 */ 'C', 'O', 'P', '0', '2', '1', 0,
  /* 305 */ 'C', 'O', 'P', '2', '2', '1', 0,
  /* 312 */ 'C', 'O', 'P', '3', '2', '1', 0,
  /* 319 */ 'F', '2', '1', 0,
  /* 323 */ 'F', '_', 'H', 'I', '2', '1', 0,
  /* 330 */ 'C', 'O', 'P', '2', '1', 0,
  /* 336 */ 'F', 'C', 'R', '2', '1', 0,
  /* 342 */ 'H', 'W', 'R', '2', '1', 0,
  /* 348 */ 'W', '2', '1', 0,
  /* 352 */ 'D', 'S', 'P', 'O', 'u', 't', 'F', 'l', 'a', 'g', '2', '1', 0,
  /* 365 */ 'C', 'O', 'P', '0', '3', '1', 0,
  /* 372 */ 'C', 'O', 'P', '2', '3', '1', 0,
  /* 379 */ 'C', 'O', 'P', '3', '3', '1', 0,
  /* 386 */ 'F', '3', '1', 0,
  /* 390 */ 'F', '_', 'H', 'I', '3', '1', 0,
  /* 397 */ 'C', 'O', 'P', '3', '1', 0,
  /* 403 */ 'F', 'C', 'R', '3', '1', 0,
  /* 409 */ 'H', 'W', 'R', '3', '1', 0,
  /* 415 */ 'W', '3', '1', 0,
  /* 419 */ 'A', '1', 0,
  /* 422 */ 'A', 'C', '1', 0,
  /* 426 */ 'F', 'C', 'C', '1', 0,
  /* 431 */ 'D', '1', 0,
  /* 434 */ 'F', '1', 0,
  /* 437 */ 'F', '_', 'H', 'I', '1', 0,
  /* 443 */ 'K', '1', 0,
  /* 446 */ 'M', 'P', 'L', '1', 0,
  /* 451 */ 'L', 'O', '1', 0,
  /* 455 */ 'P', '1', 0,
  /* 458 */ 'F', 'C', 'R', '1', 0,
  /* 463 */ 'H', 'W', 'R', '1', 0,
  /* 468 */ 'S', '1', 0,
  /* 471 */ 'T', '1', 0,
  /* 474 */ 'V', '1', 0,
  /* 477 */ 'W', '1', 0,
  /* 480 */ 'C', 'O', 'P', '0', '2', 0,
  /* 486 */ 'C', 'O', 'P', '0', '1', '2', 0,
  /* 493 */ 'C', 'O', 'P', '2', '1', '2', 0,
  /* 500 */ 'C', 'O', 'P', '3', '1', '2', 0,
  /* 507 */ 'D', '1', '2', 0,
  /* 511 */ 'F', '1', '2', 0,
  /* 515 */ 'F', '_', 'H', 'I', '1', '2', 0,
  /* 522 */ 'F', 'C', 'R', '1', '2', 0,
  /* 528 */ 'H', 'W', 'R', '1', '2', 0,
  /* 534 */ 'W', '1', '2', 0,
  /* 538 */ 'C', 'O', 'P', '0', '2', '2', 0,
  /* 545 */ 'C', 'O', 'P', '2', '2', '2', 0,
  /* 552 */ 'C', 'O', 'P', '3', '2', '2', 0,
  /* 559 */ 'F', '2', '2', 0,
  /* 563 */ 'F', '_', 'H', 'I', '2', '2', 0,
  /* 570 */ 'C', 'O', 'P', '2', '2', 0,
  /* 576 */ 'F', 'C', 'R', '2', '2', 0,
  /* 582 */ 'H', 'W', 'R', '2', '2', 0,
  /* 588 */ 'W', '2', '2', 0,
  /* 592 */ 'D', 'S', 'P', 'O', 'u', 't', 'F', 'l', 'a', 'g', '2', '2', 0,
  /* 605 */ 'C', 'O', 'P', '3', '2', 0,
  /* 611 */ 'A', '2', 0,
  /* 614 */ 'A', 'C', '2', 0,
  /* 618 */ 'F', 'C', 'C', '2', 0,
  /* 623 */ 'D', '2', 0,
  /* 626 */ 'F', '2', 0,
  /* 629 */ 'F', '_', 'H', 'I', '2', 0,
  /* 635 */ 'M', 'P', 'L', '2', 0,
  /* 640 */ 'L', 'O', '2', 0,
  /* 644 */ 'P', '2', 0,
  /* 647 */ 'F', 'C', 'R', '2', 0,
  /* 652 */ 'H', 'W', 'R', '2', 0,
  /* 657 */ 'S', '2', 0,
  /* 660 */ 'T', '2', 0,
  /* 663 */ 'W', '2', 0,
  /* 666 */ 'C', 'O', 'P', '0', '3', 0,
  /* 672 */ 'C', 'O', 'P', '0', '1', '3', 0,
  /* 679 */ 'C', 'O', 'P', '2', '1', '3', 0,
  /* 686 */ 'C', 'O', 'P', '3', '1', '3', 0,
  /* 693 */ 'D', '1', '3', 0,
  /* 697 */ 'F', '1', '3', 0,
  /* 701 */ 'F', '_', 'H', 'I', '1', '3', 0,
  /* 708 */ 'F', 'C', 'R', '1', '3', 0,
  /* 714 */ 'H', 'W', 'R', '1', '3', 0,
  /* 720 */ 'W', '1', '3', 0,
  /* 724 */ 'C', 'O', 'P', '0', '2', '3', 0,
  /* 731 */ 'C', 'O', 'P', '2', '2', '3', 0,
  /* 738 */ 'C', 'O', 'P', '3', '2', '3', 0,
  /* 745 */ 'F', '2', '3', 0,
  /* 749 */ 'F', '_', 'H', 'I', '2', '3', 0,
  /* 756 */ 'C', 'O', 'P', '2', '3', 0,
  /* 762 */ 'F', 'C', 'R', '2', '3', 0,
  /* 768 */ 'H', 'W', 'R', '2', '3', 0,
  /* 774 */ 'W', '2', '3', 0,
  /* 778 */ 'D', 'S', 'P', 'O', 'u', 't', 'F', 'l', 'a', 'g', '2', '3', 0,
  /* 791 */ 'C', 'O', 'P', '3', '3', 0,
  /* 797 */ 'A', '3', 0,
  /* 800 */ 'A', 'C', '3', 0,
  /* 804 */ 'F', 'C', 'C', '3', 0,
  /* 809 */ 'D', '3', 0,
  /* 812 */ 'F', '3', 0,
  /* 815 */ 'F', '_', 'H', 'I', '3', 0,
  /* 821 */ 'L', 'O', '3', 0,
  /* 825 */ 'F', 'C', 'R', '3', 0,
  /* 830 */ 'H', 'W', 'R', '3', 0,
  /* 835 */ 'S', '3', 0,
  /* 838 */ 'T', '3', 0,
  /* 841 */ 'W', '3', 0,
  /* 844 */ 'C', 'O', 'P', '0', '4', 0,
  /* 850 */ 'C', 'O', 'P', '0', '1', '4', 0,
  /* 857 */ 'C', 'O', 'P', '2', '1', '4', 0,
  /* 864 */ 'C', 'O', 'P', '3', '1', '4', 0,
  /* 871 */ 'D', '1', '4', 0,
  /* 875 */ 'F', '1', '4', 0,
  /* 879 */ 'F', '_', 'H', 'I', '1', '4', 0,
  /* 886 */ 'F', 'C', 'R', '1', '4', 0,
  /* 892 */ 'H', 'W', 'R', '1', '4', 0,
  /* 898 */ 'W', '1', '4', 0,
  /* 902 */ 'C', 'O', 'P', '0', '2', '4', 0,
  /* 909 */ 'C', 'O', 'P', '2', '2', '4', 0,
  /* 916 */ 'C', 'O', 'P', '3', '2', '4', 0,
  /* 923 */ 'F', '2', '4', 0,
  /* 927 */ 'F', '_', 'H', 'I', '2', '4', 0,
  /* 934 */ 'C', 'O', 'P', '2', '4', 0,
  /* 940 */ 'F', 'C', 'R', '2', '4', 0,
  /* 946 */ 'H', 'W', 'R', '2', '4', 0,
  /* 952 */ 'W', '2', '4', 0,
  /* 956 */ 'C', 'O', 'P', '3', '4', 0,
  /* 962 */ 'D', '1', '0', '_', '6', '4', 0,
  /* 969 */ 'D', '2', '0', '_', '6', '4', 0,
  /* 976 */ 'D', '3', '0', '_', '6', '4', 0,
  /* 983 */ 'A', '0', '_', '6', '4', 0,
  /* 989 */ 'A', 'C', '0', '_', '6', '4', 0,
  /* 996 */ 'D', '0', '_', '6', '4', 0,
  /* 1002 */ 'H', 'I', '0', '_', '6', '4', 0,
  /* 1009 */ 'K', '0', '_', '6', '4', 0,
  /* 1015 */ 'L', 'O', '0', '_', '6', '4', 0,
  /* 1022 */ 'S', '0', '_', '6', '4', 0,
  /* 1028 */ 'T', '0', '_', '6', '4', 0,
  /* 1034 */ 'V', '0', '_', '6', '4', 0,
  /* 1040 */ 'D', '1', '1', '_', '6', '4', 0,
  /* 1047 */ 'D', '2', '1', '_', '6', '4', 0,
  /* 1054 */ 'D', '3', '1', '_', '6', '4', 0,
  /* 1061 */ 'A', '1', '_', '6', '4', 0,
  /* 1067 */ 'D', '1', '_', '6', '4', 0,
  /* 1073 */ 'K', '1', '_', '6', '4', 0,
  /* 1079 */ 'S', '1', '_', '6', '4', 0,
  /* 1085 */ 'T', '1', '_', '6', '4', 0,
  /* 1091 */ 'V', '1', '_', '6', '4', 0,
  /* 1097 */ 'D', '1', '2', '_', '6', '4', 0,
  /* 1104 */ 'D', '2', '2', '_', '6', '4', 0,
  /* 1111 */ 'A', '2', '_', '6', '4', 0,
  /* 1117 */ 'D', '2', '_', '6', '4', 0,
  /* 1123 */ 'S', '2', '_', '6', '4', 0,
  /* 1129 */ 'T', '2', '_', '6', '4', 0,
  /* 1135 */ 'D', '1', '3', '_', '6', '4', 0,
  /* 1142 */ 'D', '2', '3', '_', '6', '4', 0,
  /* 1149 */ 'A', '3', '_', '6', '4', 0,
  /* 1155 */ 'D', '3', '_', '6', '4', 0,
  /* 1161 */ 'S', '3', '_', '6', '4', 0,
  /* 1167 */ 'T', '3', '_', '6', '4', 0,
  /* 1173 */ 'D', '1', '4', '_', '6', '4', 0,
  /* 1180 */ 'D', '2', '4', '_', '6', '4', 0,
  /* 1187 */ 'D', '4', '_', '6', '4', 0,
  /* 1193 */ 'S', '4', '_', '6', '4', 0,
  /* 1199 */ 'T', '4', '_', '6', '4', 0,
  /* 1205 */ 'D', '1', '5', '_', '6', '4', 0,
  /* 1212 */ 'D', '2', '5', '_', '6', '4', 0,
  /* 1219 */ 'D', '5', '_', '6', '4', 0,
  /* 1225 */ 'S', '5', '_', '6', '4', 0,
  /* 1231 */ 'T', '5', '_', '6', '4', 0,
  /* 1237 */ 'D', '1', '6', '_', '6', '4', 0,
  /* 1244 */ 'D', '2', '6', '_', '6', '4', 0,
  /* 1251 */ 'D', '6', '_', '6', '4', 0,
  /* 1257 */ 'S', '6', '_', '6', '4', 0,
  /* 1263 */ 'T', '6', '_', '6', '4', 0,
  /* 1269 */ 'D', '1', '7', '_', '6', '4', 0,
  /* 1276 */ 'D', '2', '7', '_', '6', '4', 0,
  /* 1283 */ 'D', '7', '_', '6', '4', 0,
  /* 1289 */ 'S', '7', '_', '6', '4', 0,
  /* 1295 */ 'T', '7', '_', '6', '4', 0,
  /* 1301 */ 'D', '1', '8', '_', '6', '4', 0,
  /* 1308 */ 'D', '2', '8', '_', '6', '4', 0,
  /* 1315 */ 'D', '8', '_', '6', '4', 0,
  /* 1321 */ 'T', '8', '_', '6', '4', 0,
  /* 1327 */ 'D', '1', '9', '_', '6', '4', 0,
  /* 1334 */ 'D', '2', '9', '_', '6', '4', 0,
  /* 1341 */ 'D', '9', '_', '6', '4', 0,
  /* 1347 */ 'T', '9', '_', '6', '4', 0,
  /* 1353 */ 'R', 'A', '_', '6', '4', 0,
  /* 1359 */ 'Z', 'E', 'R', 'O', '_', '6', '4', 0,
  /* 1367 */ 'F', 'P', '_', '6', '4', 0,
  /* 1373 */ 'G', 'P', '_', '6', '4', 0,
  /* 1379 */ 'S', 'P', '_', '6', '4', 0,
  /* 1385 */ 'A', 'T', '_', '6', '4', 0,
  /* 1391 */ 'F', 'C', 'C', '4', 0,
  /* 1396 */ 'D', '4', 0,
  /* 1399 */ 'F', '4', 0,
  /* 1402 */ 'F', '_', 'H', 'I', '4', 0,
  /* 1408 */ 'F', 'C', 'R', '4', 0,
  /* 1413 */ 'H', 'W', 'R', '4', 0,
  /* 1418 */ 'S', '4', 0,
  /* 1421 */ 'T', '4', 0,
  /* 1424 */ 'W', '4', 0,
  /* 1427 */ 'C', 'O', 'P', '0', '5', 0,
  /* 1433 */ 'C', 'O', 'P', '0', '1', '5', 0,
  /* 1440 */ 'C', 'O', 'P', '2', '1', '5', 0,
  /* 1447 */ 'C', 'O', 'P', '3', '1', '5', 0,
  /* 1454 */ 'D', '1', '5', 0,
  /* 1458 */ 'F', '1', '5', 0,
  /* 1462 */ 'F', '_', 'H', 'I', '1', '5', 0,
  /* 1469 */ 'F', 'C', 'R', '1', '5', 0,
  /* 1475 */ 'H', 'W', 'R', '1', '5', 0,
  /* 1481 */ 'W', '1', '5', 0,
  /* 1485 */ 'C', 'O', 'P', '0', '2', '5', 0,
  /* 1492 */ 'C', 'O', 'P', '2', '2', '5', 0,
  /* 1499 */ 'C', 'O', 'P', '3', '2', '5', 0,
  /* 1506 */ 'F', '2', '5', 0,
  /* 1510 */ 'F', '_', 'H', 'I', '2', '5', 0,
  /* 1517 */ 'C', 'O', 'P', '2', '5', 0,
  /* 1523 */ 'F', 'C', 'R', '2', '5', 0,
  /* 1529 */ 'H', 'W', 'R', '2', '5', 0,
  /* 1535 */ 'W', '2', '5', 0,
  /* 1539 */ 'C', 'O', 'P', '3', '5', 0,
  /* 1545 */ 'F', 'C', 'C', '5', 0,
  /* 1550 */ 'D', '5', 0,
  /* 1553 */ 'F', '5', 0,
  /* 1556 */ 'F', '_', 'H', 'I', '5', 0,
  /* 1562 */ 'F', 'C', 'R', '5', 0,
  /* 1567 */ 'H', 'W', 'R', '5', 0,
  /* 1572 */ 'S', '5', 0,
  /* 1575 */ 'T', '5', 0,
  /* 1578 */ 'W', '5', 0,
  /* 1581 */ 'C', 'O', 'P', '0', '6', 0,
  /* 1587 */ 'C', 'O', 'P', '0', '1', '6', 0,
  /* 1594 */ 'C', 'O', 'P', '2', '1', '6', 0,
  /* 1601 */ 'C', 'O', 'P', '3', '1', '6', 0,
  /* 1608 */ 'F', '1', '6', 0,
  /* 1612 */ 'F', '_', 'H', 'I', '1', '6', 0,
  /* 1619 */ 'F', 'C', 'R', '1', '6', 0,
  /* 1625 */ 'H', 'W', 'R', '1', '6', 0,
  /* 1631 */ 'W', '1', '6', 0,
  /* 1635 */ 'C', 'O', 'P', '0', '2', '6', 0,
  /* 1642 */ 'C', 'O', 'P', '2', '2', '6', 0,
  /* 1649 */ 'C', 'O', 'P', '3', '2', '6', 0,
  /* 1656 */ 'F', '2', '6', 0,
  /* 1660 */ 'F', '_', 'H', 'I', '2', '6', 0,
  /* 1667 */ 'C', 'O', 'P', '2', '6', 0,
  /* 1673 */ 'F', 'C', 'R', '2', '6', 0,
  /* 1679 */ 'H', 'W', 'R', '2', '6', 0,
  /* 1685 */ 'W', '2', '6', 0,
  /* 1689 */ 'C', 'O', 'P', '3', '6', 0,
  /* 1695 */ 'F', 'C', 'C', '6', 0,
  /* 1700 */ 'D', '6', 0,
  /* 1703 */ 'F', '6', 0,
  /* 1706 */ 'F', '_', 'H', 'I', '6', 0,
  /* 1712 */ 'F', 'C', 'R', '6', 0,
  /* 1717 */ 'H', 'W', 'R', '6', 0,
  /* 1722 */ 'S', '6', 0,
  /* 1725 */ 'T', '6', 0,
  /* 1728 */ 'W', '6', 0,
  /* 1731 */ 'C', 'O', 'P', '0', '7', 0,
  /* 1737 */ 'C', 'O', 'P', '0', '1', '7', 0,
  /* 1744 */ 'C', 'O', 'P', '2', '1', '7', 0,
  /* 1751 */ 'C', 'O', 'P', '3', '1', '7', 0,
  /* 1758 */ 'F', '1', '7', 0,
  /* 1762 */ 'F', '_', 'H', 'I', '1', '7', 0,
  /* 1769 */ 'F', 'C', 'R', '1', '7', 0,
  /* 1775 */ 'H', 'W', 'R', '1', '7', 0,
  /* 1781 */ 'W', '1', '7', 0,
  /* 1785 */ 'C', 'O', 'P', '0', '2', '7', 0,
  /* 1792 */ 'C', 'O', 'P', '2', '2', '7', 0,
  /* 1799 */ 'C', 'O', 'P', '3', '2', '7', 0,
  /* 1806 */ 'F', '2', '7', 0,
  /* 1810 */ 'F', '_', 'H', 'I', '2', '7', 0,
  /* 1817 */ 'C', 'O', 'P', '2', '7', 0,
  /* 1823 */ 'F', 'C', 'R', '2', '7', 0,
  /* 1829 */ 'H', 'W', 'R', '2', '7', 0,
  /* 1835 */ 'W', '2', '7', 0,
  /* 1839 */ 'C', 'O', 'P', '3', '7', 0,
  /* 1845 */ 'F', 'C', 'C', '7', 0,
  /* 1850 */ 'D', '7', 0,
  /* 1853 */ 'F', '7', 0,
  /* 1856 */ 'F', '_', 'H', 'I', '7', 0,
  /* 1862 */ 'F', 'C', 'R', '7', 0,
  /* 1867 */ 'H', 'W', 'R', '7', 0,
  /* 1872 */ 'S', '7', 0,
  /* 1875 */ 'T', '7', 0,
  /* 1878 */ 'W', '7', 0,
  /* 1881 */ 'C', 'O', 'P', '0', '8', 0,
  /* 1887 */ 'C', 'O', 'P', '0', '1', '8', 0,
  /* 1894 */ 'C', 'O', 'P', '2', '1', '8', 0,
  /* 1901 */ 'C', 'O', 'P', '3', '1', '8', 0,
  /* 1908 */ 'F', '1', '8', 0,
  /* 1912 */ 'F', '_', 'H', 'I', '1', '8', 0,
  /* 1919 */ 'F', 'C', 'R', '1', '8', 0,
  /* 1925 */ 'H', 'W', 'R', '1', '8', 0,
  /* 1931 */ 'W', '1', '8', 0,
  /* 1935 */ 'C', 'O', 'P', '0', '2', '8', 0,
  /* 1942 */ 'C', 'O', 'P', '2', '2', '8', 0,
  /* 1949 */ 'C', 'O', 'P', '3', '2', '8', 0,
  /* 1956 */ 'F', '2', '8', 0,
  /* 1960 */ 'F', '_', 'H', 'I', '2', '8', 0,
  /* 1967 */ 'C', 'O', 'P', '2', '8', 0,
  /* 1973 */ 'F', 'C', 'R', '2', '8', 0,
  /* 1979 */ 'H', 'W', 'R', '2', '8', 0,
  /* 1985 */ 'W', '2', '8', 0,
  /* 1989 */ 'C', 'O', 'P', '3', '8', 0,
  /* 1995 */ 'D', '8', 0,
  /* 1998 */ 'F', '8', 0,
  /* 2001 */ 'F', '_', 'H', 'I', '8', 0,
  /* 2007 */ 'F', 'C', 'R', '8', 0,
  /* 2012 */ 'H', 'W', 'R', '8', 0,
  /* 2017 */ 'T', '8', 0,
  /* 2020 */ 'W', '8', 0,
  /* 2023 */ 'C', 'O', 'P', '0', '9', 0,
  /* 2029 */ 'C', 'O', 'P', '0', '1', '9', 0,
  /* 2036 */ 'C', 'O', 'P', '2', '1', '9', 0,
  /* 2043 */ 'C', 'O', 'P', '3', '1', '9', 0,
  /* 2050 */ 'F', '1', '9', 0,
  /* 2054 */ 'F', '_', 'H', 'I', '1', '9', 0,
  /* 2061 */ 'F', 'C', 'R', '1', '9', 0,
  /* 2067 */ 'H', 'W', 'R', '1', '9', 0,
  /* 2073 */ 'W', '1', '9', 0,
  /* 2077 */ 'D', 'S', 'P', 'O', 'u', 't', 'F', 'l', 'a', 'g', '1', '6', '_', '1', '9', 0,
  /* 2093 */ 'C', 'O', 'P', '0', '2', '9', 0,
  /* 2100 */ 'C', 'O', 'P', '2', '2', '9', 0,
  /* 2107 */ 'C', 'O', 'P', '3', '2', '9', 0,
  /* 2114 */ 'F', '2', '9', 0,
  /* 2118 */ 'F', '_', 'H', 'I', '2', '9', 0,
  /* 2125 */ 'C', 'O', 'P', '2', '9', 0,
  /* 2131 */ 'F', 'C', 'R', '2', '9', 0,
  /* 2137 */ 'H', 'W', 'R', '2', '9', 0,
  /* 2143 */ 'W', '2', '9', 0,
  /* 2147 */ 'C', 'O', 'P', '3', '9', 0,
  /* 2153 */ 'D', '9', 0,
  /* 2156 */ 'F', '9', 0,
  /* 2159 */ 'F', '_', 'H', 'I', '9', 0,
  /* 2165 */ 'F', 'C', 'R', '9', 0,
  /* 2170 */ 'H', 'W', 'R', '9', 0,
  /* 2175 */ 'T', '9', 0,
  /* 2178 */ 'W', '9', 0,
  /* 2181 */ 'R', 'A', 0,
  /* 2184 */ 'P', 'C', 0,
  /* 2187 */ 'D', 'S', 'P', 'E', 'F', 'I', 0,
  /* 2194 */ 'Z', 'E', 'R', 'O', 0,
  /* 2199 */ 'F', 'P', 0,
  /* 2202 */ 'G', 'P', 0,
  /* 2205 */ 'S', 'P', 0,
  /* 2208 */ 'M', 'S', 'A', 'I', 'R', 0,
  /* 2214 */ 'M', 'S', 'A', 'C', 'S', 'R', 0,
  /* 2221 */ 'A', 'T', 0,
  /* 2224 */ 'D', 'S', 'P', 'C', 'C', 'o', 'n', 'd', 0,
  /* 2233 */ 'M', 'S', 'A', 'S', 'a', 'v', 'e', 0,
  /* 2241 */ 'D', 'S', 'P', 'O', 'u', 't', 'F', 'l', 'a', 'g', 0,
  /* 2252 */ 'M', 'S', 'A', 'M', 'a', 'p', 0,
  /* 2259 */ 'M', 'S', 'A', 'U', 'n', 'm', 'a', 'p', 0,
  /* 2268 */ 'D', 'S', 'P', 'P', 'o', 's', 0,
  /* 2275 */ 'M', 'S', 'A', 'A', 'c', 'c', 'e', 's', 's', 0,
  /* 2285 */ 'D', 'S', 'P', 'S', 'C', 'o', 'u', 'n', 't', 0,
  /* 2295 */ 'M', 'S', 'A', 'R', 'e', 'q', 'u', 'e', 's', 't', 0,
  /* 2306 */ 'M', 'S', 'A', 'M', 'o', 'd', 'i', 'f', 'y', 0,
  /* 2316 */ 'D', 'S', 'P', 'C', 'a', 'r', 'r', 'y', 0,
};

extern const MCRegisterDesc MipsRegDesc[] = { // Descriptors
  { 5, 0, 0, 0, 0, 0 },
  { 2221, 1, 82, 1, 4033, 0 },
  { 2224, 1, 1, 1, 4033, 0 },
  { 2316, 1, 1, 1, 4033, 0 },
  { 2187, 1, 1, 1, 4033, 0 },
  { 2241, 8, 1, 2, 32, 4 },
  { 2268, 1, 1, 1, 1089, 0 },
  { 2285, 1, 1, 1, 1089, 0 },
  { 2199, 1, 102, 1, 1089, 0 },
  { 2202, 1, 104, 1, 1089, 0 },
  { 2275, 1, 1, 1, 1089, 0 },
  { 2214, 1, 1, 1, 1089, 0 },
  { 2208, 1, 1, 1, 1089, 0 },
  { 2252, 1, 1, 1, 1089, 0 },
  { 2306, 1, 1, 1, 1089, 0 },
  { 2295, 1, 1, 1, 1089, 0 },
  { 2233, 1, 1, 1, 1089, 0 },
  { 2259, 1, 1, 1, 1089, 0 },
  { 2184, 1, 1, 1, 1089, 0 },
  { 2181, 1, 106, 1, 1089, 0 },
  { 2205, 1, 108, 1, 1089, 0 },
  { 2194, 1, 110, 1, 1089, 0 },
  { 179, 1, 110, 1, 1089, 0 },
  { 419, 1, 110, 1, 1089, 0 },
  { 611, 1, 110, 1, 1089, 0 },
  { 797, 1, 110, 1, 1089, 0 },
  { 182, 227, 110, 9, 1042, 10 },
  { 422, 227, 1, 9, 1042, 10 },
  { 614, 227, 1, 9, 1042, 10 },
  { 800, 227, 1, 9, 1042, 10 },
  { 1385, 238, 1, 0, 0, 2 },
  { 0, 1, 1, 1, 1153, 0 },
  { 240, 1, 1, 1, 1153, 0 },
  { 480, 1, 1, 1, 1153, 0 },
  { 666, 1, 1, 1, 1153, 0 },
  { 844, 1, 1, 1, 1153, 0 },
  { 1427, 1, 1, 1, 1153, 0 },
  { 1581, 1, 1, 1, 1153, 0 },
  { 1731, 1, 1, 1, 1153, 0 },
  { 1881, 1, 1, 1, 1153, 0 },
  { 2023, 1, 1, 1, 1153, 0 },
  { 90, 1, 1, 1, 1153, 0 },
  { 330, 1, 1, 1, 1153, 0 },
  { 570, 1, 1, 1, 1153, 0 },
  { 756, 1, 1, 1, 1153, 0 },
  { 934, 1, 1, 1, 1153, 0 },
  { 1517, 1, 1, 1, 1153, 0 },
  { 1667, 1, 1, 1, 1153, 0 },
  { 1817, 1, 1, 1, 1153, 0 },
  { 1967, 1, 1, 1, 1153, 0 },
  { 2125, 1, 1, 1, 1153, 0 },
  { 157, 1, 1, 1, 1153, 0 },
  { 397, 1, 1, 1, 1153, 0 },
  { 605, 1, 1, 1, 1153, 0 },
  { 791, 1, 1, 1, 1153, 0 },
  { 956, 1, 1, 1, 1153, 0 },
  { 1539, 1, 1, 1, 1153, 0 },
  { 1689, 1, 1, 1, 1153, 0 },
  { 1839, 1, 1, 1, 1153, 0 },
  { 1989, 1, 1, 1, 1153, 0 },
  { 2147, 1, 1, 1, 1153, 0 },
  { 6, 1, 1, 1, 1153, 0 },
  { 246, 1, 1, 1, 1153, 0 },
  { 486, 1, 1, 1, 1153, 0 },
  { 672, 1, 1, 1, 1153, 0 },
  { 850, 1, 1, 1, 1153, 0 },
  { 1433, 1, 1, 1, 1153, 0 },
  { 1587, 1, 1, 1, 1153, 0 },
  { 1737, 1, 1, 1, 1153, 0 },
  { 1887, 1, 1, 1, 1153, 0 },
  { 2029, 1, 1, 1, 1153, 0 },
  { 58, 1, 1, 1, 1153, 0 },
  { 298, 1, 1, 1, 1153, 0 },
  { 538, 1, 1, 1, 1153, 0 },
  { 724, 1, 1, 1, 1153, 0 },
  { 902, 1, 1, 1, 1153, 0 },
  { 1485, 1, 1, 1, 1153, 0 },
  { 1635, 1, 1, 1, 1153, 0 },
  { 1785, 1, 1, 1, 1153, 0 },
  { 1935, 1, 1, 1, 1153, 0 },
  { 2093, 1, 1, 1, 1153, 0 },
  { 125, 1, 1, 1, 1153, 0 },
  { 365, 1, 1, 1, 1153, 0 },
  { 13, 1, 1, 1, 1153, 0 },
  { 253, 1, 1, 1, 1153, 0 },
  { 493, 1, 1, 1, 1153, 0 },
  { 679, 1, 1, 1, 1153, 0 },
  { 857, 1, 1, 1, 1153, 0 },
  { 1440, 1, 1, 1, 1153, 0 },
  { 1594, 1, 1, 1, 1153, 0 },
  { 1744, 1, 1, 1, 1153, 0 },
  { 1894, 1, 1, 1, 1153, 0 },
  { 2036, 1, 1, 1, 1153, 0 },
  { 65, 1, 1, 1, 1153, 0 },
  { 305, 1, 1, 1, 1153, 0 },
  { 545, 1, 1, 1, 1153, 0 },
  { 731, 1, 1, 1, 1153, 0 },
  { 909, 1, 1, 1, 1153, 0 },
  { 1492, 1, 1, 1, 1153, 0 },
  { 1642, 1, 1, 1, 1153, 0 },
  { 1792, 1, 1, 1, 1153, 0 },
  { 1942, 1, 1, 1, 1153, 0 },
  { 2100, 1, 1, 1, 1153, 0 },
  { 132, 1, 1, 1, 1153, 0 },
  { 372, 1, 1, 1, 1153, 0 },
  { 20, 1, 1, 1, 1153, 0 },
  { 260, 1, 1, 1, 1153, 0 },
  { 500, 1, 1, 1, 1153, 0 },
  { 686, 1, 1, 1, 1153, 0 },
  { 864, 1, 1, 1, 1153, 0 },
  { 1447, 1, 1, 1, 1153, 0 },
  { 1601, 1, 1, 1, 1153, 0 },
  { 1751, 1, 1, 1, 1153, 0 },
  { 1901, 1, 1, 1, 1153, 0 },
  { 2043, 1, 1, 1, 1153, 0 },
  { 72, 1, 1, 1, 1153, 0 },
  { 312, 1, 1, 1, 1153, 0 },
  { 552, 1, 1, 1, 1153, 0 },
  { 738, 1, 1, 1, 1153, 0 },
  { 916, 1, 1, 1, 1153, 0 },
  { 1499, 1, 1, 1, 1153, 0 },
  { 1649, 1, 1, 1, 1153, 0 },
  { 1799, 1, 1, 1, 1153, 0 },
  { 1949, 1, 1, 1, 1153, 0 },
  { 2107, 1, 1, 1, 1153, 0 },
  { 139, 1, 1, 1, 1153, 0 },
  { 379, 1, 1, 1, 1153, 0 },
  { 191, 14, 1, 9, 994, 10 },
  { 431, 17, 1, 9, 994, 10 },
  { 623, 20, 1, 9, 994, 10 },
  { 809, 23, 1, 9, 994, 10 },
  { 1396, 26, 1, 9, 994, 10 },
  { 1550, 29, 1, 9, 994, 10 },
  { 1700, 32, 1, 9, 994, 10 },
  { 1850, 35, 1, 9, 994, 10 },
  { 1995, 38, 1, 9, 994, 10 },
  { 2153, 41, 1, 9, 994, 10 },
  { 27, 44, 1, 9, 994, 10 },
  { 267, 47, 1, 9, 994, 10 },
  { 507, 50, 1, 9, 994, 10 },
  { 693, 53, 1, 9, 994, 10 },
  { 871, 56, 1, 9, 994, 10 },
  { 1454, 59, 1, 9, 994, 10 },
  { 112, 1, 144, 1, 2305, 0 },
  { 352, 1, 142, 1, 2305, 0 },
  { 592, 1, 140, 1, 2305, 0 },
  { 778, 1, 138, 1, 2305, 0 },
  { 194, 1, 159, 1, 4001, 0 },
  { 434, 1, 163, 1, 4001, 0 },
  { 626, 1, 163, 1, 4001, 0 },
  { 812, 1, 167, 1, 4001, 0 },
  { 1399, 1, 167, 1, 4001, 0 },
  { 1553, 1, 171, 1, 4001, 0 },
  { 1703, 1, 171, 1, 4001, 0 },
  { 1853, 1, 175, 1, 4001, 0 },
  { 1998, 1, 175, 1, 4001, 0 },
  { 2156, 1, 179, 1, 4001, 0 },
  { 31, 1, 179, 1, 4001, 0 },
  { 271, 1, 183, 1, 4001, 0 },
  { 511, 1, 183, 1, 4001, 0 },
  { 697, 1, 187, 1, 4001, 0 },
  { 875, 1, 187, 1, 4001, 0 },
  { 1458, 1, 191, 1, 4001, 0 },
  { 1608, 1, 191, 1, 4001, 0 },
  { 1758, 1, 195, 1, 4001, 0 },
  { 1908, 1, 195, 1, 4001, 0 },
  { 2050, 1, 199, 1, 4001, 0 },
  { 79, 1, 199, 1, 4001, 0 },
  { 319, 1, 203, 1, 4001, 0 },
  { 559, 1, 203, 1, 4001, 0 },
  { 745, 1, 207, 1, 4001, 0 },
  { 923, 1, 207, 1, 4001, 0 },
  { 1506, 1, 211, 1, 4001, 0 },
  { 1656, 1, 211, 1, 4001, 0 },
  { 1806, 1, 215, 1, 4001, 0 },
  { 1956, 1, 215, 1, 4001, 0 },
  { 2114, 1, 219, 1, 4001, 0 },
  { 146, 1, 219, 1, 4001, 0 },
  { 386, 1, 223, 1, 4001, 0 },
  { 186, 1, 1, 1, 4001, 0 },
  { 426, 1, 1, 1, 4001, 0 },
  { 618, 1, 1, 1, 4001, 0 },
  { 804, 1, 1, 1, 4001, 0 },
  { 1391, 1, 1, 1, 4001, 0 },
  { 1545, 1, 1, 1, 4001, 0 },
  { 1695, 1, 1, 1, 4001, 0 },
  { 1845, 1, 1, 1, 4001, 0 },
  { 218, 1, 1, 1, 4001, 0 },
  { 458, 1, 1, 1, 4001, 0 },
  { 647, 1, 1, 1, 4001, 0 },
  { 825, 1, 1, 1, 4001, 0 },
  { 1408, 1, 1, 1, 4001, 0 },
  { 1562, 1, 1, 1, 4001, 0 },
  { 1712, 1, 1, 1, 4001, 0 },
  { 1862, 1, 1, 1, 4001, 0 },
  { 2007, 1, 1, 1, 4001, 0 },
  { 2165, 1, 1, 1, 4001, 0 },
  { 42, 1, 1, 1, 4001, 0 },
  { 282, 1, 1, 1, 4001, 0 },
  { 522, 1, 1, 1, 4001, 0 },
  { 708, 1, 1, 1, 4001, 0 },
  { 886, 1, 1, 1, 4001, 0 },
  { 1469, 1, 1, 1, 4001, 0 },
  { 1619, 1, 1, 1, 4001, 0 },
  { 1769, 1, 1, 1, 4001, 0 },
  { 1919, 1, 1, 1, 4001, 0 },
  { 2061, 1, 1, 1, 4001, 0 },
  { 96, 1, 1, 1, 4001, 0 },
  { 336, 1, 1, 1, 4001, 0 },
  { 576, 1, 1, 1, 4001, 0 },
  { 762, 1, 1, 1, 4001, 0 },
  { 940, 1, 1, 1, 4001, 0 },
  { 1523, 1, 1, 1, 4001, 0 },
  { 1673, 1, 1, 1, 4001, 0 },
  { 1823, 1, 1, 1, 4001, 0 },
  { 1973, 1, 1, 1, 4001, 0 },
  { 2131, 1, 1, 1, 4001, 0 },
  { 163, 1, 1, 1, 4001, 0 },
  { 403, 1, 1, 1, 4001, 0 },
  { 1367, 136, 1, 0, 1184, 2 },
  { 197, 1, 156, 1, 3969, 0 },
  { 437, 1, 156, 1, 3969, 0 },
  { 629, 1, 156, 1, 3969, 0 },
  { 815, 1, 156, 1, 3969, 0 },
  { 1402, 1, 156, 1, 3969, 0 },
  { 1556, 1, 156, 1, 3969, 0 },
  { 1706, 1, 156, 1, 3969, 0 },
  { 1856, 1, 156, 1, 3969, 0 },
  { 2001, 1, 156, 1, 3969, 0 },
  { 2159, 1, 156, 1, 3969, 0 },
  { 35, 1, 156, 1, 3969, 0 },
  { 275, 1, 156, 1, 3969, 0 },
  { 515, 1, 156, 1, 3969, 0 },
  { 701, 1, 156, 1, 3969, 0 },
  { 879, 1, 156, 1, 3969, 0 },
  { 1462, 1, 156, 1, 3969, 0 },
  { 1612, 1, 156, 1, 3969, 0 },
  { 1762, 1, 156, 1, 3969, 0 },
  { 1912, 1, 156, 1, 3969, 0 },
  { 2054, 1, 156, 1, 3969, 0 },
  { 83, 1, 156, 1, 3969, 0 },
  { 323, 1, 156, 1, 3969, 0 },
  { 563, 1, 156, 1, 3969, 0 },
  { 749, 1, 156, 1, 3969, 0 },
  { 927, 1, 156, 1, 3969, 0 },
  { 1510, 1, 156, 1, 3969, 0 },
  { 1660, 1, 156, 1, 3969, 0 },
  { 1810, 1, 156, 1, 3969, 0 },
  { 1960, 1, 156, 1, 3969, 0 },
  { 2118, 1, 156, 1, 3969, 0 },
  { 150, 1, 156, 1, 3969, 0 },
  { 390, 1, 156, 1, 3969, 0 },
  { 1373, 128, 1, 0, 1216, 2 },
  { 199, 1, 234, 1, 1826, 0 },
  { 439, 1, 134, 1, 1826, 0 },
  { 631, 1, 134, 1, 1826, 0 },
  { 817, 1, 134, 1, 1826, 0 },
  { 223, 1, 1, 1, 3937, 0 },
  { 463, 1, 1, 1, 3937, 0 },
  { 652, 1, 1, 1, 3937, 0 },
  { 830, 1, 1, 1, 3937, 0 },
  { 1413, 1, 1, 1, 3937, 0 },
  { 1567, 1, 1, 1, 3937, 0 },
  { 1717, 1, 1, 1, 3937, 0 },
  { 1867, 1, 1, 1, 3937, 0 },
  { 2012, 1, 1, 1, 3937, 0 },
  { 2170, 1, 1, 1, 3937, 0 },
  { 48, 1, 1, 1, 3937, 0 },
  { 288, 1, 1, 1, 3937, 0 },
  { 528, 1, 1, 1, 3937, 0 },
  { 714, 1, 1, 1, 3937, 0 },
  { 892, 1, 1, 1, 3937, 0 },
  { 1475, 1, 1, 1, 3937, 0 },
  { 1625, 1, 1, 1, 3937, 0 },
  { 1775, 1, 1, 1, 3937, 0 },
  { 1925, 1, 1, 1, 3937, 0 },
  { 2067, 1, 1, 1, 3937, 0 },
  { 102, 1, 1, 1, 3937, 0 },
  { 342, 1, 1, 1, 3937, 0 },
  { 582, 1, 1, 1, 3937, 0 },
  { 768, 1, 1, 1, 3937, 0 },
  { 946, 1, 1, 1, 3937, 0 },
  { 1529, 1, 1, 1, 3937, 0 },
  { 1679, 1, 1, 1, 3937, 0 },
  { 1829, 1, 1, 1, 3937, 0 },
  { 1979, 1, 1, 1, 3937, 0 },
  { 2137, 1, 1, 1, 3937, 0 },
  { 169, 1, 1, 1, 3937, 0 },
  { 409, 1, 1, 1, 3937, 0 },
  { 203, 1, 100, 1, 3937, 0 },
  { 443, 1, 100, 1, 3937, 0 },
  { 211, 1, 230, 1, 1794, 0 },
  { 451, 1, 126, 1, 1794, 0 },
  { 640, 1, 126, 1, 1794, 0 },
  { 821, 1, 126, 1, 1794, 0 },
  { 206, 1, 1, 1, 3905, 0 },
  { 446, 1, 1, 1, 3905, 0 },
  { 635, 1, 1, 1, 3905, 0 },
  { 215, 1, 1, 1, 3905, 0 },
  { 455, 1, 1, 1, 3905, 0 },
  { 644, 1, 1, 1, 3905, 0 },
  { 1353, 124, 1, 0, 1248, 2 },
  { 228, 1, 98, 1, 3873, 0 },
  { 468, 1, 98, 1, 3873, 0 },
  { 657, 1, 98, 1, 3873, 0 },
  { 835, 1, 98, 1, 3873, 0 },
  { 1418, 1, 98, 1, 3873, 0 },
  { 1572, 1, 98, 1, 3873, 0 },
  { 1722, 1, 98, 1, 3873, 0 },
  { 1872, 1, 98, 1, 3873, 0 },
  { 1379, 122, 1, 0, 1280, 2 },
  { 231, 1, 96, 1, 3841, 0 },
  { 471, 1, 96, 1, 3841, 0 },
  { 660, 1, 96, 1, 3841, 0 },
  { 838, 1, 96, 1, 3841, 0 },
  { 1421, 1, 96, 1, 3841, 0 },
  { 1575, 1, 96, 1, 3841, 0 },
  { 1725, 1, 96, 1, 3841, 0 },
  { 1875, 1, 96, 1, 3841, 0 },
  { 2017, 1, 96, 1, 3841, 0 },
  { 2175, 1, 96, 1, 3841, 0 },
  { 234, 1, 96, 1, 3841, 0 },
  { 474, 1, 96, 1, 3841, 0 },
  { 237, 92, 1, 8, 1425, 10 },
  { 477, 92, 1, 8, 1425, 10 },
  { 663, 92, 1, 8, 1425, 10 },
  { 841, 92, 1, 8, 1425, 10 },
  { 1424, 92, 1, 8, 1425, 10 },
  { 1578, 92, 1, 8, 1425, 10 },
  { 1728, 92, 1, 8, 1425, 10 },
  { 1878, 92, 1, 8, 1425, 10 },
  { 2020, 92, 1, 8, 1425, 10 },
  { 2178, 92, 1, 8, 1425, 10 },
  { 54, 92, 1, 8, 1425, 10 },
  { 294, 92, 1, 8, 1425, 10 },
  { 534, 92, 1, 8, 1425, 10 },
  { 720, 92, 1, 8, 1425, 10 },
  { 898, 92, 1, 8, 1425, 10 },
  { 1481, 92, 1, 8, 1425, 10 },
  { 1631, 92, 1, 8, 1425, 10 },
  { 1781, 92, 1, 8, 1425, 10 },
  { 1931, 92, 1, 8, 1425, 10 },
  { 2073, 92, 1, 8, 1425, 10 },
  { 108, 92, 1, 8, 1425, 10 },
  { 348, 92, 1, 8, 1425, 10 },
  { 588, 92, 1, 8, 1425, 10 },
  { 774, 92, 1, 8, 1425, 10 },
  { 952, 92, 1, 8, 1425, 10 },
  { 1535, 92, 1, 8, 1425, 10 },
  { 1685, 92, 1, 8, 1425, 10 },
  { 1835, 92, 1, 8, 1425, 10 },
  { 1985, 92, 1, 8, 1425, 10 },
  { 2143, 92, 1, 8, 1425, 10 },
  { 175, 92, 1, 8, 1425, 10 },
  { 415, 92, 1, 8, 1425, 10 },
  { 1359, 118, 1, 0, 1921, 2 },
  { 983, 118, 1, 0, 1921, 2 },
  { 1061, 118, 1, 0, 1921, 2 },
  { 1111, 118, 1, 0, 1921, 2 },
  { 1149, 118, 1, 0, 1921, 2 },
  { 989, 130, 1, 12, 656, 10 },
  { 996, 93, 157, 9, 1377, 10 },
  { 1067, 93, 157, 9, 1377, 10 },
  { 1117, 93, 157, 9, 1377, 10 },
  { 1155, 93, 157, 9, 1377, 10 },
  { 1187, 93, 157, 9, 1377, 10 },
  { 1219, 93, 157, 9, 1377, 10 },
  { 1251, 93, 157, 9, 1377, 10 },
  { 1283, 93, 157, 9, 1377, 10 },
  { 1315, 93, 157, 9, 1377, 10 },
  { 1341, 93, 157, 9, 1377, 10 },
  { 962, 93, 157, 9, 1377, 10 },
  { 1040, 93, 157, 9, 1377, 10 },
  { 1097, 93, 157, 9, 1377, 10 },
  { 1135, 93, 157, 9, 1377, 10 },
  { 1173, 93, 157, 9, 1377, 10 },
  { 1205, 93, 157, 9, 1377, 10 },
  { 1237, 93, 157, 9, 1377, 10 },
  { 1269, 93, 157, 9, 1377, 10 },
  { 1301, 93, 157, 9, 1377, 10 },
  { 1327, 93, 157, 9, 1377, 10 },
  { 969, 93, 157, 9, 1377, 10 },
  { 1047, 93, 157, 9, 1377, 10 },
  { 1104, 93, 157, 9, 1377, 10 },
  { 1142, 93, 157, 9, 1377, 10 },
  { 1180, 93, 157, 9, 1377, 10 },
  { 1212, 93, 157, 9, 1377, 10 },
  { 1244, 93, 157, 9, 1377, 10 },
  { 1276, 93, 157, 9, 1377, 10 },
  { 1308, 93, 157, 9, 1377, 10 },
  { 1334, 93, 157, 9, 1377, 10 },
  { 976, 93, 157, 9, 1377, 10 },
  { 1054, 93, 157, 9, 1377, 10 },
  { 2077, 1, 116, 1, 1120, 0 },
  { 1002, 138, 236, 0, 1344, 2 },
  { 1009, 150, 1, 0, 2337, 2 },
  { 1073, 150, 1, 0, 2337, 2 },
  { 1015, 150, 232, 0, 1312, 2 },
  { 1022, 152, 1, 0, 2369, 2 },
  { 1079, 152, 1, 0, 2369, 2 },
  { 1123, 152, 1, 0, 2369, 2 },
  { 1161, 152, 1, 0, 2369, 2 },
  { 1193, 152, 1, 0, 2369, 2 },
  { 1225, 152, 1, 0, 2369, 2 },
  { 1257, 152, 1, 0, 2369, 2 },
  { 1289, 152, 1, 0, 2369, 2 },
  { 1028, 154, 1, 0, 2369, 2 },
  { 1085, 154, 1, 0, 2369, 2 },
  { 1129, 154, 1, 0, 2369, 2 },
  { 1167, 154, 1, 0, 2369, 2 },
  { 1199, 154, 1, 0, 2369, 2 },
  { 1231, 154, 1, 0, 2369, 2 },
  { 1263, 154, 1, 0, 2369, 2 },
  { 1295, 154, 1, 0, 2369, 2 },
  { 1321, 154, 1, 0, 2369, 2 },
  { 1347, 154, 1, 0, 2369, 2 },
  { 1034, 154, 1, 0, 2369, 2 },
  { 1091, 154, 1, 0, 2369, 2 },
};

extern const MCPhysReg MipsRegUnitRoots[][2] = {
  { Mips::AT },
  { Mips::DSPCCond },
  { Mips::DSPCarry },
  { Mips::DSPEFI },
  { Mips::DSPOutFlag16_19 },
  { Mips::DSPOutFlag20 },
  { Mips::DSPOutFlag21 },
  { Mips::DSPOutFlag22 },
  { Mips::DSPOutFlag23 },
  { Mips::DSPPos },
  { Mips::DSPSCount },
  { Mips::FP },
  { Mips::GP },
  { Mips::MSAAccess },
  { Mips::MSACSR },
  { Mips::MSAIR },
  { Mips::MSAMap },
  { Mips::MSAModify },
  { Mips::MSARequest },
  { Mips::MSASave },
  { Mips::MSAUnmap },
  { Mips::PC },
  { Mips::RA },
  { Mips::SP },
  { Mips::ZERO },
  { Mips::A0 },
  { Mips::A1 },
  { Mips::A2 },
  { Mips::A3 },
  { Mips::LO0 },
  { Mips::HI0 },
  { Mips::LO1 },
  { Mips::HI1 },
  { Mips::LO2 },
  { Mips::HI2 },
  { Mips::LO3 },
  { Mips::HI3 },
  { Mips::COP00 },
  { Mips::COP01 },
  { Mips::COP02 },
  { Mips::COP03 },
  { Mips::COP04 },
  { Mips::COP05 },
  { Mips::COP06 },
  { Mips::COP07 },
  { Mips::COP08 },
  { Mips::COP09 },
  { Mips::COP20 },
  { Mips::COP21 },
  { Mips::COP22 },
  { Mips::COP23 },
  { Mips::COP24 },
  { Mips::COP25 },
  { Mips::COP26 },
  { Mips::COP27 },
  { Mips::COP28 },
  { Mips::COP29 },
  { Mips::COP30 },
  { Mips::COP31 },
  { Mips::COP32 },
  { Mips::COP33 },
  { Mips::COP34 },
  { Mips::COP35 },
  { Mips::COP36 },
  { Mips::COP37 },
  { Mips::COP38 },
  { Mips::COP39 },
  { Mips::COP010 },
  { Mips::COP011 },
  { Mips::COP012 },
  { Mips::COP013 },
  { Mips::COP014 },
  { Mips::COP015 },
  { Mips::COP016 },
  { Mips::COP017 },
  { Mips::COP018 },
  { Mips::COP019 },
  { Mips::COP020 },
  { Mips::COP021 },
  { Mips::COP022 },
  { Mips::COP023 },
  { Mips::COP024 },
  { Mips::COP025 },
  { Mips::COP026 },
  { Mips::COP027 },
  { Mips::COP028 },
  { Mips::COP029 },
  { Mips::COP030 },
  { Mips::COP031 },
  { Mips::COP210 },
  { Mips::COP211 },
  { Mips::COP212 },
  { Mips::COP213 },
  { Mips::COP214 },
  { Mips::COP215 },
  { Mips::COP216 },
  { Mips::COP217 },
  { Mips::COP218 },
  { Mips::COP219 },
  { Mips::COP220 },
  { Mips::COP221 },
  { Mips::COP222 },
  { Mips::COP223 },
  { Mips::COP224 },
  { Mips::COP225 },
  { Mips::COP226 },
  { Mips::COP227 },
  { Mips::COP228 },
  { Mips::COP229 },
  { Mips::COP230 },
  { Mips::COP231 },
  { Mips::COP310 },
  { Mips::COP311 },
  { Mips::COP312 },
  { Mips::COP313 },
  { Mips::COP314 },
  { Mips::COP315 },
  { Mips::COP316 },
  { Mips::COP317 },
  { Mips::COP318 },
  { Mips::COP319 },
  { Mips::COP320 },
  { Mips::COP321 },
  { Mips::COP322 },
  { Mips::COP323 },
  { Mips::COP324 },
  { Mips::COP325 },
  { Mips::COP326 },
  { Mips::COP327 },
  { Mips::COP328 },
  { Mips::COP329 },
  { Mips::COP330 },
  { Mips::COP331 },
  { Mips::F0 },
  { Mips::F1 },
  { Mips::F2 },
  { Mips::F3 },
  { Mips::F4 },
  { Mips::F5 },
  { Mips::F6 },
  { Mips::F7 },
  { Mips::F8 },
  { Mips::F9 },
  { Mips::F10 },
  { Mips::F11 },
  { Mips::F12 },
  { Mips::F13 },
  { Mips::F14 },
  { Mips::F15 },
  { Mips::F16 },
  { Mips::F17 },
  { Mips::F18 },
  { Mips::F19 },
  { Mips::F20 },
  { Mips::F21 },
  { Mips::F22 },
  { Mips::F23 },
  { Mips::F24 },
  { Mips::F25 },
  { Mips::F26 },
  { Mips::F27 },
  { Mips::F28 },
  { Mips::F29 },
  { Mips::F30 },
  { Mips::F31 },
  { Mips::FCC0 },
  { Mips::FCC1 },
  { Mips::FCC2 },
  { Mips::FCC3 },
  { Mips::FCC4 },
  { Mips::FCC5 },
  { Mips::FCC6 },
  { Mips::FCC7 },
  { Mips::FCR0 },
  { Mips::FCR1 },
  { Mips::FCR2 },
  { Mips::FCR3 },
  { Mips::FCR4 },
  { Mips::FCR5 },
  { Mips::FCR6 },
  { Mips::FCR7 },
  { Mips::FCR8 },
  { Mips::FCR9 },
  { Mips::FCR10 },
  { Mips::FCR11 },
  { Mips::FCR12 },
  { Mips::FCR13 },
  { Mips::FCR14 },
  { Mips::FCR15 },
  { Mips::FCR16 },
  { Mips::FCR17 },
  { Mips::FCR18 },
  { Mips::FCR19 },
  { Mips::FCR20 },
  { Mips::FCR21 },
  { Mips::FCR22 },
  { Mips::FCR23 },
  { Mips::FCR24 },
  { Mips::FCR25 },
  { Mips::FCR26 },
  { Mips::FCR27 },
  { Mips::FCR28 },
  { Mips::FCR29 },
  { Mips::FCR30 },
  { Mips::FCR31 },
  { Mips::F_HI0 },
  { Mips::F_HI1 },
  { Mips::F_HI2 },
  { Mips::F_HI3 },
  { Mips::F_HI4 },
  { Mips::F_HI5 },
  { Mips::F_HI6 },
  { Mips::F_HI7 },
  { Mips::F_HI8 },
  { Mips::F_HI9 },
  { Mips::F_HI10 },
  { Mips::F_HI11 },
  { Mips::F_HI12 },
  { Mips::F_HI13 },
  { Mips::F_HI14 },
  { Mips::F_HI15 },
  { Mips::F_HI16 },
  { Mips::F_HI17 },
  { Mips::F_HI18 },
  { Mips::F_HI19 },
  { Mips::F_HI20 },
  { Mips::F_HI21 },
  { Mips::F_HI22 },
  { Mips::F_HI23 },
  { Mips::F_HI24 },
  { Mips::F_HI25 },
  { Mips::F_HI26 },
  { Mips::F_HI27 },
  { Mips::F_HI28 },
  { Mips::F_HI29 },
  { Mips::F_HI30 },
  { Mips::F_HI31 },
  { Mips::HWR0 },
  { Mips::HWR1 },
  { Mips::HWR2 },
  { Mips::HWR3 },
  { Mips::HWR4 },
  { Mips::HWR5 },
  { Mips::HWR6 },
  { Mips::HWR7 },
  { Mips::HWR8 },
  { Mips::HWR9 },
  { Mips::HWR10 },
  { Mips::HWR11 },
  { Mips::HWR12 },
  { Mips::HWR13 },
  { Mips::HWR14 },
  { Mips::HWR15 },
  { Mips::HWR16 },
  { Mips::HWR17 },
  { Mips::HWR18 },
  { Mips::HWR19 },
  { Mips::HWR20 },
  { Mips::HWR21 },
  { Mips::HWR22 },
  { Mips::HWR23 },
  { Mips::HWR24 },
  { Mips::HWR25 },
  { Mips::HWR26 },
  { Mips::HWR27 },
  { Mips::HWR28 },
  { Mips::HWR29 },
  { Mips::HWR30 },
  { Mips::HWR31 },
  { Mips::K0 },
  { Mips::K1 },
  { Mips::MPL0 },
  { Mips::MPL1 },
  { Mips::MPL2 },
  { Mips::P0 },
  { Mips::P1 },
  { Mips::P2 },
  { Mips::S0 },
  { Mips::S1 },
  { Mips::S2 },
  { Mips::S3 },
  { Mips::S4 },
  { Mips::S5 },
  { Mips::S6 },
  { Mips::S7 },
  { Mips::T0 },
  { Mips::T1 },
  { Mips::T2 },
  { Mips::T3 },
  { Mips::T4 },
  { Mips::T5 },
  { Mips::T6 },
  { Mips::T7 },
  { Mips::T8 },
  { Mips::T9 },
  { Mips::V0 },
  { Mips::V1 },
};

namespace {     // Register classes...
  // MSA128F16 Register Class...
  const MCPhysReg MSA128F16[] = {
    Mips::W0, Mips::W1, Mips::W2, Mips::W3, Mips::W4, Mips::W5, Mips::W6, Mips::W7, Mips::W8, Mips::W9, Mips::W10, Mips::W11, Mips::W12, Mips::W13, Mips::W14, Mips::W15, Mips::W16, Mips::W17, Mips::W18, Mips::W19, Mips::W20, Mips::W21, Mips::W22, Mips::W23, Mips::W24, Mips::W25, Mips::W26, Mips::W27, Mips::W28, Mips::W29, Mips::W30, Mips::W31, 
  };

  // MSA128F16 Bit set.
  const uint8_t MSA128F16Bits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x07, 
  };

  // MSA128F16_with_sub_64_in_OddSP Register Class...
  const MCPhysReg MSA128F16_with_sub_64_in_OddSP[] = {
    Mips::W1, Mips::W3, Mips::W5, Mips::W7, Mips::W9, Mips::W11, Mips::W13, Mips::W15, Mips::W17, Mips::W19, Mips::W21, Mips::W23, Mips::W25, Mips::W27, Mips::W29, Mips::W31, 
  };

  // MSA128F16_with_sub_64_in_OddSP Bit set.
  const uint8_t MSA128F16_with_sub_64_in_OddSPBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x55, 0x55, 0x05, 
  };

  // OddSP Register Class...
  const MCPhysReg OddSP[] = {
    Mips::F1, Mips::F3, Mips::F5, Mips::F7, Mips::F9, Mips::F11, Mips::F13, Mips::F15, Mips::F17, Mips::F19, Mips::F21, Mips::F23, Mips::F25, Mips::F27, Mips::F29, Mips::F31, Mips::F_HI1, Mips::F_HI3, Mips::F_HI5, Mips::F_HI7, Mips::F_HI9, Mips::F_HI11, Mips::F_HI13, Mips::F_HI15, Mips::F_HI17, Mips::F_HI19, Mips::F_HI21, Mips::F_HI23, Mips::F_HI25, Mips::F_HI27, Mips::F_HI29, Mips::F_HI31, Mips::D1, Mips::D3, Mips::D5, Mips::D7, Mips::D9, Mips::D11, Mips::D13, Mips::D15, Mips::D1_64, Mips::D3_64, Mips::D5_64, Mips::D7_64, Mips::D9_64, Mips::D11_64, Mips::D13_64, Mips::D15_64, Mips::D17_64, Mips::D19_64, Mips::D21_64, Mips::D23_64, Mips::D25_64, Mips::D27_64, Mips::D29_64, Mips::D31_64, 
  };

  // OddSP Bit set.
  const uint8_t OddSPBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x50, 0x55, 0x55, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xaa, 0xaa, 0xaa, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x55, 0x55, 0x01, 
  };

  // CCR Register Class...
  const MCPhysReg CCR[] = {
    Mips::FCR0, Mips::FCR1, Mips::FCR2, Mips::FCR3, Mips::FCR4, Mips::FCR5, Mips::FCR6, Mips::FCR7, Mips::FCR8, Mips::FCR9, Mips::FCR10, Mips::FCR11, Mips::FCR12, Mips::FCR13, Mips::FCR14, Mips::FCR15, Mips::FCR16, Mips::FCR17, Mips::FCR18, Mips::FCR19, Mips::FCR20, Mips::FCR21, Mips::FCR22, Mips::FCR23, Mips::FCR24, Mips::FCR25, Mips::FCR26, Mips::FCR27, Mips::FCR28, Mips::FCR29, Mips::FCR30, Mips::FCR31, 
  };

  // CCR Bit set.
  const uint8_t CCRBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x07, 
  };

  // COP0 Register Class...
  const MCPhysReg COP0[] = {
    Mips::COP00, Mips::COP01, Mips::COP02, Mips::COP03, Mips::COP04, Mips::COP05, Mips::COP06, Mips::COP07, Mips::COP08, Mips::COP09, Mips::COP010, Mips::COP011, Mips::COP012, Mips::COP013, Mips::COP014, Mips::COP015, Mips::COP016, Mips::COP017, Mips::COP018, Mips::COP019, Mips::COP020, Mips::COP021, Mips::COP022, Mips::COP023, Mips::COP024, Mips::COP025, Mips::COP026, Mips::COP027, Mips::COP028, Mips::COP029, Mips::COP030, Mips::COP031, 
  };

  // COP0 Bit set.
  const uint8_t COP0Bits[] = {
    0x00, 0x00, 0x00, 0x80, 0xff, 0x01, 0x00, 0xe0, 0xff, 0xff, 0x07, 
  };

  // COP2 Register Class...
  const MCPhysReg COP2[] = {
    Mips::COP20, Mips::COP21, Mips::COP22, Mips::COP23, Mips::COP24, Mips::COP25, Mips::COP26, Mips::COP27, Mips::COP28, Mips::COP29, Mips::COP210, Mips::COP211, Mips::COP212, Mips::COP213, Mips::COP214, Mips::COP215, Mips::COP216, Mips::COP217, Mips::COP218, Mips::COP219, Mips::COP220, Mips::COP221, Mips::COP222, Mips::COP223, Mips::COP224, Mips::COP225, Mips::COP226, Mips::COP227, Mips::COP228, Mips::COP229, Mips::COP230, Mips::COP231, 
  };

  // COP2 Bit set.
  const uint8_t COP2Bits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x01, 
  };

  // COP3 Register Class...
  const MCPhysReg COP3[] = {
    Mips::COP30, Mips::COP31, Mips::COP32, Mips::COP33, Mips::COP34, Mips::COP35, Mips::COP36, Mips::COP37, Mips::COP38, Mips::COP39, Mips::COP310, Mips::COP311, Mips::COP312, Mips::COP313, Mips::COP314, Mips::COP315, Mips::COP316, Mips::COP317, Mips::COP318, Mips::COP319, Mips::COP320, Mips::COP321, Mips::COP322, Mips::COP323, Mips::COP324, Mips::COP325, Mips::COP326, Mips::COP327, Mips::COP328, Mips::COP329, Mips::COP330, Mips::COP331, 
  };

  // COP3 Bit set.
  const uint8_t COP3Bits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x7f, 
  };

  // DSPR Register Class...
  const MCPhysReg DSPR[] = {
    Mips::ZERO, Mips::AT, Mips::V0, Mips::V1, Mips::A0, Mips::A1, Mips::A2, Mips::A3, Mips::T0, Mips::T1, Mips::T2, Mips::T3, Mips::T4, Mips::T5, Mips::T6, Mips::T7, Mips::S0, Mips::S1, Mips::S2, Mips::S3, Mips::S4, Mips::S5, Mips::S6, Mips::S7, Mips::T8, Mips::T9, Mips::K0, Mips::K1, Mips::GP, Mips::SP, Mips::FP, Mips::RA, 
  };

  // DSPR Bit set.
  const uint8_t DSPRBits[] = {
    0x02, 0x03, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0xbf, 0xff, 0x07, 
  };

  // FGR32 Register Class...
  const MCPhysReg FGR32[] = {
    Mips::F0, Mips::F1, Mips::F2, Mips::F3, Mips::F4, Mips::F5, Mips::F6, Mips::F7, Mips::F8, Mips::F9, Mips::F10, Mips::F11, Mips::F12, Mips::F13, Mips::F14, Mips::F15, Mips::F16, Mips::F17, Mips::F18, Mips::F19, Mips::F20, Mips::F21, Mips::F22, Mips::F23, Mips::F24, Mips::F25, Mips::F26, Mips::F27, Mips::F28, Mips::F29, Mips::F30, Mips::F31, 
  };

  // FGR32 Bit set.
  const uint8_t FGR32Bits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x07, 
  };

  // FGRCC Register Class...
  const MCPhysReg FGRCC[] = {
    Mips::F0, Mips::F1, Mips::F2, Mips::F3, Mips::F4, Mips::F5, Mips::F6, Mips::F7, Mips::F8, Mips::F9, Mips::F10, Mips::F11, Mips::F12, Mips::F13, Mips::F14, Mips::F15, Mips::F16, Mips::F17, Mips::F18, Mips::F19, Mips::F20, Mips::F21, Mips::F22, Mips::F23, Mips::F24, Mips::F25, Mips::F26, Mips::F27, Mips::F28, Mips::F29, Mips::F30, Mips::F31, 
  };

  // FGRCC Bit set.
  const uint8_t FGRCCBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x07, 
  };

  // FGRH32 Register Class...
  const MCPhysReg FGRH32[] = {
    Mips::F_HI0, Mips::F_HI1, Mips::F_HI2, Mips::F_HI3, Mips::F_HI4, Mips::F_HI5, Mips::F_HI6, Mips::F_HI7, Mips::F_HI8, Mips::F_HI9, Mips::F_HI10, Mips::F_HI11, Mips::F_HI12, Mips::F_HI13, Mips::F_HI14, Mips::F_HI15, Mips::F_HI16, Mips::F_HI17, Mips::F_HI18, Mips::F_HI19, Mips::F_HI20, Mips::F_HI21, Mips::F_HI22, Mips::F_HI23, Mips::F_HI24, Mips::F_HI25, Mips::F_HI26, Mips::F_HI27, Mips::F_HI28, Mips::F_HI29, Mips::F_HI30, Mips::F_HI31, 
  };

  // FGRH32 Bit set.
  const uint8_t FGRH32Bits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0x0f, 
  };

  // GPR32 Register Class...
  const MCPhysReg GPR32[] = {
    Mips::ZERO, Mips::AT, Mips::V0, Mips::V1, Mips::A0, Mips::A1, Mips::A2, Mips::A3, Mips::T0, Mips::T1, Mips::T2, Mips::T3, Mips::T4, Mips::T5, Mips::T6, Mips::T7, Mips::S0, Mips::S1, Mips::S2, Mips::S3, Mips::S4, Mips::S5, Mips::S6, Mips::S7, Mips::T8, Mips::T9, Mips::K0, Mips::K1, Mips::GP, Mips::SP, Mips::FP, Mips::RA, 
  };

  // GPR32 Bit set.
  const uint8_t GPR32Bits[] = {
    0x02, 0x03, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0xbf, 0xff, 0x07, 
  };

  // HWRegs Register Class...
  const MCPhysReg HWRegs[] = {
    Mips::HWR0, Mips::HWR1, Mips::HWR2, Mips::HWR3, Mips::HWR4, Mips::HWR5, Mips::HWR6, Mips::HWR7, Mips::HWR8, Mips::HWR9, Mips::HWR10, Mips::HWR11, Mips::HWR12, Mips::HWR13, Mips::HWR14, Mips::HWR15, Mips::HWR16, Mips::HWR17, Mips::HWR18, Mips::HWR19, Mips::HWR20, Mips::HWR21, Mips::HWR22, Mips::HWR23, Mips::HWR24, Mips::HWR25, Mips::HWR26, Mips::HWR27, Mips::HWR28, Mips::HWR29, Mips::HWR30, Mips::HWR31, 
  };

  // HWRegs Bit set.
  const uint8_t HWRegsBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 
  };

  // GPR32NONZERO Register Class...
  const MCPhysReg GPR32NONZERO[] = {
    Mips::AT, Mips::V0, Mips::V1, Mips::A0, Mips::A1, Mips::A2, Mips::A3, Mips::T0, Mips::T1, Mips::T2, Mips::T3, Mips::T4, Mips::T5, Mips::T6, Mips::T7, Mips::S0, Mips::S1, Mips::S2, Mips::S3, Mips::S4, Mips::S5, Mips::S6, Mips::S7, Mips::T8, Mips::T9, Mips::K0, Mips::K1, Mips::GP, Mips::SP, Mips::FP, Mips::RA, 
  };

  // GPR32NONZERO Bit set.
  const uint8_t GPR32NONZEROBits[] = {
    0x02, 0x03, 0xd8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xc0, 0xbf, 0xff, 0x07, 
  };

  // OddSP_with_sub_hi Register Class...
  const MCPhysReg OddSP_with_sub_hi[] = {
    Mips::D1, Mips::D3, Mips::D5, Mips::D7, Mips::D9, Mips::D11, Mips::D13, Mips::D15, Mips::D1_64, Mips::D3_64, Mips::D5_64, Mips::D7_64, Mips::D9_64, Mips::D11_64, Mips::D13_64, Mips::D15_64, Mips::D17_64, Mips::D19_64, Mips::D21_64, Mips::D23_64, Mips::D25_64, Mips::D27_64, Mips::D29_64, Mips::D31_64, 
  };

  // OddSP_with_sub_hi Bit set.
  const uint8_t OddSP_with_sub_hiBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x55, 0x55, 0x01, 
  };

  // FGR32_and_OddSP Register Class...
  const MCPhysReg FGR32_and_OddSP[] = {
    Mips::F1, Mips::F3, Mips::F5, Mips::F7, Mips::F9, Mips::F11, Mips::F13, Mips::F15, Mips::F17, Mips::F19, Mips::F21, Mips::F23, Mips::F25, Mips::F27, Mips::F29, Mips::F31, 
  };

  // FGR32_and_OddSP Bit set.
  const uint8_t FGR32_and_OddSPBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x55, 0x55, 0x05, 
  };

  // FGRH32_and_OddSP Register Class...
  const MCPhysReg FGRH32_and_OddSP[] = {
    Mips::F_HI1, Mips::F_HI3, Mips::F_HI5, Mips::F_HI7, Mips::F_HI9, Mips::F_HI11, Mips::F_HI13, Mips::F_HI15, Mips::F_HI17, Mips::F_HI19, Mips::F_HI21, Mips::F_HI23, Mips::F_HI25, Mips::F_HI27, Mips::F_HI29, Mips::F_HI31, 
  };

  // FGRH32_and_OddSP Bit set.
  const uint8_t FGRH32_and_OddSPBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xaa, 0xaa, 0xaa, 0x0a, 
  };

  // OddSP_with_sub_hi_with_sub_hi_in_FGRH32 Register Class...
  const MCPhysReg OddSP_with_sub_hi_with_sub_hi_in_FGRH32[] = {
    Mips::D1_64, Mips::D3_64, Mips::D5_64, Mips::D7_64, Mips::D9_64, Mips::D11_64, Mips::D13_64, Mips::D15_64, Mips::D17_64, Mips::D19_64, Mips::D21_64, Mips::D23_64, Mips::D25_64, Mips::D27_64, Mips::D29_64, Mips::D31_64, 
  };

  // OddSP_with_sub_hi_with_sub_hi_in_FGRH32 Bit set.
  const uint8_t OddSP_with_sub_hi_with_sub_hi_in_FGRH32Bits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x55, 0x55, 0x01, 
  };

  // CPU16RegsPlusSP Register Class...
  const MCPhysReg CPU16RegsPlusSP[] = {
    Mips::V0, Mips::V1, Mips::A0, Mips::A1, Mips::A2, Mips::A3, Mips::S0, Mips::S1, Mips::SP, 
  };

  // CPU16RegsPlusSP Bit set.
  const uint8_t CPU16RegsPlusSPBits[] = {
    0x00, 0x00, 0xd0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x06, 
  };

  // CPU16Regs Register Class...
  const MCPhysReg CPU16Regs[] = {
    Mips::V0, Mips::V1, Mips::A0, Mips::A1, Mips::A2, Mips::A3, Mips::S0, Mips::S1, 
  };

  // CPU16Regs Bit set.
  const uint8_t CPU16RegsBits[] = {
    0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x06, 
  };

  // FCC Register Class...
  const MCPhysReg FCC[] = {
    Mips::FCC0, Mips::FCC1, Mips::FCC2, Mips::FCC3, Mips::FCC4, Mips::FCC5, Mips::FCC6, Mips::FCC7, 
  };

  // FCC Bit set.
  const uint8_t FCCBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, 
  };

  // GPRMM16 Register Class...
  const MCPhysReg GPRMM16[] = {
    Mips::S0, Mips::S1, Mips::V0, Mips::V1, Mips::A0, Mips::A1, Mips::A2, Mips::A3, 
  };

  // GPRMM16 Bit set.
  const uint8_t GPRMM16Bits[] = {
    0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x06, 
  };

  // GPRMM16MoveP Register Class...
  const MCPhysReg GPRMM16MoveP[] = {
    Mips::ZERO, Mips::S1, Mips::V0, Mips::V1, Mips::S0, Mips::S2, Mips::S3, Mips::S4, 
  };

  // GPRMM16MoveP Bit set.
  const uint8_t GPRMM16MovePBits[] = {
    0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x06, 
  };

  // GPRMM16Zero Register Class...
  const MCPhysReg GPRMM16Zero[] = {
    Mips::ZERO, Mips::S1, Mips::V0, Mips::V1, Mips::A0, Mips::A1, Mips::A2, Mips::A3, 
  };

  // GPRMM16Zero Bit set.
  const uint8_t GPRMM16ZeroBits[] = {
    0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x06, 
  };

  // MSACtrl Register Class...
  const MCPhysReg MSACtrl[] = {
    Mips::MSAIR, Mips::MSACSR, Mips::MSAAccess, Mips::MSASave, Mips::MSAModify, Mips::MSARequest, Mips::MSAMap, Mips::MSAUnmap, 
  };

  // MSACtrl Bit set.
  const uint8_t MSACtrlBits[] = {
    0x00, 0xfc, 0x03, 
  };

  // OddSP_with_sub_hi_with_sub_hi_in_FGR32 Register Class...
  const MCPhysReg OddSP_with_sub_hi_with_sub_hi_in_FGR32[] = {
    Mips::D1, Mips::D3, Mips::D5, Mips::D7, Mips::D9, Mips::D11, Mips::D13, Mips::D15, 
  };

  // OddSP_with_sub_hi_with_sub_hi_in_FGR32 Bit set.
  const uint8_t OddSP_with_sub_hi_with_sub_hi_in_FGR32Bits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 
  };

  // CPU16Regs_and_GPRMM16Zero Register Class...
  const MCPhysReg CPU16Regs_and_GPRMM16Zero[] = {
    Mips::S1, Mips::V0, Mips::V1, Mips::A0, Mips::A1, Mips::A2, Mips::A3, 
  };

  // CPU16Regs_and_GPRMM16Zero Bit set.
  const uint8_t CPU16Regs_and_GPRMM16ZeroBits[] = {
    0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x06, 
  };

  // GPR32NONZERO_and_GPRMM16MoveP Register Class...
  const MCPhysReg GPR32NONZERO_and_GPRMM16MoveP[] = {
    Mips::S1, Mips::V0, Mips::V1, Mips::S0, Mips::S2, Mips::S3, Mips::S4, 
  };

  // GPR32NONZERO_and_GPRMM16MoveP Bit set.
  const uint8_t GPR32NONZERO_and_GPRMM16MovePBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x06, 
  };

  // GPRMM16MovePPairSecond Register Class...
  const MCPhysReg GPRMM16MovePPairSecond[] = {
    Mips::A1, Mips::A2, Mips::A3, Mips::S5, Mips::S6, 
  };

  // GPRMM16MovePPairSecond Bit set.
  const uint8_t GPRMM16MovePPairSecondBits[] = {
    0x00, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 
  };

  // CPU16Regs_and_GPRMM16MoveP Register Class...
  const MCPhysReg CPU16Regs_and_GPRMM16MoveP[] = {
    Mips::S1, Mips::V0, Mips::V1, Mips::S0, 
  };

  // CPU16Regs_and_GPRMM16MoveP Bit set.
  const uint8_t CPU16Regs_and_GPRMM16MovePBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x06, 
  };

  // GPRMM16MoveP_and_GPRMM16Zero Register Class...
  const MCPhysReg GPRMM16MoveP_and_GPRMM16Zero[] = {
    Mips::ZERO, Mips::S1, Mips::V0, Mips::V1, 
  };

  // GPRMM16MoveP_and_GPRMM16Zero Bit set.
  const uint8_t GPRMM16MoveP_and_GPRMM16ZeroBits[] = {
    0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x06, 
  };

  // HI32DSP Register Class...
  const MCPhysReg HI32DSP[] = {
    Mips::HI0, Mips::HI1, Mips::HI2, Mips::HI3, 
  };

  // HI32DSP Bit set.
  const uint8_t HI32DSPBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x01, 
  };

  // LO32DSP Register Class...
  const MCPhysReg LO32DSP[] = {
    Mips::LO0, Mips::LO1, Mips::LO2, Mips::LO3, 
  };

  // LO32DSP Bit set.
  const uint8_t LO32DSPBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 
  };

  // CPU16Regs_and_GPRMM16MovePPairSecond Register Class...
  const MCPhysReg CPU16Regs_and_GPRMM16MovePPairSecond[] = {
    Mips::A1, Mips::A2, Mips::A3, 
  };

  // CPU16Regs_and_GPRMM16MovePPairSecond Bit set.
  const uint8_t CPU16Regs_and_GPRMM16MovePPairSecondBits[] = {
    0x00, 0x00, 0x80, 0x03, 
  };

  // GPRMM16MovePPairFirst Register Class...
  const MCPhysReg GPRMM16MovePPairFirst[] = {
    Mips::A0, Mips::A1, Mips::A2, 
  };

  // GPRMM16MovePPairFirst Bit set.
  const uint8_t GPRMM16MovePPairFirstBits[] = {
    0x00, 0x00, 0xc0, 0x01, 
  };

  // GPRMM16MoveP_and_CPU16Regs_and_GPRMM16Zero Register Class...
  const MCPhysReg GPRMM16MoveP_and_CPU16Regs_and_GPRMM16Zero[] = {
    Mips::S1, Mips::V0, Mips::V1, 
  };

  // GPRMM16MoveP_and_CPU16Regs_and_GPRMM16Zero Bit set.
  const uint8_t GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x06, 
  };

  // GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecond Register Class...
  const MCPhysReg GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecond[] = {
    Mips::A1, Mips::A2, 
  };

  // GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecond Bit set.
  const uint8_t GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondBits[] = {
    0x00, 0x00, 0x80, 0x01, 
  };

  // CPURAReg Register Class...
  const MCPhysReg CPURAReg[] = {
    Mips::RA, 
  };

  // CPURAReg Bit set.
  const uint8_t CPURARegBits[] = {
    0x00, 0x00, 0x08, 
  };

  // CPUSPReg Register Class...
  const MCPhysReg CPUSPReg[] = {
    Mips::SP, 
  };

  // CPUSPReg Bit set.
  const uint8_t CPUSPRegBits[] = {
    0x00, 0x00, 0x10, 
  };

  // DSPCC Register Class...
  const MCPhysReg DSPCC[] = {
    Mips::DSPCCond, 
  };

  // DSPCC Bit set.
  const uint8_t DSPCCBits[] = {
    0x04, 
  };

  // GP32 Register Class...
  const MCPhysReg GP32[] = {
    Mips::GP, 
  };

  // GP32 Bit set.
  const uint8_t GP32Bits[] = {
    0x00, 0x02, 
  };

  // GPR32ZERO Register Class...
  const MCPhysReg GPR32ZERO[] = {
    Mips::ZERO, 
  };

  // GPR32ZERO Bit set.
  const uint8_t GPR32ZEROBits[] = {
    0x00, 0x00, 0x20, 
  };

  // HI32 Register Class...
  const MCPhysReg HI32[] = {
    Mips::HI0, 
  };

  // HI32 Bit set.
  const uint8_t HI32Bits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 
  };

  // LO32 Register Class...
  const MCPhysReg LO32[] = {
    Mips::LO0, 
  };

  // LO32 Bit set.
  const uint8_t LO32Bits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 
  };

  // SP32 Register Class...
  const MCPhysReg SP32[] = {
    Mips::SP, 
  };

  // SP32 Bit set.
  const uint8_t SP32Bits[] = {
    0x00, 0x00, 0x10, 
  };

  // FGR64 Register Class...
  const MCPhysReg FGR64[] = {
    Mips::D0_64, Mips::D1_64, Mips::D2_64, Mips::D3_64, Mips::D4_64, Mips::D5_64, Mips::D6_64, Mips::D7_64, Mips::D8_64, Mips::D9_64, Mips::D10_64, Mips::D11_64, Mips::D12_64, Mips::D13_64, Mips::D14_64, Mips::D15_64, Mips::D16_64, Mips::D17_64, Mips::D18_64, Mips::D19_64, Mips::D20_64, Mips::D21_64, Mips::D22_64, Mips::D23_64, Mips::D24_64, Mips::D25_64, Mips::D26_64, Mips::D27_64, Mips::D28_64, Mips::D29_64, Mips::D30_64, Mips::D31_64, 
  };

  // FGR64 Bit set.
  const uint8_t FGR64Bits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x01, 
  };

  // GPR64 Register Class...
  const MCPhysReg GPR64[] = {
    Mips::ZERO_64, Mips::AT_64, Mips::V0_64, Mips::V1_64, Mips::A0_64, Mips::A1_64, Mips::A2_64, Mips::A3_64, Mips::T0_64, Mips::T1_64, Mips::T2_64, Mips::T3_64, Mips::T4_64, Mips::T5_64, Mips::T6_64, Mips::T7_64, Mips::S0_64, Mips::S1_64, Mips::S2_64, Mips::S3_64, Mips::S4_64, Mips::S5_64, Mips::S6_64, Mips::S7_64, Mips::T8_64, Mips::T9_64, Mips::K0_64, Mips::K1_64, Mips::GP_64, Mips::SP_64, Mips::FP_64, Mips::RA_64, 
  };

  // GPR64 Bit set.
  const uint8_t GPR64Bits[] = {
    0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xff, 0xff, 0x03, 
  };

  // GPR64_with_sub_32_in_GPR32NONZERO Register Class...
  const MCPhysReg GPR64_with_sub_32_in_GPR32NONZERO[] = {
    Mips::AT_64, Mips::V0_64, Mips::V1_64, Mips::A0_64, Mips::A1_64, Mips::A2_64, Mips::A3_64, Mips::T0_64, Mips::T1_64, Mips::T2_64, Mips::T3_64, Mips::T4_64, Mips::T5_64, Mips::T6_64, Mips::T7_64, Mips::S0_64, Mips::S1_64, Mips::S2_64, Mips::S3_64, Mips::S4_64, Mips::S5_64, Mips::S6_64, Mips::S7_64, Mips::T8_64, Mips::T9_64, Mips::K0_64, Mips::K1_64, Mips::GP_64, Mips::SP_64, Mips::FP_64, Mips::RA_64, 
  };

  // GPR64_with_sub_32_in_GPR32NONZERO Bit set.
  const uint8_t GPR64_with_sub_32_in_GPR32NONZEROBits[] = {
    0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xd8, 0xff, 0xff, 0x03, 
  };

  // AFGR64 Register Class...
  const MCPhysReg AFGR64[] = {
    Mips::D0, Mips::D1, Mips::D2, Mips::D3, Mips::D4, Mips::D5, Mips::D6, Mips::D7, Mips::D8, Mips::D9, Mips::D10, Mips::D11, Mips::D12, Mips::D13, Mips::D14, Mips::D15, 
  };

  // AFGR64 Bit set.
  const uint8_t AFGR64Bits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 
  };

  // FGR64_and_OddSP Register Class...
  const MCPhysReg FGR64_and_OddSP[] = {
    Mips::D1_64, Mips::D3_64, Mips::D5_64, Mips::D7_64, Mips::D9_64, Mips::D11_64, Mips::D13_64, Mips::D15_64, Mips::D17_64, Mips::D19_64, Mips::D21_64, Mips::D23_64, Mips::D25_64, Mips::D27_64, Mips::D29_64, Mips::D31_64, 
  };

  // FGR64_and_OddSP Bit set.
  const uint8_t FGR64_and_OddSPBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x55, 0x55, 0x01, 
  };

  // GPR64_with_sub_32_in_CPU16RegsPlusSP Register Class...
  const MCPhysReg GPR64_with_sub_32_in_CPU16RegsPlusSP[] = {
    Mips::V0_64, Mips::V1_64, Mips::A0_64, Mips::A1_64, Mips::A2_64, Mips::A3_64, Mips::S0_64, Mips::S1_64, Mips::SP_64, 
  };

  // GPR64_with_sub_32_in_CPU16RegsPlusSP Bit set.
  const uint8_t GPR64_with_sub_32_in_CPU16RegsPlusSPBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x03, 
  };

  // AFGR64_and_OddSP Register Class...
  const MCPhysReg AFGR64_and_OddSP[] = {
    Mips::D1, Mips::D3, Mips::D5, Mips::D7, Mips::D9, Mips::D11, Mips::D13, Mips::D15, 
  };

  // AFGR64_and_OddSP Bit set.
  const uint8_t AFGR64_and_OddSPBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 
  };

  // GPR64_with_sub_32_in_CPU16Regs Register Class...
  const MCPhysReg GPR64_with_sub_32_in_CPU16Regs[] = {
    Mips::V0_64, Mips::V1_64, Mips::A0_64, Mips::A1_64, Mips::A2_64, Mips::A3_64, Mips::S0_64, Mips::S1_64, 
  };

  // GPR64_with_sub_32_in_CPU16Regs Bit set.
  const uint8_t GPR64_with_sub_32_in_CPU16RegsBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x03, 
  };

  // GPR64_with_sub_32_in_GPRMM16MoveP Register Class...
  const MCPhysReg GPR64_with_sub_32_in_GPRMM16MoveP[] = {
    Mips::ZERO_64, Mips::V0_64, Mips::V1_64, Mips::S0_64, Mips::S1_64, Mips::S2_64, Mips::S3_64, Mips::S4_64, 
  };

  // GPR64_with_sub_32_in_GPRMM16MoveP Bit set.
  const uint8_t GPR64_with_sub_32_in_GPRMM16MovePBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x03, 
  };

  // GPR64_with_sub_32_in_GPRMM16Zero Register Class...
  const MCPhysReg GPR64_with_sub_32_in_GPRMM16Zero[] = {
    Mips::ZERO_64, Mips::V0_64, Mips::V1_64, Mips::A0_64, Mips::A1_64, Mips::A2_64, Mips::A3_64, Mips::S1_64, 
  };

  // GPR64_with_sub_32_in_GPRMM16Zero Bit set.
  const uint8_t GPR64_with_sub_32_in_GPRMM16ZeroBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 
  };

  // GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16Zero Register Class...
  const MCPhysReg GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16Zero[] = {
    Mips::V0_64, Mips::V1_64, Mips::A0_64, Mips::A1_64, Mips::A2_64, Mips::A3_64, Mips::S1_64, 
  };

  // GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16Zero Bit set.
  const uint8_t GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16ZeroBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 
  };

  // GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MoveP Register Class...
  const MCPhysReg GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MoveP[] = {
    Mips::V0_64, Mips::V1_64, Mips::S0_64, Mips::S1_64, Mips::S2_64, Mips::S3_64, Mips::S4_64, 
  };

  // GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MoveP Bit set.
  const uint8_t GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MovePBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x03, 
  };

  // GPR64_with_sub_32_in_GPRMM16MovePPairSecond Register Class...
  const MCPhysReg GPR64_with_sub_32_in_GPRMM16MovePPairSecond[] = {
    Mips::A1_64, Mips::A2_64, Mips::A3_64, Mips::S5_64, Mips::S6_64, 
  };

  // GPR64_with_sub_32_in_GPRMM16MovePPairSecond Bit set.
  const uint8_t GPR64_with_sub_32_in_GPRMM16MovePPairSecondBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 
  };

  // ACC64DSP Register Class...
  const MCPhysReg ACC64DSP[] = {
    Mips::AC0, Mips::AC1, Mips::AC2, Mips::AC3, 
  };

  // ACC64DSP Bit set.
  const uint8_t ACC64DSPBits[] = {
    0x00, 0x00, 0x00, 0x3c, 
  };

  // GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MoveP Register Class...
  const MCPhysReg GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MoveP[] = {
    Mips::V0_64, Mips::V1_64, Mips::S0_64, Mips::S1_64, 
  };

  // GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MoveP Bit set.
  const uint8_t GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x03, 
  };

  // GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16Zero Register Class...
  const MCPhysReg GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16Zero[] = {
    Mips::ZERO_64, Mips::V0_64, Mips::V1_64, Mips::S1_64, 
  };

  // GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16Zero Bit set.
  const uint8_t GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16ZeroBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 
  };

  // GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePPairSecond Register Class...
  const MCPhysReg GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePPairSecond[] = {
    Mips::A1_64, Mips::A2_64, Mips::A3_64, 
  };

  // GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePPairSecond Bit set.
  const uint8_t GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePPairSecondBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 
  };

  // GPR64_with_sub_32_in_GPRMM16MovePPairFirst Register Class...
  const MCPhysReg GPR64_with_sub_32_in_GPRMM16MovePPairFirst[] = {
    Mips::A0_64, Mips::A1_64, Mips::A2_64, 
  };

  // GPR64_with_sub_32_in_GPRMM16MovePPairFirst Bit set.
  const uint8_t GPR64_with_sub_32_in_GPRMM16MovePPairFirstBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 
  };

  // GPR64_with_sub_32_in_GPRMM16MoveP_and_CPU16Regs_and_GPRMM16Zero Register Class...
  const MCPhysReg GPR64_with_sub_32_in_GPRMM16MoveP_and_CPU16Regs_and_GPRMM16Zero[] = {
    Mips::V0_64, Mips::V1_64, Mips::S1_64, 
  };

  // GPR64_with_sub_32_in_GPRMM16MoveP_and_CPU16Regs_and_GPRMM16Zero Bit set.
  const uint8_t GPR64_with_sub_32_in_GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 
  };

  // OCTEON_MPL Register Class...
  const MCPhysReg OCTEON_MPL[] = {
    Mips::MPL0, Mips::MPL1, Mips::MPL2, 
  };

  // OCTEON_MPL Bit set.
  const uint8_t OCTEON_MPLBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 
  };

  // OCTEON_P Register Class...
  const MCPhysReg OCTEON_P[] = {
    Mips::P0, Mips::P1, Mips::P2, 
  };

  // OCTEON_P Bit set.
  const uint8_t OCTEON_PBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 
  };

  // GPR64_with_sub_32_in_GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecond Register Class...
  const MCPhysReg GPR64_with_sub_32_in_GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecond[] = {
    Mips::A1_64, Mips::A2_64, 
  };

  // GPR64_with_sub_32_in_GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecond Bit set.
  const uint8_t GPR64_with_sub_32_in_GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 
  };

  // ACC64 Register Class...
  const MCPhysReg ACC64[] = {
    Mips::AC0, 
  };

  // ACC64 Bit set.
  const uint8_t ACC64Bits[] = {
    0x00, 0x00, 0x00, 0x04, 
  };

  // GP64 Register Class...
  const MCPhysReg GP64[] = {
    Mips::GP_64, 
  };

  // GP64 Bit set.
  const uint8_t GP64Bits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 
  };

  // GPR64_with_sub_32_in_CPURAReg Register Class...
  const MCPhysReg GPR64_with_sub_32_in_CPURAReg[] = {
    Mips::RA_64, 
  };

  // GPR64_with_sub_32_in_CPURAReg Bit set.
  const uint8_t GPR64_with_sub_32_in_CPURARegBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 
  };

  // GPR64_with_sub_32_in_GPR32ZERO Register Class...
  const MCPhysReg GPR64_with_sub_32_in_GPR32ZERO[] = {
    Mips::ZERO_64, 
  };

  // GPR64_with_sub_32_in_GPR32ZERO Bit set.
  const uint8_t GPR64_with_sub_32_in_GPR32ZEROBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 
  };

  // HI64 Register Class...
  const MCPhysReg HI64[] = {
    Mips::HI0_64, 
  };

  // HI64 Bit set.
  const uint8_t HI64Bits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 
  };

  // LO64 Register Class...
  const MCPhysReg LO64[] = {
    Mips::LO0_64, 
  };

  // LO64 Bit set.
  const uint8_t LO64Bits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 
  };

  // SP64 Register Class...
  const MCPhysReg SP64[] = {
    Mips::SP_64, 
  };

  // SP64 Bit set.
  const uint8_t SP64Bits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 
  };

  // MSA128B Register Class...
  const MCPhysReg MSA128B[] = {
    Mips::W0, Mips::W1, Mips::W2, Mips::W3, Mips::W4, Mips::W5, Mips::W6, Mips::W7, Mips::W8, Mips::W9, Mips::W10, Mips::W11, Mips::W12, Mips::W13, Mips::W14, Mips::W15, Mips::W16, Mips::W17, Mips::W18, Mips::W19, Mips::W20, Mips::W21, Mips::W22, Mips::W23, Mips::W24, Mips::W25, Mips::W26, Mips::W27, Mips::W28, Mips::W29, Mips::W30, Mips::W31, 
  };

  // MSA128B Bit set.
  const uint8_t MSA128BBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x07, 
  };

  // MSA128D Register Class...
  const MCPhysReg MSA128D[] = {
    Mips::W0, Mips::W1, Mips::W2, Mips::W3, Mips::W4, Mips::W5, Mips::W6, Mips::W7, Mips::W8, Mips::W9, Mips::W10, Mips::W11, Mips::W12, Mips::W13, Mips::W14, Mips::W15, Mips::W16, Mips::W17, Mips::W18, Mips::W19, Mips::W20, Mips::W21, Mips::W22, Mips::W23, Mips::W24, Mips::W25, Mips::W26, Mips::W27, Mips::W28, Mips::W29, Mips::W30, Mips::W31, 
  };

  // MSA128D Bit set.
  const uint8_t MSA128DBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x07, 
  };

  // MSA128H Register Class...
  const MCPhysReg MSA128H[] = {
    Mips::W0, Mips::W1, Mips::W2, Mips::W3, Mips::W4, Mips::W5, Mips::W6, Mips::W7, Mips::W8, Mips::W9, Mips::W10, Mips::W11, Mips::W12, Mips::W13, Mips::W14, Mips::W15, Mips::W16, Mips::W17, Mips::W18, Mips::W19, Mips::W20, Mips::W21, Mips::W22, Mips::W23, Mips::W24, Mips::W25, Mips::W26, Mips::W27, Mips::W28, Mips::W29, Mips::W30, Mips::W31, 
  };

  // MSA128H Bit set.
  const uint8_t MSA128HBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x07, 
  };

  // MSA128W Register Class...
  const MCPhysReg MSA128W[] = {
    Mips::W0, Mips::W1, Mips::W2, Mips::W3, Mips::W4, Mips::W5, Mips::W6, Mips::W7, Mips::W8, Mips::W9, Mips::W10, Mips::W11, Mips::W12, Mips::W13, Mips::W14, Mips::W15, Mips::W16, Mips::W17, Mips::W18, Mips::W19, Mips::W20, Mips::W21, Mips::W22, Mips::W23, Mips::W24, Mips::W25, Mips::W26, Mips::W27, Mips::W28, Mips::W29, Mips::W30, Mips::W31, 
  };

  // MSA128W Bit set.
  const uint8_t MSA128WBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0x07, 
  };

  // MSA128B_with_sub_64_in_OddSP Register Class...
  const MCPhysReg MSA128B_with_sub_64_in_OddSP[] = {
    Mips::W1, Mips::W3, Mips::W5, Mips::W7, Mips::W9, Mips::W11, Mips::W13, Mips::W15, Mips::W17, Mips::W19, Mips::W21, Mips::W23, Mips::W25, Mips::W27, Mips::W29, Mips::W31, 
  };

  // MSA128B_with_sub_64_in_OddSP Bit set.
  const uint8_t MSA128B_with_sub_64_in_OddSPBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x55, 0x55, 0x55, 0x05, 
  };

  // MSA128WEvens Register Class...
  const MCPhysReg MSA128WEvens[] = {
    Mips::W0, Mips::W2, Mips::W4, Mips::W6, Mips::W8, Mips::W10, Mips::W12, Mips::W14, Mips::W16, Mips::W18, Mips::W20, Mips::W22, Mips::W24, Mips::W26, Mips::W28, Mips::W30, 
  };

  // MSA128WEvens Bit set.
  const uint8_t MSA128WEvensBits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0xaa, 0xaa, 0xaa, 0x02, 
  };

  // ACC128 Register Class...
  const MCPhysReg ACC128[] = {
    Mips::AC0_64, 
  };

  // ACC128 Bit set.
  const uint8_t ACC128Bits[] = {
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 
  };

} // end anonymous namespace

extern const char MipsRegClassStrings[] = {
  /* 0 */ 'C', 'O', 'P', '0', 0,
  /* 5 */ 'O', 'd', 'd', 'S', 'P', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', 'h', 'i', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', 'h', 'i', '_', 'i', 'n', '_', 'F', 'G', 'R', 'H', '3', '2', 0,
  /* 45 */ 'H', 'I', '3', '2', 0,
  /* 50 */ 'L', 'O', '3', '2', 0,
  /* 55 */ 'G', 'P', '3', '2', 0,
  /* 60 */ 'S', 'P', '3', '2', 0,
  /* 65 */ 'O', 'd', 'd', 'S', 'P', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', 'h', 'i', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', 'h', 'i', '_', 'i', 'n', '_', 'F', 'G', 'R', '3', '2', 0,
  /* 104 */ 'G', 'P', 'R', '3', '2', 0,
  /* 110 */ 'C', 'O', 'P', '2', 0,
  /* 115 */ 'C', 'O', 'P', '3', 0,
  /* 120 */ 'A', 'C', 'C', '6', '4', 0,
  /* 126 */ 'H', 'I', '6', '4', 0,
  /* 131 */ 'L', 'O', '6', '4', 0,
  /* 136 */ 'G', 'P', '6', '4', 0,
  /* 141 */ 'S', 'P', '6', '4', 0,
  /* 146 */ 'A', 'F', 'G', 'R', '6', '4', 0,
  /* 153 */ 'G', 'P', 'R', '6', '4', 0,
  /* 159 */ 'M', 'S', 'A', '1', '2', '8', 'F', '1', '6', 0,
  /* 169 */ 'G', 'P', 'R', 'M', 'M', '1', '6', 0,
  /* 177 */ 'A', 'C', 'C', '1', '2', '8', 0,
  /* 184 */ 'M', 'S', 'A', '1', '2', '8', 'B', 0,
  /* 192 */ 'F', 'C', 'C', 0,
  /* 196 */ 'D', 'S', 'P', 'C', 'C', 0,
  /* 202 */ 'F', 'G', 'R', 'C', 'C', 0,
  /* 208 */ 'M', 'S', 'A', '1', '2', '8', 'D', 0,
  /* 216 */ 'M', 'S', 'A', '1', '2', '8', 'H', 0,
  /* 224 */ 'O', 'C', 'T', 'E', 'O', 'N', '_', 'M', 'P', 'L', 0,
  /* 235 */ 'G', 'P', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', '_', 'i', 'n', '_', 'G', 'P', 'R', '3', '2', 'Z', 'E', 'R', 'O', 0,
  /* 266 */ 'G', 'P', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', '_', 'i', 'n', '_', 'G', 'P', 'R', '3', '2', 'N', 'O', 'N', 'Z', 'E', 'R', 'O', 0,
  /* 300 */ 'H', 'I', '3', '2', 'D', 'S', 'P', 0,
  /* 308 */ 'L', 'O', '3', '2', 'D', 'S', 'P', 0,
  /* 316 */ 'A', 'C', 'C', '6', '4', 'D', 'S', 'P', 0,
  /* 325 */ 'F', 'G', 'R', 'H', '3', '2', '_', 'a', 'n', 'd', '_', 'O', 'd', 'd', 'S', 'P', 0,
  /* 342 */ 'F', 'G', 'R', '3', '2', '_', 'a', 'n', 'd', '_', 'O', 'd', 'd', 'S', 'P', 0,
  /* 358 */ 'A', 'F', 'G', 'R', '6', '4', '_', 'a', 'n', 'd', '_', 'O', 'd', 'd', 'S', 'P', 0,
  /* 375 */ 'M', 'S', 'A', '1', '2', '8', 'F', '1', '6', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '6', '4', '_', 'i', 'n', '_', 'O', 'd', 'd', 'S', 'P', 0,
  /* 406 */ 'M', 'S', 'A', '1', '2', '8', 'B', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '6', '4', '_', 'i', 'n', '_', 'O', 'd', 'd', 'S', 'P', 0,
  /* 435 */ 'G', 'P', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', '_', 'i', 'n', '_', 'C', 'P', 'U', '1', '6', 'R', 'e', 'g', 's', 'P', 'l', 'u', 's', 'S', 'P', 0,
  /* 472 */ 'O', 'C', 'T', 'E', 'O', 'N', '_', 'P', 0,
  /* 481 */ 'G', 'P', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', '_', 'i', 'n', '_', 'G', 'P', 'R', '3', '2', 'N', 'O', 'N', 'Z', 'E', 'R', 'O', '_', 'a', 'n', 'd', '_', 'G', 'P', 'R', 'M', 'M', '1', '6', 'M', 'o', 'v', 'e', 'P', 0,
  /* 532 */ 'G', 'P', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', '_', 'i', 'n', '_', 'C', 'P', 'U', '1', '6', 'R', 'e', 'g', 's', '_', 'a', 'n', 'd', '_', 'G', 'P', 'R', 'M', 'M', '1', '6', 'M', 'o', 'v', 'e', 'P', 0,
  /* 580 */ 'G', 'P', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', '_', 'i', 'n', '_', 'G', 'P', 'R', 'M', 'M', '1', '6', 'M', 'o', 'v', 'e', 'P', 0,
  /* 614 */ 'C', 'C', 'R', 0,
  /* 618 */ 'D', 'S', 'P', 'R', 0,
  /* 623 */ 'M', 'S', 'A', '1', '2', '8', 'W', 0,
  /* 631 */ 'G', 'P', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', '_', 'i', 'n', '_', 'C', 'P', 'U', '1', '6', 'R', 'e', 'g', 's', '_', 'a', 'n', 'd', '_', 'G', 'P', 'R', 'M', 'M', '1', '6', 'M', 'o', 'v', 'e', 'P', 'P', 'a', 'i', 'r', 'S', 'e', 'c', 'o', 'n', 'd', 0,
  /* 689 */ 'G', 'P', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', '_', 'i', 'n', '_', 'G', 'P', 'R', 'M', 'M', '1', '6', 'M', 'o', 'v', 'e', 'P', 'P', 'a', 'i', 'r', 'F', 'i', 'r', 's', 't', '_', 'a', 'n', 'd', '_', 'G', 'P', 'R', 'M', 'M', '1', '6', 'M', 'o', 'v', 'e', 'P', 'P', 'a', 'i', 'r', 'S', 'e', 'c', 'o', 'n', 'd', 0,
  /* 759 */ 'G', 'P', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', '_', 'i', 'n', '_', 'G', 'P', 'R', 'M', 'M', '1', '6', 'M', 'o', 'v', 'e', 'P', 'P', 'a', 'i', 'r', 'S', 'e', 'c', 'o', 'n', 'd', 0,
  /* 803 */ 'G', 'P', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', '_', 'i', 'n', '_', 'C', 'P', 'U', 'R', 'A', 'R', 'e', 'g', 0,
  /* 833 */ 'C', 'P', 'U', 'S', 'P', 'R', 'e', 'g', 0,
  /* 842 */ 'O', 'd', 'd', 'S', 'P', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', 'h', 'i', 0,
  /* 860 */ 'M', 'S', 'A', 'C', 't', 'r', 'l', 0,
  /* 868 */ 'G', 'P', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', '_', 'i', 'n', '_', 'G', 'P', 'R', 'M', 'M', '1', '6', 'M', 'o', 'v', 'e', 'P', '_', 'a', 'n', 'd', '_', 'G', 'P', 'R', 'M', 'M', '1', '6', 'Z', 'e', 'r', 'o', 0,
  /* 918 */ 'G', 'P', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', '_', 'i', 'n', '_', 'G', 'P', 'R', 'M', 'M', '1', '6', 'M', 'o', 'v', 'e', 'P', '_', 'a', 'n', 'd', '_', 'C', 'P', 'U', '1', '6', 'R', 'e', 'g', 's', '_', 'a', 'n', 'd', '_', 'G', 'P', 'R', 'M', 'M', '1', '6', 'Z', 'e', 'r', 'o', 0,
  /* 982 */ 'G', 'P', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', '_', 'i', 'n', '_', 'C', 'P', 'U', '1', '6', 'R', 'e', 'g', 's', '_', 'a', 'n', 'd', '_', 'G', 'P', 'R', 'M', 'M', '1', '6', 'Z', 'e', 'r', 'o', 0,
  /* 1029 */ 'G', 'P', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', '_', 'i', 'n', '_', 'G', 'P', 'R', 'M', 'M', '1', '6', 'Z', 'e', 'r', 'o', 0,
  /* 1062 */ 'G', 'P', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', '_', 'i', 'n', '_', 'C', 'P', 'U', '1', '6', 'R', 'e', 'g', 's', 0,
  /* 1093 */ 'H', 'W', 'R', 'e', 'g', 's', 0,
  /* 1100 */ 'M', 'S', 'A', '1', '2', '8', 'W', 'E', 'v', 'e', 'n', 's', 0,
  /* 1113 */ 'G', 'P', 'R', '6', '4', '_', 'w', 'i', 't', 'h', '_', 's', 'u', 'b', '_', '3', '2', '_', 'i', 'n', '_', 'G', 'P', 'R', 'M', 'M', '1', '6', 'M', 'o', 'v', 'e', 'P', 'P', 'a', 'i', 'r', 'F', 'i', 'r', 's', 't', 0,
};

extern const MCRegisterClass MipsMCRegisterClasses[] = {
  { MSA128F16, MSA128F16Bits, 159, 32, sizeof(MSA128F16Bits), Mips::MSA128F16RegClassID, 1, true },
  { MSA128F16_with_sub_64_in_OddSP, MSA128F16_with_sub_64_in_OddSPBits, 375, 16, sizeof(MSA128F16_with_sub_64_in_OddSPBits), Mips::MSA128F16_with_sub_64_in_OddSPRegClassID, 1, true },
  { OddSP, OddSPBits, 336, 56, sizeof(OddSPBits), Mips::OddSPRegClassID, 1, false },
  { CCR, CCRBits, 614, 32, sizeof(CCRBits), Mips::CCRRegClassID, 1, false },
  { COP0, COP0Bits, 0, 32, sizeof(COP0Bits), Mips::COP0RegClassID, 1, false },
  { COP2, COP2Bits, 110, 32, sizeof(COP2Bits), Mips::COP2RegClassID, 1, false },
  { COP3, COP3Bits, 115, 32, sizeof(COP3Bits), Mips::COP3RegClassID, 1, false },
  { DSPR, DSPRBits, 618, 32, sizeof(DSPRBits), Mips::DSPRRegClassID, 1, true },
  { FGR32, FGR32Bits, 98, 32, sizeof(FGR32Bits), Mips::FGR32RegClassID, 1, true },
  { FGRCC, FGRCCBits, 202, 32, sizeof(FGRCCBits), Mips::FGRCCRegClassID, 1, true },
  { FGRH32, FGRH32Bits, 38, 32, sizeof(FGRH32Bits), Mips::FGRH32RegClassID, 1, false },
  { GPR32, GPR32Bits, 104, 32, sizeof(GPR32Bits), Mips::GPR32RegClassID, 1, true },
  { HWRegs, HWRegsBits, 1093, 32, sizeof(HWRegsBits), Mips::HWRegsRegClassID, 1, false },
  { GPR32NONZERO, GPR32NONZEROBits, 287, 31, sizeof(GPR32NONZEROBits), Mips::GPR32NONZERORegClassID, 1, true },
  { OddSP_with_sub_hi, OddSP_with_sub_hiBits, 842, 24, sizeof(OddSP_with_sub_hiBits), Mips::OddSP_with_sub_hiRegClassID, 1, false },
  { FGR32_and_OddSP, FGR32_and_OddSPBits, 342, 16, sizeof(FGR32_and_OddSPBits), Mips::FGR32_and_OddSPRegClassID, 1, true },
  { FGRH32_and_OddSP, FGRH32_and_OddSPBits, 325, 16, sizeof(FGRH32_and_OddSPBits), Mips::FGRH32_and_OddSPRegClassID, 1, false },
  { OddSP_with_sub_hi_with_sub_hi_in_FGRH32, OddSP_with_sub_hi_with_sub_hi_in_FGRH32Bits, 5, 16, sizeof(OddSP_with_sub_hi_with_sub_hi_in_FGRH32Bits), Mips::OddSP_with_sub_hi_with_sub_hi_in_FGRH32RegClassID, 1, false },
  { CPU16RegsPlusSP, CPU16RegsPlusSPBits, 456, 9, sizeof(CPU16RegsPlusSPBits), Mips::CPU16RegsPlusSPRegClassID, 1, true },
  { CPU16Regs, CPU16RegsBits, 1083, 8, sizeof(CPU16RegsBits), Mips::CPU16RegsRegClassID, 1, true },
  { FCC, FCCBits, 192, 8, sizeof(FCCBits), Mips::FCCRegClassID, 1, false },
  { GPRMM16, GPRMM16Bits, 169, 8, sizeof(GPRMM16Bits), Mips::GPRMM16RegClassID, 1, true },
  { GPRMM16MoveP, GPRMM16MovePBits, 519, 8, sizeof(GPRMM16MovePBits), Mips::GPRMM16MovePRegClassID, 1, true },
  { GPRMM16Zero, GPRMM16ZeroBits, 906, 8, sizeof(GPRMM16ZeroBits), Mips::GPRMM16ZeroRegClassID, 1, true },
  { MSACtrl, MSACtrlBits, 860, 8, sizeof(MSACtrlBits), Mips::MSACtrlRegClassID, 1, true },
  { OddSP_with_sub_hi_with_sub_hi_in_FGR32, OddSP_with_sub_hi_with_sub_hi_in_FGR32Bits, 65, 8, sizeof(OddSP_with_sub_hi_with_sub_hi_in_FGR32Bits), Mips::OddSP_with_sub_hi_with_sub_hi_in_FGR32RegClassID, 1, false },
  { CPU16Regs_and_GPRMM16Zero, CPU16Regs_and_GPRMM16ZeroBits, 956, 7, sizeof(CPU16Regs_and_GPRMM16ZeroBits), Mips::CPU16Regs_and_GPRMM16ZeroRegClassID, 1, true },
  { GPR32NONZERO_and_GPRMM16MoveP, GPR32NONZERO_and_GPRMM16MovePBits, 502, 7, sizeof(GPR32NONZERO_and_GPRMM16MovePBits), Mips::GPR32NONZERO_and_GPRMM16MovePRegClassID, 1, true },
  { GPRMM16MovePPairSecond, GPRMM16MovePPairSecondBits, 666, 5, sizeof(GPRMM16MovePPairSecondBits), Mips::GPRMM16MovePPairSecondRegClassID, 1, true },
  { CPU16Regs_and_GPRMM16MoveP, CPU16Regs_and_GPRMM16MovePBits, 553, 4, sizeof(CPU16Regs_and_GPRMM16MovePBits), Mips::CPU16Regs_and_GPRMM16MovePRegClassID, 1, true },
  { GPRMM16MoveP_and_GPRMM16Zero, GPRMM16MoveP_and_GPRMM16ZeroBits, 889, 4, sizeof(GPRMM16MoveP_and_GPRMM16ZeroBits), Mips::GPRMM16MoveP_and_GPRMM16ZeroRegClassID, 1, true },
  { HI32DSP, HI32DSPBits, 300, 4, sizeof(HI32DSPBits), Mips::HI32DSPRegClassID, 1, true },
  { LO32DSP, LO32DSPBits, 308, 4, sizeof(LO32DSPBits), Mips::LO32DSPRegClassID, 1, true },
  { CPU16Regs_and_GPRMM16MovePPairSecond, CPU16Regs_and_GPRMM16MovePPairSecondBits, 652, 3, sizeof(CPU16Regs_and_GPRMM16MovePPairSecondBits), Mips::CPU16Regs_and_GPRMM16MovePPairSecondRegClassID, 1, true },
  { GPRMM16MovePPairFirst, GPRMM16MovePPairFirstBits, 1134, 3, sizeof(GPRMM16MovePPairFirstBits), Mips::GPRMM16MovePPairFirstRegClassID, 1, true },
  { GPRMM16MoveP_and_CPU16Regs_and_GPRMM16Zero, GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroBits, 939, 3, sizeof(GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroBits), Mips::GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroRegClassID, 1, true },
  { GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecond, GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondBits, 710, 2, sizeof(GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondBits), Mips::GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondRegClassID, 1, true },
  { CPURAReg, CPURARegBits, 824, 1, sizeof(CPURARegBits), Mips::CPURARegRegClassID, 1, false },
  { CPUSPReg, CPUSPRegBits, 833, 1, sizeof(CPUSPRegBits), Mips::CPUSPRegRegClassID, 1, false },
  { DSPCC, DSPCCBits, 196, 1, sizeof(DSPCCBits), Mips::DSPCCRegClassID, 1, true },
  { GP32, GP32Bits, 55, 1, sizeof(GP32Bits), Mips::GP32RegClassID, 1, false },
  { GPR32ZERO, GPR32ZEROBits, 256, 1, sizeof(GPR32ZEROBits), Mips::GPR32ZERORegClassID, 1, true },
  { HI32, HI32Bits, 45, 1, sizeof(HI32Bits), Mips::HI32RegClassID, 1, true },
  { LO32, LO32Bits, 50, 1, sizeof(LO32Bits), Mips::LO32RegClassID, 1, true },
  { SP32, SP32Bits, 60, 1, sizeof(SP32Bits), Mips::SP32RegClassID, 1, false },
  { FGR64, FGR64Bits, 147, 32, sizeof(FGR64Bits), Mips::FGR64RegClassID, 1, true },
  { GPR64, GPR64Bits, 153, 32, sizeof(GPR64Bits), Mips::GPR64RegClassID, 1, true },
  { GPR64_with_sub_32_in_GPR32NONZERO, GPR64_with_sub_32_in_GPR32NONZEROBits, 266, 31, sizeof(GPR64_with_sub_32_in_GPR32NONZEROBits), Mips::GPR64_with_sub_32_in_GPR32NONZERORegClassID, 1, true },
  { AFGR64, AFGR64Bits, 146, 16, sizeof(AFGR64Bits), Mips::AFGR64RegClassID, 1, true },
  { FGR64_and_OddSP, FGR64_and_OddSPBits, 359, 16, sizeof(FGR64_and_OddSPBits), Mips::FGR64_and_OddSPRegClassID, 1, true },
  { GPR64_with_sub_32_in_CPU16RegsPlusSP, GPR64_with_sub_32_in_CPU16RegsPlusSPBits, 435, 9, sizeof(GPR64_with_sub_32_in_CPU16RegsPlusSPBits), Mips::GPR64_with_sub_32_in_CPU16RegsPlusSPRegClassID, 1, true },
  { AFGR64_and_OddSP, AFGR64_and_OddSPBits, 358, 8, sizeof(AFGR64_and_OddSPBits), Mips::AFGR64_and_OddSPRegClassID, 1, true },
  { GPR64_with_sub_32_in_CPU16Regs, GPR64_with_sub_32_in_CPU16RegsBits, 1062, 8, sizeof(GPR64_with_sub_32_in_CPU16RegsBits), Mips::GPR64_with_sub_32_in_CPU16RegsRegClassID, 1, true },
  { GPR64_with_sub_32_in_GPRMM16MoveP, GPR64_with_sub_32_in_GPRMM16MovePBits, 580, 8, sizeof(GPR64_with_sub_32_in_GPRMM16MovePBits), Mips::GPR64_with_sub_32_in_GPRMM16MovePRegClassID, 1, true },
  { GPR64_with_sub_32_in_GPRMM16Zero, GPR64_with_sub_32_in_GPRMM16ZeroBits, 1029, 8, sizeof(GPR64_with_sub_32_in_GPRMM16ZeroBits), Mips::GPR64_with_sub_32_in_GPRMM16ZeroRegClassID, 1, true },
  { GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16Zero, GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16ZeroBits, 982, 7, sizeof(GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16ZeroBits), Mips::GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16ZeroRegClassID, 1, true },
  { GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MoveP, GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MovePBits, 481, 7, sizeof(GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MovePBits), Mips::GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MovePRegClassID, 1, true },
  { GPR64_with_sub_32_in_GPRMM16MovePPairSecond, GPR64_with_sub_32_in_GPRMM16MovePPairSecondBits, 759, 5, sizeof(GPR64_with_sub_32_in_GPRMM16MovePPairSecondBits), Mips::GPR64_with_sub_32_in_GPRMM16MovePPairSecondRegClassID, 1, true },
  { ACC64DSP, ACC64DSPBits, 316, 4, sizeof(ACC64DSPBits), Mips::ACC64DSPRegClassID, 1, true },
  { GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MoveP, GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePBits, 532, 4, sizeof(GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePBits), Mips::GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePRegClassID, 1, true },
  { GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16Zero, GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16ZeroBits, 868, 4, sizeof(GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16ZeroBits), Mips::GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16ZeroRegClassID, 1, true },
  { GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePPairSecond, GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePPairSecondBits, 631, 3, sizeof(GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePPairSecondBits), Mips::GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePPairSecondRegClassID, 1, true },
  { GPR64_with_sub_32_in_GPRMM16MovePPairFirst, GPR64_with_sub_32_in_GPRMM16MovePPairFirstBits, 1113, 3, sizeof(GPR64_with_sub_32_in_GPRMM16MovePPairFirstBits), Mips::GPR64_with_sub_32_in_GPRMM16MovePPairFirstRegClassID, 1, true },
  { GPR64_with_sub_32_in_GPRMM16MoveP_and_CPU16Regs_and_GPRMM16Zero, GPR64_with_sub_32_in_GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroBits, 918, 3, sizeof(GPR64_with_sub_32_in_GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroBits), Mips::GPR64_with_sub_32_in_GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroRegClassID, 1, true },
  { OCTEON_MPL, OCTEON_MPLBits, 224, 3, sizeof(OCTEON_MPLBits), Mips::OCTEON_MPLRegClassID, 1, false },
  { OCTEON_P, OCTEON_PBits, 472, 3, sizeof(OCTEON_PBits), Mips::OCTEON_PRegClassID, 1, false },
  { GPR64_with_sub_32_in_GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecond, GPR64_with_sub_32_in_GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondBits, 689, 2, sizeof(GPR64_with_sub_32_in_GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondBits), Mips::GPR64_with_sub_32_in_GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondRegClassID, 1, true },
  { ACC64, ACC64Bits, 120, 1, sizeof(ACC64Bits), Mips::ACC64RegClassID, 1, true },
  { GP64, GP64Bits, 136, 1, sizeof(GP64Bits), Mips::GP64RegClassID, 1, false },
  { GPR64_with_sub_32_in_CPURAReg, GPR64_with_sub_32_in_CPURARegBits, 803, 1, sizeof(GPR64_with_sub_32_in_CPURARegBits), Mips::GPR64_with_sub_32_in_CPURARegRegClassID, 1, true },
  { GPR64_with_sub_32_in_GPR32ZERO, GPR64_with_sub_32_in_GPR32ZEROBits, 235, 1, sizeof(GPR64_with_sub_32_in_GPR32ZEROBits), Mips::GPR64_with_sub_32_in_GPR32ZERORegClassID, 1, true },
  { HI64, HI64Bits, 126, 1, sizeof(HI64Bits), Mips::HI64RegClassID, 1, true },
  { LO64, LO64Bits, 131, 1, sizeof(LO64Bits), Mips::LO64RegClassID, 1, true },
  { SP64, SP64Bits, 141, 1, sizeof(SP64Bits), Mips::SP64RegClassID, 1, false },
  { MSA128B, MSA128BBits, 184, 32, sizeof(MSA128BBits), Mips::MSA128BRegClassID, 1, true },
  { MSA128D, MSA128DBits, 208, 32, sizeof(MSA128DBits), Mips::MSA128DRegClassID, 1, true },
  { MSA128H, MSA128HBits, 216, 32, sizeof(MSA128HBits), Mips::MSA128HRegClassID, 1, true },
  { MSA128W, MSA128WBits, 623, 32, sizeof(MSA128WBits), Mips::MSA128WRegClassID, 1, true },
  { MSA128B_with_sub_64_in_OddSP, MSA128B_with_sub_64_in_OddSPBits, 406, 16, sizeof(MSA128B_with_sub_64_in_OddSPBits), Mips::MSA128B_with_sub_64_in_OddSPRegClassID, 1, true },
  { MSA128WEvens, MSA128WEvensBits, 1100, 16, sizeof(MSA128WEvensBits), Mips::MSA128WEvensRegClassID, 1, true },
  { ACC128, ACC128Bits, 177, 1, sizeof(ACC128Bits), Mips::ACC128RegClassID, 1, true },
};

// Mips Dwarf<->LLVM register mappings.
extern const MCRegisterInfo::DwarfLLVMRegPair MipsDwarfFlavour0Dwarf2L[] = {
  { 0U, Mips::ZERO_64 },
  { 1U, Mips::AT_64 },
  { 2U, Mips::V0_64 },
  { 3U, Mips::V1_64 },
  { 4U, Mips::A0_64 },
  { 5U, Mips::A1_64 },
  { 6U, Mips::A2_64 },
  { 7U, Mips::A3_64 },
  { 8U, Mips::T0_64 },
  { 9U, Mips::T1_64 },
  { 10U, Mips::T2_64 },
  { 11U, Mips::T3_64 },
  { 12U, Mips::T4_64 },
  { 13U, Mips::T5_64 },
  { 14U, Mips::T6_64 },
  { 15U, Mips::T7_64 },
  { 16U, Mips::S0_64 },
  { 17U, Mips::S1_64 },
  { 18U, Mips::S2_64 },
  { 19U, Mips::S3_64 },
  { 20U, Mips::S4_64 },
  { 21U, Mips::S5_64 },
  { 22U, Mips::S6_64 },
  { 23U, Mips::S7_64 },
  { 24U, Mips::T8_64 },
  { 25U, Mips::T9_64 },
  { 26U, Mips::K0_64 },
  { 27U, Mips::K1_64 },
  { 28U, Mips::GP_64 },
  { 29U, Mips::SP_64 },
  { 30U, Mips::FP_64 },
  { 31U, Mips::RA_64 },
  { 32U, Mips::D0_64 },
  { 33U, Mips::D1_64 },
  { 34U, Mips::D2_64 },
  { 35U, Mips::D3_64 },
  { 36U, Mips::D4_64 },
  { 37U, Mips::D5_64 },
  { 38U, Mips::D6_64 },
  { 39U, Mips::D7_64 },
  { 40U, Mips::D8_64 },
  { 41U, Mips::D9_64 },
  { 42U, Mips::D10_64 },
  { 43U, Mips::D11_64 },
  { 44U, Mips::D12_64 },
  { 45U, Mips::D13_64 },
  { 46U, Mips::D14_64 },
  { 47U, Mips::D15_64 },
  { 48U, Mips::D16_64 },
  { 49U, Mips::D17_64 },
  { 50U, Mips::D18_64 },
  { 51U, Mips::D19_64 },
  { 52U, Mips::D20_64 },
  { 53U, Mips::D21_64 },
  { 54U, Mips::D22_64 },
  { 55U, Mips::D23_64 },
  { 56U, Mips::D24_64 },
  { 57U, Mips::D25_64 },
  { 58U, Mips::D26_64 },
  { 59U, Mips::D27_64 },
  { 60U, Mips::D28_64 },
  { 61U, Mips::D29_64 },
  { 62U, Mips::D30_64 },
  { 63U, Mips::D31_64 },
  { 64U, Mips::HI0 },
  { 65U, Mips::LO0 },
  { 176U, Mips::HI1 },
  { 177U, Mips::LO1 },
  { 178U, Mips::HI2 },
  { 179U, Mips::LO2 },
  { 180U, Mips::HI3 },
  { 181U, Mips::LO3 },
};
extern const unsigned MipsDwarfFlavour0Dwarf2LSize = array_lengthof(MipsDwarfFlavour0Dwarf2L);

extern const MCRegisterInfo::DwarfLLVMRegPair MipsEHFlavour0Dwarf2L[] = {
  { 0U, Mips::ZERO_64 },
  { 1U, Mips::AT_64 },
  { 2U, Mips::V0_64 },
  { 3U, Mips::V1_64 },
  { 4U, Mips::A0_64 },
  { 5U, Mips::A1_64 },
  { 6U, Mips::A2_64 },
  { 7U, Mips::A3_64 },
  { 8U, Mips::T0_64 },
  { 9U, Mips::T1_64 },
  { 10U, Mips::T2_64 },
  { 11U, Mips::T3_64 },
  { 12U, Mips::T4_64 },
  { 13U, Mips::T5_64 },
  { 14U, Mips::T6_64 },
  { 15U, Mips::T7_64 },
  { 16U, Mips::S0_64 },
  { 17U, Mips::S1_64 },
  { 18U, Mips::S2_64 },
  { 19U, Mips::S3_64 },
  { 20U, Mips::S4_64 },
  { 21U, Mips::S5_64 },
  { 22U, Mips::S6_64 },
  { 23U, Mips::S7_64 },
  { 24U, Mips::T8_64 },
  { 25U, Mips::T9_64 },
  { 26U, Mips::K0_64 },
  { 27U, Mips::K1_64 },
  { 28U, Mips::GP_64 },
  { 29U, Mips::SP_64 },
  { 30U, Mips::FP_64 },
  { 31U, Mips::RA_64 },
  { 32U, Mips::D0_64 },
  { 33U, Mips::D1_64 },
  { 34U, Mips::D2_64 },
  { 35U, Mips::D3_64 },
  { 36U, Mips::D4_64 },
  { 37U, Mips::D5_64 },
  { 38U, Mips::D6_64 },
  { 39U, Mips::D7_64 },
  { 40U, Mips::D8_64 },
  { 41U, Mips::D9_64 },
  { 42U, Mips::D10_64 },
  { 43U, Mips::D11_64 },
  { 44U, Mips::D12_64 },
  { 45U, Mips::D13_64 },
  { 46U, Mips::D14_64 },
  { 47U, Mips::D15_64 },
  { 48U, Mips::D16_64 },
  { 49U, Mips::D17_64 },
  { 50U, Mips::D18_64 },
  { 51U, Mips::D19_64 },
  { 52U, Mips::D20_64 },
  { 53U, Mips::D21_64 },
  { 54U, Mips::D22_64 },
  { 55U, Mips::D23_64 },
  { 56U, Mips::D24_64 },
  { 57U, Mips::D25_64 },
  { 58U, Mips::D26_64 },
  { 59U, Mips::D27_64 },
  { 60U, Mips::D28_64 },
  { 61U, Mips::D29_64 },
  { 62U, Mips::D30_64 },
  { 63U, Mips::D31_64 },
  { 64U, Mips::HI0 },
  { 65U, Mips::LO0 },
  { 176U, Mips::HI1 },
  { 177U, Mips::LO1 },
  { 178U, Mips::HI2 },
  { 179U, Mips::LO2 },
  { 180U, Mips::HI3 },
  { 181U, Mips::LO3 },
};
extern const unsigned MipsEHFlavour0Dwarf2LSize = array_lengthof(MipsEHFlavour0Dwarf2L);

extern const MCRegisterInfo::DwarfLLVMRegPair MipsDwarfFlavour0L2Dwarf[] = {
  { Mips::AT, 1U },
  { Mips::FP, 30U },
  { Mips::GP, 28U },
  { Mips::RA, 31U },
  { Mips::SP, 29U },
  { Mips::ZERO, 0U },
  { Mips::A0, 4U },
  { Mips::A1, 5U },
  { Mips::A2, 6U },
  { Mips::A3, 7U },
  { Mips::AT_64, 1U },
  { Mips::F0, 32U },
  { Mips::F1, 33U },
  { Mips::F2, 34U },
  { Mips::F3, 35U },
  { Mips::F4, 36U },
  { Mips::F5, 37U },
  { Mips::F6, 38U },
  { Mips::F7, 39U },
  { Mips::F8, 40U },
  { Mips::F9, 41U },
  { Mips::F10, 42U },
  { Mips::F11, 43U },
  { Mips::F12, 44U },
  { Mips::F13, 45U },
  { Mips::F14, 46U },
  { Mips::F15, 47U },
  { Mips::F16, 48U },
  { Mips::F17, 49U },
  { Mips::F18, 50U },
  { Mips::F19, 51U },
  { Mips::F20, 52U },
  { Mips::F21, 53U },
  { Mips::F22, 54U },
  { Mips::F23, 55U },
  { Mips::F24, 56U },
  { Mips::F25, 57U },
  { Mips::F26, 58U },
  { Mips::F27, 59U },
  { Mips::F28, 60U },
  { Mips::F29, 61U },
  { Mips::F30, 62U },
  { Mips::F31, 63U },
  { Mips::FP_64, 30U },
  { Mips::F_HI0, 32U },
  { Mips::F_HI1, 33U },
  { Mips::F_HI2, 34U },
  { Mips::F_HI3, 35U },
  { Mips::F_HI4, 36U },
  { Mips::F_HI5, 37U },
  { Mips::F_HI6, 38U },
  { Mips::F_HI7, 39U },
  { Mips::F_HI8, 40U },
  { Mips::F_HI9, 41U },
  { Mips::F_HI10, 42U },
  { Mips::F_HI11, 43U },
  { Mips::F_HI12, 44U },
  { Mips::F_HI13, 45U },
  { Mips::F_HI14, 46U },
  { Mips::F_HI15, 47U },
  { Mips::F_HI16, 48U },
  { Mips::F_HI17, 49U },
  { Mips::F_HI18, 50U },
  { Mips::F_HI19, 51U },
  { Mips::F_HI20, 52U },
  { Mips::F_HI21, 53U },
  { Mips::F_HI22, 54U },
  { Mips::F_HI23, 55U },
  { Mips::F_HI24, 56U },
  { Mips::F_HI25, 57U },
  { Mips::F_HI26, 58U },
  { Mips::F_HI27, 59U },
  { Mips::F_HI28, 60U },
  { Mips::F_HI29, 61U },
  { Mips::F_HI30, 62U },
  { Mips::F_HI31, 63U },
  { Mips::GP_64, 28U },
  { Mips::HI0, 64U },
  { Mips::HI1, 176U },
  { Mips::HI2, 178U },
  { Mips::HI3, 180U },
  { Mips::K0, 26U },
  { Mips::K1, 27U },
  { Mips::LO0, 65U },
  { Mips::LO1, 177U },
  { Mips::LO2, 179U },
  { Mips::LO3, 181U },
  { Mips::RA_64, 31U },
  { Mips::S0, 16U },
  { Mips::S1, 17U },
  { Mips::S2, 18U },
  { Mips::S3, 19U },
  { Mips::S4, 20U },
  { Mips::S5, 21U },
  { Mips::S6, 22U },
  { Mips::S7, 23U },
  { Mips::SP_64, 29U },
  { Mips::T0, 8U },
  { Mips::T1, 9U },
  { Mips::T2, 10U },
  { Mips::T3, 11U },
  { Mips::T4, 12U },
  { Mips::T5, 13U },
  { Mips::T6, 14U },
  { Mips::T7, 15U },
  { Mips::T8, 24U },
  { Mips::T9, 25U },
  { Mips::V0, 2U },
  { Mips::V1, 3U },
  { Mips::W0, 32U },
  { Mips::W1, 33U },
  { Mips::W2, 34U },
  { Mips::W3, 35U },
  { Mips::W4, 36U },
  { Mips::W5, 37U },
  { Mips::W6, 38U },
  { Mips::W7, 39U },
  { Mips::W8, 40U },
  { Mips::W9, 41U },
  { Mips::W10, 42U },
  { Mips::W11, 43U },
  { Mips::W12, 44U },
  { Mips::W13, 45U },
  { Mips::W14, 46U },
  { Mips::W15, 47U },
  { Mips::W16, 48U },
  { Mips::W17, 49U },
  { Mips::W18, 50U },
  { Mips::W19, 51U },
  { Mips::W20, 52U },
  { Mips::W21, 53U },
  { Mips::W22, 54U },
  { Mips::W23, 55U },
  { Mips::W24, 56U },
  { Mips::W25, 57U },
  { Mips::W26, 58U },
  { Mips::W27, 59U },
  { Mips::W28, 60U },
  { Mips::W29, 61U },
  { Mips::W30, 62U },
  { Mips::W31, 63U },
  { Mips::ZERO_64, 0U },
  { Mips::A0_64, 4U },
  { Mips::A1_64, 5U },
  { Mips::A2_64, 6U },
  { Mips::A3_64, 7U },
  { Mips::D0_64, 32U },
  { Mips::D1_64, 33U },
  { Mips::D2_64, 34U },
  { Mips::D3_64, 35U },
  { Mips::D4_64, 36U },
  { Mips::D5_64, 37U },
  { Mips::D6_64, 38U },
  { Mips::D7_64, 39U },
  { Mips::D8_64, 40U },
  { Mips::D9_64, 41U },
  { Mips::D10_64, 42U },
  { Mips::D11_64, 43U },
  { Mips::D12_64, 44U },
  { Mips::D13_64, 45U },
  { Mips::D14_64, 46U },
  { Mips::D15_64, 47U },
  { Mips::D16_64, 48U },
  { Mips::D17_64, 49U },
  { Mips::D18_64, 50U },
  { Mips::D19_64, 51U },
  { Mips::D20_64, 52U },
  { Mips::D21_64, 53U },
  { Mips::D22_64, 54U },
  { Mips::D23_64, 55U },
  { Mips::D24_64, 56U },
  { Mips::D25_64, 57U },
  { Mips::D26_64, 58U },
  { Mips::D27_64, 59U },
  { Mips::D28_64, 60U },
  { Mips::D29_64, 61U },
  { Mips::D30_64, 62U },
  { Mips::D31_64, 63U },
  { Mips::K0_64, 26U },
  { Mips::K1_64, 27U },
  { Mips::S0_64, 16U },
  { Mips::S1_64, 17U },
  { Mips::S2_64, 18U },
  { Mips::S3_64, 19U },
  { Mips::S4_64, 20U },
  { Mips::S5_64, 21U },
  { Mips::S6_64, 22U },
  { Mips::S7_64, 23U },
  { Mips::T0_64, 8U },
  { Mips::T1_64, 9U },
  { Mips::T2_64, 10U },
  { Mips::T3_64, 11U },
  { Mips::T4_64, 12U },
  { Mips::T5_64, 13U },
  { Mips::T6_64, 14U },
  { Mips::T7_64, 15U },
  { Mips::T8_64, 24U },
  { Mips::T9_64, 25U },
  { Mips::V0_64, 2U },
  { Mips::V1_64, 3U },
};
extern const unsigned MipsDwarfFlavour0L2DwarfSize = array_lengthof(MipsDwarfFlavour0L2Dwarf);

extern const MCRegisterInfo::DwarfLLVMRegPair MipsEHFlavour0L2Dwarf[] = {
  { Mips::AT, 1U },
  { Mips::FP, 30U },
  { Mips::GP, 28U },
  { Mips::RA, 31U },
  { Mips::SP, 29U },
  { Mips::ZERO, 0U },
  { Mips::A0, 4U },
  { Mips::A1, 5U },
  { Mips::A2, 6U },
  { Mips::A3, 7U },
  { Mips::AT_64, 1U },
  { Mips::F0, 32U },
  { Mips::F1, 33U },
  { Mips::F2, 34U },
  { Mips::F3, 35U },
  { Mips::F4, 36U },
  { Mips::F5, 37U },
  { Mips::F6, 38U },
  { Mips::F7, 39U },
  { Mips::F8, 40U },
  { Mips::F9, 41U },
  { Mips::F10, 42U },
  { Mips::F11, 43U },
  { Mips::F12, 44U },
  { Mips::F13, 45U },
  { Mips::F14, 46U },
  { Mips::F15, 47U },
  { Mips::F16, 48U },
  { Mips::F17, 49U },
  { Mips::F18, 50U },
  { Mips::F19, 51U },
  { Mips::F20, 52U },
  { Mips::F21, 53U },
  { Mips::F22, 54U },
  { Mips::F23, 55U },
  { Mips::F24, 56U },
  { Mips::F25, 57U },
  { Mips::F26, 58U },
  { Mips::F27, 59U },
  { Mips::F28, 60U },
  { Mips::F29, 61U },
  { Mips::F30, 62U },
  { Mips::F31, 63U },
  { Mips::FP_64, 30U },
  { Mips::F_HI0, 32U },
  { Mips::F_HI1, 33U },
  { Mips::F_HI2, 34U },
  { Mips::F_HI3, 35U },
  { Mips::F_HI4, 36U },
  { Mips::F_HI5, 37U },
  { Mips::F_HI6, 38U },
  { Mips::F_HI7, 39U },
  { Mips::F_HI8, 40U },
  { Mips::F_HI9, 41U },
  { Mips::F_HI10, 42U },
  { Mips::F_HI11, 43U },
  { Mips::F_HI12, 44U },
  { Mips::F_HI13, 45U },
  { Mips::F_HI14, 46U },
  { Mips::F_HI15, 47U },
  { Mips::F_HI16, 48U },
  { Mips::F_HI17, 49U },
  { Mips::F_HI18, 50U },
  { Mips::F_HI19, 51U },
  { Mips::F_HI20, 52U },
  { Mips::F_HI21, 53U },
  { Mips::F_HI22, 54U },
  { Mips::F_HI23, 55U },
  { Mips::F_HI24, 56U },
  { Mips::F_HI25, 57U },
  { Mips::F_HI26, 58U },
  { Mips::F_HI27, 59U },
  { Mips::F_HI28, 60U },
  { Mips::F_HI29, 61U },
  { Mips::F_HI30, 62U },
  { Mips::F_HI31, 63U },
  { Mips::GP_64, 28U },
  { Mips::HI0, 64U },
  { Mips::HI1, 176U },
  { Mips::HI2, 178U },
  { Mips::HI3, 180U },
  { Mips::K0, 26U },
  { Mips::K1, 27U },
  { Mips::LO0, 65U },
  { Mips::LO1, 177U },
  { Mips::LO2, 179U },
  { Mips::LO3, 181U },
  { Mips::RA_64, 31U },
  { Mips::S0, 16U },
  { Mips::S1, 17U },
  { Mips::S2, 18U },
  { Mips::S3, 19U },
  { Mips::S4, 20U },
  { Mips::S5, 21U },
  { Mips::S6, 22U },
  { Mips::S7, 23U },
  { Mips::SP_64, 29U },
  { Mips::T0, 8U },
  { Mips::T1, 9U },
  { Mips::T2, 10U },
  { Mips::T3, 11U },
  { Mips::T4, 12U },
  { Mips::T5, 13U },
  { Mips::T6, 14U },
  { Mips::T7, 15U },
  { Mips::T8, 24U },
  { Mips::T9, 25U },
  { Mips::V0, 2U },
  { Mips::V1, 3U },
  { Mips::W0, 32U },
  { Mips::W1, 33U },
  { Mips::W2, 34U },
  { Mips::W3, 35U },
  { Mips::W4, 36U },
  { Mips::W5, 37U },
  { Mips::W6, 38U },
  { Mips::W7, 39U },
  { Mips::W8, 40U },
  { Mips::W9, 41U },
  { Mips::W10, 42U },
  { Mips::W11, 43U },
  { Mips::W12, 44U },
  { Mips::W13, 45U },
  { Mips::W14, 46U },
  { Mips::W15, 47U },
  { Mips::W16, 48U },
  { Mips::W17, 49U },
  { Mips::W18, 50U },
  { Mips::W19, 51U },
  { Mips::W20, 52U },
  { Mips::W21, 53U },
  { Mips::W22, 54U },
  { Mips::W23, 55U },
  { Mips::W24, 56U },
  { Mips::W25, 57U },
  { Mips::W26, 58U },
  { Mips::W27, 59U },
  { Mips::W28, 60U },
  { Mips::W29, 61U },
  { Mips::W30, 62U },
  { Mips::W31, 63U },
  { Mips::ZERO_64, 0U },
  { Mips::A0_64, 4U },
  { Mips::A1_64, 5U },
  { Mips::A2_64, 6U },
  { Mips::A3_64, 7U },
  { Mips::D0_64, 32U },
  { Mips::D1_64, 33U },
  { Mips::D2_64, 34U },
  { Mips::D3_64, 35U },
  { Mips::D4_64, 36U },
  { Mips::D5_64, 37U },
  { Mips::D6_64, 38U },
  { Mips::D7_64, 39U },
  { Mips::D8_64, 40U },
  { Mips::D9_64, 41U },
  { Mips::D10_64, 42U },
  { Mips::D11_64, 43U },
  { Mips::D12_64, 44U },
  { Mips::D13_64, 45U },
  { Mips::D14_64, 46U },
  { Mips::D15_64, 47U },
  { Mips::D16_64, 48U },
  { Mips::D17_64, 49U },
  { Mips::D18_64, 50U },
  { Mips::D19_64, 51U },
  { Mips::D20_64, 52U },
  { Mips::D21_64, 53U },
  { Mips::D22_64, 54U },
  { Mips::D23_64, 55U },
  { Mips::D24_64, 56U },
  { Mips::D25_64, 57U },
  { Mips::D26_64, 58U },
  { Mips::D27_64, 59U },
  { Mips::D28_64, 60U },
  { Mips::D29_64, 61U },
  { Mips::D30_64, 62U },
  { Mips::D31_64, 63U },
  { Mips::K0_64, 26U },
  { Mips::K1_64, 27U },
  { Mips::S0_64, 16U },
  { Mips::S1_64, 17U },
  { Mips::S2_64, 18U },
  { Mips::S3_64, 19U },
  { Mips::S4_64, 20U },
  { Mips::S5_64, 21U },
  { Mips::S6_64, 22U },
  { Mips::S7_64, 23U },
  { Mips::T0_64, 8U },
  { Mips::T1_64, 9U },
  { Mips::T2_64, 10U },
  { Mips::T3_64, 11U },
  { Mips::T4_64, 12U },
  { Mips::T5_64, 13U },
  { Mips::T6_64, 14U },
  { Mips::T7_64, 15U },
  { Mips::T8_64, 24U },
  { Mips::T9_64, 25U },
  { Mips::V0_64, 2U },
  { Mips::V1_64, 3U },
};
extern const unsigned MipsEHFlavour0L2DwarfSize = array_lengthof(MipsEHFlavour0L2Dwarf);

extern const uint16_t MipsRegEncodingTable[] = {
  0,
  1,
  0,
  0,
  0,
  0,
  0,
  0,
  30,
  28,
  2,
  1,
  0,
  6,
  4,
  5,
  3,
  7,
  0,
  31,
  29,
  0,
  4,
  5,
  6,
  7,
  0,
  1,
  2,
  3,
  1,
  0,
  1,
  2,
  3,
  4,
  5,
  6,
  7,
  8,
  9,
  0,
  1,
  2,
  3,
  4,
  5,
  6,
  7,
  8,
  9,
  0,
  1,
  2,
  3,
  4,
  5,
  6,
  7,
  8,
  9,
  10,
  11,
  12,
  13,
  14,
  15,
  16,
  17,
  18,
  19,
  20,
  21,
  22,
  23,
  24,
  25,
  26,
  27,
  28,
  29,
  30,
  31,
  10,
  11,
  12,
  13,
  14,
  15,
  16,
  17,
  18,
  19,
  20,
  21,
  22,
  23,
  24,
  25,
  26,
  27,
  28,
  29,
  30,
  31,
  10,
  11,
  12,
  13,
  14,
  15,
  16,
  17,
  18,
  19,
  20,
  21,
  22,
  23,
  24,
  25,
  26,
  27,
  28,
  29,
  30,
  31,
  0,
  2,
  4,
  6,
  8,
  10,
  12,
  14,
  16,
  18,
  20,
  22,
  24,
  26,
  28,
  30,
  0,
  0,
  0,
  0,
  0,
  1,
  2,
  3,
  4,
  5,
  6,
  7,
  8,
  9,
  10,
  11,
  12,
  13,
  14,
  15,
  16,
  17,
  18,
  19,
  20,
  21,
  22,
  23,
  24,
  25,
  26,
  27,
  28,
  29,
  30,
  31,
  0,
  1,
  2,
  3,
  4,
  5,
  6,
  7,
  0,
  1,
  2,
  3,
  4,
  5,
  6,
  7,
  8,
  9,
  10,
  11,
  12,
  13,
  14,
  15,
  16,
  17,
  18,
  19,
  20,
  21,
  22,
  23,
  24,
  25,
  26,
  27,
  28,
  29,
  30,
  31,
  30,
  0,
  1,
  2,
  3,
  4,
  5,
  6,
  7,
  8,
  9,
  10,
  11,
  12,
  13,
  14,
  15,
  16,
  17,
  18,
  19,
  20,
  21,
  22,
  23,
  24,
  25,
  26,
  27,
  28,
  29,
  30,
  31,
  28,
  0,
  1,
  2,
  3,
  0,
  1,
  2,
  3,
  4,
  5,
  6,
  7,
  8,
  9,
  10,
  11,
  12,
  13,
  14,
  15,
  16,
  17,
  18,
  19,
  20,
  21,
  22,
  23,
  24,
  25,
  26,
  27,
  28,
  29,
  30,
  31,
  26,
  27,
  0,
  1,
  2,
  3,
  0,
  1,
  2,
  0,
  1,
  2,
  31,
  16,
  17,
  18,
  19,
  20,
  21,
  22,
  23,
  29,
  8,
  9,
  10,
  11,
  12,
  13,
  14,
  15,
  24,
  25,
  2,
  3,
  0,
  1,
  2,
  3,
  4,
  5,
  6,
  7,
  8,
  9,
  10,
  11,
  12,
  13,
  14,
  15,
  16,
  17,
  18,
  19,
  20,
  21,
  22,
  23,
  24,
  25,
  26,
  27,
  28,
  29,
  30,
  31,
  0,
  4,
  5,
  6,
  7,
  0,
  0,
  1,
  2,
  3,
  4,
  5,
  6,
  7,
  8,
  9,
  10,
  11,
  12,
  13,
  14,
  15,
  16,
  17,
  18,
  19,
  20,
  21,
  22,
  23,
  24,
  25,
  26,
  27,
  28,
  29,
  30,
  31,
  0,
  0,
  26,
  27,
  0,
  16,
  17,
  18,
  19,
  20,
  21,
  22,
  23,
  8,
  9,
  10,
  11,
  12,
  13,
  14,
  15,
  24,
  25,
  2,
  3,
};
static inline void InitMipsMCRegisterInfo(MCRegisterInfo *RI, unsigned RA, unsigned DwarfFlavour = 0, unsigned EHFlavour = 0, unsigned PC = 0) {
  RI->InitMCRegisterInfo(MipsRegDesc, 418, RA, PC, MipsMCRegisterClasses, 81, MipsRegUnitRoots, 297, MipsRegDiffLists, MipsLaneMaskLists, MipsRegStrings, MipsRegClassStrings, MipsSubRegIdxLists, 12,
MipsSubRegIdxRanges, MipsRegEncodingTable);

  switch (DwarfFlavour) {
  default:
    llvm_unreachable("Unknown DWARF flavour");
  case 0:
    RI->mapDwarfRegsToLLVMRegs(MipsDwarfFlavour0Dwarf2L, MipsDwarfFlavour0Dwarf2LSize, false);
    break;
  }
  switch (EHFlavour) {
  default:
    llvm_unreachable("Unknown DWARF flavour");
  case 0:
    RI->mapDwarfRegsToLLVMRegs(MipsEHFlavour0Dwarf2L, MipsEHFlavour0Dwarf2LSize, true);
    break;
  }
  switch (DwarfFlavour) {
  default:
    llvm_unreachable("Unknown DWARF flavour");
  case 0:
    RI->mapLLVMRegsToDwarfRegs(MipsDwarfFlavour0L2Dwarf, MipsDwarfFlavour0L2DwarfSize, false);
    break;
  }
  switch (EHFlavour) {
  default:
    llvm_unreachable("Unknown DWARF flavour");
  case 0:
    RI->mapLLVMRegsToDwarfRegs(MipsEHFlavour0L2Dwarf, MipsEHFlavour0L2DwarfSize, true);
    break;
  }
}

} // end namespace llvm

#endif // GET_REGINFO_MC_DESC

/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|*                                                                            *|
|* Register Information Header Fragment                                       *|
|*                                                                            *|
|* Automatically generated file, do not edit!                                 *|
|*                                                                            *|
\*===----------------------------------------------------------------------===*/


#ifdef GET_REGINFO_HEADER
#undef GET_REGINFO_HEADER

#include "llvm/CodeGen/TargetRegisterInfo.h"

namespace llvm {

class MipsFrameLowering;

struct MipsGenRegisterInfo : public TargetRegisterInfo {
  explicit MipsGenRegisterInfo(unsigned RA, unsigned D = 0, unsigned E = 0,
      unsigned PC = 0, unsigned HwMode = 0);
  unsigned composeSubRegIndicesImpl(unsigned, unsigned) const override;
  LaneBitmask composeSubRegIndexLaneMaskImpl(unsigned, LaneBitmask) const override;
  LaneBitmask reverseComposeSubRegIndexLaneMaskImpl(unsigned, LaneBitmask) const override;
  const TargetRegisterClass *getSubClassWithSubReg(const TargetRegisterClass*, unsigned) const override;
  const RegClassWeight &getRegClassWeight(const TargetRegisterClass *RC) const override;
  unsigned getRegUnitWeight(unsigned RegUnit) const override;
  unsigned getNumRegPressureSets() const override;
  const char *getRegPressureSetName(unsigned Idx) const override;
  unsigned getRegPressureSetLimit(const MachineFunction &MF, unsigned Idx) const override;
  const int *getRegClassPressureSets(const TargetRegisterClass *RC) const override;
  const int *getRegUnitPressureSets(unsigned RegUnit) const override;
  ArrayRef<const char *> getRegMaskNames() const override;
  ArrayRef<const uint32_t *> getRegMasks() const override;
  /// Devirtualized TargetFrameLowering.
  static const MipsFrameLowering *getFrameLowering(
      const MachineFunction &MF);
};

namespace Mips { // Register classes
  extern const TargetRegisterClass MSA128F16RegClass;
  extern const TargetRegisterClass MSA128F16_with_sub_64_in_OddSPRegClass;
  extern const TargetRegisterClass OddSPRegClass;
  extern const TargetRegisterClass CCRRegClass;
  extern const TargetRegisterClass COP0RegClass;
  extern const TargetRegisterClass COP2RegClass;
  extern const TargetRegisterClass COP3RegClass;
  extern const TargetRegisterClass DSPRRegClass;
  extern const TargetRegisterClass FGR32RegClass;
  extern const TargetRegisterClass FGRCCRegClass;
  extern const TargetRegisterClass FGRH32RegClass;
  extern const TargetRegisterClass GPR32RegClass;
  extern const TargetRegisterClass HWRegsRegClass;
  extern const TargetRegisterClass GPR32NONZERORegClass;
  extern const TargetRegisterClass OddSP_with_sub_hiRegClass;
  extern const TargetRegisterClass FGR32_and_OddSPRegClass;
  extern const TargetRegisterClass FGRH32_and_OddSPRegClass;
  extern const TargetRegisterClass OddSP_with_sub_hi_with_sub_hi_in_FGRH32RegClass;
  extern const TargetRegisterClass CPU16RegsPlusSPRegClass;
  extern const TargetRegisterClass CPU16RegsRegClass;
  extern const TargetRegisterClass FCCRegClass;
  extern const TargetRegisterClass GPRMM16RegClass;
  extern const TargetRegisterClass GPRMM16MovePRegClass;
  extern const TargetRegisterClass GPRMM16ZeroRegClass;
  extern const TargetRegisterClass MSACtrlRegClass;
  extern const TargetRegisterClass OddSP_with_sub_hi_with_sub_hi_in_FGR32RegClass;
  extern const TargetRegisterClass CPU16Regs_and_GPRMM16ZeroRegClass;
  extern const TargetRegisterClass GPR32NONZERO_and_GPRMM16MovePRegClass;
  extern const TargetRegisterClass GPRMM16MovePPairSecondRegClass;
  extern const TargetRegisterClass CPU16Regs_and_GPRMM16MovePRegClass;
  extern const TargetRegisterClass GPRMM16MoveP_and_GPRMM16ZeroRegClass;
  extern const TargetRegisterClass HI32DSPRegClass;
  extern const TargetRegisterClass LO32DSPRegClass;
  extern const TargetRegisterClass CPU16Regs_and_GPRMM16MovePPairSecondRegClass;
  extern const TargetRegisterClass GPRMM16MovePPairFirstRegClass;
  extern const TargetRegisterClass GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroRegClass;
  extern const TargetRegisterClass GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondRegClass;
  extern const TargetRegisterClass CPURARegRegClass;
  extern const TargetRegisterClass CPUSPRegRegClass;
  extern const TargetRegisterClass DSPCCRegClass;
  extern const TargetRegisterClass GP32RegClass;
  extern const TargetRegisterClass GPR32ZERORegClass;
  extern const TargetRegisterClass HI32RegClass;
  extern const TargetRegisterClass LO32RegClass;
  extern const TargetRegisterClass SP32RegClass;
  extern const TargetRegisterClass FGR64RegClass;
  extern const TargetRegisterClass GPR64RegClass;
  extern const TargetRegisterClass GPR64_with_sub_32_in_GPR32NONZERORegClass;
  extern const TargetRegisterClass AFGR64RegClass;
  extern const TargetRegisterClass FGR64_and_OddSPRegClass;
  extern const TargetRegisterClass GPR64_with_sub_32_in_CPU16RegsPlusSPRegClass;
  extern const TargetRegisterClass AFGR64_and_OddSPRegClass;
  extern const TargetRegisterClass GPR64_with_sub_32_in_CPU16RegsRegClass;
  extern const TargetRegisterClass GPR64_with_sub_32_in_GPRMM16MovePRegClass;
  extern const TargetRegisterClass GPR64_with_sub_32_in_GPRMM16ZeroRegClass;
  extern const TargetRegisterClass GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16ZeroRegClass;
  extern const TargetRegisterClass GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MovePRegClass;
  extern const TargetRegisterClass GPR64_with_sub_32_in_GPRMM16MovePPairSecondRegClass;
  extern const TargetRegisterClass ACC64DSPRegClass;
  extern const TargetRegisterClass GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePRegClass;
  extern const TargetRegisterClass GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16ZeroRegClass;
  extern const TargetRegisterClass GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePPairSecondRegClass;
  extern const TargetRegisterClass GPR64_with_sub_32_in_GPRMM16MovePPairFirstRegClass;
  extern const TargetRegisterClass GPR64_with_sub_32_in_GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroRegClass;
  extern const TargetRegisterClass OCTEON_MPLRegClass;
  extern const TargetRegisterClass OCTEON_PRegClass;
  extern const TargetRegisterClass GPR64_with_sub_32_in_GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondRegClass;
  extern const TargetRegisterClass ACC64RegClass;
  extern const TargetRegisterClass GP64RegClass;
  extern const TargetRegisterClass GPR64_with_sub_32_in_CPURARegRegClass;
  extern const TargetRegisterClass GPR64_with_sub_32_in_GPR32ZERORegClass;
  extern const TargetRegisterClass HI64RegClass;
  extern const TargetRegisterClass LO64RegClass;
  extern const TargetRegisterClass SP64RegClass;
  extern const TargetRegisterClass MSA128BRegClass;
  extern const TargetRegisterClass MSA128DRegClass;
  extern const TargetRegisterClass MSA128HRegClass;
  extern const TargetRegisterClass MSA128WRegClass;
  extern const TargetRegisterClass MSA128B_with_sub_64_in_OddSPRegClass;
  extern const TargetRegisterClass MSA128WEvensRegClass;
  extern const TargetRegisterClass ACC128RegClass;
} // end namespace Mips

} // end namespace llvm

#endif // GET_REGINFO_HEADER

/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
|*                                                                            *|
|* Target Register and Register Classes Information                           *|
|*                                                                            *|
|* Automatically generated file, do not edit!                                 *|
|*                                                                            *|
\*===----------------------------------------------------------------------===*/


#ifdef GET_REGINFO_TARGET_DESC
#undef GET_REGINFO_TARGET_DESC

namespace llvm {

extern const MCRegisterClass MipsMCRegisterClasses[];

static const MVT::SimpleValueType VTLists[] = {
  /* 0 */ MVT::i32, MVT::Other,
  /* 2 */ MVT::i64, MVT::Other,
  /* 4 */ MVT::f16, MVT::Other,
  /* 6 */ MVT::f32, MVT::Other,
  /* 8 */ MVT::f64, MVT::Other,
  /* 10 */ MVT::v16i8, MVT::Other,
  /* 12 */ MVT::v4i8, MVT::v2i16, MVT::Other,
  /* 15 */ MVT::v8i16, MVT::v8f16, MVT::Other,
  /* 18 */ MVT::v4i32, MVT::v4f32, MVT::Other,
  /* 21 */ MVT::v2i64, MVT::v2f64, MVT::Other,
  /* 24 */ MVT::Untyped, MVT::Other,
};

static const char *const SubRegIndexNameTable[] = { "sub_32", "sub_64", "sub_dsp16_19", "sub_dsp20", "sub_dsp21", "sub_dsp22", "sub_dsp23", "sub_hi", "sub_lo", "sub_hi_then_sub_32", "sub_32_sub_hi_then_sub_32", "" };


static const LaneBitmask SubRegIndexLaneMaskTable[] = {
  LaneBitmask::getAll(),
  LaneBitmask(0x00000001), // sub_32
  LaneBitmask(0x00000041), // sub_64
  LaneBitmask(0x00000002), // sub_dsp16_19
  LaneBitmask(0x00000004), // sub_dsp20
  LaneBitmask(0x00000008), // sub_dsp21
  LaneBitmask(0x00000010), // sub_dsp22
  LaneBitmask(0x00000020), // sub_dsp23
  LaneBitmask(0x00000040), // sub_hi
  LaneBitmask(0x00000001), // sub_lo
  LaneBitmask(0x00000040), // sub_hi_then_sub_32
  LaneBitmask(0x00000041), // sub_32_sub_hi_then_sub_32
 };



static const TargetRegisterInfo::RegClassInfo RegClassInfos[] = {
  // Mode = 0 (Default)
  { 16, 16, 128, VTLists+4 },    // MSA128F16
  { 16, 16, 128, VTLists+4 },    // MSA128F16_with_sub_64_in_OddSP
  { 32, 32, 32, VTLists+6 },    // OddSP
  { 32, 32, 32, VTLists+0 },    // CCR
  { 32, 32, 32, VTLists+0 },    // COP0
  { 32, 32, 32, VTLists+0 },    // COP2
  { 32, 32, 32, VTLists+0 },    // COP3
  { 32, 32, 32, VTLists+12 },    // DSPR
  { 32, 32, 32, VTLists+6 },    // FGR32
  { 32, 32, 32, VTLists+0 },    // FGRCC
  { 32, 32, 32, VTLists+6 },    // FGRH32
  { 32, 32, 32, VTLists+0 },    // GPR32
  { 32, 32, 32, VTLists+0 },    // HWRegs
  { 32, 32, 32, VTLists+0 },    // GPR32NONZERO
  { 32, 32, 32, VTLists+6 },    // OddSP_with_sub_hi
  { 32, 32, 32, VTLists+0 },    // FGR32_and_OddSP
  { 32, 32, 32, VTLists+6 },    // FGRH32_and_OddSP
  { 32, 32, 32, VTLists+6 },    // OddSP_with_sub_hi_with_sub_hi_in_FGRH32
  { 32, 32, 32, VTLists+0 },    // CPU16RegsPlusSP
  { 32, 32, 32, VTLists+0 },    // CPU16Regs
  { 32, 32, 32, VTLists+0 },    // FCC
  { 32, 32, 32, VTLists+0 },    // GPRMM16
  { 32, 32, 32, VTLists+0 },    // GPRMM16MoveP
  { 32, 32, 32, VTLists+0 },    // GPRMM16Zero
  { 32, 32, 32, VTLists+0 },    // MSACtrl
  { 32, 32, 32, VTLists+6 },    // OddSP_with_sub_hi_with_sub_hi_in_FGR32
  { 32, 32, 32, VTLists+0 },    // CPU16Regs_and_GPRMM16Zero
  { 32, 32, 32, VTLists+0 },    // GPR32NONZERO_and_GPRMM16MoveP
  { 32, 32, 32, VTLists+0 },    // GPRMM16MovePPairSecond
  { 32, 32, 32, VTLists+0 },    // CPU16Regs_and_GPRMM16MoveP
  { 32, 32, 32, VTLists+0 },    // GPRMM16MoveP_and_GPRMM16Zero
  { 32, 32, 32, VTLists+0 },    // HI32DSP
  { 32, 32, 32, VTLists+0 },    // LO32DSP
  { 32, 32, 32, VTLists+0 },    // CPU16Regs_and_GPRMM16MovePPairSecond
  { 32, 32, 32, VTLists+0 },    // GPRMM16MovePPairFirst
  { 32, 32, 32, VTLists+0 },    // GPRMM16MoveP_and_CPU16Regs_and_GPRMM16Zero
  { 32, 32, 32, VTLists+0 },    // GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecond
  { 32, 32, 32, VTLists+0 },    // CPURAReg
  { 32, 32, 32, VTLists+0 },    // CPUSPReg
  { 32, 32, 32, VTLists+12 },    // DSPCC
  { 32, 32, 32, VTLists+0 },    // GP32
  { 32, 32, 32, VTLists+0 },    // GPR32ZERO
  { 32, 32, 32, VTLists+0 },    // HI32
  { 32, 32, 32, VTLists+0 },    // LO32
  { 32, 32, 32, VTLists+0 },    // SP32
  { 64, 64, 64, VTLists+8 },    // FGR64
  { 64, 64, 64, VTLists+2 },    // GPR64
  { 64, 64, 64, VTLists+2 },    // GPR64_with_sub_32_in_GPR32NONZERO
  { 64, 64, 64, VTLists+8 },    // AFGR64
  { 64, 64, 64, VTLists+8 },    // FGR64_and_OddSP
  { 64, 64, 64, VTLists+2 },    // GPR64_with_sub_32_in_CPU16RegsPlusSP
  { 64, 64, 64, VTLists+8 },    // AFGR64_and_OddSP
  { 64, 64, 64, VTLists+2 },    // GPR64_with_sub_32_in_CPU16Regs
  { 64, 64, 64, VTLists+2 },    // GPR64_with_sub_32_in_GPRMM16MoveP
  { 64, 64, 64, VTLists+2 },    // GPR64_with_sub_32_in_GPRMM16Zero
  { 64, 64, 64, VTLists+2 },    // GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16Zero
  { 64, 64, 64, VTLists+2 },    // GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MoveP
  { 64, 64, 64, VTLists+2 },    // GPR64_with_sub_32_in_GPRMM16MovePPairSecond
  { 64, 64, 64, VTLists+24 },    // ACC64DSP
  { 64, 64, 64, VTLists+2 },    // GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MoveP
  { 64, 64, 64, VTLists+2 },    // GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16Zero
  { 64, 64, 64, VTLists+2 },    // GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePPairSecond
  { 64, 64, 64, VTLists+2 },    // GPR64_with_sub_32_in_GPRMM16MovePPairFirst
  { 64, 64, 64, VTLists+2 },    // GPR64_with_sub_32_in_GPRMM16MoveP_and_CPU16Regs_and_GPRMM16Zero
  { 64, 64, 64, VTLists+2 },    // OCTEON_MPL
  { 64, 64, 64, VTLists+2 },    // OCTEON_P
  { 64, 64, 64, VTLists+2 },    // GPR64_with_sub_32_in_GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecond
  { 64, 64, 64, VTLists+24 },    // ACC64
  { 64, 64, 64, VTLists+2 },    // GP64
  { 64, 64, 64, VTLists+2 },    // GPR64_with_sub_32_in_CPURAReg
  { 64, 64, 64, VTLists+2 },    // GPR64_with_sub_32_in_GPR32ZERO
  { 64, 64, 64, VTLists+2 },    // HI64
  { 64, 64, 64, VTLists+2 },    // LO64
  { 64, 64, 64, VTLists+2 },    // SP64
  { 128, 128, 128, VTLists+10 },    // MSA128B
  { 128, 128, 128, VTLists+21 },    // MSA128D
  { 128, 128, 128, VTLists+15 },    // MSA128H
  { 128, 128, 128, VTLists+18 },    // MSA128W
  { 128, 128, 128, VTLists+18 },    // MSA128B_with_sub_64_in_OddSP
  { 128, 128, 128, VTLists+18 },    // MSA128WEvens
  { 128, 128, 128, VTLists+24 },    // ACC128
};

static const TargetRegisterClass *const NullRegClasses[] = { nullptr };

static const uint32_t MSA128F16SubClassMask[] = {
  0x00000003, 0x00000000, 0x0000fc00, 
};

static const uint32_t MSA128F16_with_sub_64_in_OddSPSubClassMask[] = {
  0x00000002, 0x00000000, 0x00004000, 
};

static const uint32_t OddSPSubClassMask[] = {
  0x0203c004, 0x000a0000, 0x00000000, 
  0x00000002, 0x00000000, 0x00004000, // sub_64
  0x02024002, 0x000b0000, 0x00004000, // sub_hi
  0x00020002, 0x00020000, 0x00004000, // sub_lo
};

static const uint32_t CCRSubClassMask[] = {
  0x00000008, 0x00000000, 0x00000000, 
};

static const uint32_t COP0SubClassMask[] = {
  0x00000010, 0x00000000, 0x00000000, 
};

static const uint32_t COP2SubClassMask[] = {
  0x00000020, 0x00000000, 0x00000000, 
};

static const uint32_t COP3SubClassMask[] = {
  0x00000040, 0x00000000, 0x00000000, 
};

static const uint32_t DSPRSubClassMask[] = {
  0x7cec2880, 0x0000137e, 0x00000000, 
  0x00000000, 0xfbf4c000, 0x00000274, // sub_32
};

static const uint32_t FGR32SubClassMask[] = {
  0x00008300, 0x00000000, 0x00000000, 
  0x02000000, 0x00090000, 0x00000000, // sub_hi
  0x02024003, 0x000b2000, 0x0000fc00, // sub_lo
};

static const uint32_t FGRCCSubClassMask[] = {
  0x00008300, 0x00000000, 0x00000000, 
  0x02000000, 0x00090000, 0x00000000, // sub_hi
  0x02024003, 0x000b2000, 0x0000fc00, // sub_lo
};

static const uint32_t FGRH32SubClassMask[] = {
  0x00010400, 0x00000000, 0x00000000, 
  0x00020003, 0x00022000, 0x0000fc00, // sub_hi
};

static const uint32_t GPR32SubClassMask[] = {
  0x7cec2800, 0x0000137e, 0x00000000, 
  0x00000000, 0xfbf4c000, 0x00000274, // sub_32
};

static const uint32_t HWRegsSubClassMask[] = {
  0x00001000, 0x00000000, 0x00000000, 
};

static const uint32_t GPR32NONZEROSubClassMask[] = {
  0x3c2c2000, 0x0000117e, 0x00000000, 
  0x00000000, 0xeb948000, 0x00000234, // sub_32
};

static const uint32_t OddSP_with_sub_hiSubClassMask[] = {
  0x02024000, 0x000a0000, 0x00000000, 
  0x00000002, 0x00000000, 0x00004000, // sub_64
};

static const uint32_t FGR32_and_OddSPSubClassMask[] = {
  0x00008000, 0x00000000, 0x00000000, 
  0x02000000, 0x00090000, 0x00000000, // sub_hi
  0x00020002, 0x00020000, 0x00004000, // sub_lo
};

static const uint32_t FGRH32_and_OddSPSubClassMask[] = {
  0x00010000, 0x00000000, 0x00000000, 
  0x00020002, 0x00020000, 0x00004000, // sub_hi
};

static const uint32_t OddSP_with_sub_hi_with_sub_hi_in_FGRH32SubClassMask[] = {
  0x00020000, 0x00020000, 0x00000000, 
  0x00000002, 0x00000000, 0x00004000, // sub_64
};

static const uint32_t CPU16RegsPlusSPSubClassMask[] = {
  0x242c0000, 0x0000105e, 0x00000000, 
  0x00000000, 0xe8940000, 0x00000204, // sub_32
};

static const uint32_t CPU16RegsSubClassMask[] = {
  0x24280000, 0x0000001e, 0x00000000, 
  0x00000000, 0xe8900000, 0x00000004, // sub_32
};

static const uint32_t FCCSubClassMask[] = {
  0x00100000, 0x00000000, 0x00000000, 
};

static const uint32_t GPRMM16SubClassMask[] = {
  0x24200000, 0x0000001e, 0x00000000, 
  0x00000000, 0xe8900000, 0x00000004, // sub_32
};

static const uint32_t GPRMM16MovePSubClassMask[] = {
  0x68400000, 0x00000208, 0x00000000, 
  0x00000000, 0x99200000, 0x00000040, // sub_32
};

static const uint32_t GPRMM16ZeroSubClassMask[] = {
  0x44800000, 0x0000021e, 0x00000000, 
  0x00000000, 0xf0c00000, 0x00000044, // sub_32
};

static const uint32_t MSACtrlSubClassMask[] = {
  0x01000000, 0x00000000, 0x00000000, 
};

static const uint32_t OddSP_with_sub_hi_with_sub_hi_in_FGR32SubClassMask[] = {
  0x02000000, 0x00080000, 0x00000000, 
};

static const uint32_t CPU16Regs_and_GPRMM16ZeroSubClassMask[] = {
  0x04000000, 0x0000001e, 0x00000000, 
  0x00000000, 0xe0800000, 0x00000004, // sub_32
};

static const uint32_t GPR32NONZERO_and_GPRMM16MovePSubClassMask[] = {
  0x28000000, 0x00000008, 0x00000000, 
  0x00000000, 0x89000000, 0x00000000, // sub_32
};

static const uint32_t GPRMM16MovePPairSecondSubClassMask[] = {
  0x10000000, 0x00000012, 0x00000000, 
  0x00000000, 0x22000000, 0x00000004, // sub_32
};

static const uint32_t CPU16Regs_and_GPRMM16MovePSubClassMask[] = {
  0x20000000, 0x00000008, 0x00000000, 
  0x00000000, 0x88000000, 0x00000000, // sub_32
};

static const uint32_t GPRMM16MoveP_and_GPRMM16ZeroSubClassMask[] = {
  0x40000000, 0x00000208, 0x00000000, 
  0x00000000, 0x90000000, 0x00000040, // sub_32
};

static const uint32_t HI32DSPSubClassMask[] = {
  0x80000000, 0x00000400, 0x00000000, 
  0x00000000, 0x00000000, 0x00000080, // sub_32
  0x00000000, 0x04000000, 0x00000008, // sub_hi
  0x00000000, 0x00000000, 0x00010000, // sub_hi_then_sub_32
};

static const uint32_t LO32DSPSubClassMask[] = {
  0x00000000, 0x00000801, 0x00000000, 
  0x00000000, 0x00000000, 0x00010100, // sub_32
  0x00000000, 0x04000000, 0x00000008, // sub_lo
};

static const uint32_t CPU16Regs_and_GPRMM16MovePPairSecondSubClassMask[] = {
  0x00000000, 0x00000012, 0x00000000, 
  0x00000000, 0x20000000, 0x00000004, // sub_32
};

static const uint32_t GPRMM16MovePPairFirstSubClassMask[] = {
  0x00000000, 0x00000014, 0x00000000, 
  0x00000000, 0x40000000, 0x00000004, // sub_32
};

static const uint32_t GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroSubClassMask[] = {
  0x00000000, 0x00000008, 0x00000000, 
  0x00000000, 0x80000000, 0x00000000, // sub_32
};

static const uint32_t GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondSubClassMask[] = {
  0x00000000, 0x00000010, 0x00000000, 
  0x00000000, 0x00000000, 0x00000004, // sub_32
};

static const uint32_t CPURARegSubClassMask[] = {
  0x00000000, 0x00000020, 0x00000000, 
  0x00000000, 0x00000000, 0x00000020, // sub_32
};

static const uint32_t CPUSPRegSubClassMask[] = {
  0x00000000, 0x00001040, 0x00000000, 
  0x00000000, 0x00000000, 0x00000200, // sub_32
};

static const uint32_t DSPCCSubClassMask[] = {
  0x00000000, 0x00000080, 0x00000000, 
};

static const uint32_t GP32SubClassMask[] = {
  0x00000000, 0x00000100, 0x00000000, 
  0x00000000, 0x00000000, 0x00000010, // sub_32
};

static const uint32_t GPR32ZEROSubClassMask[] = {
  0x00000000, 0x00000200, 0x00000000, 
  0x00000000, 0x00000000, 0x00000040, // sub_32
};

static const uint32_t HI32SubClassMask[] = {
  0x00000000, 0x00000400, 0x00000000, 
  0x00000000, 0x00000000, 0x00000080, // sub_32
  0x00000000, 0x00000000, 0x00000008, // sub_hi
  0x00000000, 0x00000000, 0x00010000, // sub_hi_then_sub_32
};

static const uint32_t LO32SubClassMask[] = {
  0x00000000, 0x00000800, 0x00000000, 
  0x00000000, 0x00000000, 0x00010100, // sub_32
  0x00000000, 0x00000000, 0x00000008, // sub_lo
};

static const uint32_t SP32SubClassMask[] = {
  0x00000000, 0x00001000, 0x00000000, 
  0x00000000, 0x00000000, 0x00000200, // sub_32
};

static const uint32_t FGR64SubClassMask[] = {
  0x00000000, 0x00022000, 0x00000000, 
  0x00000003, 0x00000000, 0x0000fc00, // sub_64
};

static const uint32_t GPR64SubClassMask[] = {
  0x00000000, 0xfbf4c000, 0x00000274, 
};

static const uint32_t GPR64_with_sub_32_in_GPR32NONZEROSubClassMask[] = {
  0x00000000, 0xeb948000, 0x00000234, 
};

static const uint32_t AFGR64SubClassMask[] = {
  0x00000000, 0x00090000, 0x00000000, 
};

static const uint32_t FGR64_and_OddSPSubClassMask[] = {
  0x00000000, 0x00020000, 0x00000000, 
  0x00000002, 0x00000000, 0x00004000, // sub_64
};

static const uint32_t GPR64_with_sub_32_in_CPU16RegsPlusSPSubClassMask[] = {
  0x00000000, 0xe8940000, 0x00000204, 
};

static const uint32_t AFGR64_and_OddSPSubClassMask[] = {
  0x00000000, 0x00080000, 0x00000000, 
};

static const uint32_t GPR64_with_sub_32_in_CPU16RegsSubClassMask[] = {
  0x00000000, 0xe8900000, 0x00000004, 
};

static const uint32_t GPR64_with_sub_32_in_GPRMM16MovePSubClassMask[] = {
  0x00000000, 0x99200000, 0x00000040, 
};

static const uint32_t GPR64_with_sub_32_in_GPRMM16ZeroSubClassMask[] = {
  0x00000000, 0xf0c00000, 0x00000044, 
};

static const uint32_t GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16ZeroSubClassMask[] = {
  0x00000000, 0xe0800000, 0x00000004, 
};

static const uint32_t GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MovePSubClassMask[] = {
  0x00000000, 0x89000000, 0x00000000, 
};

static const uint32_t GPR64_with_sub_32_in_GPRMM16MovePPairSecondSubClassMask[] = {
  0x00000000, 0x22000000, 0x00000004, 
};

static const uint32_t ACC64DSPSubClassMask[] = {
  0x00000000, 0x04000000, 0x00000008, 
  0x00000000, 0x00000000, 0x00010000, // sub_32_sub_hi_then_sub_32
};

static const uint32_t GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePSubClassMask[] = {
  0x00000000, 0x88000000, 0x00000000, 
};

static const uint32_t GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16ZeroSubClassMask[] = {
  0x00000000, 0x90000000, 0x00000040, 
};

static const uint32_t GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePPairSecondSubClassMask[] = {
  0x00000000, 0x20000000, 0x00000004, 
};

static const uint32_t GPR64_with_sub_32_in_GPRMM16MovePPairFirstSubClassMask[] = {
  0x00000000, 0x40000000, 0x00000004, 
};

static const uint32_t GPR64_with_sub_32_in_GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroSubClassMask[] = {
  0x00000000, 0x80000000, 0x00000000, 
};

static const uint32_t OCTEON_MPLSubClassMask[] = {
  0x00000000, 0x00000000, 0x00000001, 
};

static const uint32_t OCTEON_PSubClassMask[] = {
  0x00000000, 0x00000000, 0x00000002, 
};

static const uint32_t GPR64_with_sub_32_in_GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondSubClassMask[] = {
  0x00000000, 0x00000000, 0x00000004, 
};

static const uint32_t ACC64SubClassMask[] = {
  0x00000000, 0x00000000, 0x00000008, 
  0x00000000, 0x00000000, 0x00010000, // sub_32_sub_hi_then_sub_32
};

static const uint32_t GP64SubClassMask[] = {
  0x00000000, 0x00000000, 0x00000010, 
};

static const uint32_t GPR64_with_sub_32_in_CPURARegSubClassMask[] = {
  0x00000000, 0x00000000, 0x00000020, 
};

static const uint32_t GPR64_with_sub_32_in_GPR32ZEROSubClassMask[] = {
  0x00000000, 0x00000000, 0x00000040, 
};

static const uint32_t HI64SubClassMask[] = {
  0x00000000, 0x00000000, 0x00000080, 
  0x00000000, 0x00000000, 0x00010000, // sub_hi
};

static const uint32_t LO64SubClassMask[] = {
  0x00000000, 0x00000000, 0x00000100, 
  0x00000000, 0x00000000, 0x00010000, // sub_lo
};

static const uint32_t SP64SubClassMask[] = {
  0x00000000, 0x00000000, 0x00000200, 
};

static const uint32_t MSA128BSubClassMask[] = {
  0x00000000, 0x00000000, 0x0000fc00, 
};

static const uint32_t MSA128DSubClassMask[] = {
  0x00000000, 0x00000000, 0x0000fc00, 
};

static const uint32_t MSA128HSubClassMask[] = {
  0x00000000, 0x00000000, 0x0000fc00, 
};

static const uint32_t MSA128WSubClassMask[] = {
  0x00000000, 0x00000000, 0x0000fc00, 
};

static const uint32_t MSA128B_with_sub_64_in_OddSPSubClassMask[] = {
  0x00000000, 0x00000000, 0x00004000, 
};

static const uint32_t MSA128WEvensSubClassMask[] = {
  0x00000000, 0x00000000, 0x00008000, 
};

static const uint32_t ACC128SubClassMask[] = {
  0x00000000, 0x00000000, 0x00010000, 
};

static const uint16_t SuperRegIdxSeqs[] = {
  /* 0 */ 1, 0,
  /* 2 */ 2, 0,
  /* 4 */ 8, 0,
  /* 6 */ 1, 9, 0,
  /* 9 */ 2, 8, 9, 0,
  /* 13 */ 1, 8, 10, 0,
  /* 17 */ 11, 0,
};

static const TargetRegisterClass *const MSA128F16_with_sub_64_in_OddSPSuperclasses[] = {
  &Mips::MSA128F16RegClass,
  nullptr
};

static const TargetRegisterClass *const FGR32Superclasses[] = {
  &Mips::FGRCCRegClass,
  nullptr
};

static const TargetRegisterClass *const FGRCCSuperclasses[] = {
  &Mips::FGR32RegClass,
  nullptr
};

static const TargetRegisterClass *const GPR32Superclasses[] = {
  &Mips::DSPRRegClass,
  nullptr
};

static const TargetRegisterClass *const GPR32NONZEROSuperclasses[] = {
  &Mips::DSPRRegClass,
  &Mips::GPR32RegClass,
  nullptr
};

static const TargetRegisterClass *const OddSP_with_sub_hiSuperclasses[] = {
  &Mips::OddSPRegClass,
  nullptr
};

static const TargetRegisterClass *const FGR32_and_OddSPSuperclasses[] = {
  &Mips::OddSPRegClass,
  &Mips::FGR32RegClass,
  &Mips::FGRCCRegClass,
  nullptr
};

static const TargetRegisterClass *const FGRH32_and_OddSPSuperclasses[] = {
  &Mips::OddSPRegClass,
  &Mips::FGRH32RegClass,
  nullptr
};

static const TargetRegisterClass *const OddSP_with_sub_hi_with_sub_hi_in_FGRH32Superclasses[] = {
  &Mips::OddSPRegClass,
  &Mips::OddSP_with_sub_hiRegClass,
  nullptr
};

static const TargetRegisterClass *const CPU16RegsPlusSPSuperclasses[] = {
  &Mips::DSPRRegClass,
  &Mips::GPR32RegClass,
  &Mips::GPR32NONZERORegClass,
  nullptr
};

static const TargetRegisterClass *const CPU16RegsSuperclasses[] = {
  &Mips::DSPRRegClass,
  &Mips::GPR32RegClass,
  &Mips::GPR32NONZERORegClass,
  &Mips::CPU16RegsPlusSPRegClass,
  nullptr
};

static const TargetRegisterClass *const GPRMM16Superclasses[] = {
  &Mips::DSPRRegClass,
  &Mips::GPR32RegClass,
  &Mips::GPR32NONZERORegClass,
  &Mips::CPU16RegsPlusSPRegClass,
  &Mips::CPU16RegsRegClass,
  nullptr
};

static const TargetRegisterClass *const GPRMM16MovePSuperclasses[] = {
  &Mips::DSPRRegClass,
  &Mips::GPR32RegClass,
  nullptr
};

static const TargetRegisterClass *const GPRMM16ZeroSuperclasses[] = {
  &Mips::DSPRRegClass,
  &Mips::GPR32RegClass,
  nullptr
};

static const TargetRegisterClass *const OddSP_with_sub_hi_with_sub_hi_in_FGR32Superclasses[] = {
  &Mips::OddSPRegClass,
  &Mips::OddSP_with_sub_hiRegClass,
  nullptr
};

static const TargetRegisterClass *const CPU16Regs_and_GPRMM16ZeroSuperclasses[] = {
  &Mips::DSPRRegClass,
  &Mips::GPR32RegClass,
  &Mips::GPR32NONZERORegClass,
  &Mips::CPU16RegsPlusSPRegClass,
  &Mips::CPU16RegsRegClass,
  &Mips::GPRMM16RegClass,
  &Mips::GPRMM16ZeroRegClass,
  nullptr
};

static const TargetRegisterClass *const GPR32NONZERO_and_GPRMM16MovePSuperclasses[] = {
  &Mips::DSPRRegClass,
  &Mips::GPR32RegClass,
  &Mips::GPR32NONZERORegClass,
  &Mips::GPRMM16MovePRegClass,
  nullptr
};

static const TargetRegisterClass *const GPRMM16MovePPairSecondSuperclasses[] = {
  &Mips::DSPRRegClass,
  &Mips::GPR32RegClass,
  &Mips::GPR32NONZERORegClass,
  nullptr
};

static const TargetRegisterClass *const CPU16Regs_and_GPRMM16MovePSuperclasses[] = {
  &Mips::DSPRRegClass,
  &Mips::GPR32RegClass,
  &Mips::GPR32NONZERORegClass,
  &Mips::CPU16RegsPlusSPRegClass,
  &Mips::CPU16RegsRegClass,
  &Mips::GPRMM16RegClass,
  &Mips::GPRMM16MovePRegClass,
  &Mips::GPR32NONZERO_and_GPRMM16MovePRegClass,
  nullptr
};

static const TargetRegisterClass *const GPRMM16MoveP_and_GPRMM16ZeroSuperclasses[] = {
  &Mips::DSPRRegClass,
  &Mips::GPR32RegClass,
  &Mips::GPRMM16MovePRegClass,
  &Mips::GPRMM16ZeroRegClass,
  nullptr
};

static const TargetRegisterClass *const CPU16Regs_and_GPRMM16MovePPairSecondSuperclasses[] = {
  &Mips::DSPRRegClass,
  &Mips::GPR32RegClass,
  &Mips::GPR32NONZERORegClass,
  &Mips::CPU16RegsPlusSPRegClass,
  &Mips::CPU16RegsRegClass,
  &Mips::GPRMM16RegClass,
  &Mips::GPRMM16ZeroRegClass,
  &Mips::CPU16Regs_and_GPRMM16ZeroRegClass,
  &Mips::GPRMM16MovePPairSecondRegClass,
  nullptr
};

static const TargetRegisterClass *const GPRMM16MovePPairFirstSuperclasses[] = {
  &Mips::DSPRRegClass,
  &Mips::GPR32RegClass,
  &Mips::GPR32NONZERORegClass,
  &Mips::CPU16RegsPlusSPRegClass,
  &Mips::CPU16RegsRegClass,
  &Mips::GPRMM16RegClass,
  &Mips::GPRMM16ZeroRegClass,
  &Mips::CPU16Regs_and_GPRMM16ZeroRegClass,
  nullptr
};

static const TargetRegisterClass *const GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroSuperclasses[] = {
  &Mips::DSPRRegClass,
  &Mips::GPR32RegClass,
  &Mips::GPR32NONZERORegClass,
  &Mips::CPU16RegsPlusSPRegClass,
  &Mips::CPU16RegsRegClass,
  &Mips::GPRMM16RegClass,
  &Mips::GPRMM16MovePRegClass,
  &Mips::GPRMM16ZeroRegClass,
  &Mips::CPU16Regs_and_GPRMM16ZeroRegClass,
  &Mips::GPR32NONZERO_and_GPRMM16MovePRegClass,
  &Mips::CPU16Regs_and_GPRMM16MovePRegClass,
  &Mips::GPRMM16MoveP_and_GPRMM16ZeroRegClass,
  nullptr
};

static const TargetRegisterClass *const GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondSuperclasses[] = {
  &Mips::DSPRRegClass,
  &Mips::GPR32RegClass,
  &Mips::GPR32NONZERORegClass,
  &Mips::CPU16RegsPlusSPRegClass,
  &Mips::CPU16RegsRegClass,
  &Mips::GPRMM16RegClass,
  &Mips::GPRMM16ZeroRegClass,
  &Mips::CPU16Regs_and_GPRMM16ZeroRegClass,
  &Mips::GPRMM16MovePPairSecondRegClass,
  &Mips::CPU16Regs_and_GPRMM16MovePPairSecondRegClass,
  &Mips::GPRMM16MovePPairFirstRegClass,
  nullptr
};

static const TargetRegisterClass *const CPURARegSuperclasses[] = {
  &Mips::DSPRRegClass,
  &Mips::GPR32RegClass,
  &Mips::GPR32NONZERORegClass,
  nullptr
};

static const TargetRegisterClass *const CPUSPRegSuperclasses[] = {
  &Mips::DSPRRegClass,
  &Mips::GPR32RegClass,
  &Mips::GPR32NONZERORegClass,
  &Mips::CPU16RegsPlusSPRegClass,
  nullptr
};

static const TargetRegisterClass *const GP32Superclasses[] = {
  &Mips::DSPRRegClass,
  &Mips::GPR32RegClass,
  &Mips::GPR32NONZERORegClass,
  nullptr
};

static const TargetRegisterClass *const GPR32ZEROSuperclasses[] = {
  &Mips::DSPRRegClass,
  &Mips::GPR32RegClass,
  &Mips::GPRMM16MovePRegClass,
  &Mips::GPRMM16ZeroRegClass,
  &Mips::GPRMM16MoveP_and_GPRMM16ZeroRegClass,
  nullptr
};

static const TargetRegisterClass *const HI32Superclasses[] = {
  &Mips::HI32DSPRegClass,
  nullptr
};

static const TargetRegisterClass *const LO32Superclasses[] = {
  &Mips::LO32DSPRegClass,
  nullptr
};

static const TargetRegisterClass *const SP32Superclasses[] = {
  &Mips::DSPRRegClass,
  &Mips::GPR32RegClass,
  &Mips::GPR32NONZERORegClass,
  &Mips::CPU16RegsPlusSPRegClass,
  &Mips::CPUSPRegRegClass,
  nullptr
};

static const TargetRegisterClass *const GPR64_with_sub_32_in_GPR32NONZEROSuperclasses[] = {
  &Mips::GPR64RegClass,
  nullptr
};

static const TargetRegisterClass *const FGR64_and_OddSPSuperclasses[] = {
  &Mips::OddSPRegClass,
  &Mips::OddSP_with_sub_hiRegClass,
  &Mips::OddSP_with_sub_hi_with_sub_hi_in_FGRH32RegClass,
  &Mips::FGR64RegClass,
  nullptr
};

static const TargetRegisterClass *const GPR64_with_sub_32_in_CPU16RegsPlusSPSuperclasses[] = {
  &Mips::GPR64RegClass,
  &Mips::GPR64_with_sub_32_in_GPR32NONZERORegClass,
  nullptr
};

static const TargetRegisterClass *const AFGR64_and_OddSPSuperclasses[] = {
  &Mips::OddSPRegClass,
  &Mips::OddSP_with_sub_hiRegClass,
  &Mips::OddSP_with_sub_hi_with_sub_hi_in_FGR32RegClass,
  &Mips::AFGR64RegClass,
  nullptr
};

static const TargetRegisterClass *const GPR64_with_sub_32_in_CPU16RegsSuperclasses[] = {
  &Mips::GPR64RegClass,
  &Mips::GPR64_with_sub_32_in_GPR32NONZERORegClass,
  &Mips::GPR64_with_sub_32_in_CPU16RegsPlusSPRegClass,
  nullptr
};

static const TargetRegisterClass *const GPR64_with_sub_32_in_GPRMM16MovePSuperclasses[] = {
  &Mips::GPR64RegClass,
  nullptr
};

static const TargetRegisterClass *const GPR64_with_sub_32_in_GPRMM16ZeroSuperclasses[] = {
  &Mips::GPR64RegClass,
  nullptr
};

static const TargetRegisterClass *const GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16ZeroSuperclasses[] = {
  &Mips::GPR64RegClass,
  &Mips::GPR64_with_sub_32_in_GPR32NONZERORegClass,
  &Mips::GPR64_with_sub_32_in_CPU16RegsPlusSPRegClass,
  &Mips::GPR64_with_sub_32_in_CPU16RegsRegClass,
  &Mips::GPR64_with_sub_32_in_GPRMM16ZeroRegClass,
  nullptr
};

static const TargetRegisterClass *const GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MovePSuperclasses[] = {
  &Mips::GPR64RegClass,
  &Mips::GPR64_with_sub_32_in_GPR32NONZERORegClass,
  &Mips::GPR64_with_sub_32_in_GPRMM16MovePRegClass,
  nullptr
};

static const TargetRegisterClass *const GPR64_with_sub_32_in_GPRMM16MovePPairSecondSuperclasses[] = {
  &Mips::GPR64RegClass,
  &Mips::GPR64_with_sub_32_in_GPR32NONZERORegClass,
  nullptr
};

static const TargetRegisterClass *const GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePSuperclasses[] = {
  &Mips::GPR64RegClass,
  &Mips::GPR64_with_sub_32_in_GPR32NONZERORegClass,
  &Mips::GPR64_with_sub_32_in_CPU16RegsPlusSPRegClass,
  &Mips::GPR64_with_sub_32_in_CPU16RegsRegClass,
  &Mips::GPR64_with_sub_32_in_GPRMM16MovePRegClass,
  &Mips::GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MovePRegClass,
  nullptr
};

static const TargetRegisterClass *const GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16ZeroSuperclasses[] = {
  &Mips::GPR64RegClass,
  &Mips::GPR64_with_sub_32_in_GPRMM16MovePRegClass,
  &Mips::GPR64_with_sub_32_in_GPRMM16ZeroRegClass,
  nullptr
};

static const TargetRegisterClass *const GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePPairSecondSuperclasses[] = {
  &Mips::GPR64RegClass,
  &Mips::GPR64_with_sub_32_in_GPR32NONZERORegClass,
  &Mips::GPR64_with_sub_32_in_CPU16RegsPlusSPRegClass,
  &Mips::GPR64_with_sub_32_in_CPU16RegsRegClass,
  &Mips::GPR64_with_sub_32_in_GPRMM16ZeroRegClass,
  &Mips::GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16ZeroRegClass,
  &Mips::GPR64_with_sub_32_in_GPRMM16MovePPairSecondRegClass,
  nullptr
};

static const TargetRegisterClass *const GPR64_with_sub_32_in_GPRMM16MovePPairFirstSuperclasses[] = {
  &Mips::GPR64RegClass,
  &Mips::GPR64_with_sub_32_in_GPR32NONZERORegClass,
  &Mips::GPR64_with_sub_32_in_CPU16RegsPlusSPRegClass,
  &Mips::GPR64_with_sub_32_in_CPU16RegsRegClass,
  &Mips::GPR64_with_sub_32_in_GPRMM16ZeroRegClass,
  &Mips::GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16ZeroRegClass,
  nullptr
};

static const TargetRegisterClass *const GPR64_with_sub_32_in_GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroSuperclasses[] = {
  &Mips::GPR64RegClass,
  &Mips::GPR64_with_sub_32_in_GPR32NONZERORegClass,
  &Mips::GPR64_with_sub_32_in_CPU16RegsPlusSPRegClass,
  &Mips::GPR64_with_sub_32_in_CPU16RegsRegClass,
  &Mips::GPR64_with_sub_32_in_GPRMM16MovePRegClass,
  &Mips::GPR64_with_sub_32_in_GPRMM16ZeroRegClass,
  &Mips::GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16ZeroRegClass,
  &Mips::GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MovePRegClass,
  &Mips::GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePRegClass,
  &Mips::GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16ZeroRegClass,
  nullptr
};

static const TargetRegisterClass *const GPR64_with_sub_32_in_GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondSuperclasses[] = {
  &Mips::GPR64RegClass,
  &Mips::GPR64_with_sub_32_in_GPR32NONZERORegClass,
  &Mips::GPR64_with_sub_32_in_CPU16RegsPlusSPRegClass,
  &Mips::GPR64_with_sub_32_in_CPU16RegsRegClass,
  &Mips::GPR64_with_sub_32_in_GPRMM16ZeroRegClass,
  &Mips::GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16ZeroRegClass,
  &Mips::GPR64_with_sub_32_in_GPRMM16MovePPairSecondRegClass,
  &Mips::GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePPairSecondRegClass,
  &Mips::GPR64_with_sub_32_in_GPRMM16MovePPairFirstRegClass,
  nullptr
};

static const TargetRegisterClass *const ACC64Superclasses[] = {
  &Mips::ACC64DSPRegClass,
  nullptr
};

static const TargetRegisterClass *const GP64Superclasses[] = {
  &Mips::GPR64RegClass,
  &Mips::GPR64_with_sub_32_in_GPR32NONZERORegClass,
  nullptr
};

static const TargetRegisterClass *const GPR64_with_sub_32_in_CPURARegSuperclasses[] = {
  &Mips::GPR64RegClass,
  &Mips::GPR64_with_sub_32_in_GPR32NONZERORegClass,
  nullptr
};

static const TargetRegisterClass *const GPR64_with_sub_32_in_GPR32ZEROSuperclasses[] = {
  &Mips::GPR64RegClass,
  &Mips::GPR64_with_sub_32_in_GPRMM16MovePRegClass,
  &Mips::GPR64_with_sub_32_in_GPRMM16ZeroRegClass,
  &Mips::GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16ZeroRegClass,
  nullptr
};

static const TargetRegisterClass *const SP64Superclasses[] = {
  &Mips::GPR64RegClass,
  &Mips::GPR64_with_sub_32_in_GPR32NONZERORegClass,
  &Mips::GPR64_with_sub_32_in_CPU16RegsPlusSPRegClass,
  nullptr
};

static const TargetRegisterClass *const MSA128BSuperclasses[] = {
  &Mips::MSA128F16RegClass,
  &Mips::MSA128DRegClass,
  &Mips::MSA128HRegClass,
  &Mips::MSA128WRegClass,
  nullptr
};

static const TargetRegisterClass *const MSA128DSuperclasses[] = {
  &Mips::MSA128F16RegClass,
  &Mips::MSA128BRegClass,
  &Mips::MSA128HRegClass,
  &Mips::MSA128WRegClass,
  nullptr
};

static const TargetRegisterClass *const MSA128HSuperclasses[] = {
  &Mips::MSA128F16RegClass,
  &Mips::MSA128BRegClass,
  &Mips::MSA128DRegClass,
  &Mips::MSA128WRegClass,
  nullptr
};

static const TargetRegisterClass *const MSA128WSuperclasses[] = {
  &Mips::MSA128F16RegClass,
  &Mips::MSA128BRegClass,
  &Mips::MSA128DRegClass,
  &Mips::MSA128HRegClass,
  nullptr
};

static const TargetRegisterClass *const MSA128B_with_sub_64_in_OddSPSuperclasses[] = {
  &Mips::MSA128F16RegClass,
  &Mips::MSA128F16_with_sub_64_in_OddSPRegClass,
  &Mips::MSA128BRegClass,
  &Mips::MSA128DRegClass,
  &Mips::MSA128HRegClass,
  &Mips::MSA128WRegClass,
  nullptr
};

static const TargetRegisterClass *const MSA128WEvensSuperclasses[] = {
  &Mips::MSA128F16RegClass,
  &Mips::MSA128BRegClass,
  &Mips::MSA128DRegClass,
  &Mips::MSA128HRegClass,
  &Mips::MSA128WRegClass,
  nullptr
};


namespace Mips {   // Register class instances
  extern const TargetRegisterClass MSA128F16RegClass = {
    &MipsMCRegisterClasses[MSA128F16RegClassID],
    MSA128F16SubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000041),
    0,
    true, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

  extern const TargetRegisterClass MSA128F16_with_sub_64_in_OddSPRegClass = {
    &MipsMCRegisterClasses[MSA128F16_with_sub_64_in_OddSPRegClassID],
    MSA128F16_with_sub_64_in_OddSPSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000041),
    0,
    true, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    MSA128F16_with_sub_64_in_OddSPSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass OddSPRegClass = {
    &MipsMCRegisterClasses[OddSPRegClassID],
    OddSPSubClassMask,
    SuperRegIdxSeqs + 9,
    LaneBitmask(0x00000041),
    0,
    true, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

  extern const TargetRegisterClass CCRRegClass = {
    &MipsMCRegisterClasses[CCRRegClassID],
    CCRSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

  extern const TargetRegisterClass COP0RegClass = {
    &MipsMCRegisterClasses[COP0RegClassID],
    COP0SubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

  extern const TargetRegisterClass COP2RegClass = {
    &MipsMCRegisterClasses[COP2RegClassID],
    COP2SubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

  extern const TargetRegisterClass COP3RegClass = {
    &MipsMCRegisterClasses[COP3RegClassID],
    COP3SubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

  extern const TargetRegisterClass DSPRRegClass = {
    &MipsMCRegisterClasses[DSPRRegClassID],
    DSPRSubClassMask,
    SuperRegIdxSeqs + 0,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

  extern const TargetRegisterClass FGR32RegClass = {
    &MipsMCRegisterClasses[FGR32RegClassID],
    FGR32SubClassMask,
    SuperRegIdxSeqs + 10,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    FGR32Superclasses,
    nullptr
  };

  extern const TargetRegisterClass FGRCCRegClass = {
    &MipsMCRegisterClasses[FGRCCRegClassID],
    FGRCCSubClassMask,
    SuperRegIdxSeqs + 10,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    FGRCCSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass FGRH32RegClass = {
    &MipsMCRegisterClasses[FGRH32RegClassID],
    FGRH32SubClassMask,
    SuperRegIdxSeqs + 4,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

  extern const TargetRegisterClass GPR32RegClass = {
    &MipsMCRegisterClasses[GPR32RegClassID],
    GPR32SubClassMask,
    SuperRegIdxSeqs + 0,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPR32Superclasses,
    nullptr
  };

  extern const TargetRegisterClass HWRegsRegClass = {
    &MipsMCRegisterClasses[HWRegsRegClassID],
    HWRegsSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

  extern const TargetRegisterClass GPR32NONZERORegClass = {
    &MipsMCRegisterClasses[GPR32NONZERORegClassID],
    GPR32NONZEROSubClassMask,
    SuperRegIdxSeqs + 0,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPR32NONZEROSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass OddSP_with_sub_hiRegClass = {
    &MipsMCRegisterClasses[OddSP_with_sub_hiRegClassID],
    OddSP_with_sub_hiSubClassMask,
    SuperRegIdxSeqs + 2,
    LaneBitmask(0x00000041),
    0,
    true, /* HasDisjunctSubRegs */
    true, /* CoveredBySubRegs */
    OddSP_with_sub_hiSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass FGR32_and_OddSPRegClass = {
    &MipsMCRegisterClasses[FGR32_and_OddSPRegClassID],
    FGR32_and_OddSPSubClassMask,
    SuperRegIdxSeqs + 10,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    FGR32_and_OddSPSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass FGRH32_and_OddSPRegClass = {
    &MipsMCRegisterClasses[FGRH32_and_OddSPRegClassID],
    FGRH32_and_OddSPSubClassMask,
    SuperRegIdxSeqs + 4,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    FGRH32_and_OddSPSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass OddSP_with_sub_hi_with_sub_hi_in_FGRH32RegClass = {
    &MipsMCRegisterClasses[OddSP_with_sub_hi_with_sub_hi_in_FGRH32RegClassID],
    OddSP_with_sub_hi_with_sub_hi_in_FGRH32SubClassMask,
    SuperRegIdxSeqs + 2,
    LaneBitmask(0x00000041),
    0,
    true, /* HasDisjunctSubRegs */
    true, /* CoveredBySubRegs */
    OddSP_with_sub_hi_with_sub_hi_in_FGRH32Superclasses,
    nullptr
  };

  extern const TargetRegisterClass CPU16RegsPlusSPRegClass = {
    &MipsMCRegisterClasses[CPU16RegsPlusSPRegClassID],
    CPU16RegsPlusSPSubClassMask,
    SuperRegIdxSeqs + 0,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    CPU16RegsPlusSPSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass CPU16RegsRegClass = {
    &MipsMCRegisterClasses[CPU16RegsRegClassID],
    CPU16RegsSubClassMask,
    SuperRegIdxSeqs + 0,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    CPU16RegsSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass FCCRegClass = {
    &MipsMCRegisterClasses[FCCRegClassID],
    FCCSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

  extern const TargetRegisterClass GPRMM16RegClass = {
    &MipsMCRegisterClasses[GPRMM16RegClassID],
    GPRMM16SubClassMask,
    SuperRegIdxSeqs + 0,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPRMM16Superclasses,
    nullptr
  };

  extern const TargetRegisterClass GPRMM16MovePRegClass = {
    &MipsMCRegisterClasses[GPRMM16MovePRegClassID],
    GPRMM16MovePSubClassMask,
    SuperRegIdxSeqs + 0,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPRMM16MovePSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass GPRMM16ZeroRegClass = {
    &MipsMCRegisterClasses[GPRMM16ZeroRegClassID],
    GPRMM16ZeroSubClassMask,
    SuperRegIdxSeqs + 0,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPRMM16ZeroSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass MSACtrlRegClass = {
    &MipsMCRegisterClasses[MSACtrlRegClassID],
    MSACtrlSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

  extern const TargetRegisterClass OddSP_with_sub_hi_with_sub_hi_in_FGR32RegClass = {
    &MipsMCRegisterClasses[OddSP_with_sub_hi_with_sub_hi_in_FGR32RegClassID],
    OddSP_with_sub_hi_with_sub_hi_in_FGR32SubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000041),
    0,
    true, /* HasDisjunctSubRegs */
    true, /* CoveredBySubRegs */
    OddSP_with_sub_hi_with_sub_hi_in_FGR32Superclasses,
    nullptr
  };

  extern const TargetRegisterClass CPU16Regs_and_GPRMM16ZeroRegClass = {
    &MipsMCRegisterClasses[CPU16Regs_and_GPRMM16ZeroRegClassID],
    CPU16Regs_and_GPRMM16ZeroSubClassMask,
    SuperRegIdxSeqs + 0,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    CPU16Regs_and_GPRMM16ZeroSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass GPR32NONZERO_and_GPRMM16MovePRegClass = {
    &MipsMCRegisterClasses[GPR32NONZERO_and_GPRMM16MovePRegClassID],
    GPR32NONZERO_and_GPRMM16MovePSubClassMask,
    SuperRegIdxSeqs + 0,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPR32NONZERO_and_GPRMM16MovePSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass GPRMM16MovePPairSecondRegClass = {
    &MipsMCRegisterClasses[GPRMM16MovePPairSecondRegClassID],
    GPRMM16MovePPairSecondSubClassMask,
    SuperRegIdxSeqs + 0,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPRMM16MovePPairSecondSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass CPU16Regs_and_GPRMM16MovePRegClass = {
    &MipsMCRegisterClasses[CPU16Regs_and_GPRMM16MovePRegClassID],
    CPU16Regs_and_GPRMM16MovePSubClassMask,
    SuperRegIdxSeqs + 0,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    CPU16Regs_and_GPRMM16MovePSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass GPRMM16MoveP_and_GPRMM16ZeroRegClass = {
    &MipsMCRegisterClasses[GPRMM16MoveP_and_GPRMM16ZeroRegClassID],
    GPRMM16MoveP_and_GPRMM16ZeroSubClassMask,
    SuperRegIdxSeqs + 0,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPRMM16MoveP_and_GPRMM16ZeroSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass HI32DSPRegClass = {
    &MipsMCRegisterClasses[HI32DSPRegClassID],
    HI32DSPSubClassMask,
    SuperRegIdxSeqs + 13,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

  extern const TargetRegisterClass LO32DSPRegClass = {
    &MipsMCRegisterClasses[LO32DSPRegClassID],
    LO32DSPSubClassMask,
    SuperRegIdxSeqs + 6,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

  extern const TargetRegisterClass CPU16Regs_and_GPRMM16MovePPairSecondRegClass = {
    &MipsMCRegisterClasses[CPU16Regs_and_GPRMM16MovePPairSecondRegClassID],
    CPU16Regs_and_GPRMM16MovePPairSecondSubClassMask,
    SuperRegIdxSeqs + 0,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    CPU16Regs_and_GPRMM16MovePPairSecondSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass GPRMM16MovePPairFirstRegClass = {
    &MipsMCRegisterClasses[GPRMM16MovePPairFirstRegClassID],
    GPRMM16MovePPairFirstSubClassMask,
    SuperRegIdxSeqs + 0,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPRMM16MovePPairFirstSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroRegClass = {
    &MipsMCRegisterClasses[GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroRegClassID],
    GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroSubClassMask,
    SuperRegIdxSeqs + 0,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondRegClass = {
    &MipsMCRegisterClasses[GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondRegClassID],
    GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondSubClassMask,
    SuperRegIdxSeqs + 0,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass CPURARegRegClass = {
    &MipsMCRegisterClasses[CPURARegRegClassID],
    CPURARegSubClassMask,
    SuperRegIdxSeqs + 0,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    CPURARegSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass CPUSPRegRegClass = {
    &MipsMCRegisterClasses[CPUSPRegRegClassID],
    CPUSPRegSubClassMask,
    SuperRegIdxSeqs + 0,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    CPUSPRegSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass DSPCCRegClass = {
    &MipsMCRegisterClasses[DSPCCRegClassID],
    DSPCCSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

  extern const TargetRegisterClass GP32RegClass = {
    &MipsMCRegisterClasses[GP32RegClassID],
    GP32SubClassMask,
    SuperRegIdxSeqs + 0,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GP32Superclasses,
    nullptr
  };

  extern const TargetRegisterClass GPR32ZERORegClass = {
    &MipsMCRegisterClasses[GPR32ZERORegClassID],
    GPR32ZEROSubClassMask,
    SuperRegIdxSeqs + 0,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPR32ZEROSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass HI32RegClass = {
    &MipsMCRegisterClasses[HI32RegClassID],
    HI32SubClassMask,
    SuperRegIdxSeqs + 13,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    HI32Superclasses,
    nullptr
  };

  extern const TargetRegisterClass LO32RegClass = {
    &MipsMCRegisterClasses[LO32RegClassID],
    LO32SubClassMask,
    SuperRegIdxSeqs + 6,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    LO32Superclasses,
    nullptr
  };

  extern const TargetRegisterClass SP32RegClass = {
    &MipsMCRegisterClasses[SP32RegClassID],
    SP32SubClassMask,
    SuperRegIdxSeqs + 0,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    SP32Superclasses,
    nullptr
  };

  extern const TargetRegisterClass FGR64RegClass = {
    &MipsMCRegisterClasses[FGR64RegClassID],
    FGR64SubClassMask,
    SuperRegIdxSeqs + 2,
    LaneBitmask(0x00000041),
    0,
    true, /* HasDisjunctSubRegs */
    true, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

  extern const TargetRegisterClass GPR64RegClass = {
    &MipsMCRegisterClasses[GPR64RegClassID],
    GPR64SubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

  extern const TargetRegisterClass GPR64_with_sub_32_in_GPR32NONZERORegClass = {
    &MipsMCRegisterClasses[GPR64_with_sub_32_in_GPR32NONZERORegClassID],
    GPR64_with_sub_32_in_GPR32NONZEROSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPR64_with_sub_32_in_GPR32NONZEROSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass AFGR64RegClass = {
    &MipsMCRegisterClasses[AFGR64RegClassID],
    AFGR64SubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000041),
    0,
    true, /* HasDisjunctSubRegs */
    true, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

  extern const TargetRegisterClass FGR64_and_OddSPRegClass = {
    &MipsMCRegisterClasses[FGR64_and_OddSPRegClassID],
    FGR64_and_OddSPSubClassMask,
    SuperRegIdxSeqs + 2,
    LaneBitmask(0x00000041),
    0,
    true, /* HasDisjunctSubRegs */
    true, /* CoveredBySubRegs */
    FGR64_and_OddSPSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass GPR64_with_sub_32_in_CPU16RegsPlusSPRegClass = {
    &MipsMCRegisterClasses[GPR64_with_sub_32_in_CPU16RegsPlusSPRegClassID],
    GPR64_with_sub_32_in_CPU16RegsPlusSPSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPR64_with_sub_32_in_CPU16RegsPlusSPSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass AFGR64_and_OddSPRegClass = {
    &MipsMCRegisterClasses[AFGR64_and_OddSPRegClassID],
    AFGR64_and_OddSPSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000041),
    0,
    true, /* HasDisjunctSubRegs */
    true, /* CoveredBySubRegs */
    AFGR64_and_OddSPSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass GPR64_with_sub_32_in_CPU16RegsRegClass = {
    &MipsMCRegisterClasses[GPR64_with_sub_32_in_CPU16RegsRegClassID],
    GPR64_with_sub_32_in_CPU16RegsSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPR64_with_sub_32_in_CPU16RegsSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass GPR64_with_sub_32_in_GPRMM16MovePRegClass = {
    &MipsMCRegisterClasses[GPR64_with_sub_32_in_GPRMM16MovePRegClassID],
    GPR64_with_sub_32_in_GPRMM16MovePSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPR64_with_sub_32_in_GPRMM16MovePSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass GPR64_with_sub_32_in_GPRMM16ZeroRegClass = {
    &MipsMCRegisterClasses[GPR64_with_sub_32_in_GPRMM16ZeroRegClassID],
    GPR64_with_sub_32_in_GPRMM16ZeroSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPR64_with_sub_32_in_GPRMM16ZeroSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16ZeroRegClass = {
    &MipsMCRegisterClasses[GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16ZeroRegClassID],
    GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16ZeroSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16ZeroSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MovePRegClass = {
    &MipsMCRegisterClasses[GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MovePRegClassID],
    GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MovePSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MovePSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass GPR64_with_sub_32_in_GPRMM16MovePPairSecondRegClass = {
    &MipsMCRegisterClasses[GPR64_with_sub_32_in_GPRMM16MovePPairSecondRegClassID],
    GPR64_with_sub_32_in_GPRMM16MovePPairSecondSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPR64_with_sub_32_in_GPRMM16MovePPairSecondSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass ACC64DSPRegClass = {
    &MipsMCRegisterClasses[ACC64DSPRegClassID],
    ACC64DSPSubClassMask,
    SuperRegIdxSeqs + 17,
    LaneBitmask(0x00000041),
    0,
    true, /* HasDisjunctSubRegs */
    true, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

  extern const TargetRegisterClass GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePRegClass = {
    &MipsMCRegisterClasses[GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePRegClassID],
    GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16ZeroRegClass = {
    &MipsMCRegisterClasses[GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16ZeroRegClassID],
    GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16ZeroSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16ZeroSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePPairSecondRegClass = {
    &MipsMCRegisterClasses[GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePPairSecondRegClassID],
    GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePPairSecondSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePPairSecondSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass GPR64_with_sub_32_in_GPRMM16MovePPairFirstRegClass = {
    &MipsMCRegisterClasses[GPR64_with_sub_32_in_GPRMM16MovePPairFirstRegClassID],
    GPR64_with_sub_32_in_GPRMM16MovePPairFirstSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPR64_with_sub_32_in_GPRMM16MovePPairFirstSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass GPR64_with_sub_32_in_GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroRegClass = {
    &MipsMCRegisterClasses[GPR64_with_sub_32_in_GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroRegClassID],
    GPR64_with_sub_32_in_GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPR64_with_sub_32_in_GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass OCTEON_MPLRegClass = {
    &MipsMCRegisterClasses[OCTEON_MPLRegClassID],
    OCTEON_MPLSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

  extern const TargetRegisterClass OCTEON_PRegClass = {
    &MipsMCRegisterClasses[OCTEON_PRegClassID],
    OCTEON_PSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

  extern const TargetRegisterClass GPR64_with_sub_32_in_GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondRegClass = {
    &MipsMCRegisterClasses[GPR64_with_sub_32_in_GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondRegClassID],
    GPR64_with_sub_32_in_GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPR64_with_sub_32_in_GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass ACC64RegClass = {
    &MipsMCRegisterClasses[ACC64RegClassID],
    ACC64SubClassMask,
    SuperRegIdxSeqs + 17,
    LaneBitmask(0x00000041),
    0,
    true, /* HasDisjunctSubRegs */
    true, /* CoveredBySubRegs */
    ACC64Superclasses,
    nullptr
  };

  extern const TargetRegisterClass GP64RegClass = {
    &MipsMCRegisterClasses[GP64RegClassID],
    GP64SubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GP64Superclasses,
    nullptr
  };

  extern const TargetRegisterClass GPR64_with_sub_32_in_CPURARegRegClass = {
    &MipsMCRegisterClasses[GPR64_with_sub_32_in_CPURARegRegClassID],
    GPR64_with_sub_32_in_CPURARegSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPR64_with_sub_32_in_CPURARegSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass GPR64_with_sub_32_in_GPR32ZERORegClass = {
    &MipsMCRegisterClasses[GPR64_with_sub_32_in_GPR32ZERORegClassID],
    GPR64_with_sub_32_in_GPR32ZEROSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    GPR64_with_sub_32_in_GPR32ZEROSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass HI64RegClass = {
    &MipsMCRegisterClasses[HI64RegClassID],
    HI64SubClassMask,
    SuperRegIdxSeqs + 4,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

  extern const TargetRegisterClass LO64RegClass = {
    &MipsMCRegisterClasses[LO64RegClassID],
    LO64SubClassMask,
    SuperRegIdxSeqs + 7,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

  extern const TargetRegisterClass SP64RegClass = {
    &MipsMCRegisterClasses[SP64RegClassID],
    SP64SubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000001),
    0,
    false, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    SP64Superclasses,
    nullptr
  };

  extern const TargetRegisterClass MSA128BRegClass = {
    &MipsMCRegisterClasses[MSA128BRegClassID],
    MSA128BSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000041),
    0,
    true, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    MSA128BSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass MSA128DRegClass = {
    &MipsMCRegisterClasses[MSA128DRegClassID],
    MSA128DSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000041),
    0,
    true, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    MSA128DSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass MSA128HRegClass = {
    &MipsMCRegisterClasses[MSA128HRegClassID],
    MSA128HSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000041),
    0,
    true, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    MSA128HSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass MSA128WRegClass = {
    &MipsMCRegisterClasses[MSA128WRegClassID],
    MSA128WSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000041),
    0,
    true, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    MSA128WSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass MSA128B_with_sub_64_in_OddSPRegClass = {
    &MipsMCRegisterClasses[MSA128B_with_sub_64_in_OddSPRegClassID],
    MSA128B_with_sub_64_in_OddSPSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000041),
    0,
    true, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    MSA128B_with_sub_64_in_OddSPSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass MSA128WEvensRegClass = {
    &MipsMCRegisterClasses[MSA128WEvensRegClassID],
    MSA128WEvensSubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000041),
    0,
    true, /* HasDisjunctSubRegs */
    false, /* CoveredBySubRegs */
    MSA128WEvensSuperclasses,
    nullptr
  };

  extern const TargetRegisterClass ACC128RegClass = {
    &MipsMCRegisterClasses[ACC128RegClassID],
    ACC128SubClassMask,
    SuperRegIdxSeqs + 1,
    LaneBitmask(0x00000041),
    0,
    true, /* HasDisjunctSubRegs */
    true, /* CoveredBySubRegs */
    NullRegClasses,
    nullptr
  };

} // end namespace Mips

namespace {
  const TargetRegisterClass* const RegisterClasses[] = {
    &Mips::MSA128F16RegClass,
    &Mips::MSA128F16_with_sub_64_in_OddSPRegClass,
    &Mips::OddSPRegClass,
    &Mips::CCRRegClass,
    &Mips::COP0RegClass,
    &Mips::COP2RegClass,
    &Mips::COP3RegClass,
    &Mips::DSPRRegClass,
    &Mips::FGR32RegClass,
    &Mips::FGRCCRegClass,
    &Mips::FGRH32RegClass,
    &Mips::GPR32RegClass,
    &Mips::HWRegsRegClass,
    &Mips::GPR32NONZERORegClass,
    &Mips::OddSP_with_sub_hiRegClass,
    &Mips::FGR32_and_OddSPRegClass,
    &Mips::FGRH32_and_OddSPRegClass,
    &Mips::OddSP_with_sub_hi_with_sub_hi_in_FGRH32RegClass,
    &Mips::CPU16RegsPlusSPRegClass,
    &Mips::CPU16RegsRegClass,
    &Mips::FCCRegClass,
    &Mips::GPRMM16RegClass,
    &Mips::GPRMM16MovePRegClass,
    &Mips::GPRMM16ZeroRegClass,
    &Mips::MSACtrlRegClass,
    &Mips::OddSP_with_sub_hi_with_sub_hi_in_FGR32RegClass,
    &Mips::CPU16Regs_and_GPRMM16ZeroRegClass,
    &Mips::GPR32NONZERO_and_GPRMM16MovePRegClass,
    &Mips::GPRMM16MovePPairSecondRegClass,
    &Mips::CPU16Regs_and_GPRMM16MovePRegClass,
    &Mips::GPRMM16MoveP_and_GPRMM16ZeroRegClass,
    &Mips::HI32DSPRegClass,
    &Mips::LO32DSPRegClass,
    &Mips::CPU16Regs_and_GPRMM16MovePPairSecondRegClass,
    &Mips::GPRMM16MovePPairFirstRegClass,
    &Mips::GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroRegClass,
    &Mips::GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondRegClass,
    &Mips::CPURARegRegClass,
    &Mips::CPUSPRegRegClass,
    &Mips::DSPCCRegClass,
    &Mips::GP32RegClass,
    &Mips::GPR32ZERORegClass,
    &Mips::HI32RegClass,
    &Mips::LO32RegClass,
    &Mips::SP32RegClass,
    &Mips::FGR64RegClass,
    &Mips::GPR64RegClass,
    &Mips::GPR64_with_sub_32_in_GPR32NONZERORegClass,
    &Mips::AFGR64RegClass,
    &Mips::FGR64_and_OddSPRegClass,
    &Mips::GPR64_with_sub_32_in_CPU16RegsPlusSPRegClass,
    &Mips::AFGR64_and_OddSPRegClass,
    &Mips::GPR64_with_sub_32_in_CPU16RegsRegClass,
    &Mips::GPR64_with_sub_32_in_GPRMM16MovePRegClass,
    &Mips::GPR64_with_sub_32_in_GPRMM16ZeroRegClass,
    &Mips::GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16ZeroRegClass,
    &Mips::GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MovePRegClass,
    &Mips::GPR64_with_sub_32_in_GPRMM16MovePPairSecondRegClass,
    &Mips::ACC64DSPRegClass,
    &Mips::GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePRegClass,
    &Mips::GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16ZeroRegClass,
    &Mips::GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePPairSecondRegClass,
    &Mips::GPR64_with_sub_32_in_GPRMM16MovePPairFirstRegClass,
    &Mips::GPR64_with_sub_32_in_GPRMM16MoveP_and_CPU16Regs_and_GPRMM16ZeroRegClass,
    &Mips::OCTEON_MPLRegClass,
    &Mips::OCTEON_PRegClass,
    &Mips::GPR64_with_sub_32_in_GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecondRegClass,
    &Mips::ACC64RegClass,
    &Mips::GP64RegClass,
    &Mips::GPR64_with_sub_32_in_CPURARegRegClass,
    &Mips::GPR64_with_sub_32_in_GPR32ZERORegClass,
    &Mips::HI64RegClass,
    &Mips::LO64RegClass,
    &Mips::SP64RegClass,
    &Mips::MSA128BRegClass,
    &Mips::MSA128DRegClass,
    &Mips::MSA128HRegClass,
    &Mips::MSA128WRegClass,
    &Mips::MSA128B_with_sub_64_in_OddSPRegClass,
    &Mips::MSA128WEvensRegClass,
    &Mips::ACC128RegClass,
  };
} // end anonymous namespace

static const TargetRegisterInfoDesc MipsRegInfoDesc[] = { // Extra Descriptors
  { 0, false },
  { 0, true },
  { 0, true },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, false },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, true },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, false },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, false },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
  { 0, true },
};
unsigned MipsGenRegisterInfo::composeSubRegIndicesImpl(unsigned IdxA, unsigned IdxB) const {
  static const uint8_t RowMap[11] = {
    0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 
  };
  static const uint8_t Rows[2][11] = {
    { 10, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, },
    { 1, 0, 0, 0, 0, 0, 0, 10, 1, 0, 0, },
  };

  --IdxA; assert(IdxA < 11);
  --IdxB; assert(IdxB < 11);
  return Rows[RowMap[IdxA]][IdxB];
}

  struct MaskRolOp {
    LaneBitmask Mask;
    uint8_t  RotateLeft;
  };
  static const MaskRolOp LaneMaskComposeSequences[] = {
    { LaneBitmask(0xFFFFFFFF),  0 }, { LaneBitmask::getNone(), 0 },   // Sequence 0
    { LaneBitmask(0xFFFFFFFF),  1 }, { LaneBitmask::getNone(), 0 },   // Sequence 2
    { LaneBitmask(0xFFFFFFFF),  2 }, { LaneBitmask::getNone(), 0 },   // Sequence 4
    { LaneBitmask(0xFFFFFFFF),  3 }, { LaneBitmask::getNone(), 0 },   // Sequence 6
    { LaneBitmask(0xFFFFFFFF),  4 }, { LaneBitmask::getNone(), 0 },   // Sequence 8
    { LaneBitmask(0xFFFFFFFF),  5 }, { LaneBitmask::getNone(), 0 },   // Sequence 10
    { LaneBitmask(0xFFFFFFFF),  6 }, { LaneBitmask::getNone(), 0 }  // Sequence 12
  };
  static const MaskRolOp *const CompositeSequences[] = {
    &LaneMaskComposeSequences[0], // to sub_32
    &LaneMaskComposeSequences[0], // to sub_64
    &LaneMaskComposeSequences[2], // to sub_dsp16_19
    &LaneMaskComposeSequences[4], // to sub_dsp20
    &LaneMaskComposeSequences[6], // to sub_dsp21
    &LaneMaskComposeSequences[8], // to sub_dsp22
    &LaneMaskComposeSequences[10], // to sub_dsp23
    &LaneMaskComposeSequences[12], // to sub_hi
    &LaneMaskComposeSequences[0], // to sub_lo
    &LaneMaskComposeSequences[12], // to sub_hi_then_sub_32
    &LaneMaskComposeSequences[0] // to sub_32_sub_hi_then_sub_32
  };

LaneBitmask MipsGenRegisterInfo::composeSubRegIndexLaneMaskImpl(unsigned IdxA, LaneBitmask LaneMask) const {
  --IdxA; assert(IdxA < 11 && "Subregister index out of bounds");
  LaneBitmask Result;
  for (const MaskRolOp *Ops = CompositeSequences[IdxA]; Ops->Mask.any(); ++Ops) {
    LaneBitmask::Type M = LaneMask.getAsInteger() & Ops->Mask.getAsInteger();
    if (unsigned S = Ops->RotateLeft)
      Result |= LaneBitmask((M << S) | (M >> (LaneBitmask::BitWidth - S)));
    else
      Result |= LaneBitmask(M);
  }
  return Result;
}

LaneBitmask MipsGenRegisterInfo::reverseComposeSubRegIndexLaneMaskImpl(unsigned IdxA,  LaneBitmask LaneMask) const {
  LaneMask &= getSubRegIndexLaneMask(IdxA);
  --IdxA; assert(IdxA < 11 && "Subregister index out of bounds");
  LaneBitmask Result;
  for (const MaskRolOp *Ops = CompositeSequences[IdxA]; Ops->Mask.any(); ++Ops) {
    LaneBitmask::Type M = LaneMask.getAsInteger();
    if (unsigned S = Ops->RotateLeft)
      Result |= LaneBitmask((M >> S) | (M << (LaneBitmask::BitWidth - S)));
    else
      Result |= LaneBitmask(M);
  }
  return Result;
}

const TargetRegisterClass *MipsGenRegisterInfo::getSubClassWithSubReg(const TargetRegisterClass *RC, unsigned Idx) const {
  static const uint8_t Table[81][11] = {
    {	// MSA128F16
      0,	// sub_32
      1,	// sub_64 -> MSA128F16
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      1,	// sub_hi -> MSA128F16
      1,	// sub_lo -> MSA128F16
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// MSA128F16_with_sub_64_in_OddSP
      0,	// sub_32
      2,	// sub_64 -> MSA128F16_with_sub_64_in_OddSP
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      2,	// sub_hi -> MSA128F16_with_sub_64_in_OddSP
      2,	// sub_lo -> MSA128F16_with_sub_64_in_OddSP
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// OddSP
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      15,	// sub_hi -> OddSP_with_sub_hi
      15,	// sub_lo -> OddSP_with_sub_hi
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// CCR
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// COP0
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// COP2
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// COP3
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// DSPR
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// FGR32
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// FGRCC
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// FGRH32
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPR32
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// HWRegs
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPR32NONZERO
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// OddSP_with_sub_hi
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      15,	// sub_hi -> OddSP_with_sub_hi
      15,	// sub_lo -> OddSP_with_sub_hi
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// FGR32_and_OddSP
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// FGRH32_and_OddSP
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// OddSP_with_sub_hi_with_sub_hi_in_FGRH32
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      18,	// sub_hi -> OddSP_with_sub_hi_with_sub_hi_in_FGRH32
      18,	// sub_lo -> OddSP_with_sub_hi_with_sub_hi_in_FGRH32
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// CPU16RegsPlusSP
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// CPU16Regs
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// FCC
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPRMM16
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPRMM16MoveP
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPRMM16Zero
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// MSACtrl
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// OddSP_with_sub_hi_with_sub_hi_in_FGR32
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      26,	// sub_hi -> OddSP_with_sub_hi_with_sub_hi_in_FGR32
      26,	// sub_lo -> OddSP_with_sub_hi_with_sub_hi_in_FGR32
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// CPU16Regs_and_GPRMM16Zero
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPR32NONZERO_and_GPRMM16MoveP
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPRMM16MovePPairSecond
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// CPU16Regs_and_GPRMM16MoveP
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPRMM16MoveP_and_GPRMM16Zero
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// HI32DSP
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// LO32DSP
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// CPU16Regs_and_GPRMM16MovePPairSecond
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPRMM16MovePPairFirst
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPRMM16MoveP_and_CPU16Regs_and_GPRMM16Zero
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecond
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// CPURAReg
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// CPUSPReg
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// DSPCC
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GP32
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPR32ZERO
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// HI32
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// LO32
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// SP32
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// FGR64
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      46,	// sub_hi -> FGR64
      46,	// sub_lo -> FGR64
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPR64
      47,	// sub_32 -> GPR64
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPR64_with_sub_32_in_GPR32NONZERO
      48,	// sub_32 -> GPR64_with_sub_32_in_GPR32NONZERO
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// AFGR64
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      49,	// sub_hi -> AFGR64
      49,	// sub_lo -> AFGR64
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// FGR64_and_OddSP
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      50,	// sub_hi -> FGR64_and_OddSP
      50,	// sub_lo -> FGR64_and_OddSP
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPR64_with_sub_32_in_CPU16RegsPlusSP
      51,	// sub_32 -> GPR64_with_sub_32_in_CPU16RegsPlusSP
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// AFGR64_and_OddSP
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      52,	// sub_hi -> AFGR64_and_OddSP
      52,	// sub_lo -> AFGR64_and_OddSP
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPR64_with_sub_32_in_CPU16Regs
      53,	// sub_32 -> GPR64_with_sub_32_in_CPU16Regs
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPR64_with_sub_32_in_GPRMM16MoveP
      54,	// sub_32 -> GPR64_with_sub_32_in_GPRMM16MoveP
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPR64_with_sub_32_in_GPRMM16Zero
      55,	// sub_32 -> GPR64_with_sub_32_in_GPRMM16Zero
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16Zero
      56,	// sub_32 -> GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16Zero
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MoveP
      57,	// sub_32 -> GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MoveP
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPR64_with_sub_32_in_GPRMM16MovePPairSecond
      58,	// sub_32 -> GPR64_with_sub_32_in_GPRMM16MovePPairSecond
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// ACC64DSP
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      59,	// sub_hi -> ACC64DSP
      59,	// sub_lo -> ACC64DSP
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MoveP
      60,	// sub_32 -> GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MoveP
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16Zero
      61,	// sub_32 -> GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16Zero
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePPairSecond
      62,	// sub_32 -> GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePPairSecond
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPR64_with_sub_32_in_GPRMM16MovePPairFirst
      63,	// sub_32 -> GPR64_with_sub_32_in_GPRMM16MovePPairFirst
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPR64_with_sub_32_in_GPRMM16MoveP_and_CPU16Regs_and_GPRMM16Zero
      64,	// sub_32 -> GPR64_with_sub_32_in_GPRMM16MoveP_and_CPU16Regs_and_GPRMM16Zero
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// OCTEON_MPL
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// OCTEON_P
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPR64_with_sub_32_in_GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecond
      67,	// sub_32 -> GPR64_with_sub_32_in_GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecond
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// ACC64
      0,	// sub_32
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      68,	// sub_hi -> ACC64
      68,	// sub_lo -> ACC64
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GP64
      69,	// sub_32 -> GP64
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPR64_with_sub_32_in_CPURAReg
      70,	// sub_32 -> GPR64_with_sub_32_in_CPURAReg
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// GPR64_with_sub_32_in_GPR32ZERO
      71,	// sub_32 -> GPR64_with_sub_32_in_GPR32ZERO
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// HI64
      72,	// sub_32 -> HI64
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// LO64
      73,	// sub_32 -> LO64
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// SP64
      74,	// sub_32 -> SP64
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      0,	// sub_hi
      0,	// sub_lo
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// MSA128B
      0,	// sub_32
      75,	// sub_64 -> MSA128B
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      75,	// sub_hi -> MSA128B
      75,	// sub_lo -> MSA128B
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// MSA128D
      0,	// sub_32
      76,	// sub_64 -> MSA128D
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      76,	// sub_hi -> MSA128D
      76,	// sub_lo -> MSA128D
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// MSA128H
      0,	// sub_32
      77,	// sub_64 -> MSA128H
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      77,	// sub_hi -> MSA128H
      77,	// sub_lo -> MSA128H
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// MSA128W
      0,	// sub_32
      78,	// sub_64 -> MSA128W
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      78,	// sub_hi -> MSA128W
      78,	// sub_lo -> MSA128W
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// MSA128B_with_sub_64_in_OddSP
      0,	// sub_32
      79,	// sub_64 -> MSA128B_with_sub_64_in_OddSP
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      79,	// sub_hi -> MSA128B_with_sub_64_in_OddSP
      79,	// sub_lo -> MSA128B_with_sub_64_in_OddSP
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// MSA128WEvens
      0,	// sub_32
      80,	// sub_64 -> MSA128WEvens
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      80,	// sub_hi -> MSA128WEvens
      80,	// sub_lo -> MSA128WEvens
      0,	// sub_hi_then_sub_32
      0,	// sub_32_sub_hi_then_sub_32
    },
    {	// ACC128
      81,	// sub_32 -> ACC128
      0,	// sub_64
      0,	// sub_dsp16_19
      0,	// sub_dsp20
      0,	// sub_dsp21
      0,	// sub_dsp22
      0,	// sub_dsp23
      81,	// sub_hi -> ACC128
      81,	// sub_lo -> ACC128
      81,	// sub_hi_then_sub_32 -> ACC128
      81,	// sub_32_sub_hi_then_sub_32 -> ACC128
    },
  };
  assert(RC && "Missing regclass");
  if (!Idx) return RC;
  --Idx;
  assert(Idx < 11 && "Bad subreg");
  unsigned TV = Table[RC->getID()][Idx];
  return TV ? getRegClass(TV - 1) : nullptr;
}

/// Get the weight in units of pressure for this register class.
const RegClassWeight &MipsGenRegisterInfo::
getRegClassWeight(const TargetRegisterClass *RC) const {
  static const RegClassWeight RCWeightTable[] = {
    {2, 64},  	// MSA128F16
    {2, 32},  	// MSA128F16_with_sub_64_in_OddSP
    {2, 40},  	// OddSP
    {0, 0},  	// CCR
    {0, 0},  	// COP0
    {0, 0},  	// COP2
    {0, 0},  	// COP3
    {1, 32},  	// DSPR
    {1, 32},  	// FGR32
    {1, 32},  	// FGRCC
    {1, 32},  	// FGRH32
    {1, 32},  	// GPR32
    {0, 0},  	// HWRegs
    {1, 31},  	// GPR32NONZERO
    {2, 40},  	// OddSP_with_sub_hi
    {1, 16},  	// FGR32_and_OddSP
    {1, 16},  	// FGRH32_and_OddSP
    {2, 32},  	// OddSP_with_sub_hi_with_sub_hi_in_FGRH32
    {1, 9},  	// CPU16RegsPlusSP
    {1, 8},  	// CPU16Regs
    {0, 0},  	// FCC
    {1, 8},  	// GPRMM16
    {1, 8},  	// GPRMM16MoveP
    {1, 8},  	// GPRMM16Zero
    {1, 8},  	// MSACtrl
    {2, 16},  	// OddSP_with_sub_hi_with_sub_hi_in_FGR32
    {1, 7},  	// CPU16Regs_and_GPRMM16Zero
    {1, 7},  	// GPR32NONZERO_and_GPRMM16MoveP
    {1, 5},  	// GPRMM16MovePPairSecond
    {1, 4},  	// CPU16Regs_and_GPRMM16MoveP
    {1, 4},  	// GPRMM16MoveP_and_GPRMM16Zero
    {1, 4},  	// HI32DSP
    {1, 4},  	// LO32DSP
    {1, 3},  	// CPU16Regs_and_GPRMM16MovePPairSecond
    {1, 3},  	// GPRMM16MovePPairFirst
    {1, 3},  	// GPRMM16MoveP_and_CPU16Regs_and_GPRMM16Zero
    {1, 2},  	// GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecond
    {1, 1},  	// CPURAReg
    {1, 1},  	// CPUSPReg
    {1, 1},  	// DSPCC
    {1, 1},  	// GP32
    {1, 1},  	// GPR32ZERO
    {1, 1},  	// HI32
    {1, 1},  	// LO32
    {1, 1},  	// SP32
    {2, 64},  	// FGR64
    {1, 32},  	// GPR64
    {1, 31},  	// GPR64_with_sub_32_in_GPR32NONZERO
    {2, 32},  	// AFGR64
    {2, 32},  	// FGR64_and_OddSP
    {1, 9},  	// GPR64_with_sub_32_in_CPU16RegsPlusSP
    {2, 16},  	// AFGR64_and_OddSP
    {1, 8},  	// GPR64_with_sub_32_in_CPU16Regs
    {1, 8},  	// GPR64_with_sub_32_in_GPRMM16MoveP
    {1, 8},  	// GPR64_with_sub_32_in_GPRMM16Zero
    {1, 7},  	// GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16Zero
    {1, 7},  	// GPR64_with_sub_32_in_GPR32NONZERO_and_GPRMM16MoveP
    {1, 5},  	// GPR64_with_sub_32_in_GPRMM16MovePPairSecond
    {2, 8},  	// ACC64DSP
    {1, 4},  	// GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MoveP
    {1, 4},  	// GPR64_with_sub_32_in_GPRMM16MoveP_and_GPRMM16Zero
    {1, 3},  	// GPR64_with_sub_32_in_CPU16Regs_and_GPRMM16MovePPairSecond
    {1, 3},  	// GPR64_with_sub_32_in_GPRMM16MovePPairFirst
    {1, 3},  	// GPR64_with_sub_32_in_GPRMM16MoveP_and_CPU16Regs_and_GPRMM16Zero
    {0, 0},  	// OCTEON_MPL
    {0, 0},  	// OCTEON_P
    {1, 2},  	// GPR64_with_sub_32_in_GPRMM16MovePPairFirst_and_GPRMM16MovePPairSecond
    {2, 2},  	// ACC64
    {1, 1},  	// GP64
    {1, 1},  	// GPR64_with_sub_32_in_CPURAReg
    {1, 1},  	// GPR64_with_sub_32_in_GPR32ZERO
    {1, 1},  	// HI64
    {1, 1},  	// LO64
    {1, 1},  	// SP64
    {2, 64},  	// MSA128B
    {2, 64},  	// MSA128D
    {2, 64},  	// MSA128H
    {2, 64},  	// MSA128W
    {2, 32},  	// MSA128B_with_sub_64_in_OddSP
    {2, 32},  	// MSA128WEvens
    {2, 2},  	// ACC128
  };
  return RCWeightTable[RC->getID()];
}

/// Get the weight in units of pressure for this register unit.
unsigned MipsGenRegisterInfo::
getRegUnitWeight(unsigned RegUnit) const {
  assert(RegUnit < 297 && "invalid register unit");
  // All register units have unit weight.
  return 1;
}


// Get the number of dimensions of register pressure.
unsigned MipsGenRegisterInfo::getNumRegPressureSets() const {
  return 28;
}

// Get the name of this register unit pressure set.
const char *MipsGenRegisterInfo::
getRegPressureSetName(unsigned Idx) const {
  static const char *const PressureNameTable[] = {
    "DSPCC",
    "GPR32ZERO",
    "GPR64_with_sub_32_in_CPURAReg",
    "HI32",
    "GPRMM16MovePPairFirst",
    "CPU16Regs_and_GPRMM16MoveP",
    "HI32DSP",
    "LO32DSP",
    "GPRMM16MovePPairSecond",
    "GPRMM16MoveP",
    "MSACtrl",
    "ACC64DSP",
    "CPU16Regs",
    "GPRMM16Zero+GPRMM16MovePPairSecond",
    "CPU16Regs+GPRMM16MovePPairSecond",
    "CPU16Regs+GPRMM16MoveP",
    "FGR32_and_OddSP",
    "AFGR64_and_OddSP",
    "FGR32_and_OddSP+AFGR64_and_OddSP",
    "MSA128F16_with_sub_64_in_OddSP",
    "DSPR",
    "FGR32",
    "MSA128WEvens",
    "MSA128F16_with_sub_64_in_OddSP+AFGR64_and_OddSP",
    "AFGR64_and_OddSP+MSA128WEvens",
    "MSA128F16_with_sub_64_in_OddSP+FGR32",
    "FGR32+MSA128WEvens",
    "MSA128F16",
  };
  return PressureNameTable[Idx];
}

// Get the register unit pressure limit for this dimension.
// This limit must be adjusted dynamically for reserved registers.
unsigned MipsGenRegisterInfo::
getRegPressureSetLimit(const MachineFunction &MF, unsigned Idx) const {
  static const uint8_t PressureLimitTable[] = {
    1,  	// 0: DSPCC
    1,  	// 1: GPR32ZERO
    1,  	// 2: GPR64_with_sub_32_in_CPURAReg
    2,  	// 3: HI32
    3,  	// 4: GPRMM16MovePPairFirst
    5,  	// 5: CPU16Regs_and_GPRMM16MoveP
    5,  	// 6: HI32DSP
    5,  	// 7: LO32DSP
    6,  	// 8: GPRMM16MovePPairSecond
    8,  	// 9: GPRMM16MoveP
    8,  	// 10: MSACtrl
    8,  	// 11: ACC64DSP
    10,  	// 12: CPU16Regs
    10,  	// 13: GPRMM16Zero+GPRMM16MovePPairSecond
    11,  	// 14: CPU16Regs+GPRMM16MovePPairSecond
    13,  	// 15: CPU16Regs+GPRMM16MoveP
    16,  	// 16: FGR32_and_OddSP
    16,  	// 17: AFGR64_and_OddSP
    24,  	// 18: FGR32_and_OddSP+AFGR64_and_OddSP
    32,  	// 19: MSA128F16_with_sub_64_in_OddSP
    32,  	// 20: DSPR
    32,  	// 21: FGR32
    32,  	// 22: MSA128WEvens
    40,  	// 23: MSA128F16_with_sub_64_in_OddSP+AFGR64_and_OddSP
    40,  	// 24: AFGR64_and_OddSP+MSA128WEvens
    48,  	// 25: MSA128F16_with_sub_64_in_OddSP+FGR32
    48,  	// 26: FGR32+MSA128WEvens
    64,  	// 27: MSA128F16
  };
  return PressureLimitTable[Idx];
}

/// Table of pressure sets per register class or unit.
static const int RCSetsTable[] = {
  /* 0 */ 0, -1,
  /* 2 */ 10, -1,
  /* 4 */ 6, 11, -1,
  /* 7 */ 3, 6, 7, 11, -1,
  /* 12 */ 2, 20, -1,
  /* 15 */ 8, 13, 14, 20, -1,
  /* 20 */ 9, 15, 20, -1,
  /* 24 */ 1, 5, 9, 12, 13, 15, 20, -1,
  /* 32 */ 5, 9, 12, 14, 15, 20, -1,
  /* 39 */ 4, 8, 12, 13, 14, 15, 20, -1,
  /* 47 */ 5, 9, 12, 13, 14, 15, 20, -1,
  /* 55 */ 19, 23, 25, 27, -1,
  /* 60 */ 22, 24, 26, 27, -1,
  /* 65 */ 21, 25, 26, 27, -1,
  /* 70 */ 16, 18, 19, 21, 23, 25, 26, 27, -1,
  /* 79 */ 21, 22, 24, 25, 26, 27, -1,
  /* 86 */ 17, 18, 21, 23, 24, 25, 26, 27, -1,
  /* 95 */ 16, 17, 18, 19, 21, 23, 24, 25, 26, 27, -1,
  /* 106 */ 17, 18, 21, 22, 23, 24, 25, 26, 27, -1,
};

/// Get the dimensions of register pressure impacted by this register class.
/// Returns a -1 terminated array of pressure set IDs
const int* MipsGenRegisterInfo::
getRegClassPressureSets(const TargetRegisterClass *RC) const {
  static const uint8_t RCSetStartTable[] = {
    58,55,1,1,1,1,1,13,65,65,1,13,1,13,1,70,1,1,34,34,1,34,20,27,2,1,41,20,15,32,25,4,9,40,39,47,39,1,1,0,1,24,7,7,1,58,13,13,65,55,34,86,34,20,27,41,20,15,5,32,25,40,39,47,1,1,39,7,1,12,24,7,7,1,58,58,58,58,55,60,7,};
  return &RCSetsTable[RCSetStartTable[RC->getID()]];
}

/// Get the dimensions of register pressure impacted by this register unit.
/// Returns a -1 terminated array of pressure set IDs
const int* MipsGenRegisterInfo::
getRegUnitPressureSets(unsigned RegUnit) const {
  assert(RegUnit < 297 && "invalid register unit");
  static const uint8_t RUSetStartTable[] = {
    13,0,1,1,1,1,1,1,1,1,1,13,13,2,2,2,2,2,2,2,2,1,12,34,24,39,39,39,40,7,7,9,4,9,4,9,4,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,79,70,106,95,79,70,106,95,79,70,106,95,79,70,106,95,79,70,106,95,79,70,106,95,79,70,106,95,79,70,106,95,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,60,55,60,55,60,55,60,55,60,55,60,55,60,55,60,55,60,55,60,55,60,55,60,55,60,55,60,55,60,55,60,55,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,13,13,1,1,1,1,1,1,32,47,20,20,20,15,15,13,13,13,13,13,13,13,13,13,13,13,47,47,};
  return &RCSetsTable[RUSetStartTable[RegUnit]];
}

extern const MCRegisterDesc MipsRegDesc[];
extern const MCPhysReg MipsRegDiffLists[];
extern const LaneBitmask MipsLaneMaskLists[];
extern const char MipsRegStrings[];
extern const char MipsRegClassStrings[];
extern const MCPhysReg MipsRegUnitRoots[][2];
extern const uint16_t MipsSubRegIdxLists[];
extern const MCRegisterInfo::SubRegCoveredBits MipsSubRegIdxRanges[];
extern const uint16_t MipsRegEncodingTable[];
// Mips Dwarf<->LLVM register mappings.
extern const MCRegisterInfo::DwarfLLVMRegPair MipsDwarfFlavour0Dwarf2L[];
extern const unsigned MipsDwarfFlavour0Dwarf2LSize;

extern const MCRegisterInfo::DwarfLLVMRegPair MipsEHFlavour0Dwarf2L[];
extern const unsigned MipsEHFlavour0Dwarf2LSize;

extern const MCRegisterInfo::DwarfLLVMRegPair MipsDwarfFlavour0L2Dwarf[];
extern const unsigned MipsDwarfFlavour0L2DwarfSize;

extern const MCRegisterInfo::DwarfLLVMRegPair MipsEHFlavour0L2Dwarf[];
extern const unsigned MipsEHFlavour0L2DwarfSize;

MipsGenRegisterInfo::
MipsGenRegisterInfo(unsigned RA, unsigned DwarfFlavour, unsigned EHFlavour,
      unsigned PC, unsigned HwMode)
  : TargetRegisterInfo(MipsRegInfoDesc, RegisterClasses, RegisterClasses+81,
             SubRegIndexNameTable, SubRegIndexLaneMaskTable,
             LaneBitmask(0xFFFFFF80), RegClassInfos, HwMode) {
  InitMCRegisterInfo(MipsRegDesc, 418, RA, PC,
                     MipsMCRegisterClasses, 81,
                     MipsRegUnitRoots,
                     297,
                     MipsRegDiffLists,
                     MipsLaneMaskLists,
                     MipsRegStrings,
                     MipsRegClassStrings,
                     MipsSubRegIdxLists,
                     12,
                     MipsSubRegIdxRanges,
                     MipsRegEncodingTable);

  switch (DwarfFlavour) {
  default:
    llvm_unreachable("Unknown DWARF flavour");
  case 0:
    mapDwarfRegsToLLVMRegs(MipsDwarfFlavour0Dwarf2L, MipsDwarfFlavour0Dwarf2LSize, false);
    break;
  }
  switch (EHFlavour) {
  default:
    llvm_unreachable("Unknown DWARF flavour");
  case 0:
    mapDwarfRegsToLLVMRegs(MipsEHFlavour0Dwarf2L, MipsEHFlavour0Dwarf2LSize, true);
    break;
  }
  switch (DwarfFlavour) {
  default:
    llvm_unreachable("Unknown DWARF flavour");
  case 0:
    mapLLVMRegsToDwarfRegs(MipsDwarfFlavour0L2Dwarf, MipsDwarfFlavour0L2DwarfSize, false);
    break;
  }
  switch (EHFlavour) {
  default:
    llvm_unreachable("Unknown DWARF flavour");
  case 0:
    mapLLVMRegsToDwarfRegs(MipsEHFlavour0L2Dwarf, MipsEHFlavour0L2DwarfSize, true);
    break;
  }
}

static const MCPhysReg CSR_Interrupt_32_SaveList[] = { Mips::A3, Mips::A2, Mips::A1, Mips::A0, Mips::S7, Mips::S6, Mips::S5, Mips::S4, Mips::S3, Mips::S2, Mips::S1, Mips::S0, Mips::V1, Mips::V0, Mips::T9, Mips::T8, Mips::T7, Mips::T6, Mips::T5, Mips::T4, Mips::T3, Mips::T2, Mips::T1, Mips::T0, Mips::RA, Mips::FP, Mips::GP, Mips::AT, Mips::LO0, Mips::HI0, 0 };
static const uint32_t CSR_Interrupt_32_RegMask[] = { 0x07c80302, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x20000000, 0x00000000, 0xffbfc008, 0x00000007, 0x00000000, 0x00000000, 0x00000000, };
static const MCPhysReg CSR_Interrupt_32R6_SaveList[] = { Mips::A3, Mips::A2, Mips::A1, Mips::A0, Mips::S7, Mips::S6, Mips::S5, Mips::S4, Mips::S3, Mips::S2, Mips::S1, Mips::S0, Mips::V1, Mips::V0, Mips::T9, Mips::T8, Mips::T7, Mips::T6, Mips::T5, Mips::T4, Mips::T3, Mips::T2, Mips::T1, Mips::T0, Mips::RA, Mips::FP, Mips::GP, Mips::AT, 0 };
static const uint32_t CSR_Interrupt_32R6_RegMask[] = { 0x03c80302, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xffbfc000, 0x00000007, 0x00000000, 0x00000000, 0x00000000, };
static const MCPhysReg CSR_Interrupt_64_SaveList[] = { Mips::A3_64, Mips::A2_64, Mips::A1_64, Mips::A0_64, Mips::S7_64, Mips::S6_64, Mips::S5_64, Mips::S4_64, Mips::S3_64, Mips::S2_64, Mips::S1_64, Mips::S0_64, Mips::T9_64, Mips::T8_64, Mips::T7_64, Mips::T6_64, Mips::T5_64, Mips::T4_64, Mips::T3_64, Mips::T2_64, Mips::T1_64, Mips::T0_64, Mips::V1_64, Mips::V0_64, Mips::RA_64, Mips::FP_64, Mips::GP_64, Mips::AT_64, Mips::LO0_64, Mips::HI0_64, 0 };
static const uint32_t CSR_Interrupt_64_RegMask[] = { 0x47c80302, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x08000000, 0x30000000, 0x00000000, 0xffbfe008, 0x00000007, 0x000001f0, 0xffffe400, 0x00000003, };
static const MCPhysReg CSR_Interrupt_64R6_SaveList[] = { Mips::A3_64, Mips::A2_64, Mips::A1_64, Mips::A0_64, Mips::V1_64, Mips::V0_64, Mips::S7_64, Mips::S6_64, Mips::S5_64, Mips::S4_64, Mips::S3_64, Mips::S2_64, Mips::S1_64, Mips::S0_64, Mips::T9_64, Mips::T8_64, Mips::T7_64, Mips::T6_64, Mips::T5_64, Mips::T4_64, Mips::T3_64, Mips::T2_64, Mips::T1_64, Mips::T0_64, Mips::RA_64, Mips::FP_64, Mips::GP_64, Mips::AT_64, 0 };
static const uint32_t CSR_Interrupt_64R6_RegMask[] = { 0x43c80302, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x08000000, 0x10000000, 0x00000000, 0xffbfe000, 0x00000007, 0x000000f0, 0xffffc000, 0x00000003, };
static const MCPhysReg CSR_Mips16RetHelper_SaveList[] = { Mips::V0, Mips::V1, Mips::FP, Mips::A3, Mips::A2, Mips::A1, Mips::A0, Mips::S7, Mips::S6, Mips::S5, Mips::S4, Mips::S3, Mips::S2, Mips::S1, Mips::S0, Mips::D15, Mips::D14, Mips::D13, Mips::D12, Mips::D11, Mips::D10, 0 };
static const uint32_t CSR_Mips16RetHelper_RegMask[] = { 0x03c00100, 0x00000000, 0x00000000, 0x00000000, 0x00007e00, 0x0007ff80, 0x00000000, 0x00000000, 0x00000000, 0x003fc000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, };
static const MCPhysReg CSR_N32_SaveList[] = { Mips::D20_64, Mips::D22_64, Mips::D24_64, Mips::D26_64, Mips::D28_64, Mips::D30_64, Mips::RA_64, Mips::FP_64, Mips::GP_64, Mips::S7_64, Mips::S6_64, Mips::S5_64, Mips::S4_64, Mips::S3_64, Mips::S2_64, Mips::S1_64, Mips::S0_64, 0 };
static const uint32_t CSR_N32_RegMask[] = { 0x00080300, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0002aa80, 0x08000000, 0x15550000, 0x00000000, 0x003fe000, 0x00000000, 0xa0000000, 0x003fc0aa, 0x00000000, };
static const MCPhysReg CSR_N64_SaveList[] = { Mips::D31_64, Mips::D30_64, Mips::D29_64, Mips::D28_64, Mips::D27_64, Mips::D26_64, Mips::D25_64, Mips::D24_64, Mips::RA_64, Mips::FP_64, Mips::GP_64, Mips::S7_64, Mips::S6_64, Mips::S5_64, Mips::S4_64, Mips::S3_64, Mips::S2_64, Mips::S1_64, Mips::S0_64, 0 };
static const uint32_t CSR_N64_RegMask[] = { 0x00080300, 0x00000000, 0x00000000, 0x00000000, 0x00007800, 0x0007f800, 0x08000000, 0x1ff00000, 0x00000000, 0x003fe000, 0x00000000, 0x00000000, 0x003fc1fe, 0x00000000, };
static const MCPhysReg CSR_O32_SaveList[] = { Mips::D15, Mips::D14, Mips::D13, Mips::D12, Mips::D11, Mips::D10, Mips::RA, Mips::FP, Mips::S7, Mips::S6, Mips::S5, Mips::S4, Mips::S3, Mips::S2, Mips::S1, Mips::S0, 0 };
static const uint32_t CSR_O32_RegMask[] = { 0x00080100, 0x00000000, 0x00000000, 0x00000000, 0x00007e00, 0x0007ff80, 0x00000000, 0x00000000, 0x00000000, 0x003fc000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
static const MCPhysReg CSR_O32_FP64_SaveList[] = { Mips::D30_64, Mips::D28_64, Mips::D26_64, Mips::D24_64, Mips::D22_64, Mips::D20_64, Mips::RA, Mips::FP, Mips::S7, Mips::S6, Mips::S5, Mips::S4, Mips::S3, Mips::S2, Mips::S1, Mips::S0, 0 };
static const uint32_t CSR_O32_FP64_RegMask[] = { 0x00080100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0002aa80, 0x00000000, 0x05550000, 0x00000000, 0x003fc000, 0x00000000, 0xa0000000, 0x000000aa, 0x00000000, };
static const MCPhysReg CSR_O32_FPXX_SaveList[] = { Mips::D15, Mips::D14, Mips::D13, Mips::D12, Mips::D11, Mips::D10, Mips::RA, Mips::FP, Mips::S7, Mips::S6, Mips::S5, Mips::S4, Mips::S3, Mips::S2, Mips::S1, Mips::S0, 0 };
static const uint32_t CSR_O32_FPXX_RegMask[] = { 0x00080100, 0x00000000, 0x00000000, 0x00000000, 0x00007e00, 0x0007ff80, 0x00000000, 0x00000000, 0x00000000, 0x003fc000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };
static const MCPhysReg CSR_SingleFloatOnly_SaveList[] = { Mips::F31, Mips::F30, Mips::F29, Mips::F28, Mips::F27, Mips::F26, Mips::F25, Mips::F24, Mips::F23, Mips::F22, Mips::F21, Mips::F20, Mips::RA, Mips::FP, Mips::S7, Mips::S6, Mips::S5, Mips::S4, Mips::S3, Mips::S2, Mips::S1, Mips::S0, 0 };
static const uint32_t CSR_SingleFloatOnly_RegMask[] = { 0x00080100, 0x00000000, 0x00000000, 0x00000000, 0x00007e00, 0x0007ff80, 0x00000000, 0x00000000, 0x00000000, 0x003fc000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, };


ArrayRef<const uint32_t *> MipsGenRegisterInfo::getRegMasks() const {
  static const uint32_t *const Masks[] = {
    CSR_Interrupt_32_RegMask,
    CSR_Interrupt_32R6_RegMask,
    CSR_Interrupt_64_RegMask,
    CSR_Interrupt_64R6_RegMask,
    CSR_Mips16RetHelper_RegMask,
    CSR_N32_RegMask,
    CSR_N64_RegMask,
    CSR_O32_RegMask,
    CSR_O32_FP64_RegMask,
    CSR_O32_FPXX_RegMask,
    CSR_SingleFloatOnly_RegMask,
  };
  return makeArrayRef(Masks);
}

ArrayRef<const char *> MipsGenRegisterInfo::getRegMaskNames() const {
  static const char *const Names[] = {
    "CSR_Interrupt_32",
    "CSR_Interrupt_32R6",
    "CSR_Interrupt_64",
    "CSR_Interrupt_64R6",
    "CSR_Mips16RetHelper",
    "CSR_N32",
    "CSR_N64",
    "CSR_O32",
    "CSR_O32_FP64",
    "CSR_O32_FPXX",
    "CSR_SingleFloatOnly",
  };
  return makeArrayRef(Names);
}

const MipsFrameLowering *
MipsGenRegisterInfo::getFrameLowering(const MachineFunction &MF) {
  return static_cast<const MipsFrameLowering *>(
      MF.getSubtarget().getFrameLowering());
}

} // end namespace llvm

#endif // GET_REGINFO_TARGET_DESC

