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

namespace llvm {

namespace {     // Register classes...
  // CCR Register Class...
  static const unsigned CCR[] = {
    X86::EFLAGS, 
  };

  // CONTROL_REG Register Class...
  static const unsigned CONTROL_REG[] = {
    X86::CR0, X86::CR1, X86::CR2, X86::CR3, X86::CR4, X86::CR5, X86::CR6, X86::CR7, X86::CR8, 
  };

  // DEBUG_REG Register Class...
  static const unsigned DEBUG_REG[] = {
    X86::DR0, X86::DR1, X86::DR2, X86::DR3, X86::DR4, X86::DR5, X86::DR6, X86::DR7, 
  };

  // FR32 Register Class...
  static const unsigned FR32[] = {
    X86::XMM0, X86::XMM1, X86::XMM2, X86::XMM3, X86::XMM4, X86::XMM5, X86::XMM6, X86::XMM7, X86::XMM8, X86::XMM9, X86::XMM10, X86::XMM11, X86::XMM12, X86::XMM13, X86::XMM14, X86::XMM15, 
  };

  // FR64 Register Class...
  static const unsigned FR64[] = {
    X86::XMM0, X86::XMM1, X86::XMM2, X86::XMM3, X86::XMM4, X86::XMM5, X86::XMM6, X86::XMM7, X86::XMM8, X86::XMM9, X86::XMM10, X86::XMM11, X86::XMM12, X86::XMM13, X86::XMM14, X86::XMM15, 
  };

  // GR16 Register Class...
  static const unsigned GR16[] = {
    X86::AX, X86::CX, X86::DX, X86::SI, X86::DI, X86::BX, X86::BP, X86::SP, X86::R8W, X86::R9W, X86::R10W, X86::R11W, X86::R14W, X86::R15W, X86::R12W, X86::R13W, 
  };

  // GR16_ABCD Register Class...
  static const unsigned GR16_ABCD[] = {
    X86::AX, X86::CX, X86::DX, X86::BX, 
  };

  // GR16_NOREX Register Class...
  static const unsigned GR16_NOREX[] = {
    X86::AX, X86::CX, X86::DX, X86::SI, X86::DI, X86::BX, X86::BP, X86::SP, 
  };

  // GR32 Register Class...
  static const unsigned GR32[] = {
    X86::EAX, X86::ECX, X86::EDX, X86::ESI, X86::EDI, X86::EBX, X86::EBP, X86::ESP, X86::R8D, X86::R9D, X86::R10D, X86::R11D, X86::R14D, X86::R15D, X86::R12D, X86::R13D, 
  };

  // GR32_ABCD Register Class...
  static const unsigned GR32_ABCD[] = {
    X86::EAX, X86::ECX, X86::EDX, X86::EBX, 
  };

  // GR32_AD Register Class...
  static const unsigned GR32_AD[] = {
    X86::EAX, X86::EDX, 
  };

  // GR32_NOREX Register Class...
  static const unsigned GR32_NOREX[] = {
    X86::EAX, X86::ECX, X86::EDX, X86::ESI, X86::EDI, X86::EBX, X86::EBP, X86::ESP, 
  };

  // GR32_NOSP Register Class...
  static const unsigned GR32_NOSP[] = {
    X86::EAX, X86::ECX, X86::EDX, X86::ESI, X86::EDI, X86::EBX, X86::EBP, X86::R8D, X86::R9D, X86::R10D, X86::R11D, X86::R14D, X86::R15D, X86::R12D, X86::R13D, 
  };

  // GR32_TC Register Class...
  static const unsigned GR32_TC[] = {
    X86::EAX, X86::ECX, X86::EDX, 
  };

  // GR64 Register Class...
  static const unsigned GR64[] = {
    X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::R8, X86::R9, X86::R10, X86::R11, X86::RBX, X86::R14, X86::R15, X86::R12, X86::R13, X86::RBP, X86::RSP, X86::RIP, 
  };

  // GR64_ABCD Register Class...
  static const unsigned GR64_ABCD[] = {
    X86::RAX, X86::RCX, X86::RDX, X86::RBX, 
  };

  // GR64_NOREX Register Class...
  static const unsigned GR64_NOREX[] = {
    X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::RBX, X86::RBP, X86::RSP, X86::RIP, 
  };

  // GR64_NOREX_NOSP Register Class...
  static const unsigned GR64_NOREX_NOSP[] = {
    X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::RBX, X86::RBP, 
  };

  // GR64_NOSP Register Class...
  static const unsigned GR64_NOSP[] = {
    X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::R8, X86::R9, X86::R10, X86::R11, X86::RBX, X86::R14, X86::R15, X86::R12, X86::R13, X86::RBP, 
  };

  // GR64_TC Register Class...
  static const unsigned GR64_TC[] = {
    X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::R8, X86::R9, X86::R11, 
  };

  // GR8 Register Class...
  static const unsigned GR8[] = {
    X86::AL, X86::CL, X86::DL, X86::AH, X86::CH, X86::DH, X86::BL, X86::BH, X86::SIL, X86::DIL, X86::BPL, X86::SPL, X86::R8B, X86::R9B, X86::R10B, X86::R11B, X86::R14B, X86::R15B, X86::R12B, X86::R13B, 
  };

  // GR8_ABCD_H Register Class...
  static const unsigned GR8_ABCD_H[] = {
    X86::AH, X86::CH, X86::DH, X86::BH, 
  };

  // GR8_ABCD_L Register Class...
  static const unsigned GR8_ABCD_L[] = {
    X86::AL, X86::CL, X86::DL, X86::BL, 
  };

  // GR8_NOREX Register Class...
  static const unsigned GR8_NOREX[] = {
    X86::AL, X86::CL, X86::DL, X86::AH, X86::CH, X86::DH, X86::BL, X86::BH, 
  };

  // RFP32 Register Class...
  static const unsigned RFP32[] = {
    X86::FP0, X86::FP1, X86::FP2, X86::FP3, X86::FP4, X86::FP5, X86::FP6, 
  };

  // RFP64 Register Class...
  static const unsigned RFP64[] = {
    X86::FP0, X86::FP1, X86::FP2, X86::FP3, X86::FP4, X86::FP5, X86::FP6, 
  };

  // RFP80 Register Class...
  static const unsigned RFP80[] = {
    X86::FP0, X86::FP1, X86::FP2, X86::FP3, X86::FP4, X86::FP5, X86::FP6, 
  };

  // RST Register Class...
  static const unsigned RST[] = {
    X86::ST0, X86::ST1, X86::ST2, X86::ST3, X86::ST4, X86::ST5, X86::ST6, X86::ST7, 
  };

  // SEGMENT_REG Register Class...
  static const unsigned SEGMENT_REG[] = {
    X86::CS, X86::DS, X86::SS, X86::ES, X86::FS, X86::GS, 
  };

  // VR128 Register Class...
  static const unsigned VR128[] = {
    X86::XMM0, X86::XMM1, X86::XMM2, X86::XMM3, X86::XMM4, X86::XMM5, X86::XMM6, X86::XMM7, X86::XMM8, X86::XMM9, X86::XMM10, X86::XMM11, X86::XMM12, X86::XMM13, X86::XMM14, X86::XMM15, 
  };

  // VR256 Register Class...
  static const unsigned VR256[] = {
    X86::YMM0, X86::YMM1, X86::YMM2, X86::YMM3, X86::YMM4, X86::YMM5, X86::YMM6, X86::YMM7, X86::YMM8, X86::YMM9, X86::YMM10, X86::YMM11, X86::YMM12, X86::YMM13, X86::YMM14, X86::YMM15, 
  };

  // VR64 Register Class...
  static const unsigned VR64[] = {
    X86::MM0, X86::MM1, X86::MM2, X86::MM3, X86::MM4, X86::MM5, X86::MM6, X86::MM7, 
  };

  // CCRVTs Register Class Value Types...
  static const EVT CCRVTs[] = {
    MVT::i32, MVT::Other
  };

  // CONTROL_REGVTs Register Class Value Types...
  static const EVT CONTROL_REGVTs[] = {
    MVT::i64, MVT::Other
  };

  // DEBUG_REGVTs Register Class Value Types...
  static const EVT DEBUG_REGVTs[] = {
    MVT::i32, MVT::Other
  };

  // FR32VTs Register Class Value Types...
  static const EVT FR32VTs[] = {
    MVT::f32, MVT::Other
  };

  // FR64VTs Register Class Value Types...
  static const EVT FR64VTs[] = {
    MVT::f64, MVT::Other
  };

  // GR16VTs Register Class Value Types...
  static const EVT GR16VTs[] = {
    MVT::i16, MVT::Other
  };

  // GR16_ABCDVTs Register Class Value Types...
  static const EVT GR16_ABCDVTs[] = {
    MVT::i16, MVT::Other
  };

  // GR16_NOREXVTs Register Class Value Types...
  static const EVT GR16_NOREXVTs[] = {
    MVT::i16, MVT::Other
  };

  // GR32VTs Register Class Value Types...
  static const EVT GR32VTs[] = {
    MVT::i32, MVT::Other
  };

  // GR32_ABCDVTs Register Class Value Types...
  static const EVT GR32_ABCDVTs[] = {
    MVT::i32, MVT::Other
  };

  // GR32_ADVTs Register Class Value Types...
  static const EVT GR32_ADVTs[] = {
    MVT::i32, MVT::Other
  };

  // GR32_NOREXVTs Register Class Value Types...
  static const EVT GR32_NOREXVTs[] = {
    MVT::i32, MVT::Other
  };

  // GR32_NOSPVTs Register Class Value Types...
  static const EVT GR32_NOSPVTs[] = {
    MVT::i32, MVT::Other
  };

  // GR32_TCVTs Register Class Value Types...
  static const EVT GR32_TCVTs[] = {
    MVT::i32, MVT::Other
  };

  // GR64VTs Register Class Value Types...
  static const EVT GR64VTs[] = {
    MVT::i64, MVT::Other
  };

  // GR64_ABCDVTs Register Class Value Types...
  static const EVT GR64_ABCDVTs[] = {
    MVT::i64, MVT::Other
  };

  // GR64_NOREXVTs Register Class Value Types...
  static const EVT GR64_NOREXVTs[] = {
    MVT::i64, MVT::Other
  };

  // GR64_NOREX_NOSPVTs Register Class Value Types...
  static const EVT GR64_NOREX_NOSPVTs[] = {
    MVT::i64, MVT::Other
  };

  // GR64_NOSPVTs Register Class Value Types...
  static const EVT GR64_NOSPVTs[] = {
    MVT::i64, MVT::Other
  };

  // GR64_TCVTs Register Class Value Types...
  static const EVT GR64_TCVTs[] = {
    MVT::i64, MVT::Other
  };

  // GR8VTs Register Class Value Types...
  static const EVT GR8VTs[] = {
    MVT::i8, MVT::Other
  };

  // GR8_ABCD_HVTs Register Class Value Types...
  static const EVT GR8_ABCD_HVTs[] = {
    MVT::i8, MVT::Other
  };

  // GR8_ABCD_LVTs Register Class Value Types...
  static const EVT GR8_ABCD_LVTs[] = {
    MVT::i8, MVT::Other
  };

  // GR8_NOREXVTs Register Class Value Types...
  static const EVT GR8_NOREXVTs[] = {
    MVT::i8, MVT::Other
  };

  // RFP32VTs Register Class Value Types...
  static const EVT RFP32VTs[] = {
    MVT::f32, MVT::Other
  };

  // RFP64VTs Register Class Value Types...
  static const EVT RFP64VTs[] = {
    MVT::f64, MVT::Other
  };

  // RFP80VTs Register Class Value Types...
  static const EVT RFP80VTs[] = {
    MVT::f80, MVT::Other
  };

  // RSTVTs Register Class Value Types...
  static const EVT RSTVTs[] = {
    MVT::f80, MVT::f64, MVT::f32, MVT::Other
  };

  // SEGMENT_REGVTs Register Class Value Types...
  static const EVT SEGMENT_REGVTs[] = {
    MVT::i16, MVT::Other
  };

  // VR128VTs Register Class Value Types...
  static const EVT VR128VTs[] = {
    MVT::v16i8, MVT::v8i16, MVT::v4i32, MVT::v2i64, MVT::v4f32, MVT::v2f64, MVT::Other
  };

  // VR256VTs Register Class Value Types...
  static const EVT VR256VTs[] = {
    MVT::v32i8, MVT::v8i32, MVT::v4i64, MVT::v8f32, MVT::v4f64, MVT::Other
  };

  // VR64VTs Register Class Value Types...
  static const EVT VR64VTs[] = {
    MVT::v8i8, MVT::v4i16, MVT::v2i32, MVT::v1i64, MVT::Other
  };

}  // end anonymous namespace

namespace X86 {   // Register class instances
  CCRClass	CCRRegClass;
  CONTROL_REGClass	CONTROL_REGRegClass;
  DEBUG_REGClass	DEBUG_REGRegClass;
  FR32Class	FR32RegClass;
  FR64Class	FR64RegClass;
  GR16Class	GR16RegClass;
  GR16_ABCDClass	GR16_ABCDRegClass;
  GR16_NOREXClass	GR16_NOREXRegClass;
  GR32Class	GR32RegClass;
  GR32_ABCDClass	GR32_ABCDRegClass;
  GR32_ADClass	GR32_ADRegClass;
  GR32_NOREXClass	GR32_NOREXRegClass;
  GR32_NOSPClass	GR32_NOSPRegClass;
  GR32_TCClass	GR32_TCRegClass;
  GR64Class	GR64RegClass;
  GR64_ABCDClass	GR64_ABCDRegClass;
  GR64_NOREXClass	GR64_NOREXRegClass;
  GR64_NOREX_NOSPClass	GR64_NOREX_NOSPRegClass;
  GR64_NOSPClass	GR64_NOSPRegClass;
  GR64_TCClass	GR64_TCRegClass;
  GR8Class	GR8RegClass;
  GR8_ABCD_HClass	GR8_ABCD_HRegClass;
  GR8_ABCD_LClass	GR8_ABCD_LRegClass;
  GR8_NOREXClass	GR8_NOREXRegClass;
  RFP32Class	RFP32RegClass;
  RFP64Class	RFP64RegClass;
  RFP80Class	RFP80RegClass;
  RSTClass	RSTRegClass;
  SEGMENT_REGClass	SEGMENT_REGRegClass;
  VR128Class	VR128RegClass;
  VR256Class	VR256RegClass;
  VR64Class	VR64RegClass;

  // CCR Sub-register Classes...
  static const TargetRegisterClass* const CCRSubRegClasses[] = {
    0, 0, 0, 0, 0, 0, 0
  };

  // CONTROL_REG Sub-register Classes...
  static const TargetRegisterClass* const CONTROL_REGSubRegClasses[] = {
    0, 0, 0, 0, 0, 0, 0
  };

  // DEBUG_REG Sub-register Classes...
  static const TargetRegisterClass* const DEBUG_REGSubRegClasses[] = {
    0, 0, 0, 0, 0, 0, 0
  };

  // FR32 Sub-register Classes...
  static const TargetRegisterClass* const FR32SubRegClasses[] = {
    0, 0, 0, 0, 0, 0, 0
  };

  // FR64 Sub-register Classes...
  static const TargetRegisterClass* const FR64SubRegClasses[] = {
    0, 0, 0, 0, 0, 0, 0
  };

  // GR16 Sub-register Classes...
  static const TargetRegisterClass* const GR16SubRegClasses[] = {
    &X86::GR8RegClass, &X86::GR8RegClass, 0, 0, 0, 0, 0
  };

  // GR16_ABCD Sub-register Classes...
  static const TargetRegisterClass* const GR16_ABCDSubRegClasses[] = {
    &X86::GR8_ABCD_LRegClass, &X86::GR8_ABCD_HRegClass, 0, 0, 0, 0, 0
  };

  // GR16_NOREX Sub-register Classes...
  static const TargetRegisterClass* const GR16_NOREXSubRegClasses[] = {
    &X86::GR8_NOREXRegClass, &X86::GR8_NOREXRegClass, 0, 0, 0, 0, 0
  };

  // GR32 Sub-register Classes...
  static const TargetRegisterClass* const GR32SubRegClasses[] = {
    &X86::GR8RegClass, &X86::GR8RegClass, &X86::GR16RegClass, 0, 0, 0, 0
  };

  // GR32_ABCD Sub-register Classes...
  static const TargetRegisterClass* const GR32_ABCDSubRegClasses[] = {
    &X86::GR8_ABCD_LRegClass, &X86::GR8_ABCD_HRegClass, &X86::GR16_ABCDRegClass, 0, 0, 0, 0
  };

  // GR32_AD Sub-register Classes...
  static const TargetRegisterClass* const GR32_ADSubRegClasses[] = {
    &X86::GR8_ABCD_LRegClass, &X86::GR8_ABCD_HRegClass, &X86::GR16_ABCDRegClass, 0, 0, 0, 0
  };

  // GR32_NOREX Sub-register Classes...
  static const TargetRegisterClass* const GR32_NOREXSubRegClasses[] = {
    &X86::GR8_NOREXRegClass, &X86::GR8_NOREXRegClass, &X86::GR16_NOREXRegClass, 0, 0, 0, 0
  };

  // GR32_NOSP Sub-register Classes...
  static const TargetRegisterClass* const GR32_NOSPSubRegClasses[] = {
    &X86::GR8RegClass, &X86::GR8RegClass, &X86::GR16RegClass, 0, 0, 0, 0
  };

  // GR32_TC Sub-register Classes...
  static const TargetRegisterClass* const GR32_TCSubRegClasses[] = {
    &X86::GR8RegClass, &X86::GR8RegClass, &X86::GR16RegClass, 0, 0, 0, 0
  };

  // GR64 Sub-register Classes...
  static const TargetRegisterClass* const GR64SubRegClasses[] = {
    &X86::GR8RegClass, &X86::GR8RegClass, &X86::GR16RegClass, &X86::GR32RegClass, 0, 0, 0
  };

  // GR64_ABCD Sub-register Classes...
  static const TargetRegisterClass* const GR64_ABCDSubRegClasses[] = {
    &X86::GR8_ABCD_LRegClass, &X86::GR8_ABCD_HRegClass, &X86::GR16_ABCDRegClass, &X86::GR32_ABCDRegClass, 0, 0, 0
  };

  // GR64_NOREX Sub-register Classes...
  static const TargetRegisterClass* const GR64_NOREXSubRegClasses[] = {
    &X86::GR8_NOREXRegClass, &X86::GR8_NOREXRegClass, &X86::GR16_NOREXRegClass, &X86::GR32_NOREXRegClass, 0, 0, 0
  };

  // GR64_NOREX_NOSP Sub-register Classes...
  static const TargetRegisterClass* const GR64_NOREX_NOSPSubRegClasses[] = {
    &X86::GR8_NOREXRegClass, &X86::GR8_NOREXRegClass, &X86::GR16_NOREXRegClass, &X86::GR32_NOREXRegClass, 0, 0, 0
  };

  // GR64_NOSP Sub-register Classes...
  static const TargetRegisterClass* const GR64_NOSPSubRegClasses[] = {
    &X86::GR8RegClass, &X86::GR8RegClass, &X86::GR16RegClass, &X86::GR32_NOSPRegClass, 0, 0, 0
  };

  // GR64_TC Sub-register Classes...
  static const TargetRegisterClass* const GR64_TCSubRegClasses[] = {
    &X86::GR8RegClass, &X86::GR8RegClass, &X86::GR16RegClass, &X86::GR32_TCRegClass, 0, 0, 0
  };

  // GR8 Sub-register Classes...
  static const TargetRegisterClass* const GR8SubRegClasses[] = {
    0, 0, 0, 0, 0, 0, 0
  };

  // GR8_ABCD_H Sub-register Classes...
  static const TargetRegisterClass* const GR8_ABCD_HSubRegClasses[] = {
    0, 0, 0, 0, 0, 0, 0
  };

  // GR8_ABCD_L Sub-register Classes...
  static const TargetRegisterClass* const GR8_ABCD_LSubRegClasses[] = {
    0, 0, 0, 0, 0, 0, 0
  };

  // GR8_NOREX Sub-register Classes...
  static const TargetRegisterClass* const GR8_NOREXSubRegClasses[] = {
    0, 0, 0, 0, 0, 0, 0
  };

  // RFP32 Sub-register Classes...
  static const TargetRegisterClass* const RFP32SubRegClasses[] = {
    0, 0, 0, 0, 0, 0, 0
  };

  // RFP64 Sub-register Classes...
  static const TargetRegisterClass* const RFP64SubRegClasses[] = {
    0, 0, 0, 0, 0, 0, 0
  };

  // RFP80 Sub-register Classes...
  static const TargetRegisterClass* const RFP80SubRegClasses[] = {
    0, 0, 0, 0, 0, 0, 0
  };

  // RST Sub-register Classes...
  static const TargetRegisterClass* const RSTSubRegClasses[] = {
    0, 0, 0, 0, 0, 0, 0
  };

  // SEGMENT_REG Sub-register Classes...
  static const TargetRegisterClass* const SEGMENT_REGSubRegClasses[] = {
    0, 0, 0, 0, 0, 0, 0
  };

  // VR128 Sub-register Classes...
  static const TargetRegisterClass* const VR128SubRegClasses[] = {
    0, 0, 0, 0, &X86::FR64RegClass, &X86::FR32RegClass, 0
  };

  // VR256 Sub-register Classes...
  static const TargetRegisterClass* const VR256SubRegClasses[] = {
    0, 0, 0, 0, &X86::FR64RegClass, &X86::FR32RegClass, &X86::VR128RegClass
  };

  // VR64 Sub-register Classes...
  static const TargetRegisterClass* const VR64SubRegClasses[] = {
    0, 0, 0, 0, 0, 0, 0
  };

  // CCR Super-register Classes...
  static const TargetRegisterClass* const CCRSuperRegClasses[] = {
    NULL
  };

  // CONTROL_REG Super-register Classes...
  static const TargetRegisterClass* const CONTROL_REGSuperRegClasses[] = {
    NULL
  };

  // DEBUG_REG Super-register Classes...
  static const TargetRegisterClass* const DEBUG_REGSuperRegClasses[] = {
    NULL
  };

  // FR32 Super-register Classes...
  static const TargetRegisterClass* const FR32SuperRegClasses[] = {
    &X86::VR128RegClass, &X86::VR256RegClass, NULL
  };

  // FR64 Super-register Classes...
  static const TargetRegisterClass* const FR64SuperRegClasses[] = {
    &X86::VR128RegClass, &X86::VR256RegClass, NULL
  };

  // GR16 Super-register Classes...
  static const TargetRegisterClass* const GR16SuperRegClasses[] = {
    &X86::GR32RegClass, &X86::GR32_NOSPRegClass, &X86::GR32_TCRegClass, &X86::GR64RegClass, &X86::GR64_NOSPRegClass, &X86::GR64_TCRegClass, NULL
  };

  // GR16_ABCD Super-register Classes...
  static const TargetRegisterClass* const GR16_ABCDSuperRegClasses[] = {
    &X86::GR32_ABCDRegClass, &X86::GR32_ADRegClass, &X86::GR64_ABCDRegClass, NULL
  };

  // GR16_NOREX Super-register Classes...
  static const TargetRegisterClass* const GR16_NOREXSuperRegClasses[] = {
    &X86::GR32_NOREXRegClass, &X86::GR64_NOREXRegClass, &X86::GR64_NOREX_NOSPRegClass, NULL
  };

  // GR32 Super-register Classes...
  static const TargetRegisterClass* const GR32SuperRegClasses[] = {
    &X86::GR64RegClass, NULL
  };

  // GR32_ABCD Super-register Classes...
  static const TargetRegisterClass* const GR32_ABCDSuperRegClasses[] = {
    &X86::GR64_ABCDRegClass, NULL
  };

  // GR32_AD Super-register Classes...
  static const TargetRegisterClass* const GR32_ADSuperRegClasses[] = {
    NULL
  };

  // GR32_NOREX Super-register Classes...
  static const TargetRegisterClass* const GR32_NOREXSuperRegClasses[] = {
    &X86::GR64_NOREXRegClass, &X86::GR64_NOREX_NOSPRegClass, NULL
  };

  // GR32_NOSP Super-register Classes...
  static const TargetRegisterClass* const GR32_NOSPSuperRegClasses[] = {
    &X86::GR64_NOSPRegClass, NULL
  };

  // GR32_TC Super-register Classes...
  static const TargetRegisterClass* const GR32_TCSuperRegClasses[] = {
    &X86::GR64_TCRegClass, NULL
  };

  // GR64 Super-register Classes...
  static const TargetRegisterClass* const GR64SuperRegClasses[] = {
    NULL
  };

  // GR64_ABCD Super-register Classes...
  static const TargetRegisterClass* const GR64_ABCDSuperRegClasses[] = {
    NULL
  };

  // GR64_NOREX Super-register Classes...
  static const TargetRegisterClass* const GR64_NOREXSuperRegClasses[] = {
    NULL
  };

  // GR64_NOREX_NOSP Super-register Classes...
  static const TargetRegisterClass* const GR64_NOREX_NOSPSuperRegClasses[] = {
    NULL
  };

  // GR64_NOSP Super-register Classes...
  static const TargetRegisterClass* const GR64_NOSPSuperRegClasses[] = {
    NULL
  };

  // GR64_TC Super-register Classes...
  static const TargetRegisterClass* const GR64_TCSuperRegClasses[] = {
    NULL
  };

  // GR8 Super-register Classes...
  static const TargetRegisterClass* const GR8SuperRegClasses[] = {
    &X86::GR16RegClass, &X86::GR32RegClass, &X86::GR32_NOSPRegClass, &X86::GR32_TCRegClass, &X86::GR64RegClass, &X86::GR64_NOSPRegClass, &X86::GR64_TCRegClass, NULL
  };

  // GR8_ABCD_H Super-register Classes...
  static const TargetRegisterClass* const GR8_ABCD_HSuperRegClasses[] = {
    &X86::GR16_ABCDRegClass, &X86::GR32_ABCDRegClass, &X86::GR32_ADRegClass, &X86::GR64_ABCDRegClass, NULL
  };

  // GR8_ABCD_L Super-register Classes...
  static const TargetRegisterClass* const GR8_ABCD_LSuperRegClasses[] = {
    &X86::GR16_ABCDRegClass, &X86::GR32_ABCDRegClass, &X86::GR32_ADRegClass, &X86::GR64_ABCDRegClass, NULL
  };

  // GR8_NOREX Super-register Classes...
  static const TargetRegisterClass* const GR8_NOREXSuperRegClasses[] = {
    &X86::GR16_NOREXRegClass, &X86::GR32_NOREXRegClass, &X86::GR64_NOREXRegClass, &X86::GR64_NOREX_NOSPRegClass, NULL
  };

  // RFP32 Super-register Classes...
  static const TargetRegisterClass* const RFP32SuperRegClasses[] = {
    NULL
  };

  // RFP64 Super-register Classes...
  static const TargetRegisterClass* const RFP64SuperRegClasses[] = {
    NULL
  };

  // RFP80 Super-register Classes...
  static const TargetRegisterClass* const RFP80SuperRegClasses[] = {
    NULL
  };

  // RST Super-register Classes...
  static const TargetRegisterClass* const RSTSuperRegClasses[] = {
    NULL
  };

  // SEGMENT_REG Super-register Classes...
  static const TargetRegisterClass* const SEGMENT_REGSuperRegClasses[] = {
    NULL
  };

  // VR128 Super-register Classes...
  static const TargetRegisterClass* const VR128SuperRegClasses[] = {
    &X86::VR256RegClass, NULL
  };

  // VR256 Super-register Classes...
  static const TargetRegisterClass* const VR256SuperRegClasses[] = {
    NULL
  };

  // VR64 Super-register Classes...
  static const TargetRegisterClass* const VR64SuperRegClasses[] = {
    NULL
  };

  // CCR Register Class sub-classes...
  static const TargetRegisterClass* const CCRSubclasses[] = {
    NULL
  };

  // CONTROL_REG Register Class sub-classes...
  static const TargetRegisterClass* const CONTROL_REGSubclasses[] = {
    NULL
  };

  // DEBUG_REG Register Class sub-classes...
  static const TargetRegisterClass* const DEBUG_REGSubclasses[] = {
    NULL
  };

  // FR32 Register Class sub-classes...
  static const TargetRegisterClass* const FR32Subclasses[] = {
    &X86::FR64RegClass, &X86::VR128RegClass, NULL
  };

  // FR64 Register Class sub-classes...
  static const TargetRegisterClass* const FR64Subclasses[] = {
    &X86::VR128RegClass, NULL
  };

  // GR16 Register Class sub-classes...
  static const TargetRegisterClass* const GR16Subclasses[] = {
    &X86::GR16_ABCDRegClass, &X86::GR16_NOREXRegClass, NULL
  };

  // GR16_ABCD Register Class sub-classes...
  static const TargetRegisterClass* const GR16_ABCDSubclasses[] = {
    NULL
  };

  // GR16_NOREX Register Class sub-classes...
  static const TargetRegisterClass* const GR16_NOREXSubclasses[] = {
    &X86::GR16_ABCDRegClass, NULL
  };

  // GR32 Register Class sub-classes...
  static const TargetRegisterClass* const GR32Subclasses[] = {
    &X86::GR32_ABCDRegClass, &X86::GR32_ADRegClass, &X86::GR32_NOREXRegClass, &X86::GR32_NOSPRegClass, &X86::GR32_TCRegClass, NULL
  };

  // GR32_ABCD Register Class sub-classes...
  static const TargetRegisterClass* const GR32_ABCDSubclasses[] = {
    &X86::GR32_ADRegClass, &X86::GR32_TCRegClass, NULL
  };

  // GR32_AD Register Class sub-classes...
  static const TargetRegisterClass* const GR32_ADSubclasses[] = {
    NULL
  };

  // GR32_NOREX Register Class sub-classes...
  static const TargetRegisterClass* const GR32_NOREXSubclasses[] = {
    &X86::GR32_ABCDRegClass, &X86::GR32_ADRegClass, &X86::GR32_TCRegClass, NULL
  };

  // GR32_NOSP Register Class sub-classes...
  static const TargetRegisterClass* const GR32_NOSPSubclasses[] = {
    &X86::GR32_ABCDRegClass, &X86::GR32_ADRegClass, &X86::GR32_TCRegClass, NULL
  };

  // GR32_TC Register Class sub-classes...
  static const TargetRegisterClass* const GR32_TCSubclasses[] = {
    &X86::GR32_ADRegClass, NULL
  };

  // GR64 Register Class sub-classes...
  static const TargetRegisterClass* const GR64Subclasses[] = {
    &X86::GR64_ABCDRegClass, &X86::GR64_NOREXRegClass, &X86::GR64_NOREX_NOSPRegClass, &X86::GR64_NOSPRegClass, &X86::GR64_TCRegClass, NULL
  };

  // GR64_ABCD Register Class sub-classes...
  static const TargetRegisterClass* const GR64_ABCDSubclasses[] = {
    NULL
  };

  // GR64_NOREX Register Class sub-classes...
  static const TargetRegisterClass* const GR64_NOREXSubclasses[] = {
    &X86::GR64_ABCDRegClass, &X86::GR64_NOREX_NOSPRegClass, NULL
  };

  // GR64_NOREX_NOSP Register Class sub-classes...
  static const TargetRegisterClass* const GR64_NOREX_NOSPSubclasses[] = {
    &X86::GR64_ABCDRegClass, NULL
  };

  // GR64_NOSP Register Class sub-classes...
  static const TargetRegisterClass* const GR64_NOSPSubclasses[] = {
    &X86::GR64_ABCDRegClass, &X86::GR64_NOREX_NOSPRegClass, &X86::GR64_TCRegClass, NULL
  };

  // GR64_TC Register Class sub-classes...
  static const TargetRegisterClass* const GR64_TCSubclasses[] = {
    NULL
  };

  // GR8 Register Class sub-classes...
  static const TargetRegisterClass* const GR8Subclasses[] = {
    &X86::GR8_ABCD_HRegClass, &X86::GR8_ABCD_LRegClass, &X86::GR8_NOREXRegClass, NULL
  };

  // GR8_ABCD_H Register Class sub-classes...
  static const TargetRegisterClass* const GR8_ABCD_HSubclasses[] = {
    NULL
  };

  // GR8_ABCD_L Register Class sub-classes...
  static const TargetRegisterClass* const GR8_ABCD_LSubclasses[] = {
    NULL
  };

  // GR8_NOREX Register Class sub-classes...
  static const TargetRegisterClass* const GR8_NOREXSubclasses[] = {
    &X86::GR8_ABCD_HRegClass, &X86::GR8_ABCD_LRegClass, NULL
  };

  // RFP32 Register Class sub-classes...
  static const TargetRegisterClass* const RFP32Subclasses[] = {
    &X86::RFP64RegClass, &X86::RFP80RegClass, NULL
  };

  // RFP64 Register Class sub-classes...
  static const TargetRegisterClass* const RFP64Subclasses[] = {
    &X86::RFP80RegClass, NULL
  };

  // RFP80 Register Class sub-classes...
  static const TargetRegisterClass* const RFP80Subclasses[] = {
    NULL
  };

  // RST Register Class sub-classes...
  static const TargetRegisterClass* const RSTSubclasses[] = {
    NULL
  };

  // SEGMENT_REG Register Class sub-classes...
  static const TargetRegisterClass* const SEGMENT_REGSubclasses[] = {
    NULL
  };

  // VR128 Register Class sub-classes...
  static const TargetRegisterClass* const VR128Subclasses[] = {
    NULL
  };

  // VR256 Register Class sub-classes...
  static const TargetRegisterClass* const VR256Subclasses[] = {
    NULL
  };

  // VR64 Register Class sub-classes...
  static const TargetRegisterClass* const VR64Subclasses[] = {
    NULL
  };

  // CCR Register Class super-classes...
  static const TargetRegisterClass* const CCRSuperclasses[] = {
    NULL
  };

  // CONTROL_REG Register Class super-classes...
  static const TargetRegisterClass* const CONTROL_REGSuperclasses[] = {
    NULL
  };

  // DEBUG_REG Register Class super-classes...
  static const TargetRegisterClass* const DEBUG_REGSuperclasses[] = {
    NULL
  };

  // FR32 Register Class super-classes...
  static const TargetRegisterClass* const FR32Superclasses[] = {
    NULL
  };

  // FR64 Register Class super-classes...
  static const TargetRegisterClass* const FR64Superclasses[] = {
    &X86::FR32RegClass, NULL
  };

  // GR16 Register Class super-classes...
  static const TargetRegisterClass* const GR16Superclasses[] = {
    NULL
  };

  // GR16_ABCD Register Class super-classes...
  static const TargetRegisterClass* const GR16_ABCDSuperclasses[] = {
    &X86::GR16RegClass, &X86::GR16_NOREXRegClass, NULL
  };

  // GR16_NOREX Register Class super-classes...
  static const TargetRegisterClass* const GR16_NOREXSuperclasses[] = {
    &X86::GR16RegClass, NULL
  };

  // GR32 Register Class super-classes...
  static const TargetRegisterClass* const GR32Superclasses[] = {
    NULL
  };

  // GR32_ABCD Register Class super-classes...
  static const TargetRegisterClass* const GR32_ABCDSuperclasses[] = {
    &X86::GR32RegClass, &X86::GR32_NOREXRegClass, &X86::GR32_NOSPRegClass, NULL
  };

  // GR32_AD Register Class super-classes...
  static const TargetRegisterClass* const GR32_ADSuperclasses[] = {
    &X86::GR32RegClass, &X86::GR32_ABCDRegClass, &X86::GR32_NOREXRegClass, &X86::GR32_NOSPRegClass, &X86::GR32_TCRegClass, NULL
  };

  // GR32_NOREX Register Class super-classes...
  static const TargetRegisterClass* const GR32_NOREXSuperclasses[] = {
    &X86::GR32RegClass, NULL
  };

  // GR32_NOSP Register Class super-classes...
  static const TargetRegisterClass* const GR32_NOSPSuperclasses[] = {
    &X86::GR32RegClass, NULL
  };

  // GR32_TC Register Class super-classes...
  static const TargetRegisterClass* const GR32_TCSuperclasses[] = {
    &X86::GR32RegClass, &X86::GR32_ABCDRegClass, &X86::GR32_NOREXRegClass, &X86::GR32_NOSPRegClass, NULL
  };

  // GR64 Register Class super-classes...
  static const TargetRegisterClass* const GR64Superclasses[] = {
    NULL
  };

  // GR64_ABCD Register Class super-classes...
  static const TargetRegisterClass* const GR64_ABCDSuperclasses[] = {
    &X86::GR64RegClass, &X86::GR64_NOREXRegClass, &X86::GR64_NOREX_NOSPRegClass, &X86::GR64_NOSPRegClass, NULL
  };

  // GR64_NOREX Register Class super-classes...
  static const TargetRegisterClass* const GR64_NOREXSuperclasses[] = {
    &X86::GR64RegClass, NULL
  };

  // GR64_NOREX_NOSP Register Class super-classes...
  static const TargetRegisterClass* const GR64_NOREX_NOSPSuperclasses[] = {
    &X86::GR64RegClass, &X86::GR64_NOREXRegClass, &X86::GR64_NOSPRegClass, NULL
  };

  // GR64_NOSP Register Class super-classes...
  static const TargetRegisterClass* const GR64_NOSPSuperclasses[] = {
    &X86::GR64RegClass, NULL
  };

  // GR64_TC Register Class super-classes...
  static const TargetRegisterClass* const GR64_TCSuperclasses[] = {
    &X86::GR64RegClass, &X86::GR64_NOSPRegClass, NULL
  };

  // GR8 Register Class super-classes...
  static const TargetRegisterClass* const GR8Superclasses[] = {
    NULL
  };

  // GR8_ABCD_H Register Class super-classes...
  static const TargetRegisterClass* const GR8_ABCD_HSuperclasses[] = {
    &X86::GR8RegClass, &X86::GR8_NOREXRegClass, NULL
  };

  // GR8_ABCD_L Register Class super-classes...
  static const TargetRegisterClass* const GR8_ABCD_LSuperclasses[] = {
    &X86::GR8RegClass, &X86::GR8_NOREXRegClass, NULL
  };

  // GR8_NOREX Register Class super-classes...
  static const TargetRegisterClass* const GR8_NOREXSuperclasses[] = {
    &X86::GR8RegClass, NULL
  };

  // RFP32 Register Class super-classes...
  static const TargetRegisterClass* const RFP32Superclasses[] = {
    NULL
  };

  // RFP64 Register Class super-classes...
  static const TargetRegisterClass* const RFP64Superclasses[] = {
    &X86::RFP32RegClass, NULL
  };

  // RFP80 Register Class super-classes...
  static const TargetRegisterClass* const RFP80Superclasses[] = {
    &X86::RFP32RegClass, &X86::RFP64RegClass, NULL
  };

  // RST Register Class super-classes...
  static const TargetRegisterClass* const RSTSuperclasses[] = {
    NULL
  };

  // SEGMENT_REG Register Class super-classes...
  static const TargetRegisterClass* const SEGMENT_REGSuperclasses[] = {
    NULL
  };

  // VR128 Register Class super-classes...
  static const TargetRegisterClass* const VR128Superclasses[] = {
    &X86::FR32RegClass, &X86::FR64RegClass, NULL
  };

  // VR256 Register Class super-classes...
  static const TargetRegisterClass* const VR256Superclasses[] = {
    NULL
  };

  // VR64 Register Class super-classes...
  static const TargetRegisterClass* const VR64Superclasses[] = {
    NULL
  };


    CCRClass::iterator
    CCRClass::allocation_order_end(const MachineFunction &MF) const {
      return allocation_order_begin(MF);
    }
  
CCRClass::CCRClass()  : TargetRegisterClass(CCRRegClassID, "CCR", CCRVTs, CCRSubclasses, CCRSuperclasses, CCRSubRegClasses, CCRSuperRegClasses, 4, 4, -1, CCR, CCR + 1) {}

CONTROL_REGClass::CONTROL_REGClass()  : TargetRegisterClass(CONTROL_REGRegClassID, "CONTROL_REG", CONTROL_REGVTs, CONTROL_REGSubclasses, CONTROL_REGSuperclasses, CONTROL_REGSubRegClasses, CONTROL_REGSuperRegClasses, 8, 8, 1, CONTROL_REG, CONTROL_REG + 9) {}

DEBUG_REGClass::DEBUG_REGClass()  : TargetRegisterClass(DEBUG_REGRegClassID, "DEBUG_REG", DEBUG_REGVTs, DEBUG_REGSubclasses, DEBUG_REGSuperclasses, DEBUG_REGSubRegClasses, DEBUG_REGSuperRegClasses, 4, 4, 1, DEBUG_REG, DEBUG_REG + 8) {}

    FR32Class::iterator
    FR32Class::allocation_order_end(const MachineFunction &MF) const {
      const TargetMachine &TM = MF.getTarget();
      const X86Subtarget &Subtarget = TM.getSubtarget<X86Subtarget>();
      if (!Subtarget.is64Bit())
        return end()-8; // Only XMM0 to XMM7 are available in 32-bit mode.
      else
        return end();
    }
  
FR32Class::FR32Class()  : TargetRegisterClass(FR32RegClassID, "FR32", FR32VTs, FR32Subclasses, FR32Superclasses, FR32SubRegClasses, FR32SuperRegClasses, 4, 4, 1, FR32, FR32 + 16) {}

    FR64Class::iterator
    FR64Class::allocation_order_end(const MachineFunction &MF) const {
      const TargetMachine &TM = MF.getTarget();
      const X86Subtarget &Subtarget = TM.getSubtarget<X86Subtarget>();
      if (!Subtarget.is64Bit())
        return end()-8; // Only XMM0 to XMM7 are available in 32-bit mode.
      else
        return end();
    }
  
FR64Class::FR64Class()  : TargetRegisterClass(FR64RegClassID, "FR64", FR64VTs, FR64Subclasses, FR64Superclasses, FR64SubRegClasses, FR64SuperRegClasses, 8, 8, 1, FR64, FR64 + 16) {}

    static const unsigned X86_GR16_AO_64[] = {
      X86::AX,  X86::CX,   X86::DX,   X86::SI,   X86::DI,
      X86::R8W, X86::R9W,  X86::R10W, X86::R11W,
      X86::BX, X86::R14W, X86::R15W,  X86::R12W, X86::R13W, X86::BP
    };

    GR16Class::iterator
    GR16Class::allocation_order_begin(const MachineFunction &MF) const {
      const TargetMachine &TM = MF.getTarget();
      const X86Subtarget &Subtarget = TM.getSubtarget<X86Subtarget>();
      if (Subtarget.is64Bit())
        return X86_GR16_AO_64;
      else
        return begin();
    }

    GR16Class::iterator
    GR16Class::allocation_order_end(const MachineFunction &MF) const {
      const TargetMachine &TM = MF.getTarget();
      const TargetRegisterInfo *RI = TM.getRegisterInfo();
      const X86Subtarget &Subtarget = TM.getSubtarget<X86Subtarget>();
      const X86MachineFunctionInfo *MFI = MF.getInfo<X86MachineFunctionInfo>();
      if (Subtarget.is64Bit()) {
        // Does the function dedicate RBP to being a frame ptr?
        if (RI->hasFP(MF) || MFI->getReserveFP())
          // If so, don't allocate SP or BP.
          return array_endof(X86_GR16_AO_64) - 1;
        else
          // If not, just don't allocate SP.
          return array_endof(X86_GR16_AO_64);
      } else {
        // Does the function dedicate EBP to being a frame ptr?
        if (RI->hasFP(MF) || MFI->getReserveFP())
          // If so, don't allocate SP or BP.
          return begin() + 6;
        else
          // If not, just don't allocate SP.
          return begin() + 7;
      }
    }
  
GR16Class::GR16Class()  : TargetRegisterClass(GR16RegClassID, "GR16", GR16VTs, GR16Subclasses, GR16Superclasses, GR16SubRegClasses, GR16SuperRegClasses, 2, 2, 1, GR16, GR16 + 16) {}

GR16_ABCDClass::GR16_ABCDClass()  : TargetRegisterClass(GR16_ABCDRegClassID, "GR16_ABCD", GR16_ABCDVTs, GR16_ABCDSubclasses, GR16_ABCDSuperclasses, GR16_ABCDSubRegClasses, GR16_ABCDSuperRegClasses, 2, 2, 1, GR16_ABCD, GR16_ABCD + 4) {}

    GR16_NOREXClass::iterator
    GR16_NOREXClass::allocation_order_end(const MachineFunction &MF) const {
      const TargetMachine &TM = MF.getTarget();
      const TargetRegisterInfo *RI = TM.getRegisterInfo();
      const X86MachineFunctionInfo *MFI = MF.getInfo<X86MachineFunctionInfo>();
      // Does the function dedicate RBP / EBP to being a frame ptr?
      if (RI->hasFP(MF) || MFI->getReserveFP())
        // If so, don't allocate SP or BP.
        return end() - 2;
      else
        // If not, just don't allocate SP.
        return end() - 1;
    }
  
GR16_NOREXClass::GR16_NOREXClass()  : TargetRegisterClass(GR16_NOREXRegClassID, "GR16_NOREX", GR16_NOREXVTs, GR16_NOREXSubclasses, GR16_NOREXSuperclasses, GR16_NOREXSubRegClasses, GR16_NOREXSuperRegClasses, 2, 2, 1, GR16_NOREX, GR16_NOREX + 8) {}

    static const unsigned X86_GR32_AO_64[] = {
      X86::EAX, X86::ECX,  X86::EDX,  X86::ESI,  X86::EDI,
      X86::R8D, X86::R9D,  X86::R10D, X86::R11D,
      X86::EBX, X86::R14D, X86::R15D, X86::R12D, X86::R13D, X86::EBP
    };

    GR32Class::iterator
    GR32Class::allocation_order_begin(const MachineFunction &MF) const {
      const TargetMachine &TM = MF.getTarget();
      const X86Subtarget &Subtarget = TM.getSubtarget<X86Subtarget>();
      if (Subtarget.is64Bit())
        return X86_GR32_AO_64;
      else
        return begin();
    }

    GR32Class::iterator
    GR32Class::allocation_order_end(const MachineFunction &MF) const {
      const TargetMachine &TM = MF.getTarget();
      const TargetRegisterInfo *RI = TM.getRegisterInfo();
      const X86Subtarget &Subtarget = TM.getSubtarget<X86Subtarget>();
      const X86MachineFunctionInfo *MFI = MF.getInfo<X86MachineFunctionInfo>();
      if (Subtarget.is64Bit()) {
        // Does the function dedicate RBP to being a frame ptr?
        if (RI->hasFP(MF) || MFI->getReserveFP())
          // If so, don't allocate ESP or EBP.
          return array_endof(X86_GR32_AO_64) - 1;
        else
          // If not, just don't allocate ESP.
          return array_endof(X86_GR32_AO_64);
      } else {
        // Does the function dedicate EBP to being a frame ptr?
        if (RI->hasFP(MF) || MFI->getReserveFP())
          // If so, don't allocate ESP or EBP.
          return begin() + 6;
        else
          // If not, just don't allocate ESP.
          return begin() + 7;
      }
    }
  
GR32Class::GR32Class()  : TargetRegisterClass(GR32RegClassID, "GR32", GR32VTs, GR32Subclasses, GR32Superclasses, GR32SubRegClasses, GR32SuperRegClasses, 4, 4, 1, GR32, GR32 + 16) {}

GR32_ABCDClass::GR32_ABCDClass()  : TargetRegisterClass(GR32_ABCDRegClassID, "GR32_ABCD", GR32_ABCDVTs, GR32_ABCDSubclasses, GR32_ABCDSuperclasses, GR32_ABCDSubRegClasses, GR32_ABCDSuperRegClasses, 4, 4, 1, GR32_ABCD, GR32_ABCD + 4) {}

GR32_ADClass::GR32_ADClass()  : TargetRegisterClass(GR32_ADRegClassID, "GR32_AD", GR32_ADVTs, GR32_ADSubclasses, GR32_ADSuperclasses, GR32_ADSubRegClasses, GR32_ADSuperRegClasses, 4, 4, 1, GR32_AD, GR32_AD + 2) {}

    GR32_NOREXClass::iterator
    GR32_NOREXClass::allocation_order_end(const MachineFunction &MF) const {
      const TargetMachine &TM = MF.getTarget();
      const TargetRegisterInfo *RI = TM.getRegisterInfo();
      const X86MachineFunctionInfo *MFI = MF.getInfo<X86MachineFunctionInfo>();
      // Does the function dedicate RBP / EBP to being a frame ptr?
      if (RI->hasFP(MF) || MFI->getReserveFP())
        // If so, don't allocate ESP or EBP.
        return end() - 2;
      else
        // If not, just don't allocate ESP.
        return end() - 1;
    }
  
GR32_NOREXClass::GR32_NOREXClass()  : TargetRegisterClass(GR32_NOREXRegClassID, "GR32_NOREX", GR32_NOREXVTs, GR32_NOREXSubclasses, GR32_NOREXSuperclasses, GR32_NOREXSubRegClasses, GR32_NOREXSuperRegClasses, 4, 4, 1, GR32_NOREX, GR32_NOREX + 8) {}

    static const unsigned X86_GR32_NOSP_AO_64[] = {
      X86::EAX, X86::ECX,  X86::EDX,  X86::ESI,  X86::EDI,
      X86::R8D, X86::R9D,  X86::R10D, X86::R11D,
      X86::EBX, X86::R14D, X86::R15D, X86::R12D, X86::R13D, X86::EBP
    };

    GR32_NOSPClass::iterator
    GR32_NOSPClass::allocation_order_begin(const MachineFunction &MF) const {
      const TargetMachine &TM = MF.getTarget();
      const X86Subtarget &Subtarget = TM.getSubtarget<X86Subtarget>();
      if (Subtarget.is64Bit())
        return X86_GR32_NOSP_AO_64;
      else
        return begin();
    }

    GR32_NOSPClass::iterator
    GR32_NOSPClass::allocation_order_end(const MachineFunction &MF) const {
      const TargetMachine &TM = MF.getTarget();
      const TargetRegisterInfo *RI = TM.getRegisterInfo();
      const X86Subtarget &Subtarget = TM.getSubtarget<X86Subtarget>();
      const X86MachineFunctionInfo *MFI = MF.getInfo<X86MachineFunctionInfo>();
      if (Subtarget.is64Bit()) {
        // Does the function dedicate RBP to being a frame ptr?
        if (RI->hasFP(MF) || MFI->getReserveFP())
          // If so, don't allocate EBP.
          return array_endof(X86_GR32_NOSP_AO_64) - 1;
        else
          // If not, any reg in this class is ok.
          return array_endof(X86_GR32_NOSP_AO_64);
      } else {
        // Does the function dedicate EBP to being a frame ptr?
        if (RI->hasFP(MF) || MFI->getReserveFP())
          // If so, don't allocate EBP.
          return begin() + 6;
        else
          // If not, any reg in this class is ok.
          return begin() + 7;
      }
    }
  
GR32_NOSPClass::GR32_NOSPClass()  : TargetRegisterClass(GR32_NOSPRegClassID, "GR32_NOSP", GR32_NOSPVTs, GR32_NOSPSubclasses, GR32_NOSPSuperclasses, GR32_NOSPSubRegClasses, GR32_NOSPSuperRegClasses, 4, 4, 1, GR32_NOSP, GR32_NOSP + 15) {}

GR32_TCClass::GR32_TCClass()  : TargetRegisterClass(GR32_TCRegClassID, "GR32_TC", GR32_TCVTs, GR32_TCSubclasses, GR32_TCSuperclasses, GR32_TCSubRegClasses, GR32_TCSuperRegClasses, 4, 4, 1, GR32_TC, GR32_TC + 3) {}

    GR64Class::iterator
    GR64Class::allocation_order_end(const MachineFunction &MF) const {
      const TargetMachine &TM = MF.getTarget();
      const TargetRegisterInfo *RI = TM.getRegisterInfo();
      const X86Subtarget &Subtarget = TM.getSubtarget<X86Subtarget>();
      const X86MachineFunctionInfo *MFI = MF.getInfo<X86MachineFunctionInfo>();
      if (!Subtarget.is64Bit())
        return begin();  // None of these are allocatable in 32-bit.
      // Does the function dedicate RBP to being a frame ptr?
      if (RI->hasFP(MF) || MFI->getReserveFP())
        return end()-3;  // If so, don't allocate RIP, RSP or RBP
      else
        return end()-2;  // If not, just don't allocate RIP or RSP
    }
  
GR64Class::GR64Class()  : TargetRegisterClass(GR64RegClassID, "GR64", GR64VTs, GR64Subclasses, GR64Superclasses, GR64SubRegClasses, GR64SuperRegClasses, 8, 8, 1, GR64, GR64 + 17) {}

GR64_ABCDClass::GR64_ABCDClass()  : TargetRegisterClass(GR64_ABCDRegClassID, "GR64_ABCD", GR64_ABCDVTs, GR64_ABCDSubclasses, GR64_ABCDSuperclasses, GR64_ABCDSubRegClasses, GR64_ABCDSuperRegClasses, 8, 8, 1, GR64_ABCD, GR64_ABCD + 4) {}

    GR64_NOREXClass::iterator
    GR64_NOREXClass::allocation_order_end(const MachineFunction &MF) const {
      const TargetMachine &TM = MF.getTarget();
      const TargetRegisterInfo *RI = TM.getRegisterInfo();
      const X86MachineFunctionInfo *MFI = MF.getInfo<X86MachineFunctionInfo>();
      // Does the function dedicate RBP to being a frame ptr?
      if (RI->hasFP(MF) || MFI->getReserveFP())
        // If so, don't allocate RIP, RSP or RBP.
        return end() - 3;
      else
        // If not, just don't allocate RIP or RSP.
        return end() - 2;
    }
  
GR64_NOREXClass::GR64_NOREXClass()  : TargetRegisterClass(GR64_NOREXRegClassID, "GR64_NOREX", GR64_NOREXVTs, GR64_NOREXSubclasses, GR64_NOREXSuperclasses, GR64_NOREXSubRegClasses, GR64_NOREXSuperRegClasses, 8, 8, 1, GR64_NOREX, GR64_NOREX + 9) {}

    GR64_NOREX_NOSPClass::iterator
    GR64_NOREX_NOSPClass::allocation_order_end(const MachineFunction &MF) const
  {
      const TargetMachine &TM = MF.getTarget();
      const TargetRegisterInfo *RI = TM.getRegisterInfo();
      const X86MachineFunctionInfo *MFI = MF.getInfo<X86MachineFunctionInfo>();
      // Does the function dedicate RBP to being a frame ptr?
      if (RI->hasFP(MF) || MFI->getReserveFP())
        // If so, don't allocate RBP.
        return end() - 1;
      else
        // If not, any reg in this class is ok.
        return end();
    }
  
GR64_NOREX_NOSPClass::GR64_NOREX_NOSPClass()  : TargetRegisterClass(GR64_NOREX_NOSPRegClassID, "GR64_NOREX_NOSP", GR64_NOREX_NOSPVTs, GR64_NOREX_NOSPSubclasses, GR64_NOREX_NOSPSuperclasses, GR64_NOREX_NOSPSubRegClasses, GR64_NOREX_NOSPSuperRegClasses, 8, 8, 1, GR64_NOREX_NOSP, GR64_NOREX_NOSP + 7) {}

    GR64_NOSPClass::iterator
    GR64_NOSPClass::allocation_order_end(const MachineFunction &MF) const {
      const TargetMachine &TM = MF.getTarget();
      const TargetRegisterInfo *RI = TM.getRegisterInfo();
      const X86Subtarget &Subtarget = TM.getSubtarget<X86Subtarget>();
      const X86MachineFunctionInfo *MFI = MF.getInfo<X86MachineFunctionInfo>();
      if (!Subtarget.is64Bit())
        return begin();  // None of these are allocatable in 32-bit.
      // Does the function dedicate RBP to being a frame ptr?
      if (RI->hasFP(MF) || MFI->getReserveFP())
        return end()-1;  // If so, don't allocate RBP
      else
        return end();  // If not, any reg in this class is ok.
    }
  
GR64_NOSPClass::GR64_NOSPClass()  : TargetRegisterClass(GR64_NOSPRegClassID, "GR64_NOSP", GR64_NOSPVTs, GR64_NOSPSubclasses, GR64_NOSPSuperclasses, GR64_NOSPSubRegClasses, GR64_NOSPSuperRegClasses, 8, 8, 1, GR64_NOSP, GR64_NOSP + 15) {}

GR64_TCClass::GR64_TCClass()  : TargetRegisterClass(GR64_TCRegClassID, "GR64_TC", GR64_TCVTs, GR64_TCSubclasses, GR64_TCSuperclasses, GR64_TCSubRegClasses, GR64_TCSuperRegClasses, 8, 8, 1, GR64_TC, GR64_TC + 8) {}

    static const unsigned X86_GR8_AO_64[] = {
      X86::AL,   X86::CL,   X86::DL,   X86::SIL, X86::DIL,
      X86::R8B,  X86::R9B,  X86::R10B, X86::R11B,
      X86::BL,   X86::R14B, X86::R15B, X86::R12B, X86::R13B, X86::BPL
    };

    GR8Class::iterator
    GR8Class::allocation_order_begin(const MachineFunction &MF) const {
      const TargetMachine &TM = MF.getTarget();
      const X86Subtarget &Subtarget = TM.getSubtarget<X86Subtarget>();
      if (Subtarget.is64Bit())
        return X86_GR8_AO_64;
      else
        return begin();
    }

    GR8Class::iterator
    GR8Class::allocation_order_end(const MachineFunction &MF) const {
      const TargetMachine &TM = MF.getTarget();
      const TargetRegisterInfo *RI = TM.getRegisterInfo();
      const X86Subtarget &Subtarget = TM.getSubtarget<X86Subtarget>();
      const X86MachineFunctionInfo *MFI = MF.getInfo<X86MachineFunctionInfo>();
      // Does the function dedicate RBP / EBP to being a frame ptr?
      if (!Subtarget.is64Bit())
        // In 32-mode, none of the 8-bit registers aliases EBP or ESP.
        return begin() + 8;
      else if (RI->hasFP(MF) || MFI->getReserveFP())
        // If so, don't allocate SPL or BPL.
        return array_endof(X86_GR8_AO_64) - 1;
      else
        // If not, just don't allocate SPL.
        return array_endof(X86_GR8_AO_64);
    }
  
GR8Class::GR8Class()  : TargetRegisterClass(GR8RegClassID, "GR8", GR8VTs, GR8Subclasses, GR8Superclasses, GR8SubRegClasses, GR8SuperRegClasses, 1, 1, 1, GR8, GR8 + 20) {}

GR8_ABCD_HClass::GR8_ABCD_HClass()  : TargetRegisterClass(GR8_ABCD_HRegClassID, "GR8_ABCD_H", GR8_ABCD_HVTs, GR8_ABCD_HSubclasses, GR8_ABCD_HSuperclasses, GR8_ABCD_HSubRegClasses, GR8_ABCD_HSuperRegClasses, 1, 1, 1, GR8_ABCD_H, GR8_ABCD_H + 4) {}

GR8_ABCD_LClass::GR8_ABCD_LClass()  : TargetRegisterClass(GR8_ABCD_LRegClassID, "GR8_ABCD_L", GR8_ABCD_LVTs, GR8_ABCD_LSubclasses, GR8_ABCD_LSuperclasses, GR8_ABCD_LSubRegClasses, GR8_ABCD_LSuperRegClasses, 1, 1, 1, GR8_ABCD_L, GR8_ABCD_L + 4) {}

    // In 64-bit mode, it's not safe to blindly allocate H registers.
    static const unsigned X86_GR8_NOREX_AO_64[] = {
      X86::AL, X86::CL, X86::DL, X86::BL
    };

    GR8_NOREXClass::iterator
    GR8_NOREXClass::allocation_order_begin(const MachineFunction &MF) const {
      const TargetMachine &TM = MF.getTarget();
      const X86Subtarget &Subtarget = TM.getSubtarget<X86Subtarget>();
      if (Subtarget.is64Bit())
        return X86_GR8_NOREX_AO_64;
      else
        return begin();
    }

    GR8_NOREXClass::iterator
    GR8_NOREXClass::allocation_order_end(const MachineFunction &MF) const {
      const TargetMachine &TM = MF.getTarget();
      const X86Subtarget &Subtarget = TM.getSubtarget<X86Subtarget>();
      if (Subtarget.is64Bit())
        return array_endof(X86_GR8_NOREX_AO_64);
      else
        return end();
    }
  
GR8_NOREXClass::GR8_NOREXClass()  : TargetRegisterClass(GR8_NOREXRegClassID, "GR8_NOREX", GR8_NOREXVTs, GR8_NOREXSubclasses, GR8_NOREXSuperclasses, GR8_NOREXSubRegClasses, GR8_NOREXSuperRegClasses, 1, 1, 1, GR8_NOREX, GR8_NOREX + 8) {}

RFP32Class::RFP32Class()  : TargetRegisterClass(RFP32RegClassID, "RFP32", RFP32VTs, RFP32Subclasses, RFP32Superclasses, RFP32SubRegClasses, RFP32SuperRegClasses, 4, 4, 1, RFP32, RFP32 + 7) {}

RFP64Class::RFP64Class()  : TargetRegisterClass(RFP64RegClassID, "RFP64", RFP64VTs, RFP64Subclasses, RFP64Superclasses, RFP64SubRegClasses, RFP64SuperRegClasses, 8, 4, 1, RFP64, RFP64 + 7) {}

RFP80Class::RFP80Class()  : TargetRegisterClass(RFP80RegClassID, "RFP80", RFP80VTs, RFP80Subclasses, RFP80Superclasses, RFP80SubRegClasses, RFP80SuperRegClasses, 10, 4, 1, RFP80, RFP80 + 7) {}

    RSTClass::iterator
    RSTClass::allocation_order_end(const MachineFunction &MF) const {
      return begin();
    }
  
RSTClass::RSTClass()  : TargetRegisterClass(RSTRegClassID, "RST", RSTVTs, RSTSubclasses, RSTSuperclasses, RSTSubRegClasses, RSTSuperRegClasses, 10, 4, 1, RST, RST + 8) {}

SEGMENT_REGClass::SEGMENT_REGClass()  : TargetRegisterClass(SEGMENT_REGRegClassID, "SEGMENT_REG", SEGMENT_REGVTs, SEGMENT_REGSubclasses, SEGMENT_REGSuperclasses, SEGMENT_REGSubRegClasses, SEGMENT_REGSuperRegClasses, 2, 2, 1, SEGMENT_REG, SEGMENT_REG + 6) {}

    VR128Class::iterator
    VR128Class::allocation_order_end(const MachineFunction &MF) const {
      const TargetMachine &TM = MF.getTarget();
      const X86Subtarget &Subtarget = TM.getSubtarget<X86Subtarget>();
      if (!Subtarget.is64Bit())
        return end()-8; // Only XMM0 to XMM7 are available in 32-bit mode.
      else
        return end();
    }
  
VR128Class::VR128Class()  : TargetRegisterClass(VR128RegClassID, "VR128", VR128VTs, VR128Subclasses, VR128Superclasses, VR128SubRegClasses, VR128SuperRegClasses, 16, 16, 1, VR128, VR128 + 16) {}

    VR256Class::iterator
    VR256Class::allocation_order_end(const MachineFunction &MF) const {
      const TargetMachine &TM = MF.getTarget();
      const X86Subtarget &Subtarget = TM.getSubtarget<X86Subtarget>();
      if (!Subtarget.is64Bit())
        return end()-8; // Only YMM0 to YMM7 are available in 32-bit mode.
      else
        return end();
    }
  
VR256Class::VR256Class()  : TargetRegisterClass(VR256RegClassID, "VR256", VR256VTs, VR256Subclasses, VR256Superclasses, VR256SubRegClasses, VR256SuperRegClasses, 32, 32, 1, VR256, VR256 + 16) {}

VR64Class::VR64Class()  : TargetRegisterClass(VR64RegClassID, "VR64", VR64VTs, VR64Subclasses, VR64Superclasses, VR64SubRegClasses, VR64SuperRegClasses, 8, 8, 1, VR64, VR64 + 8) {}
}

namespace {
  const TargetRegisterClass* const RegisterClasses[] = {
    &X86::CCRRegClass,
    &X86::CONTROL_REGRegClass,
    &X86::DEBUG_REGRegClass,
    &X86::FR32RegClass,
    &X86::FR64RegClass,
    &X86::GR16RegClass,
    &X86::GR16_ABCDRegClass,
    &X86::GR16_NOREXRegClass,
    &X86::GR32RegClass,
    &X86::GR32_ABCDRegClass,
    &X86::GR32_ADRegClass,
    &X86::GR32_NOREXRegClass,
    &X86::GR32_NOSPRegClass,
    &X86::GR32_TCRegClass,
    &X86::GR64RegClass,
    &X86::GR64_ABCDRegClass,
    &X86::GR64_NOREXRegClass,
    &X86::GR64_NOREX_NOSPRegClass,
    &X86::GR64_NOSPRegClass,
    &X86::GR64_TCRegClass,
    &X86::GR8RegClass,
    &X86::GR8_ABCD_HRegClass,
    &X86::GR8_ABCD_LRegClass,
    &X86::GR8_NOREXRegClass,
    &X86::RFP32RegClass,
    &X86::RFP64RegClass,
    &X86::RFP80RegClass,
    &X86::RSTRegClass,
    &X86::SEGMENT_REGRegClass,
    &X86::VR128RegClass,
    &X86::VR256RegClass,
    &X86::VR64RegClass,
  };


  // Number of hash collisions: 15
  const unsigned SubregHashTable[] = { X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R11, X86::R11W, 
                                       X86::RDX, X86::DL, 
                                       X86::R11D, X86::R11W, 
                                       X86::RSI, X86::SI, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RCX, X86::ECX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::YMM0, X86::XMM0, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::ESP, X86::SP, 
                                       X86::R8, X86::R8D, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R15, X86::R15B, 
                                       X86::YMM14, X86::XMM14, 
                                       X86::R15D, X86::R15B, 
                                       X86::R15W, X86::R15B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::AX, X86::AH, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RSI, X86::SIL, 
                                       X86::YMM1, X86::XMM1, 
                                       X86::SI, X86::SIL, 
                                       X86::RDI, X86::EDI, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::ESP, X86::SPL, 
                                       X86::R8, X86::R8W, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R8D, X86::R8W, 
                                       X86::R15, X86::R15D, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::YMM15, X86::XMM15, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EAX, X86::AH, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::AX, X86::AL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R12, X86::R12B, 
                                       X86::YMM2, X86::XMM2, 
                                       X86::R12D, X86::R12B, 
                                       X86::R12W, X86::R12B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RDX, X86::EDX, 
                                       X86::RSP, X86::SP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R15, X86::R15W, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R15D, X86::R15W, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EIP, X86::IP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EAX, X86::AL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R12, X86::R12D, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RSP, X86::SPL, 
                                       X86::SP, X86::SPL, 
                                       X86::YMM3, X86::XMM3, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RAX, X86::AH, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R9, X86::R9B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R9D, X86::R9B, 
                                       X86::R9W, X86::R9B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EAX, X86::AX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R12, X86::R12W, 
                                       X86::BX, X86::BH, 
                                       X86::R12D, X86::R12W, 
                                       X86::YMM4, X86::XMM4, 
                                       X86::RIP, X86::EIP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RIP, X86::IP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RAX, X86::AL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R9, X86::R9D, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EBX, X86::BH, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::BX, X86::BL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::YMM5, X86::XMM5, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RAX, X86::AX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R9, X86::R9W, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R9D, X86::R9W, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EBX, X86::BL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R13, X86::R13B, 
                                       X86::YMM6, X86::XMM6, 
                                       X86::R13D, X86::R13B, 
                                       X86::R13W, X86::R13B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RBX, X86::BH, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EBP, X86::BP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::BP, X86::BPL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R13, X86::R13D, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RSI, X86::ESI, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::YMM7, X86::XMM7, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RBX, X86::BL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R10, X86::R10B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R10D, X86::R10B, 
                                       X86::R10W, X86::R10B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EBP, X86::BPL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::ECX, X86::CX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R13, X86::R13W, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R13D, X86::R13W, 
                                       X86::RSP, X86::ESP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EDX, X86::DX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::YMM8, X86::XMM8, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RBP, X86::BP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R10, X86::R10D, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EBX, X86::BX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::DX, X86::DH, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EDX, X86::DH, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::YMM9, X86::XMM9, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::CX, X86::CH, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RBP, X86::BPL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R10, X86::R10W, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R10D, X86::R10W, 
                                       X86::RCX, X86::CX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::ECX, X86::CH, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RDX, X86::DX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EDI, X86::DI, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R14, X86::R14B, 
                                       X86::YMM10, X86::XMM10, 
                                       X86::R14D, X86::R14B, 
                                       X86::R14W, X86::R14B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::CX, X86::CL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RBX, X86::BX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::DI, X86::DIL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RDX, X86::DH, 
                                       X86::RAX, X86::EAX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::ECX, X86::CL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EDI, X86::DIL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R14, X86::R14D, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::YMM11, X86::XMM11, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RCX, X86::CH, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R11, X86::R11B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R11D, X86::R11B, 
                                       X86::R11W, X86::R11B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RBP, X86::EBP, 
                                       X86::RDI, X86::DI, 
                                       X86::DX, X86::DL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EDX, X86::DL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::ESI, X86::SI, 
                                       X86::R14, X86::R14W, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R14D, X86::R14W, 
                                       X86::YMM12, X86::XMM12, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RCX, X86::CL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R11, X86::R11D, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RDI, X86::DIL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RBX, X86::EBX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::ESI, X86::SIL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R8, X86::R8B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R8D, X86::R8B, 
                                       X86::R8W, X86::R8B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::YMM13, X86::XMM13, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
X86::NoRegister, X86::NoRegister };
  const unsigned SubregHashTableSize = 512;


  // Number of hash collisions: 43
  const unsigned AliasesHashTable[] = { X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R11, X86::R11W, 
                                       X86::R11B, X86::R11W, 
                                       X86::R11D, X86::R11W, 
                                       X86::RDX, X86::DL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RSI, X86::SI, 
                                       X86::SIL, X86::SI, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::ESP, X86::SP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::YMM14, X86::XMM14, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::AX, X86::AH, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RSI, X86::SIL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R12B, X86::R12, 
                                       X86::R12D, X86::R12, 
                                       X86::R12W, X86::R12, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::SI, X86::SIL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::ESP, X86::SPL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::YMM15, X86::XMM15, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::XMM0, X86::YMM0, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EAX, X86::AH, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::AX, X86::AL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R12, X86::R12B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R12D, X86::R12B, 
                                       X86::R12W, X86::R12B, 
                                       X86::SPL, X86::SP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RSP, X86::SP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EIP, X86::IP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::XMM1, X86::YMM1, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EAX, X86::AL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::AH, X86::AX, 
                                       X86::AL, X86::AX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R12, X86::R12D, 
                                       X86::R12B, X86::R12D, 
                                       X86::RSP, X86::SPL, 
                                       X86::R12W, X86::R12D, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::SP, X86::SPL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RAX, X86::AH, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::XMM2, X86::YMM2, 
                                       X86::EAX, X86::AX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R12, X86::R12W, 
                                       X86::BX, X86::BH, 
                                       X86::R12D, X86::R12W, 
                                       X86::R12B, X86::R12W, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RIP, X86::IP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RAX, X86::AL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::XMM3, X86::YMM3, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EBX, X86::BH, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::BX, X86::BL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R13B, X86::R13, 
                                       X86::R13D, X86::R13, 
                                       X86::R13W, X86::R13, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RAX, X86::AX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::XMM4, X86::YMM4, 
                                       X86::EBX, X86::BL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::BPL, X86::BP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R13, X86::R13B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R13D, X86::R13B, 
                                       X86::R13W, X86::R13B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RBX, X86::BH, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EBP, X86::BP, 
                                       X86::XMM5, X86::YMM5, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::BP, X86::BPL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R13, X86::R13D, 
                                       X86::R13B, X86::R13D, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R13W, X86::R13D, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RBX, X86::BL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::DH, X86::DX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::DL, X86::DX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EBP, X86::BPL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::BH, X86::BX, 
                                       X86::BL, X86::BX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::XMM6, X86::YMM6, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R13, X86::R13W, 
                                       X86::R13B, X86::R13W, 
                                       X86::AH, X86::EAX, 
                                       X86::AL, X86::EAX, 
                                       X86::AX, X86::EAX, 
                                       X86::EDX, X86::DX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R13D, X86::R13W, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RBP, X86::BP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EBX, X86::BX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::XMM7, X86::YMM7, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R14B, X86::R14, 
                                       X86::R14D, X86::R14, 
                                       X86::BP, X86::EBP, 
                                       X86::BPL, X86::EBP, 
                                       X86::R14W, X86::R14, 
                                       X86::CX, X86::CH, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RBP, X86::BPL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::ECX, X86::CH, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RDX, X86::DX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::XMM8, X86::YMM8, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R14, X86::R14B, 
                                       X86::BH, X86::EBX, 
                                       X86::BL, X86::EBX, 
                                       X86::R14W, X86::R14B, 
                                       X86::R14D, X86::R14B, 
                                       X86::BX, X86::EBX, 
                                       X86::CX, X86::CL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RBX, X86::BX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RAX, X86::EAX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::ECX, X86::CL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::XMM9, X86::YMM9, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R14, X86::R14D, 
                                       X86::R14B, X86::R14D, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R14W, X86::R14D, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::CH, X86::ECX, 
                                       X86::CL, X86::ECX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RCX, X86::CH, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::CX, X86::ECX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RBP, X86::EBP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::XMM10, X86::YMM10, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R14, X86::R14W, 
                                       X86::R14B, X86::R14W, 
                                       X86::R8B, X86::R8, 
                                       X86::R8D, X86::R8, 
                                       X86::R8W, X86::R8, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R14D, X86::R14W, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RCX, X86::CL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::DI, X86::EDI, 
                                       X86::DIL, X86::EDI, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RBX, X86::EBX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::XMM11, X86::YMM11, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R8, X86::R8B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R8D, X86::R8B, 
                                       X86::R8W, X86::R8B, 
                                       X86::R15B, X86::R15, 
                                       X86::R15D, X86::R15, 
                                       X86::R15W, X86::R15, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::DH, X86::EDX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::DL, X86::EDX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RCX, X86::ECX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::YMM0, X86::XMM0, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::XMM12, X86::YMM12, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::DX, X86::EDX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R8, X86::R8D, 
                                       X86::R8B, X86::R8D, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R8W, X86::R8D, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R15, X86::R15B, 
                                       X86::R15W, X86::R15B, 
                                       X86::R15D, X86::R15B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::AH, X86::RAX, 
                                       X86::AL, X86::RAX, 
                                       X86::AX, X86::RAX, 
                                       X86::RDI, X86::EDI, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::YMM1, X86::XMM1, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::XMM13, X86::YMM13, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R8, X86::R8W, 
                                       X86::R8B, X86::R8W, 
                                       X86::R8D, X86::R8W, 
                                       X86::R15, X86::R15D, 
                                       X86::R15B, X86::R15D, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R15W, X86::R15D, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EAX, X86::RAX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::YMM2, X86::XMM2, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RDX, X86::EDX, 
                                       X86::BP, X86::RBP, 
                                       X86::BPL, X86::RBP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::XMM14, X86::YMM14, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R15, X86::R15W, 
                                       X86::R15B, X86::R15W, 
                                       X86::R9B, X86::R9, 
                                       X86::R9D, X86::R9, 
                                       X86::R9W, X86::R9, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R15D, X86::R15W, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::IP, X86::EIP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EBP, X86::RBP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::BH, X86::RBX, 
                                       X86::BL, X86::RBX, 
                                       X86::YMM3, X86::XMM3, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::BX, X86::RBX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::XMM15, X86::YMM15, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R9, X86::R9B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R9D, X86::R9B, 
                                       X86::R9W, X86::R9B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EBX, X86::RBX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::YMM4, X86::XMM4, 
                                       X86::RIP, X86::EIP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::CH, X86::RCX, 
                                       X86::CL, X86::RCX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::CX, X86::RCX, 
                                       X86::R9B, X86::R9D, 
                                       X86::R9, X86::R9D, 
                                       X86::R9W, X86::R9D, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::ECX, X86::RCX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::YMM5, X86::XMM5, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R9, X86::R9W, 
                                       X86::R9B, X86::R9W, 
                                       X86::DI, X86::RDI, 
                                       X86::DIL, X86::RDI, 
                                       X86::R9D, X86::R9W, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EDI, X86::RDI, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::YMM6, X86::XMM6, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::DH, X86::RDX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::DL, X86::RDX, 
                                       X86::R10B, X86::R10, 
                                       X86::R10D, X86::R10, 
                                       X86::R10W, X86::R10, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::DX, X86::RDX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EDX, X86::RDX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RSI, X86::ESI, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::CH, X86::CX, 
                                       X86::CL, X86::CX, 
                                       X86::SI, X86::ESI, 
                                       X86::SIL, X86::ESI, 
                                       X86::YMM7, X86::XMM7, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R10, X86::R10B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R10D, X86::R10B, 
                                       X86::R10W, X86::R10B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::ECX, X86::CX, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EIP, X86::RIP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RSP, X86::ESP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::YMM8, X86::XMM8, 
                                       X86::SP, X86::ESP, 
                                       X86::SPL, X86::ESP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::IP, X86::RIP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R10, X86::R10D, 
                                       X86::R10B, X86::R10D, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R10W, X86::R10D, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::DX, X86::DH, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EDX, X86::DH, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::YMM9, X86::XMM9, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::DIL, X86::DI, 
                                       X86::R10B, X86::R10W, 
                                       X86::R10, X86::R10W, 
                                       X86::RCX, X86::CX, 
                                       X86::R10D, X86::R10W, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EDI, X86::DI, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::ESI, X86::RSI, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::YMM10, X86::XMM10, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::DI, X86::DIL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R11B, X86::R11, 
                                       X86::R11D, X86::R11, 
                                       X86::R11W, X86::R11, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::RDX, X86::DH, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EDI, X86::DIL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::ESP, X86::RSP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::YMM11, X86::XMM11, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R11, X86::R11B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R11D, X86::R11B, 
                                       X86::R11W, X86::R11B, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::SI, X86::RSI, 
                                       X86::RDI, X86::DI, 
                                       X86::DX, X86::DL, 
                                       X86::SIL, X86::RSI, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::EDX, X86::DL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::ESI, X86::SI, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::YMM12, X86::XMM12, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::R11, X86::R11D, 
                                       X86::R11B, X86::R11D, 
                                       X86::RDI, X86::DIL, 
                                       X86::R11W, X86::R11D, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::SP, X86::RSP, 
                                       X86::SPL, X86::RSP, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::ESI, X86::SIL, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::YMM13, X86::XMM13, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
                                       X86::NoRegister, X86::NoRegister, 
X86::NoRegister, X86::NoRegister };
  const unsigned AliasesHashTableSize = 1024;


  // Register Alias Sets...
  const unsigned Empty_AliasSet[] = { 0 };
  const unsigned AH_AliasSet[] = { X86::AX, X86::EAX, X86::RAX, 0 };
  const unsigned AL_AliasSet[] = { X86::AX, X86::EAX, X86::RAX, 0 };
  const unsigned AX_AliasSet[] = { X86::AL, X86::AH, X86::EAX, X86::RAX, 0 };
  const unsigned BH_AliasSet[] = { X86::BX, X86::EBX, X86::RBX, 0 };
  const unsigned BL_AliasSet[] = { X86::BX, X86::EBX, X86::RBX, 0 };
  const unsigned BP_AliasSet[] = { X86::BPL, X86::EBP, X86::RBP, 0 };
  const unsigned BPL_AliasSet[] = { X86::BP, X86::EBP, X86::RBP, 0 };
  const unsigned BX_AliasSet[] = { X86::BL, X86::BH, X86::EBX, X86::RBX, 0 };
  const unsigned CH_AliasSet[] = { X86::CX, X86::ECX, X86::RCX, 0 };
  const unsigned CL_AliasSet[] = { X86::CX, X86::ECX, X86::RCX, 0 };
  const unsigned CX_AliasSet[] = { X86::CL, X86::CH, X86::ECX, X86::RCX, 0 };
  const unsigned DH_AliasSet[] = { X86::DX, X86::EDX, X86::RDX, 0 };
  const unsigned DI_AliasSet[] = { X86::DIL, X86::EDI, X86::RDI, 0 };
  const unsigned DIL_AliasSet[] = { X86::DI, X86::EDI, X86::RDI, 0 };
  const unsigned DL_AliasSet[] = { X86::DX, X86::EDX, X86::RDX, 0 };
  const unsigned DX_AliasSet[] = { X86::DL, X86::DH, X86::EDX, X86::RDX, 0 };
  const unsigned EAX_AliasSet[] = { X86::AL, X86::AH, X86::AX, X86::RAX, 0 };
  const unsigned EBP_AliasSet[] = { X86::BPL, X86::BP, X86::RBP, 0 };
  const unsigned EBX_AliasSet[] = { X86::BL, X86::BH, X86::BX, X86::RBX, 0 };
  const unsigned ECX_AliasSet[] = { X86::CL, X86::CH, X86::CX, X86::RCX, 0 };
  const unsigned EDI_AliasSet[] = { X86::DIL, X86::DI, X86::RDI, 0 };
  const unsigned EDX_AliasSet[] = { X86::DL, X86::DH, X86::DX, X86::RDX, 0 };
  const unsigned EIP_AliasSet[] = { X86::IP, X86::RIP, 0 };
  const unsigned ESI_AliasSet[] = { X86::SIL, X86::SI, X86::RSI, 0 };
  const unsigned ESP_AliasSet[] = { X86::SPL, X86::SP, X86::RSP, 0 };
  const unsigned IP_AliasSet[] = { X86::EIP, X86::RIP, 0 };
  const unsigned R8_AliasSet[] = { X86::R8B, X86::R8W, X86::R8D, 0 };
  const unsigned R8B_AliasSet[] = { X86::R8W, X86::R8D, X86::R8, 0 };
  const unsigned R8D_AliasSet[] = { X86::R8B, X86::R8W, X86::R8, 0 };
  const unsigned R8W_AliasSet[] = { X86::R8B, X86::R8D, X86::R8, 0 };
  const unsigned R9_AliasSet[] = { X86::R9B, X86::R9W, X86::R9D, 0 };
  const unsigned R9B_AliasSet[] = { X86::R9W, X86::R9D, X86::R9, 0 };
  const unsigned R9D_AliasSet[] = { X86::R9B, X86::R9W, X86::R9, 0 };
  const unsigned R9W_AliasSet[] = { X86::R9B, X86::R9D, X86::R9, 0 };
  const unsigned R10_AliasSet[] = { X86::R10B, X86::R10W, X86::R10D, 0 };
  const unsigned R10B_AliasSet[] = { X86::R10W, X86::R10D, X86::R10, 0 };
  const unsigned R10D_AliasSet[] = { X86::R10B, X86::R10W, X86::R10, 0 };
  const unsigned R10W_AliasSet[] = { X86::R10B, X86::R10D, X86::R10, 0 };
  const unsigned R11_AliasSet[] = { X86::R11B, X86::R11W, X86::R11D, 0 };
  const unsigned R11B_AliasSet[] = { X86::R11W, X86::R11D, X86::R11, 0 };
  const unsigned R11D_AliasSet[] = { X86::R11B, X86::R11W, X86::R11, 0 };
  const unsigned R11W_AliasSet[] = { X86::R11B, X86::R11D, X86::R11, 0 };
  const unsigned R12_AliasSet[] = { X86::R12B, X86::R12W, X86::R12D, 0 };
  const unsigned R12B_AliasSet[] = { X86::R12W, X86::R12D, X86::R12, 0 };
  const unsigned R12D_AliasSet[] = { X86::R12B, X86::R12W, X86::R12, 0 };
  const unsigned R12W_AliasSet[] = { X86::R12B, X86::R12D, X86::R12, 0 };
  const unsigned R13_AliasSet[] = { X86::R13B, X86::R13W, X86::R13D, 0 };
  const unsigned R13B_AliasSet[] = { X86::R13W, X86::R13D, X86::R13, 0 };
  const unsigned R13D_AliasSet[] = { X86::R13B, X86::R13W, X86::R13, 0 };
  const unsigned R13W_AliasSet[] = { X86::R13B, X86::R13D, X86::R13, 0 };
  const unsigned R14_AliasSet[] = { X86::R14B, X86::R14W, X86::R14D, 0 };
  const unsigned R14B_AliasSet[] = { X86::R14W, X86::R14D, X86::R14, 0 };
  const unsigned R14D_AliasSet[] = { X86::R14B, X86::R14W, X86::R14, 0 };
  const unsigned R14W_AliasSet[] = { X86::R14B, X86::R14D, X86::R14, 0 };
  const unsigned R15_AliasSet[] = { X86::R15B, X86::R15W, X86::R15D, 0 };
  const unsigned R15B_AliasSet[] = { X86::R15W, X86::R15D, X86::R15, 0 };
  const unsigned R15D_AliasSet[] = { X86::R15B, X86::R15W, X86::R15, 0 };
  const unsigned R15W_AliasSet[] = { X86::R15B, X86::R15D, X86::R15, 0 };
  const unsigned RAX_AliasSet[] = { X86::AL, X86::AH, X86::AX, X86::EAX, 0 };
  const unsigned RBP_AliasSet[] = { X86::BPL, X86::BP, X86::EBP, 0 };
  const unsigned RBX_AliasSet[] = { X86::BL, X86::BH, X86::BX, X86::EBX, 0 };
  const unsigned RCX_AliasSet[] = { X86::CL, X86::CH, X86::CX, X86::ECX, 0 };
  const unsigned RDI_AliasSet[] = { X86::DIL, X86::DI, X86::EDI, 0 };
  const unsigned RDX_AliasSet[] = { X86::DL, X86::DH, X86::DX, X86::EDX, 0 };
  const unsigned RIP_AliasSet[] = { X86::IP, X86::EIP, 0 };
  const unsigned RSI_AliasSet[] = { X86::SIL, X86::SI, X86::ESI, 0 };
  const unsigned RSP_AliasSet[] = { X86::SPL, X86::SP, X86::ESP, 0 };
  const unsigned SI_AliasSet[] = { X86::SIL, X86::ESI, X86::RSI, 0 };
  const unsigned SIL_AliasSet[] = { X86::SI, X86::ESI, X86::RSI, 0 };
  const unsigned SP_AliasSet[] = { X86::SPL, X86::ESP, X86::RSP, 0 };
  const unsigned SPL_AliasSet[] = { X86::SP, X86::ESP, X86::RSP, 0 };
  const unsigned XMM0_AliasSet[] = { X86::YMM0, 0 };
  const unsigned XMM1_AliasSet[] = { X86::YMM1, 0 };
  const unsigned XMM2_AliasSet[] = { X86::YMM2, 0 };
  const unsigned XMM3_AliasSet[] = { X86::YMM3, 0 };
  const unsigned XMM4_AliasSet[] = { X86::YMM4, 0 };
  const unsigned XMM5_AliasSet[] = { X86::YMM5, 0 };
  const unsigned XMM6_AliasSet[] = { X86::YMM6, 0 };
  const unsigned XMM7_AliasSet[] = { X86::YMM7, 0 };
  const unsigned XMM8_AliasSet[] = { X86::YMM8, 0 };
  const unsigned XMM9_AliasSet[] = { X86::YMM9, 0 };
  const unsigned XMM10_AliasSet[] = { X86::YMM10, 0 };
  const unsigned XMM11_AliasSet[] = { X86::YMM11, 0 };
  const unsigned XMM12_AliasSet[] = { X86::YMM12, 0 };
  const unsigned XMM13_AliasSet[] = { X86::YMM13, 0 };
  const unsigned XMM14_AliasSet[] = { X86::YMM14, 0 };
  const unsigned XMM15_AliasSet[] = { X86::YMM15, 0 };
  const unsigned YMM0_AliasSet[] = { X86::XMM0, 0 };
  const unsigned YMM1_AliasSet[] = { X86::XMM1, 0 };
  const unsigned YMM2_AliasSet[] = { X86::XMM2, 0 };
  const unsigned YMM3_AliasSet[] = { X86::XMM3, 0 };
  const unsigned YMM4_AliasSet[] = { X86::XMM4, 0 };
  const unsigned YMM5_AliasSet[] = { X86::XMM5, 0 };
  const unsigned YMM6_AliasSet[] = { X86::XMM6, 0 };
  const unsigned YMM7_AliasSet[] = { X86::XMM7, 0 };
  const unsigned YMM8_AliasSet[] = { X86::XMM8, 0 };
  const unsigned YMM9_AliasSet[] = { X86::XMM9, 0 };
  const unsigned YMM10_AliasSet[] = { X86::XMM10, 0 };
  const unsigned YMM11_AliasSet[] = { X86::XMM11, 0 };
  const unsigned YMM12_AliasSet[] = { X86::XMM12, 0 };
  const unsigned YMM13_AliasSet[] = { X86::XMM13, 0 };
  const unsigned YMM14_AliasSet[] = { X86::XMM14, 0 };
  const unsigned YMM15_AliasSet[] = { X86::XMM15, 0 };


  // Register Sub-registers Sets...
  const unsigned Empty_SubRegsSet[] = { 0 };
  const unsigned AX_SubRegsSet[] = { X86::AL, X86::AH, 0 };
  const unsigned BP_SubRegsSet[] = { X86::BPL, 0 };
  const unsigned BX_SubRegsSet[] = { X86::BL, X86::BH, 0 };
  const unsigned CX_SubRegsSet[] = { X86::CL, X86::CH, 0 };
  const unsigned DI_SubRegsSet[] = { X86::DIL, 0 };
  const unsigned DX_SubRegsSet[] = { X86::DL, X86::DH, 0 };
  const unsigned EAX_SubRegsSet[] = { X86::AX, X86::AL, X86::AH, 0 };
  const unsigned EBP_SubRegsSet[] = { X86::BP, X86::BPL, 0 };
  const unsigned EBX_SubRegsSet[] = { X86::BX, X86::BL, X86::BH, 0 };
  const unsigned ECX_SubRegsSet[] = { X86::CX, X86::CL, X86::CH, 0 };
  const unsigned EDI_SubRegsSet[] = { X86::DI, X86::DIL, 0 };
  const unsigned EDX_SubRegsSet[] = { X86::DX, X86::DL, X86::DH, 0 };
  const unsigned EIP_SubRegsSet[] = { X86::IP, 0 };
  const unsigned ESI_SubRegsSet[] = { X86::SI, X86::SIL, 0 };
  const unsigned ESP_SubRegsSet[] = { X86::SP, X86::SPL, 0 };
  const unsigned R8_SubRegsSet[] = { X86::R8D, X86::R8W, X86::R8B, 0 };
  const unsigned R8D_SubRegsSet[] = { X86::R8W, X86::R8B, 0 };
  const unsigned R8W_SubRegsSet[] = { X86::R8B, 0 };
  const unsigned R9_SubRegsSet[] = { X86::R9D, X86::R9W, X86::R9B, 0 };
  const unsigned R9D_SubRegsSet[] = { X86::R9W, X86::R9B, 0 };
  const unsigned R9W_SubRegsSet[] = { X86::R9B, 0 };
  const unsigned R10_SubRegsSet[] = { X86::R10D, X86::R10W, X86::R10B, 0 };
  const unsigned R10D_SubRegsSet[] = { X86::R10W, X86::R10B, 0 };
  const unsigned R10W_SubRegsSet[] = { X86::R10B, 0 };
  const unsigned R11_SubRegsSet[] = { X86::R11D, X86::R11W, X86::R11B, 0 };
  const unsigned R11D_SubRegsSet[] = { X86::R11W, X86::R11B, 0 };
  const unsigned R11W_SubRegsSet[] = { X86::R11B, 0 };
  const unsigned R12_SubRegsSet[] = { X86::R12D, X86::R12W, X86::R12B, 0 };
  const unsigned R12D_SubRegsSet[] = { X86::R12W, X86::R12B, 0 };
  const unsigned R12W_SubRegsSet[] = { X86::R12B, 0 };
  const unsigned R13_SubRegsSet[] = { X86::R13D, X86::R13W, X86::R13B, 0 };
  const unsigned R13D_SubRegsSet[] = { X86::R13W, X86::R13B, 0 };
  const unsigned R13W_SubRegsSet[] = { X86::R13B, 0 };
  const unsigned R14_SubRegsSet[] = { X86::R14D, X86::R14W, X86::R14B, 0 };
  const unsigned R14D_SubRegsSet[] = { X86::R14W, X86::R14B, 0 };
  const unsigned R14W_SubRegsSet[] = { X86::R14B, 0 };
  const unsigned R15_SubRegsSet[] = { X86::R15D, X86::R15W, X86::R15B, 0 };
  const unsigned R15D_SubRegsSet[] = { X86::R15W, X86::R15B, 0 };
  const unsigned R15W_SubRegsSet[] = { X86::R15B, 0 };
  const unsigned RAX_SubRegsSet[] = { X86::EAX, X86::AX, X86::AL, X86::AH, 0 };
  const unsigned RBP_SubRegsSet[] = { X86::EBP, X86::BP, X86::BPL, 0 };
  const unsigned RBX_SubRegsSet[] = { X86::EBX, X86::BX, X86::BL, X86::BH, 0 };
  const unsigned RCX_SubRegsSet[] = { X86::ECX, X86::CX, X86::CL, X86::CH, 0 };
  const unsigned RDI_SubRegsSet[] = { X86::EDI, X86::DI, X86::DIL, 0 };
  const unsigned RDX_SubRegsSet[] = { X86::EDX, X86::DX, X86::DL, X86::DH, 0 };
  const unsigned RIP_SubRegsSet[] = { X86::EIP, X86::IP, 0 };
  const unsigned RSI_SubRegsSet[] = { X86::ESI, X86::SI, X86::SIL, 0 };
  const unsigned RSP_SubRegsSet[] = { X86::ESP, X86::SP, X86::SPL, 0 };
  const unsigned SI_SubRegsSet[] = { X86::SIL, 0 };
  const unsigned SP_SubRegsSet[] = { X86::SPL, 0 };
  const unsigned YMM0_SubRegsSet[] = { X86::XMM0, 0 };
  const unsigned YMM1_SubRegsSet[] = { X86::XMM1, 0 };
  const unsigned YMM2_SubRegsSet[] = { X86::XMM2, 0 };
  const unsigned YMM3_SubRegsSet[] = { X86::XMM3, 0 };
  const unsigned YMM4_SubRegsSet[] = { X86::XMM4, 0 };
  const unsigned YMM5_SubRegsSet[] = { X86::XMM5, 0 };
  const unsigned YMM6_SubRegsSet[] = { X86::XMM6, 0 };
  const unsigned YMM7_SubRegsSet[] = { X86::XMM7, 0 };
  const unsigned YMM8_SubRegsSet[] = { X86::XMM8, 0 };
  const unsigned YMM9_SubRegsSet[] = { X86::XMM9, 0 };
  const unsigned YMM10_SubRegsSet[] = { X86::XMM10, 0 };
  const unsigned YMM11_SubRegsSet[] = { X86::XMM11, 0 };
  const unsigned YMM12_SubRegsSet[] = { X86::XMM12, 0 };
  const unsigned YMM13_SubRegsSet[] = { X86::XMM13, 0 };
  const unsigned YMM14_SubRegsSet[] = { X86::XMM14, 0 };
  const unsigned YMM15_SubRegsSet[] = { X86::XMM15, 0 };


  // Register Super-registers Sets...
  const unsigned Empty_SuperRegsSet[] = { 0 };
  const unsigned AH_SuperRegsSet[] = { X86::RAX, X86::EAX, X86::AX, 0 };
  const unsigned AL_SuperRegsSet[] = { X86::RAX, X86::EAX, X86::AX, 0 };
  const unsigned AX_SuperRegsSet[] = { X86::RAX, X86::EAX, 0 };
  const unsigned BH_SuperRegsSet[] = { X86::RBX, X86::EBX, X86::BX, 0 };
  const unsigned BL_SuperRegsSet[] = { X86::RBX, X86::EBX, X86::BX, 0 };
  const unsigned BP_SuperRegsSet[] = { X86::RBP, X86::EBP, 0 };
  const unsigned BPL_SuperRegsSet[] = { X86::RBP, X86::EBP, X86::BP, 0 };
  const unsigned BX_SuperRegsSet[] = { X86::RBX, X86::EBX, 0 };
  const unsigned CH_SuperRegsSet[] = { X86::RCX, X86::ECX, X86::CX, 0 };
  const unsigned CL_SuperRegsSet[] = { X86::RCX, X86::ECX, X86::CX, 0 };
  const unsigned CX_SuperRegsSet[] = { X86::RCX, X86::ECX, 0 };
  const unsigned DH_SuperRegsSet[] = { X86::RDX, X86::EDX, X86::DX, 0 };
  const unsigned DI_SuperRegsSet[] = { X86::RDI, X86::EDI, 0 };
  const unsigned DIL_SuperRegsSet[] = { X86::RDI, X86::EDI, X86::DI, 0 };
  const unsigned DL_SuperRegsSet[] = { X86::RDX, X86::EDX, X86::DX, 0 };
  const unsigned DX_SuperRegsSet[] = { X86::RDX, X86::EDX, 0 };
  const unsigned EAX_SuperRegsSet[] = { X86::RAX, 0 };
  const unsigned EBP_SuperRegsSet[] = { X86::RBP, 0 };
  const unsigned EBX_SuperRegsSet[] = { X86::RBX, 0 };
  const unsigned ECX_SuperRegsSet[] = { X86::RCX, 0 };
  const unsigned EDI_SuperRegsSet[] = { X86::RDI, 0 };
  const unsigned EDX_SuperRegsSet[] = { X86::RDX, 0 };
  const unsigned EIP_SuperRegsSet[] = { X86::RIP, 0 };
  const unsigned ESI_SuperRegsSet[] = { X86::RSI, 0 };
  const unsigned ESP_SuperRegsSet[] = { X86::RSP, 0 };
  const unsigned IP_SuperRegsSet[] = { X86::RIP, X86::EIP, 0 };
  const unsigned R8B_SuperRegsSet[] = { X86::R8, X86::R8D, X86::R8W, 0 };
  const unsigned R8D_SuperRegsSet[] = { X86::R8, 0 };
  const unsigned R8W_SuperRegsSet[] = { X86::R8, X86::R8D, 0 };
  const unsigned R9B_SuperRegsSet[] = { X86::R9, X86::R9D, X86::R9W, 0 };
  const unsigned R9D_SuperRegsSet[] = { X86::R9, 0 };
  const unsigned R9W_SuperRegsSet[] = { X86::R9, X86::R9D, 0 };
  const unsigned R10B_SuperRegsSet[] = { X86::R10, X86::R10D, X86::R10W, 0 };
  const unsigned R10D_SuperRegsSet[] = { X86::R10, 0 };
  const unsigned R10W_SuperRegsSet[] = { X86::R10, X86::R10D, 0 };
  const unsigned R11B_SuperRegsSet[] = { X86::R11, X86::R11D, X86::R11W, 0 };
  const unsigned R11D_SuperRegsSet[] = { X86::R11, 0 };
  const unsigned R11W_SuperRegsSet[] = { X86::R11, X86::R11D, 0 };
  const unsigned R12B_SuperRegsSet[] = { X86::R12, X86::R12D, X86::R12W, 0 };
  const unsigned R12D_SuperRegsSet[] = { X86::R12, 0 };
  const unsigned R12W_SuperRegsSet[] = { X86::R12, X86::R12D, 0 };
  const unsigned R13B_SuperRegsSet[] = { X86::R13, X86::R13D, X86::R13W, 0 };
  const unsigned R13D_SuperRegsSet[] = { X86::R13, 0 };
  const unsigned R13W_SuperRegsSet[] = { X86::R13, X86::R13D, 0 };
  const unsigned R14B_SuperRegsSet[] = { X86::R14, X86::R14D, X86::R14W, 0 };
  const unsigned R14D_SuperRegsSet[] = { X86::R14, 0 };
  const unsigned R14W_SuperRegsSet[] = { X86::R14, X86::R14D, 0 };
  const unsigned R15B_SuperRegsSet[] = { X86::R15, X86::R15D, X86::R15W, 0 };
  const unsigned R15D_SuperRegsSet[] = { X86::R15, 0 };
  const unsigned R15W_SuperRegsSet[] = { X86::R15, X86::R15D, 0 };
  const unsigned SI_SuperRegsSet[] = { X86::RSI, X86::ESI, 0 };
  const unsigned SIL_SuperRegsSet[] = { X86::RSI, X86::ESI, X86::SI, 0 };
  const unsigned SP_SuperRegsSet[] = { X86::RSP, X86::ESP, 0 };
  const unsigned SPL_SuperRegsSet[] = { X86::RSP, X86::ESP, X86::SP, 0 };
  const unsigned XMM0_SuperRegsSet[] = { X86::YMM0, 0 };
  const unsigned XMM1_SuperRegsSet[] = { X86::YMM1, 0 };
  const unsigned XMM2_SuperRegsSet[] = { X86::YMM2, 0 };
  const unsigned XMM3_SuperRegsSet[] = { X86::YMM3, 0 };
  const unsigned XMM4_SuperRegsSet[] = { X86::YMM4, 0 };
  const unsigned XMM5_SuperRegsSet[] = { X86::YMM5, 0 };
  const unsigned XMM6_SuperRegsSet[] = { X86::YMM6, 0 };
  const unsigned XMM7_SuperRegsSet[] = { X86::YMM7, 0 };
  const unsigned XMM8_SuperRegsSet[] = { X86::YMM8, 0 };
  const unsigned XMM9_SuperRegsSet[] = { X86::YMM9, 0 };
  const unsigned XMM10_SuperRegsSet[] = { X86::YMM10, 0 };
  const unsigned XMM11_SuperRegsSet[] = { X86::YMM11, 0 };
  const unsigned XMM12_SuperRegsSet[] = { X86::YMM12, 0 };
  const unsigned XMM13_SuperRegsSet[] = { X86::YMM13, 0 };
  const unsigned XMM14_SuperRegsSet[] = { X86::YMM14, 0 };
  const unsigned XMM15_SuperRegsSet[] = { X86::YMM15, 0 };

  const TargetRegisterDesc RegisterDescriptors[] = { // Descriptors
    { "NOREG",	0,	0,	0 },
    { "AH",	AH_AliasSet,	Empty_SubRegsSet,	AH_SuperRegsSet },
    { "AL",	AL_AliasSet,	Empty_SubRegsSet,	AL_SuperRegsSet },
    { "AX",	AX_AliasSet,	AX_SubRegsSet,	AX_SuperRegsSet },
    { "BH",	BH_AliasSet,	Empty_SubRegsSet,	BH_SuperRegsSet },
    { "BL",	BL_AliasSet,	Empty_SubRegsSet,	BL_SuperRegsSet },
    { "BP",	BP_AliasSet,	BP_SubRegsSet,	BP_SuperRegsSet },
    { "BPL",	BPL_AliasSet,	Empty_SubRegsSet,	BPL_SuperRegsSet },
    { "BX",	BX_AliasSet,	BX_SubRegsSet,	BX_SuperRegsSet },
    { "CH",	CH_AliasSet,	Empty_SubRegsSet,	CH_SuperRegsSet },
    { "CL",	CL_AliasSet,	Empty_SubRegsSet,	CL_SuperRegsSet },
    { "CR0",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "CR1",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "CR2",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "CR3",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "CR4",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "CR5",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "CR6",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "CR7",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "CR8",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "CS",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "CX",	CX_AliasSet,	CX_SubRegsSet,	CX_SuperRegsSet },
    { "DH",	DH_AliasSet,	Empty_SubRegsSet,	DH_SuperRegsSet },
    { "DI",	DI_AliasSet,	DI_SubRegsSet,	DI_SuperRegsSet },
    { "DIL",	DIL_AliasSet,	Empty_SubRegsSet,	DIL_SuperRegsSet },
    { "DL",	DL_AliasSet,	Empty_SubRegsSet,	DL_SuperRegsSet },
    { "DR0",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "DR1",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "DR2",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "DR3",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "DR4",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "DR5",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "DR6",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "DR7",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "DS",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "DX",	DX_AliasSet,	DX_SubRegsSet,	DX_SuperRegsSet },
    { "EAX",	EAX_AliasSet,	EAX_SubRegsSet,	EAX_SuperRegsSet },
    { "EBP",	EBP_AliasSet,	EBP_SubRegsSet,	EBP_SuperRegsSet },
    { "EBX",	EBX_AliasSet,	EBX_SubRegsSet,	EBX_SuperRegsSet },
    { "ECX",	ECX_AliasSet,	ECX_SubRegsSet,	ECX_SuperRegsSet },
    { "EDI",	EDI_AliasSet,	EDI_SubRegsSet,	EDI_SuperRegsSet },
    { "EDX",	EDX_AliasSet,	EDX_SubRegsSet,	EDX_SuperRegsSet },
    { "EFLAGS",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "EIP",	EIP_AliasSet,	EIP_SubRegsSet,	EIP_SuperRegsSet },
    { "EIZ",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "ES",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "ESI",	ESI_AliasSet,	ESI_SubRegsSet,	ESI_SuperRegsSet },
    { "ESP",	ESP_AliasSet,	ESP_SubRegsSet,	ESP_SuperRegsSet },
    { "FP0",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "FP1",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "FP2",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "FP3",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "FP4",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "FP5",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "FP6",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "FS",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "GS",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "IP",	IP_AliasSet,	Empty_SubRegsSet,	IP_SuperRegsSet },
    { "MM0",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "MM1",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "MM2",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "MM3",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "MM4",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "MM5",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "MM6",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "MM7",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "R8",	R8_AliasSet,	R8_SubRegsSet,	Empty_SuperRegsSet },
    { "R8B",	R8B_AliasSet,	Empty_SubRegsSet,	R8B_SuperRegsSet },
    { "R8D",	R8D_AliasSet,	R8D_SubRegsSet,	R8D_SuperRegsSet },
    { "R8W",	R8W_AliasSet,	R8W_SubRegsSet,	R8W_SuperRegsSet },
    { "R9",	R9_AliasSet,	R9_SubRegsSet,	Empty_SuperRegsSet },
    { "R9B",	R9B_AliasSet,	Empty_SubRegsSet,	R9B_SuperRegsSet },
    { "R9D",	R9D_AliasSet,	R9D_SubRegsSet,	R9D_SuperRegsSet },
    { "R9W",	R9W_AliasSet,	R9W_SubRegsSet,	R9W_SuperRegsSet },
    { "R10",	R10_AliasSet,	R10_SubRegsSet,	Empty_SuperRegsSet },
    { "R10B",	R10B_AliasSet,	Empty_SubRegsSet,	R10B_SuperRegsSet },
    { "R10D",	R10D_AliasSet,	R10D_SubRegsSet,	R10D_SuperRegsSet },
    { "R10W",	R10W_AliasSet,	R10W_SubRegsSet,	R10W_SuperRegsSet },
    { "R11",	R11_AliasSet,	R11_SubRegsSet,	Empty_SuperRegsSet },
    { "R11B",	R11B_AliasSet,	Empty_SubRegsSet,	R11B_SuperRegsSet },
    { "R11D",	R11D_AliasSet,	R11D_SubRegsSet,	R11D_SuperRegsSet },
    { "R11W",	R11W_AliasSet,	R11W_SubRegsSet,	R11W_SuperRegsSet },
    { "R12",	R12_AliasSet,	R12_SubRegsSet,	Empty_SuperRegsSet },
    { "R12B",	R12B_AliasSet,	Empty_SubRegsSet,	R12B_SuperRegsSet },
    { "R12D",	R12D_AliasSet,	R12D_SubRegsSet,	R12D_SuperRegsSet },
    { "R12W",	R12W_AliasSet,	R12W_SubRegsSet,	R12W_SuperRegsSet },
    { "R13",	R13_AliasSet,	R13_SubRegsSet,	Empty_SuperRegsSet },
    { "R13B",	R13B_AliasSet,	Empty_SubRegsSet,	R13B_SuperRegsSet },
    { "R13D",	R13D_AliasSet,	R13D_SubRegsSet,	R13D_SuperRegsSet },
    { "R13W",	R13W_AliasSet,	R13W_SubRegsSet,	R13W_SuperRegsSet },
    { "R14",	R14_AliasSet,	R14_SubRegsSet,	Empty_SuperRegsSet },
    { "R14B",	R14B_AliasSet,	Empty_SubRegsSet,	R14B_SuperRegsSet },
    { "R14D",	R14D_AliasSet,	R14D_SubRegsSet,	R14D_SuperRegsSet },
    { "R14W",	R14W_AliasSet,	R14W_SubRegsSet,	R14W_SuperRegsSet },
    { "R15",	R15_AliasSet,	R15_SubRegsSet,	Empty_SuperRegsSet },
    { "R15B",	R15B_AliasSet,	Empty_SubRegsSet,	R15B_SuperRegsSet },
    { "R15D",	R15D_AliasSet,	R15D_SubRegsSet,	R15D_SuperRegsSet },
    { "R15W",	R15W_AliasSet,	R15W_SubRegsSet,	R15W_SuperRegsSet },
    { "RAX",	RAX_AliasSet,	RAX_SubRegsSet,	Empty_SuperRegsSet },
    { "RBP",	RBP_AliasSet,	RBP_SubRegsSet,	Empty_SuperRegsSet },
    { "RBX",	RBX_AliasSet,	RBX_SubRegsSet,	Empty_SuperRegsSet },
    { "RCX",	RCX_AliasSet,	RCX_SubRegsSet,	Empty_SuperRegsSet },
    { "RDI",	RDI_AliasSet,	RDI_SubRegsSet,	Empty_SuperRegsSet },
    { "RDX",	RDX_AliasSet,	RDX_SubRegsSet,	Empty_SuperRegsSet },
    { "RIP",	RIP_AliasSet,	RIP_SubRegsSet,	Empty_SuperRegsSet },
    { "RIZ",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "RSI",	RSI_AliasSet,	RSI_SubRegsSet,	Empty_SuperRegsSet },
    { "RSP",	RSP_AliasSet,	RSP_SubRegsSet,	Empty_SuperRegsSet },
    { "SI",	SI_AliasSet,	SI_SubRegsSet,	SI_SuperRegsSet },
    { "SIL",	SIL_AliasSet,	Empty_SubRegsSet,	SIL_SuperRegsSet },
    { "SP",	SP_AliasSet,	SP_SubRegsSet,	SP_SuperRegsSet },
    { "SPL",	SPL_AliasSet,	Empty_SubRegsSet,	SPL_SuperRegsSet },
    { "SS",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "ST0",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "ST1",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "ST2",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "ST3",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "ST4",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "ST5",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "ST6",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "ST7",	Empty_AliasSet,	Empty_SubRegsSet,	Empty_SuperRegsSet },
    { "XMM0",	XMM0_AliasSet,	Empty_SubRegsSet,	XMM0_SuperRegsSet },
    { "XMM1",	XMM1_AliasSet,	Empty_SubRegsSet,	XMM1_SuperRegsSet },
    { "XMM2",	XMM2_AliasSet,	Empty_SubRegsSet,	XMM2_SuperRegsSet },
    { "XMM3",	XMM3_AliasSet,	Empty_SubRegsSet,	XMM3_SuperRegsSet },
    { "XMM4",	XMM4_AliasSet,	Empty_SubRegsSet,	XMM4_SuperRegsSet },
    { "XMM5",	XMM5_AliasSet,	Empty_SubRegsSet,	XMM5_SuperRegsSet },
    { "XMM6",	XMM6_AliasSet,	Empty_SubRegsSet,	XMM6_SuperRegsSet },
    { "XMM7",	XMM7_AliasSet,	Empty_SubRegsSet,	XMM7_SuperRegsSet },
    { "XMM8",	XMM8_AliasSet,	Empty_SubRegsSet,	XMM8_SuperRegsSet },
    { "XMM9",	XMM9_AliasSet,	Empty_SubRegsSet,	XMM9_SuperRegsSet },
    { "XMM10",	XMM10_AliasSet,	Empty_SubRegsSet,	XMM10_SuperRegsSet },
    { "XMM11",	XMM11_AliasSet,	Empty_SubRegsSet,	XMM11_SuperRegsSet },
    { "XMM12",	XMM12_AliasSet,	Empty_SubRegsSet,	XMM12_SuperRegsSet },
    { "XMM13",	XMM13_AliasSet,	Empty_SubRegsSet,	XMM13_SuperRegsSet },
    { "XMM14",	XMM14_AliasSet,	Empty_SubRegsSet,	XMM14_SuperRegsSet },
    { "XMM15",	XMM15_AliasSet,	Empty_SubRegsSet,	XMM15_SuperRegsSet },
    { "YMM0",	YMM0_AliasSet,	YMM0_SubRegsSet,	Empty_SuperRegsSet },
    { "YMM1",	YMM1_AliasSet,	YMM1_SubRegsSet,	Empty_SuperRegsSet },
    { "YMM2",	YMM2_AliasSet,	YMM2_SubRegsSet,	Empty_SuperRegsSet },
    { "YMM3",	YMM3_AliasSet,	YMM3_SubRegsSet,	Empty_SuperRegsSet },
    { "YMM4",	YMM4_AliasSet,	YMM4_SubRegsSet,	Empty_SuperRegsSet },
    { "YMM5",	YMM5_AliasSet,	YMM5_SubRegsSet,	Empty_SuperRegsSet },
    { "YMM6",	YMM6_AliasSet,	YMM6_SubRegsSet,	Empty_SuperRegsSet },
    { "YMM7",	YMM7_AliasSet,	YMM7_SubRegsSet,	Empty_SuperRegsSet },
    { "YMM8",	YMM8_AliasSet,	YMM8_SubRegsSet,	Empty_SuperRegsSet },
    { "YMM9",	YMM9_AliasSet,	YMM9_SubRegsSet,	Empty_SuperRegsSet },
    { "YMM10",	YMM10_AliasSet,	YMM10_SubRegsSet,	Empty_SuperRegsSet },
    { "YMM11",	YMM11_AliasSet,	YMM11_SubRegsSet,	Empty_SuperRegsSet },
    { "YMM12",	YMM12_AliasSet,	YMM12_SubRegsSet,	Empty_SuperRegsSet },
    { "YMM13",	YMM13_AliasSet,	YMM13_SubRegsSet,	Empty_SuperRegsSet },
    { "YMM14",	YMM14_AliasSet,	YMM14_SubRegsSet,	Empty_SuperRegsSet },
    { "YMM15",	YMM15_AliasSet,	YMM15_SubRegsSet,	Empty_SuperRegsSet },
  };

  const char *const SubRegIndexTable[] = { "sub_8bit", "sub_8bit_hi", "sub_16bit", "sub_32bit", "sub_sd", "sub_ss", "sub_xmm" };

}

unsigned X86GenRegisterInfo::getSubReg(unsigned RegNo, unsigned Index) const {
  switch (RegNo) {
  default:
    return 0;
  case X86::AX:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::AL;
    case X86::sub_8bit_hi: return X86::AH;
    };
    break;
  case X86::BP:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::BPL;
    };
    break;
  case X86::BX:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::BL;
    case X86::sub_8bit_hi: return X86::BH;
    };
    break;
  case X86::CX:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::CL;
    case X86::sub_8bit_hi: return X86::CH;
    };
    break;
  case X86::DI:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::DIL;
    };
    break;
  case X86::DX:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::DL;
    case X86::sub_8bit_hi: return X86::DH;
    };
    break;
  case X86::EAX:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::AL;
    case X86::sub_8bit_hi: return X86::AH;
    case X86::sub_16bit: return X86::AX;
    };
    break;
  case X86::EBP:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::BPL;
    case X86::sub_16bit: return X86::BP;
    };
    break;
  case X86::EBX:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::BL;
    case X86::sub_8bit_hi: return X86::BH;
    case X86::sub_16bit: return X86::BX;
    };
    break;
  case X86::ECX:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::CL;
    case X86::sub_8bit_hi: return X86::CH;
    case X86::sub_16bit: return X86::CX;
    };
    break;
  case X86::EDI:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::DIL;
    case X86::sub_16bit: return X86::DI;
    };
    break;
  case X86::EDX:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::DL;
    case X86::sub_8bit_hi: return X86::DH;
    case X86::sub_16bit: return X86::DX;
    };
    break;
  case X86::EIP:
    switch (Index) {
    default: return 0;
    case X86::sub_16bit: return X86::IP;
    };
    break;
  case X86::ESI:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::SIL;
    case X86::sub_16bit: return X86::SI;
    };
    break;
  case X86::ESP:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::SPL;
    case X86::sub_16bit: return X86::SP;
    };
    break;
  case X86::R8:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R8B;
    case X86::sub_16bit: return X86::R8W;
    case X86::sub_32bit: return X86::R8D;
    };
    break;
  case X86::R8D:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R8B;
    case X86::sub_16bit: return X86::R8W;
    };
    break;
  case X86::R8W:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R8B;
    };
    break;
  case X86::R9:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R9B;
    case X86::sub_16bit: return X86::R9W;
    case X86::sub_32bit: return X86::R9D;
    };
    break;
  case X86::R9D:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R9B;
    case X86::sub_16bit: return X86::R9W;
    };
    break;
  case X86::R9W:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R9B;
    };
    break;
  case X86::R10:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R10B;
    case X86::sub_16bit: return X86::R10W;
    case X86::sub_32bit: return X86::R10D;
    };
    break;
  case X86::R10D:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R10B;
    case X86::sub_16bit: return X86::R10W;
    };
    break;
  case X86::R10W:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R10B;
    };
    break;
  case X86::R11:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R11B;
    case X86::sub_16bit: return X86::R11W;
    case X86::sub_32bit: return X86::R11D;
    };
    break;
  case X86::R11D:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R11B;
    case X86::sub_16bit: return X86::R11W;
    };
    break;
  case X86::R11W:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R11B;
    };
    break;
  case X86::R12:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R12B;
    case X86::sub_16bit: return X86::R12W;
    case X86::sub_32bit: return X86::R12D;
    };
    break;
  case X86::R12D:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R12B;
    case X86::sub_16bit: return X86::R12W;
    };
    break;
  case X86::R12W:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R12B;
    };
    break;
  case X86::R13:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R13B;
    case X86::sub_16bit: return X86::R13W;
    case X86::sub_32bit: return X86::R13D;
    };
    break;
  case X86::R13D:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R13B;
    case X86::sub_16bit: return X86::R13W;
    };
    break;
  case X86::R13W:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R13B;
    };
    break;
  case X86::R14:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R14B;
    case X86::sub_16bit: return X86::R14W;
    case X86::sub_32bit: return X86::R14D;
    };
    break;
  case X86::R14D:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R14B;
    case X86::sub_16bit: return X86::R14W;
    };
    break;
  case X86::R14W:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R14B;
    };
    break;
  case X86::R15:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R15B;
    case X86::sub_16bit: return X86::R15W;
    case X86::sub_32bit: return X86::R15D;
    };
    break;
  case X86::R15D:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R15B;
    case X86::sub_16bit: return X86::R15W;
    };
    break;
  case X86::R15W:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::R15B;
    };
    break;
  case X86::RAX:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::AL;
    case X86::sub_8bit_hi: return X86::AH;
    case X86::sub_16bit: return X86::AX;
    case X86::sub_32bit: return X86::EAX;
    };
    break;
  case X86::RBP:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::BPL;
    case X86::sub_16bit: return X86::BP;
    case X86::sub_32bit: return X86::EBP;
    };
    break;
  case X86::RBX:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::BL;
    case X86::sub_8bit_hi: return X86::BH;
    case X86::sub_16bit: return X86::BX;
    case X86::sub_32bit: return X86::EBX;
    };
    break;
  case X86::RCX:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::CL;
    case X86::sub_8bit_hi: return X86::CH;
    case X86::sub_16bit: return X86::CX;
    case X86::sub_32bit: return X86::ECX;
    };
    break;
  case X86::RDI:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::DIL;
    case X86::sub_16bit: return X86::DI;
    case X86::sub_32bit: return X86::EDI;
    };
    break;
  case X86::RDX:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::DL;
    case X86::sub_8bit_hi: return X86::DH;
    case X86::sub_16bit: return X86::DX;
    case X86::sub_32bit: return X86::EDX;
    };
    break;
  case X86::RIP:
    switch (Index) {
    default: return 0;
    case X86::sub_16bit: return X86::IP;
    case X86::sub_32bit: return X86::EIP;
    };
    break;
  case X86::RSI:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::SIL;
    case X86::sub_16bit: return X86::SI;
    case X86::sub_32bit: return X86::ESI;
    };
    break;
  case X86::RSP:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::SPL;
    case X86::sub_16bit: return X86::SP;
    case X86::sub_32bit: return X86::ESP;
    };
    break;
  case X86::SI:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::SIL;
    };
    break;
  case X86::SP:
    switch (Index) {
    default: return 0;
    case X86::sub_8bit: return X86::SPL;
    };
    break;
  case X86::XMM0:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM0;
    case X86::sub_ss: return X86::XMM0;
    };
    break;
  case X86::XMM1:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM1;
    case X86::sub_ss: return X86::XMM1;
    };
    break;
  case X86::XMM2:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM2;
    case X86::sub_ss: return X86::XMM2;
    };
    break;
  case X86::XMM3:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM3;
    case X86::sub_ss: return X86::XMM3;
    };
    break;
  case X86::XMM4:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM4;
    case X86::sub_ss: return X86::XMM4;
    };
    break;
  case X86::XMM5:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM5;
    case X86::sub_ss: return X86::XMM5;
    };
    break;
  case X86::XMM6:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM6;
    case X86::sub_ss: return X86::XMM6;
    };
    break;
  case X86::XMM7:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM7;
    case X86::sub_ss: return X86::XMM7;
    };
    break;
  case X86::XMM8:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM8;
    case X86::sub_ss: return X86::XMM8;
    };
    break;
  case X86::XMM9:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM9;
    case X86::sub_ss: return X86::XMM9;
    };
    break;
  case X86::XMM10:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM10;
    case X86::sub_ss: return X86::XMM10;
    };
    break;
  case X86::XMM11:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM11;
    case X86::sub_ss: return X86::XMM11;
    };
    break;
  case X86::XMM12:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM12;
    case X86::sub_ss: return X86::XMM12;
    };
    break;
  case X86::XMM13:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM13;
    case X86::sub_ss: return X86::XMM13;
    };
    break;
  case X86::XMM14:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM14;
    case X86::sub_ss: return X86::XMM14;
    };
    break;
  case X86::XMM15:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM15;
    case X86::sub_ss: return X86::XMM15;
    };
    break;
  case X86::YMM0:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM0;
    case X86::sub_ss: return X86::XMM0;
    case X86::sub_xmm: return X86::XMM0;
    };
    break;
  case X86::YMM1:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM1;
    case X86::sub_ss: return X86::XMM1;
    case X86::sub_xmm: return X86::XMM1;
    };
    break;
  case X86::YMM2:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM2;
    case X86::sub_ss: return X86::XMM2;
    case X86::sub_xmm: return X86::XMM2;
    };
    break;
  case X86::YMM3:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM3;
    case X86::sub_ss: return X86::XMM3;
    case X86::sub_xmm: return X86::XMM3;
    };
    break;
  case X86::YMM4:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM4;
    case X86::sub_ss: return X86::XMM4;
    case X86::sub_xmm: return X86::XMM4;
    };
    break;
  case X86::YMM5:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM5;
    case X86::sub_ss: return X86::XMM5;
    case X86::sub_xmm: return X86::XMM5;
    };
    break;
  case X86::YMM6:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM6;
    case X86::sub_ss: return X86::XMM6;
    case X86::sub_xmm: return X86::XMM6;
    };
    break;
  case X86::YMM7:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM7;
    case X86::sub_ss: return X86::XMM7;
    case X86::sub_xmm: return X86::XMM7;
    };
    break;
  case X86::YMM8:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM8;
    case X86::sub_ss: return X86::XMM8;
    case X86::sub_xmm: return X86::XMM8;
    };
    break;
  case X86::YMM9:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM9;
    case X86::sub_ss: return X86::XMM9;
    case X86::sub_xmm: return X86::XMM9;
    };
    break;
  case X86::YMM10:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM10;
    case X86::sub_ss: return X86::XMM10;
    case X86::sub_xmm: return X86::XMM10;
    };
    break;
  case X86::YMM11:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM11;
    case X86::sub_ss: return X86::XMM11;
    case X86::sub_xmm: return X86::XMM11;
    };
    break;
  case X86::YMM12:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM12;
    case X86::sub_ss: return X86::XMM12;
    case X86::sub_xmm: return X86::XMM12;
    };
    break;
  case X86::YMM13:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM13;
    case X86::sub_ss: return X86::XMM13;
    case X86::sub_xmm: return X86::XMM13;
    };
    break;
  case X86::YMM14:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM14;
    case X86::sub_ss: return X86::XMM14;
    case X86::sub_xmm: return X86::XMM14;
    };
    break;
  case X86::YMM15:
    switch (Index) {
    default: return 0;
    case X86::sub_sd: return X86::XMM15;
    case X86::sub_ss: return X86::XMM15;
    case X86::sub_xmm: return X86::XMM15;
    };
    break;
  };
  return 0;
}

unsigned X86GenRegisterInfo::getSubRegIndex(unsigned RegNo, unsigned SubRegNo) const {
  switch (RegNo) {
  default:
    return 0;
  case X86::AX:
    if (SubRegNo == X86::AL)  return X86::sub_8bit;
    if (SubRegNo == X86::AH)  return X86::sub_8bit_hi;
    return 0;
  case X86::BP:
    if (SubRegNo == X86::BPL)  return X86::sub_8bit;
    return 0;
  case X86::BX:
    if (SubRegNo == X86::BL)  return X86::sub_8bit;
    if (SubRegNo == X86::BH)  return X86::sub_8bit_hi;
    return 0;
  case X86::CX:
    if (SubRegNo == X86::CL)  return X86::sub_8bit;
    if (SubRegNo == X86::CH)  return X86::sub_8bit_hi;
    return 0;
  case X86::DI:
    if (SubRegNo == X86::DIL)  return X86::sub_8bit;
    return 0;
  case X86::DX:
    if (SubRegNo == X86::DL)  return X86::sub_8bit;
    if (SubRegNo == X86::DH)  return X86::sub_8bit_hi;
    return 0;
  case X86::EAX:
    if (SubRegNo == X86::AL)  return X86::sub_8bit;
    if (SubRegNo == X86::AH)  return X86::sub_8bit_hi;
    if (SubRegNo == X86::AX)  return X86::sub_16bit;
    return 0;
  case X86::EBP:
    if (SubRegNo == X86::BPL)  return X86::sub_8bit;
    if (SubRegNo == X86::BP)  return X86::sub_16bit;
    return 0;
  case X86::EBX:
    if (SubRegNo == X86::BL)  return X86::sub_8bit;
    if (SubRegNo == X86::BH)  return X86::sub_8bit_hi;
    if (SubRegNo == X86::BX)  return X86::sub_16bit;
    return 0;
  case X86::ECX:
    if (SubRegNo == X86::CL)  return X86::sub_8bit;
    if (SubRegNo == X86::CH)  return X86::sub_8bit_hi;
    if (SubRegNo == X86::CX)  return X86::sub_16bit;
    return 0;
  case X86::EDI:
    if (SubRegNo == X86::DIL)  return X86::sub_8bit;
    if (SubRegNo == X86::DI)  return X86::sub_16bit;
    return 0;
  case X86::EDX:
    if (SubRegNo == X86::DL)  return X86::sub_8bit;
    if (SubRegNo == X86::DH)  return X86::sub_8bit_hi;
    if (SubRegNo == X86::DX)  return X86::sub_16bit;
    return 0;
  case X86::EIP:
    if (SubRegNo == X86::IP)  return X86::sub_16bit;
    return 0;
  case X86::ESI:
    if (SubRegNo == X86::SIL)  return X86::sub_8bit;
    if (SubRegNo == X86::SI)  return X86::sub_16bit;
    return 0;
  case X86::ESP:
    if (SubRegNo == X86::SPL)  return X86::sub_8bit;
    if (SubRegNo == X86::SP)  return X86::sub_16bit;
    return 0;
  case X86::R8:
    if (SubRegNo == X86::R8B)  return X86::sub_8bit;
    if (SubRegNo == X86::R8W)  return X86::sub_16bit;
    if (SubRegNo == X86::R8D)  return X86::sub_32bit;
    return 0;
  case X86::R8D:
    if (SubRegNo == X86::R8B)  return X86::sub_8bit;
    if (SubRegNo == X86::R8W)  return X86::sub_16bit;
    return 0;
  case X86::R8W:
    if (SubRegNo == X86::R8B)  return X86::sub_8bit;
    return 0;
  case X86::R9:
    if (SubRegNo == X86::R9B)  return X86::sub_8bit;
    if (SubRegNo == X86::R9W)  return X86::sub_16bit;
    if (SubRegNo == X86::R9D)  return X86::sub_32bit;
    return 0;
  case X86::R9D:
    if (SubRegNo == X86::R9B)  return X86::sub_8bit;
    if (SubRegNo == X86::R9W)  return X86::sub_16bit;
    return 0;
  case X86::R9W:
    if (SubRegNo == X86::R9B)  return X86::sub_8bit;
    return 0;
  case X86::R10:
    if (SubRegNo == X86::R10B)  return X86::sub_8bit;
    if (SubRegNo == X86::R10W)  return X86::sub_16bit;
    if (SubRegNo == X86::R10D)  return X86::sub_32bit;
    return 0;
  case X86::R10D:
    if (SubRegNo == X86::R10B)  return X86::sub_8bit;
    if (SubRegNo == X86::R10W)  return X86::sub_16bit;
    return 0;
  case X86::R10W:
    if (SubRegNo == X86::R10B)  return X86::sub_8bit;
    return 0;
  case X86::R11:
    if (SubRegNo == X86::R11B)  return X86::sub_8bit;
    if (SubRegNo == X86::R11W)  return X86::sub_16bit;
    if (SubRegNo == X86::R11D)  return X86::sub_32bit;
    return 0;
  case X86::R11D:
    if (SubRegNo == X86::R11B)  return X86::sub_8bit;
    if (SubRegNo == X86::R11W)  return X86::sub_16bit;
    return 0;
  case X86::R11W:
    if (SubRegNo == X86::R11B)  return X86::sub_8bit;
    return 0;
  case X86::R12:
    if (SubRegNo == X86::R12B)  return X86::sub_8bit;
    if (SubRegNo == X86::R12W)  return X86::sub_16bit;
    if (SubRegNo == X86::R12D)  return X86::sub_32bit;
    return 0;
  case X86::R12D:
    if (SubRegNo == X86::R12B)  return X86::sub_8bit;
    if (SubRegNo == X86::R12W)  return X86::sub_16bit;
    return 0;
  case X86::R12W:
    if (SubRegNo == X86::R12B)  return X86::sub_8bit;
    return 0;
  case X86::R13:
    if (SubRegNo == X86::R13B)  return X86::sub_8bit;
    if (SubRegNo == X86::R13W)  return X86::sub_16bit;
    if (SubRegNo == X86::R13D)  return X86::sub_32bit;
    return 0;
  case X86::R13D:
    if (SubRegNo == X86::R13B)  return X86::sub_8bit;
    if (SubRegNo == X86::R13W)  return X86::sub_16bit;
    return 0;
  case X86::R13W:
    if (SubRegNo == X86::R13B)  return X86::sub_8bit;
    return 0;
  case X86::R14:
    if (SubRegNo == X86::R14B)  return X86::sub_8bit;
    if (SubRegNo == X86::R14W)  return X86::sub_16bit;
    if (SubRegNo == X86::R14D)  return X86::sub_32bit;
    return 0;
  case X86::R14D:
    if (SubRegNo == X86::R14B)  return X86::sub_8bit;
    if (SubRegNo == X86::R14W)  return X86::sub_16bit;
    return 0;
  case X86::R14W:
    if (SubRegNo == X86::R14B)  return X86::sub_8bit;
    return 0;
  case X86::R15:
    if (SubRegNo == X86::R15B)  return X86::sub_8bit;
    if (SubRegNo == X86::R15W)  return X86::sub_16bit;
    if (SubRegNo == X86::R15D)  return X86::sub_32bit;
    return 0;
  case X86::R15D:
    if (SubRegNo == X86::R15B)  return X86::sub_8bit;
    if (SubRegNo == X86::R15W)  return X86::sub_16bit;
    return 0;
  case X86::R15W:
    if (SubRegNo == X86::R15B)  return X86::sub_8bit;
    return 0;
  case X86::RAX:
    if (SubRegNo == X86::AL)  return X86::sub_8bit;
    if (SubRegNo == X86::AH)  return X86::sub_8bit_hi;
    if (SubRegNo == X86::AX)  return X86::sub_16bit;
    if (SubRegNo == X86::EAX)  return X86::sub_32bit;
    return 0;
  case X86::RBP:
    if (SubRegNo == X86::BPL)  return X86::sub_8bit;
    if (SubRegNo == X86::BP)  return X86::sub_16bit;
    if (SubRegNo == X86::EBP)  return X86::sub_32bit;
    return 0;
  case X86::RBX:
    if (SubRegNo == X86::BL)  return X86::sub_8bit;
    if (SubRegNo == X86::BH)  return X86::sub_8bit_hi;
    if (SubRegNo == X86::BX)  return X86::sub_16bit;
    if (SubRegNo == X86::EBX)  return X86::sub_32bit;
    return 0;
  case X86::RCX:
    if (SubRegNo == X86::CL)  return X86::sub_8bit;
    if (SubRegNo == X86::CH)  return X86::sub_8bit_hi;
    if (SubRegNo == X86::CX)  return X86::sub_16bit;
    if (SubRegNo == X86::ECX)  return X86::sub_32bit;
    return 0;
  case X86::RDI:
    if (SubRegNo == X86::DIL)  return X86::sub_8bit;
    if (SubRegNo == X86::DI)  return X86::sub_16bit;
    if (SubRegNo == X86::EDI)  return X86::sub_32bit;
    return 0;
  case X86::RDX:
    if (SubRegNo == X86::DL)  return X86::sub_8bit;
    if (SubRegNo == X86::DH)  return X86::sub_8bit_hi;
    if (SubRegNo == X86::DX)  return X86::sub_16bit;
    if (SubRegNo == X86::EDX)  return X86::sub_32bit;
    return 0;
  case X86::RIP:
    if (SubRegNo == X86::IP)  return X86::sub_16bit;
    if (SubRegNo == X86::EIP)  return X86::sub_32bit;
    return 0;
  case X86::RSI:
    if (SubRegNo == X86::SIL)  return X86::sub_8bit;
    if (SubRegNo == X86::SI)  return X86::sub_16bit;
    if (SubRegNo == X86::ESI)  return X86::sub_32bit;
    return 0;
  case X86::RSP:
    if (SubRegNo == X86::SPL)  return X86::sub_8bit;
    if (SubRegNo == X86::SP)  return X86::sub_16bit;
    if (SubRegNo == X86::ESP)  return X86::sub_32bit;
    return 0;
  case X86::SI:
    if (SubRegNo == X86::SIL)  return X86::sub_8bit;
    return 0;
  case X86::SP:
    if (SubRegNo == X86::SPL)  return X86::sub_8bit;
    return 0;
  case X86::XMM0:
    if (SubRegNo == X86::XMM0)  return X86::sub_sd;
    if (SubRegNo == X86::XMM0)  return X86::sub_ss;
    return 0;
  case X86::XMM1:
    if (SubRegNo == X86::XMM1)  return X86::sub_sd;
    if (SubRegNo == X86::XMM1)  return X86::sub_ss;
    return 0;
  case X86::XMM2:
    if (SubRegNo == X86::XMM2)  return X86::sub_sd;
    if (SubRegNo == X86::XMM2)  return X86::sub_ss;
    return 0;
  case X86::XMM3:
    if (SubRegNo == X86::XMM3)  return X86::sub_sd;
    if (SubRegNo == X86::XMM3)  return X86::sub_ss;
    return 0;
  case X86::XMM4:
    if (SubRegNo == X86::XMM4)  return X86::sub_sd;
    if (SubRegNo == X86::XMM4)  return X86::sub_ss;
    return 0;
  case X86::XMM5:
    if (SubRegNo == X86::XMM5)  return X86::sub_sd;
    if (SubRegNo == X86::XMM5)  return X86::sub_ss;
    return 0;
  case X86::XMM6:
    if (SubRegNo == X86::XMM6)  return X86::sub_sd;
    if (SubRegNo == X86::XMM6)  return X86::sub_ss;
    return 0;
  case X86::XMM7:
    if (SubRegNo == X86::XMM7)  return X86::sub_sd;
    if (SubRegNo == X86::XMM7)  return X86::sub_ss;
    return 0;
  case X86::XMM8:
    if (SubRegNo == X86::XMM8)  return X86::sub_sd;
    if (SubRegNo == X86::XMM8)  return X86::sub_ss;
    return 0;
  case X86::XMM9:
    if (SubRegNo == X86::XMM9)  return X86::sub_sd;
    if (SubRegNo == X86::XMM9)  return X86::sub_ss;
    return 0;
  case X86::XMM10:
    if (SubRegNo == X86::XMM10)  return X86::sub_sd;
    if (SubRegNo == X86::XMM10)  return X86::sub_ss;
    return 0;
  case X86::XMM11:
    if (SubRegNo == X86::XMM11)  return X86::sub_sd;
    if (SubRegNo == X86::XMM11)  return X86::sub_ss;
    return 0;
  case X86::XMM12:
    if (SubRegNo == X86::XMM12)  return X86::sub_sd;
    if (SubRegNo == X86::XMM12)  return X86::sub_ss;
    return 0;
  case X86::XMM13:
    if (SubRegNo == X86::XMM13)  return X86::sub_sd;
    if (SubRegNo == X86::XMM13)  return X86::sub_ss;
    return 0;
  case X86::XMM14:
    if (SubRegNo == X86::XMM14)  return X86::sub_sd;
    if (SubRegNo == X86::XMM14)  return X86::sub_ss;
    return 0;
  case X86::XMM15:
    if (SubRegNo == X86::XMM15)  return X86::sub_sd;
    if (SubRegNo == X86::XMM15)  return X86::sub_ss;
    return 0;
  case X86::YMM0:
    if (SubRegNo == X86::XMM0)  return X86::sub_sd;
    if (SubRegNo == X86::XMM0)  return X86::sub_ss;
    if (SubRegNo == X86::XMM0)  return X86::sub_xmm;
    return 0;
  case X86::YMM1:
    if (SubRegNo == X86::XMM1)  return X86::sub_sd;
    if (SubRegNo == X86::XMM1)  return X86::sub_ss;
    if (SubRegNo == X86::XMM1)  return X86::sub_xmm;
    return 0;
  case X86::YMM2:
    if (SubRegNo == X86::XMM2)  return X86::sub_sd;
    if (SubRegNo == X86::XMM2)  return X86::sub_ss;
    if (SubRegNo == X86::XMM2)  return X86::sub_xmm;
    return 0;
  case X86::YMM3:
    if (SubRegNo == X86::XMM3)  return X86::sub_sd;
    if (SubRegNo == X86::XMM3)  return X86::sub_ss;
    if (SubRegNo == X86::XMM3)  return X86::sub_xmm;
    return 0;
  case X86::YMM4:
    if (SubRegNo == X86::XMM4)  return X86::sub_sd;
    if (SubRegNo == X86::XMM4)  return X86::sub_ss;
    if (SubRegNo == X86::XMM4)  return X86::sub_xmm;
    return 0;
  case X86::YMM5:
    if (SubRegNo == X86::XMM5)  return X86::sub_sd;
    if (SubRegNo == X86::XMM5)  return X86::sub_ss;
    if (SubRegNo == X86::XMM5)  return X86::sub_xmm;
    return 0;
  case X86::YMM6:
    if (SubRegNo == X86::XMM6)  return X86::sub_sd;
    if (SubRegNo == X86::XMM6)  return X86::sub_ss;
    if (SubRegNo == X86::XMM6)  return X86::sub_xmm;
    return 0;
  case X86::YMM7:
    if (SubRegNo == X86::XMM7)  return X86::sub_sd;
    if (SubRegNo == X86::XMM7)  return X86::sub_ss;
    if (SubRegNo == X86::XMM7)  return X86::sub_xmm;
    return 0;
  case X86::YMM8:
    if (SubRegNo == X86::XMM8)  return X86::sub_sd;
    if (SubRegNo == X86::XMM8)  return X86::sub_ss;
    if (SubRegNo == X86::XMM8)  return X86::sub_xmm;
    return 0;
  case X86::YMM9:
    if (SubRegNo == X86::XMM9)  return X86::sub_sd;
    if (SubRegNo == X86::XMM9)  return X86::sub_ss;
    if (SubRegNo == X86::XMM9)  return X86::sub_xmm;
    return 0;
  case X86::YMM10:
    if (SubRegNo == X86::XMM10)  return X86::sub_sd;
    if (SubRegNo == X86::XMM10)  return X86::sub_ss;
    if (SubRegNo == X86::XMM10)  return X86::sub_xmm;
    return 0;
  case X86::YMM11:
    if (SubRegNo == X86::XMM11)  return X86::sub_sd;
    if (SubRegNo == X86::XMM11)  return X86::sub_ss;
    if (SubRegNo == X86::XMM11)  return X86::sub_xmm;
    return 0;
  case X86::YMM12:
    if (SubRegNo == X86::XMM12)  return X86::sub_sd;
    if (SubRegNo == X86::XMM12)  return X86::sub_ss;
    if (SubRegNo == X86::XMM12)  return X86::sub_xmm;
    return 0;
  case X86::YMM13:
    if (SubRegNo == X86::XMM13)  return X86::sub_sd;
    if (SubRegNo == X86::XMM13)  return X86::sub_ss;
    if (SubRegNo == X86::XMM13)  return X86::sub_xmm;
    return 0;
  case X86::YMM14:
    if (SubRegNo == X86::XMM14)  return X86::sub_sd;
    if (SubRegNo == X86::XMM14)  return X86::sub_ss;
    if (SubRegNo == X86::XMM14)  return X86::sub_xmm;
    return 0;
  case X86::YMM15:
    if (SubRegNo == X86::XMM15)  return X86::sub_sd;
    if (SubRegNo == X86::XMM15)  return X86::sub_ss;
    if (SubRegNo == X86::XMM15)  return X86::sub_xmm;
    return 0;
  };
  return 0;
}

unsigned X86GenRegisterInfo::composeSubRegIndices(unsigned IdxA, unsigned IdxB) const {
  switch (IdxA) {
  default:
    return IdxB;
  }
}

X86GenRegisterInfo::X86GenRegisterInfo(int CallFrameSetupOpcode, int CallFrameDestroyOpcode)
  : TargetRegisterInfo(RegisterDescriptors, 153, RegisterClasses, RegisterClasses+32,
                 SubRegIndexTable,
                 CallFrameSetupOpcode, CallFrameDestroyOpcode,
                 SubregHashTable, SubregHashTableSize,
                 AliasesHashTable, AliasesHashTableSize) {
}

int X86GenRegisterInfo::getDwarfRegNumFull(unsigned RegNum, unsigned Flavour) const {
  switch (Flavour) {
  default:
    assert(0 && "Unknown DWARF flavour");
    return -1;
  case 0:
    switch (RegNum) {
    default:
      assert(0 && "Invalid RegNum");
      return -1;
    case X86::AH:
      return 0;
    case X86::AL:
      return 0;
    case X86::AX:
      return 0;
    case X86::BH:
      return 3;
    case X86::BL:
      return 3;
    case X86::BP:
      return 6;
    case X86::BPL:
      return 6;
    case X86::BX:
      return 3;
    case X86::CH:
      return 2;
    case X86::CL:
      return 2;
    case X86::CR0:
      return -1;
    case X86::CR1:
      return -1;
    case X86::CR2:
      return -1;
    case X86::CR3:
      return -1;
    case X86::CR4:
      return -1;
    case X86::CR5:
      return -1;
    case X86::CR6:
      return -1;
    case X86::CR7:
      return -1;
    case X86::CR8:
      return -1;
    case X86::CS:
      return -1;
    case X86::CX:
      return 2;
    case X86::DH:
      return 1;
    case X86::DI:
      return 5;
    case X86::DIL:
      return 5;
    case X86::DL:
      return 1;
    case X86::DR0:
      return -1;
    case X86::DR1:
      return -1;
    case X86::DR2:
      return -1;
    case X86::DR3:
      return -1;
    case X86::DR4:
      return -1;
    case X86::DR5:
      return -1;
    case X86::DR6:
      return -1;
    case X86::DR7:
      return -1;
    case X86::DS:
      return -1;
    case X86::DX:
      return 1;
    case X86::EAX:
      return 0;
    case X86::EBP:
      return 6;
    case X86::EBX:
      return 3;
    case X86::ECX:
      return 2;
    case X86::EDI:
      return 5;
    case X86::EDX:
      return 1;
    case X86::EFLAGS:
      return -1;
    case X86::EIP:
      return 16;
    case X86::EIZ:
      return -1;
    case X86::ES:
      return -1;
    case X86::ESI:
      return 4;
    case X86::ESP:
      return 7;
    case X86::FP0:
      return -1;
    case X86::FP1:
      return -1;
    case X86::FP2:
      return -1;
    case X86::FP3:
      return -1;
    case X86::FP4:
      return -1;
    case X86::FP5:
      return -1;
    case X86::FP6:
      return -1;
    case X86::FS:
      return -1;
    case X86::GS:
      return -1;
    case X86::IP:
      return 16;
    case X86::MM0:
      return 41;
    case X86::MM1:
      return 42;
    case X86::MM2:
      return 43;
    case X86::MM3:
      return 44;
    case X86::MM4:
      return 45;
    case X86::MM5:
      return 46;
    case X86::MM6:
      return 47;
    case X86::MM7:
      return 48;
    case X86::R8:
      return 8;
    case X86::R8B:
      return 8;
    case X86::R8D:
      return 8;
    case X86::R8W:
      return 8;
    case X86::R9:
      return 9;
    case X86::R9B:
      return 9;
    case X86::R9D:
      return 9;
    case X86::R9W:
      return 9;
    case X86::R10:
      return 10;
    case X86::R10B:
      return 10;
    case X86::R10D:
      return 10;
    case X86::R10W:
      return 10;
    case X86::R11:
      return 11;
    case X86::R11B:
      return 11;
    case X86::R11D:
      return 11;
    case X86::R11W:
      return 11;
    case X86::R12:
      return 12;
    case X86::R12B:
      return 12;
    case X86::R12D:
      return 12;
    case X86::R12W:
      return 12;
    case X86::R13:
      return 13;
    case X86::R13B:
      return 13;
    case X86::R13D:
      return 13;
    case X86::R13W:
      return 13;
    case X86::R14:
      return 14;
    case X86::R14B:
      return 14;
    case X86::R14D:
      return 14;
    case X86::R14W:
      return 14;
    case X86::R15:
      return 15;
    case X86::R15B:
      return 15;
    case X86::R15D:
      return 15;
    case X86::R15W:
      return 15;
    case X86::RAX:
      return 0;
    case X86::RBP:
      return 6;
    case X86::RBX:
      return 3;
    case X86::RCX:
      return 2;
    case X86::RDI:
      return 5;
    case X86::RDX:
      return 1;
    case X86::RIP:
      return 16;
    case X86::RIZ:
      return -1;
    case X86::RSI:
      return 4;
    case X86::RSP:
      return 7;
    case X86::SI:
      return 4;
    case X86::SIL:
      return 4;
    case X86::SP:
      return 7;
    case X86::SPL:
      return 7;
    case X86::SS:
      return -1;
    case X86::ST0:
      return 33;
    case X86::ST1:
      return 34;
    case X86::ST2:
      return 35;
    case X86::ST3:
      return 36;
    case X86::ST4:
      return 37;
    case X86::ST5:
      return 38;
    case X86::ST6:
      return 39;
    case X86::ST7:
      return 40;
    case X86::XMM0:
      return 17;
    case X86::XMM1:
      return 18;
    case X86::XMM2:
      return 19;
    case X86::XMM3:
      return 20;
    case X86::XMM4:
      return 21;
    case X86::XMM5:
      return 22;
    case X86::XMM6:
      return 23;
    case X86::XMM7:
      return 24;
    case X86::XMM8:
      return 25;
    case X86::XMM9:
      return 26;
    case X86::XMM10:
      return 27;
    case X86::XMM11:
      return 28;
    case X86::XMM12:
      return 29;
    case X86::XMM13:
      return 30;
    case X86::XMM14:
      return 31;
    case X86::XMM15:
      return 32;
    case X86::YMM0:
      return 17;
    case X86::YMM1:
      return 18;
    case X86::YMM2:
      return 19;
    case X86::YMM3:
      return 20;
    case X86::YMM4:
      return 21;
    case X86::YMM5:
      return 22;
    case X86::YMM6:
      return 23;
    case X86::YMM7:
      return 24;
    case X86::YMM8:
      return 25;
    case X86::YMM9:
      return 26;
    case X86::YMM10:
      return 27;
    case X86::YMM11:
      return 28;
    case X86::YMM12:
      return 29;
    case X86::YMM13:
      return 30;
    case X86::YMM14:
      return 31;
    case X86::YMM15:
      return 32;
    };
  case 1:
    switch (RegNum) {
    default:
      assert(0 && "Invalid RegNum");
      return -1;
    case X86::AH:
      return 0;
    case X86::AL:
      return 0;
    case X86::AX:
      return 0;
    case X86::BH:
      return 3;
    case X86::BL:
      return 3;
    case X86::BP:
      return 4;
    case X86::BPL:
      return 4;
    case X86::BX:
      return 3;
    case X86::CH:
      return 1;
    case X86::CL:
      return 1;
    case X86::CR0:
      return -1;
    case X86::CR1:
      return -1;
    case X86::CR2:
      return -1;
    case X86::CR3:
      return -1;
    case X86::CR4:
      return -1;
    case X86::CR5:
      return -1;
    case X86::CR6:
      return -1;
    case X86::CR7:
      return -1;
    case X86::CR8:
      return -1;
    case X86::CS:
      return -1;
    case X86::CX:
      return 1;
    case X86::DH:
      return 2;
    case X86::DI:
      return 7;
    case X86::DIL:
      return 7;
    case X86::DL:
      return 2;
    case X86::DR0:
      return -1;
    case X86::DR1:
      return -1;
    case X86::DR2:
      return -1;
    case X86::DR3:
      return -1;
    case X86::DR4:
      return -1;
    case X86::DR5:
      return -1;
    case X86::DR6:
      return -1;
    case X86::DR7:
      return -1;
    case X86::DS:
      return -1;
    case X86::DX:
      return 2;
    case X86::EAX:
      return 0;
    case X86::EBP:
      return 4;
    case X86::EBX:
      return 3;
    case X86::ECX:
      return 1;
    case X86::EDI:
      return 7;
    case X86::EDX:
      return 2;
    case X86::EFLAGS:
      return -1;
    case X86::EIP:
      return 8;
    case X86::EIZ:
      return -1;
    case X86::ES:
      return -1;
    case X86::ESI:
      return 6;
    case X86::ESP:
      return 5;
    case X86::FP0:
      return -1;
    case X86::FP1:
      return -1;
    case X86::FP2:
      return -1;
    case X86::FP3:
      return -1;
    case X86::FP4:
      return -1;
    case X86::FP5:
      return -1;
    case X86::FP6:
      return -1;
    case X86::FS:
      return -1;
    case X86::GS:
      return -1;
    case X86::IP:
      return -1;
    case X86::MM0:
      return 29;
    case X86::MM1:
      return 30;
    case X86::MM2:
      return 31;
    case X86::MM3:
      return 32;
    case X86::MM4:
      return 33;
    case X86::MM5:
      return 34;
    case X86::MM6:
      return 35;
    case X86::MM7:
      return 36;
    case X86::R8:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R8B:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R8D:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R8W:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R9:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R9B:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R9D:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R9W:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R10:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R10B:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R10D:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R10W:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R11:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R11B:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R11D:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R11W:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R12:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R12B:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R12D:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R12W:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R13:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R13B:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R13D:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R13W:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R14:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R14B:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R14D:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R14W:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R15:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R15B:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R15D:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R15W:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::RAX:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::RBP:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::RBX:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::RCX:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::RDI:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::RDX:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::RIP:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::RIZ:
      return -1;
    case X86::RSI:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::RSP:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::SI:
      return 6;
    case X86::SIL:
      return 6;
    case X86::SP:
      return 5;
    case X86::SPL:
      return 5;
    case X86::SS:
      return -1;
    case X86::ST0:
      return 12;
    case X86::ST1:
      return 13;
    case X86::ST2:
      return 14;
    case X86::ST3:
      return 15;
    case X86::ST4:
      return 16;
    case X86::ST5:
      return 17;
    case X86::ST6:
      return 18;
    case X86::ST7:
      return 19;
    case X86::XMM0:
      return 21;
    case X86::XMM1:
      return 22;
    case X86::XMM2:
      return 23;
    case X86::XMM3:
      return 24;
    case X86::XMM4:
      return 25;
    case X86::XMM5:
      return 26;
    case X86::XMM6:
      return 27;
    case X86::XMM7:
      return 28;
    case X86::XMM8:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::XMM9:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::XMM10:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::XMM11:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::XMM12:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::XMM13:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::XMM14:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::XMM15:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::YMM0:
      return 21;
    case X86::YMM1:
      return 22;
    case X86::YMM2:
      return 23;
    case X86::YMM3:
      return 24;
    case X86::YMM4:
      return 25;
    case X86::YMM5:
      return 26;
    case X86::YMM6:
      return 27;
    case X86::YMM7:
      return 28;
    case X86::YMM8:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::YMM9:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::YMM10:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::YMM11:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::YMM12:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::YMM13:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::YMM14:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::YMM15:
      assert(0 && "Invalid register for this mode");
      return -1;
    };
  case 2:
    switch (RegNum) {
    default:
      assert(0 && "Invalid RegNum");
      return -1;
    case X86::AH:
      return 0;
    case X86::AL:
      return 0;
    case X86::AX:
      return 0;
    case X86::BH:
      return 3;
    case X86::BL:
      return 3;
    case X86::BP:
      return 5;
    case X86::BPL:
      return 5;
    case X86::BX:
      return 3;
    case X86::CH:
      return 1;
    case X86::CL:
      return 1;
    case X86::CR0:
      return -1;
    case X86::CR1:
      return -1;
    case X86::CR2:
      return -1;
    case X86::CR3:
      return -1;
    case X86::CR4:
      return -1;
    case X86::CR5:
      return -1;
    case X86::CR6:
      return -1;
    case X86::CR7:
      return -1;
    case X86::CR8:
      return -1;
    case X86::CS:
      return -1;
    case X86::CX:
      return 1;
    case X86::DH:
      return 2;
    case X86::DI:
      return 7;
    case X86::DIL:
      return 7;
    case X86::DL:
      return 2;
    case X86::DR0:
      return -1;
    case X86::DR1:
      return -1;
    case X86::DR2:
      return -1;
    case X86::DR3:
      return -1;
    case X86::DR4:
      return -1;
    case X86::DR5:
      return -1;
    case X86::DR6:
      return -1;
    case X86::DR7:
      return -1;
    case X86::DS:
      return -1;
    case X86::DX:
      return 2;
    case X86::EAX:
      return 0;
    case X86::EBP:
      return 5;
    case X86::EBX:
      return 3;
    case X86::ECX:
      return 1;
    case X86::EDI:
      return 7;
    case X86::EDX:
      return 2;
    case X86::EFLAGS:
      return -1;
    case X86::EIP:
      return 8;
    case X86::EIZ:
      return -1;
    case X86::ES:
      return -1;
    case X86::ESI:
      return 6;
    case X86::ESP:
      return 4;
    case X86::FP0:
      return -1;
    case X86::FP1:
      return -1;
    case X86::FP2:
      return -1;
    case X86::FP3:
      return -1;
    case X86::FP4:
      return -1;
    case X86::FP5:
      return -1;
    case X86::FP6:
      return -1;
    case X86::FS:
      return -1;
    case X86::GS:
      return -1;
    case X86::IP:
      return -1;
    case X86::MM0:
      return 29;
    case X86::MM1:
      return 30;
    case X86::MM2:
      return 31;
    case X86::MM3:
      return 32;
    case X86::MM4:
      return 33;
    case X86::MM5:
      return 34;
    case X86::MM6:
      return 35;
    case X86::MM7:
      return 36;
    case X86::R8:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R8B:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R8D:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R8W:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R9:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R9B:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R9D:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R9W:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R10:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R10B:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R10D:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R10W:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R11:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R11B:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R11D:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R11W:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R12:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R12B:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R12D:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R12W:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R13:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R13B:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R13D:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R13W:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R14:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R14B:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R14D:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R14W:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R15:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R15B:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R15D:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::R15W:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::RAX:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::RBP:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::RBX:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::RCX:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::RDI:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::RDX:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::RIP:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::RIZ:
      return -1;
    case X86::RSI:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::RSP:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::SI:
      return 6;
    case X86::SIL:
      return 6;
    case X86::SP:
      return 4;
    case X86::SPL:
      return 4;
    case X86::SS:
      return -1;
    case X86::ST0:
      return 11;
    case X86::ST1:
      return 12;
    case X86::ST2:
      return 13;
    case X86::ST3:
      return 14;
    case X86::ST4:
      return 15;
    case X86::ST5:
      return 16;
    case X86::ST6:
      return 17;
    case X86::ST7:
      return 18;
    case X86::XMM0:
      return 21;
    case X86::XMM1:
      return 22;
    case X86::XMM2:
      return 23;
    case X86::XMM3:
      return 24;
    case X86::XMM4:
      return 25;
    case X86::XMM5:
      return 26;
    case X86::XMM6:
      return 27;
    case X86::XMM7:
      return 28;
    case X86::XMM8:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::XMM9:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::XMM10:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::XMM11:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::XMM12:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::XMM13:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::XMM14:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::XMM15:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::YMM0:
      return 21;
    case X86::YMM1:
      return 22;
    case X86::YMM2:
      return 23;
    case X86::YMM3:
      return 24;
    case X86::YMM4:
      return 25;
    case X86::YMM5:
      return 26;
    case X86::YMM6:
      return 27;
    case X86::YMM7:
      return 28;
    case X86::YMM8:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::YMM9:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::YMM10:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::YMM11:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::YMM12:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::YMM13:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::YMM14:
      assert(0 && "Invalid register for this mode");
      return -1;
    case X86::YMM15:
      assert(0 && "Invalid register for this mode");
      return -1;
    };
  };
}

} // End llvm namespace