blob: aecca5fb8e5bb8e8753e77d3cc5d2efe662d74af [file] [log] [blame]
//===- TableGen'erated file -------------------------------------*- C++ -*-===//
//
// Target Register Enum Values
//
// Automatically generated file, do not edit!
//
//===----------------------------------------------------------------------===//
#ifdef GET_REGINFO_ENUM
#undef GET_REGINFO_ENUM
namespace llvm {
class MCRegisterClass;
extern MCRegisterClass X86MCRegisterClasses[];
namespace X86 {
enum {
NoRegister,
AH = 1,
AL = 2,
AX = 3,
BH = 4,
BL = 5,
BP = 6,
BPL = 7,
BX = 8,
CH = 9,
CL = 10,
CR0 = 11,
CR1 = 12,
CR2 = 13,
CR3 = 14,
CR4 = 15,
CR5 = 16,
CR6 = 17,
CR7 = 18,
CR8 = 19,
CR9 = 20,
CR10 = 21,
CR11 = 22,
CR12 = 23,
CR13 = 24,
CR14 = 25,
CR15 = 26,
CS = 27,
CX = 28,
DH = 29,
DI = 30,
DIL = 31,
DL = 32,
DR0 = 33,
DR1 = 34,
DR2 = 35,
DR3 = 36,
DR4 = 37,
DR5 = 38,
DR6 = 39,
DR7 = 40,
DS = 41,
DX = 42,
EAX = 43,
EBP = 44,
EBX = 45,
ECX = 46,
EDI = 47,
EDX = 48,
EFLAGS = 49,
EIP = 50,
EIZ = 51,
ES = 52,
ESI = 53,
ESP = 54,
FP0 = 55,
FP1 = 56,
FP2 = 57,
FP3 = 58,
FP4 = 59,
FP5 = 60,
FP6 = 61,
FS = 62,
GS = 63,
IP = 64,
MM0 = 65,
MM1 = 66,
MM2 = 67,
MM3 = 68,
MM4 = 69,
MM5 = 70,
MM6 = 71,
MM7 = 72,
R8 = 73,
R8B = 74,
R8D = 75,
R8W = 76,
R9 = 77,
R9B = 78,
R9D = 79,
R9W = 80,
R10 = 81,
R10B = 82,
R10D = 83,
R10W = 84,
R11 = 85,
R11B = 86,
R11D = 87,
R11W = 88,
R12 = 89,
R12B = 90,
R12D = 91,
R12W = 92,
R13 = 93,
R13B = 94,
R13D = 95,
R13W = 96,
R14 = 97,
R14B = 98,
R14D = 99,
R14W = 100,
R15 = 101,
R15B = 102,
R15D = 103,
R15W = 104,
RAX = 105,
RBP = 106,
RBX = 107,
RCX = 108,
RDI = 109,
RDX = 110,
RIP = 111,
RIZ = 112,
RSI = 113,
RSP = 114,
SI = 115,
SIL = 116,
SP = 117,
SPL = 118,
SS = 119,
ST0 = 120,
ST1 = 121,
ST2 = 122,
ST3 = 123,
ST4 = 124,
ST5 = 125,
ST6 = 126,
ST7 = 127,
XMM0 = 128,
XMM1 = 129,
XMM2 = 130,
XMM3 = 131,
XMM4 = 132,
XMM5 = 133,
XMM6 = 134,
XMM7 = 135,
XMM8 = 136,
XMM9 = 137,
XMM10 = 138,
XMM11 = 139,
XMM12 = 140,
XMM13 = 141,
XMM14 = 142,
XMM15 = 143,
YMM0 = 144,
YMM1 = 145,
YMM2 = 146,
YMM3 = 147,
YMM4 = 148,
YMM5 = 149,
YMM6 = 150,
YMM7 = 151,
YMM8 = 152,
YMM9 = 153,
YMM10 = 154,
YMM11 = 155,
YMM12 = 156,
YMM13 = 157,
YMM14 = 158,
YMM15 = 159,
NUM_TARGET_REGS // 160
};
}
// Register classes
namespace X86 {
enum {
GR8RegClassID = 0,
GR64RegClassID = 1,
GR16RegClassID = 2,
GR32RegClassID = 3,
FR32RegClassID = 4,
GR64_with_sub_8bitRegClassID = 5,
FR64RegClassID = 6,
CONTROL_REGRegClassID = 7,
VR128RegClassID = 8,
VR256RegClassID = 9,
GR32_NOSPRegClassID = 10,
GR32_NOAXRegClassID = 11,
GR64_NOSPRegClassID = 12,
GR64_TCRegClassID = 13,
GR64_NOREXRegClassID = 14,
GR8_NOREXRegClassID = 15,
GR16_NOREXRegClassID = 16,
GR32_NOREXRegClassID = 17,
DEBUG_REGRegClassID = 18,
VR64RegClassID = 19,
GR64_TC_with_sub_8bitRegClassID = 20,
GR64_NOREX_with_sub_8bitRegClassID = 21,
RSTRegClassID = 22,
RFP32RegClassID = 23,
GR32_NOREX_NOSPRegClassID = 24,
RFP64RegClassID = 25,
GR64_NOREX_NOSPRegClassID = 26,
RFP80RegClassID = 27,
SEGMENT_REGRegClassID = 28,
GR64_TCW64RegClassID = 29,
GR8_ABCD_LRegClassID = 30,
GR8_ABCD_HRegClassID = 31,
GR16_ABCDRegClassID = 32,
GR32_ABCDRegClassID = 33,
GR64_ABCDRegClassID = 34,
GR32_TCRegClassID = 35,
GR32_NOAX_with_sub_8bit_hiRegClassID = 36,
GR64_TC_with_sub_8bit_hiRegClassID = 37,
GR32_ADRegClassID = 38,
CCRRegClassID = 39
};
}
} // End llvm namespace
#endif // GET_REGINFO_ENUM
//===- TableGen'erated file -------------------------------------*- C++ -*-===//
//
// MC Register Information
//
// Automatically generated file, do not edit!
//
//===----------------------------------------------------------------------===//
#ifdef GET_REGINFO_MC_DESC
#undef GET_REGINFO_MC_DESC
namespace llvm {
struct X86GenMCRegisterInfo : public MCRegisterInfo {
explicit X86GenMCRegisterInfo(const MCRegisterDesc *D);
};
namespace {
const unsigned AH_Overlaps[] = { X86::AH, X86::AX, X86::EAX, X86::RAX, 0 };
const unsigned AL_Overlaps[] = { X86::AL, X86::AX, X86::EAX, X86::RAX, 0 };
const unsigned AX_Overlaps[] = { X86::AX, X86::AH, X86::AL, X86::EAX, X86::RAX, 0 };
const unsigned BH_Overlaps[] = { X86::BH, X86::BX, X86::EBX, X86::RBX, 0 };
const unsigned BL_Overlaps[] = { X86::BL, X86::BX, X86::EBX, X86::RBX, 0 };
const unsigned BP_Overlaps[] = { X86::BP, X86::BPL, X86::EBP, X86::RBP, 0 };
const unsigned BPL_Overlaps[] = { X86::BPL, X86::BP, X86::EBP, X86::RBP, 0 };
const unsigned BX_Overlaps[] = { X86::BX, X86::BH, X86::BL, X86::EBX, X86::RBX, 0 };
const unsigned CH_Overlaps[] = { X86::CH, X86::CX, X86::ECX, X86::RCX, 0 };
const unsigned CL_Overlaps[] = { X86::CL, X86::CX, X86::ECX, X86::RCX, 0 };
const unsigned CR0_Overlaps[] = { X86::CR0, 0 };
const unsigned CR1_Overlaps[] = { X86::CR1, 0 };
const unsigned CR2_Overlaps[] = { X86::CR2, 0 };
const unsigned CR3_Overlaps[] = { X86::CR3, 0 };
const unsigned CR4_Overlaps[] = { X86::CR4, 0 };
const unsigned CR5_Overlaps[] = { X86::CR5, 0 };
const unsigned CR6_Overlaps[] = { X86::CR6, 0 };
const unsigned CR7_Overlaps[] = { X86::CR7, 0 };
const unsigned CR8_Overlaps[] = { X86::CR8, 0 };
const unsigned CR9_Overlaps[] = { X86::CR9, 0 };
const unsigned CR10_Overlaps[] = { X86::CR10, 0 };
const unsigned CR11_Overlaps[] = { X86::CR11, 0 };
const unsigned CR12_Overlaps[] = { X86::CR12, 0 };
const unsigned CR13_Overlaps[] = { X86::CR13, 0 };
const unsigned CR14_Overlaps[] = { X86::CR14, 0 };
const unsigned CR15_Overlaps[] = { X86::CR15, 0 };
const unsigned CS_Overlaps[] = { X86::CS, 0 };
const unsigned CX_Overlaps[] = { X86::CX, X86::CH, X86::CL, X86::ECX, X86::RCX, 0 };
const unsigned DH_Overlaps[] = { X86::DH, X86::DX, X86::EDX, X86::RDX, 0 };
const unsigned DI_Overlaps[] = { X86::DI, X86::DIL, X86::EDI, X86::RDI, 0 };
const unsigned DIL_Overlaps[] = { X86::DIL, X86::DI, X86::EDI, X86::RDI, 0 };
const unsigned DL_Overlaps[] = { X86::DL, X86::DX, X86::EDX, X86::RDX, 0 };
const unsigned DR0_Overlaps[] = { X86::DR0, 0 };
const unsigned DR1_Overlaps[] = { X86::DR1, 0 };
const unsigned DR2_Overlaps[] = { X86::DR2, 0 };
const unsigned DR3_Overlaps[] = { X86::DR3, 0 };
const unsigned DR4_Overlaps[] = { X86::DR4, 0 };
const unsigned DR5_Overlaps[] = { X86::DR5, 0 };
const unsigned DR6_Overlaps[] = { X86::DR6, 0 };
const unsigned DR7_Overlaps[] = { X86::DR7, 0 };
const unsigned DS_Overlaps[] = { X86::DS, 0 };
const unsigned DX_Overlaps[] = { X86::DX, X86::DH, X86::DL, X86::EDX, X86::RDX, 0 };
const unsigned EAX_Overlaps[] = { X86::EAX, X86::AH, X86::AL, X86::AX, X86::RAX, 0 };
const unsigned EBP_Overlaps[] = { X86::EBP, X86::BP, X86::BPL, X86::RBP, 0 };
const unsigned EBX_Overlaps[] = { X86::EBX, X86::BH, X86::BL, X86::BX, X86::RBX, 0 };
const unsigned ECX_Overlaps[] = { X86::ECX, X86::CH, X86::CL, X86::CX, X86::RCX, 0 };
const unsigned EDI_Overlaps[] = { X86::EDI, X86::DI, X86::DIL, X86::RDI, 0 };
const unsigned EDX_Overlaps[] = { X86::EDX, X86::DH, X86::DL, X86::DX, X86::RDX, 0 };
const unsigned EFLAGS_Overlaps[] = { X86::EFLAGS, 0 };
const unsigned EIP_Overlaps[] = { X86::EIP, X86::IP, X86::RIP, 0 };
const unsigned EIZ_Overlaps[] = { X86::EIZ, 0 };
const unsigned ES_Overlaps[] = { X86::ES, 0 };
const unsigned ESI_Overlaps[] = { X86::ESI, X86::RSI, X86::SI, X86::SIL, 0 };
const unsigned ESP_Overlaps[] = { X86::ESP, X86::RSP, X86::SP, X86::SPL, 0 };
const unsigned FP0_Overlaps[] = { X86::FP0, X86::ST7, 0 };
const unsigned FP1_Overlaps[] = { X86::FP1, X86::ST6, 0 };
const unsigned FP2_Overlaps[] = { X86::FP2, X86::ST5, 0 };
const unsigned FP3_Overlaps[] = { X86::FP3, X86::ST4, 0 };
const unsigned FP4_Overlaps[] = { X86::FP4, X86::ST3, 0 };
const unsigned FP5_Overlaps[] = { X86::FP5, X86::ST2, 0 };
const unsigned FP6_Overlaps[] = { X86::FP6, X86::ST1, 0 };
const unsigned FS_Overlaps[] = { X86::FS, 0 };
const unsigned GS_Overlaps[] = { X86::GS, 0 };
const unsigned IP_Overlaps[] = { X86::IP, X86::EIP, X86::RIP, 0 };
const unsigned MM0_Overlaps[] = { X86::MM0, 0 };
const unsigned MM1_Overlaps[] = { X86::MM1, 0 };
const unsigned MM2_Overlaps[] = { X86::MM2, 0 };
const unsigned MM3_Overlaps[] = { X86::MM3, 0 };
const unsigned MM4_Overlaps[] = { X86::MM4, 0 };
const unsigned MM5_Overlaps[] = { X86::MM5, 0 };
const unsigned MM6_Overlaps[] = { X86::MM6, 0 };
const unsigned MM7_Overlaps[] = { X86::MM7, 0 };
const unsigned R8_Overlaps[] = { X86::R8, X86::R8B, X86::R8D, X86::R8W, 0 };
const unsigned R8B_Overlaps[] = { X86::R8B, X86::R8, X86::R8D, X86::R8W, 0 };
const unsigned R8D_Overlaps[] = { X86::R8D, X86::R8, X86::R8B, X86::R8W, 0 };
const unsigned R8W_Overlaps[] = { X86::R8W, X86::R8, X86::R8B, X86::R8D, 0 };
const unsigned R9_Overlaps[] = { X86::R9, X86::R9B, X86::R9D, X86::R9W, 0 };
const unsigned R9B_Overlaps[] = { X86::R9B, X86::R9, X86::R9D, X86::R9W, 0 };
const unsigned R9D_Overlaps[] = { X86::R9D, X86::R9, X86::R9B, X86::R9W, 0 };
const unsigned R9W_Overlaps[] = { X86::R9W, X86::R9, X86::R9B, X86::R9D, 0 };
const unsigned R10_Overlaps[] = { X86::R10, X86::R10B, X86::R10D, X86::R10W, 0 };
const unsigned R10B_Overlaps[] = { X86::R10B, X86::R10, X86::R10D, X86::R10W, 0 };
const unsigned R10D_Overlaps[] = { X86::R10D, X86::R10, X86::R10B, X86::R10W, 0 };
const unsigned R10W_Overlaps[] = { X86::R10W, X86::R10, X86::R10B, X86::R10D, 0 };
const unsigned R11_Overlaps[] = { X86::R11, X86::R11B, X86::R11D, X86::R11W, 0 };
const unsigned R11B_Overlaps[] = { X86::R11B, X86::R11, X86::R11D, X86::R11W, 0 };
const unsigned R11D_Overlaps[] = { X86::R11D, X86::R11, X86::R11B, X86::R11W, 0 };
const unsigned R11W_Overlaps[] = { X86::R11W, X86::R11, X86::R11B, X86::R11D, 0 };
const unsigned R12_Overlaps[] = { X86::R12, X86::R12B, X86::R12D, X86::R12W, 0 };
const unsigned R12B_Overlaps[] = { X86::R12B, X86::R12, X86::R12D, X86::R12W, 0 };
const unsigned R12D_Overlaps[] = { X86::R12D, X86::R12, X86::R12B, X86::R12W, 0 };
const unsigned R12W_Overlaps[] = { X86::R12W, X86::R12, X86::R12B, X86::R12D, 0 };
const unsigned R13_Overlaps[] = { X86::R13, X86::R13B, X86::R13D, X86::R13W, 0 };
const unsigned R13B_Overlaps[] = { X86::R13B, X86::R13, X86::R13D, X86::R13W, 0 };
const unsigned R13D_Overlaps[] = { X86::R13D, X86::R13, X86::R13B, X86::R13W, 0 };
const unsigned R13W_Overlaps[] = { X86::R13W, X86::R13, X86::R13B, X86::R13D, 0 };
const unsigned R14_Overlaps[] = { X86::R14, X86::R14B, X86::R14D, X86::R14W, 0 };
const unsigned R14B_Overlaps[] = { X86::R14B, X86::R14, X86::R14D, X86::R14W, 0 };
const unsigned R14D_Overlaps[] = { X86::R14D, X86::R14, X86::R14B, X86::R14W, 0 };
const unsigned R14W_Overlaps[] = { X86::R14W, X86::R14, X86::R14B, X86::R14D, 0 };
const unsigned R15_Overlaps[] = { X86::R15, X86::R15B, X86::R15D, X86::R15W, 0 };
const unsigned R15B_Overlaps[] = { X86::R15B, X86::R15, X86::R15D, X86::R15W, 0 };
const unsigned R15D_Overlaps[] = { X86::R15D, X86::R15, X86::R15B, X86::R15W, 0 };
const unsigned R15W_Overlaps[] = { X86::R15W, X86::R15, X86::R15B, X86::R15D, 0 };
const unsigned RAX_Overlaps[] = { X86::RAX, X86::AH, X86::AL, X86::AX, X86::EAX, 0 };
const unsigned RBP_Overlaps[] = { X86::RBP, X86::BP, X86::BPL, X86::EBP, 0 };
const unsigned RBX_Overlaps[] = { X86::RBX, X86::BH, X86::BL, X86::BX, X86::EBX, 0 };
const unsigned RCX_Overlaps[] = { X86::RCX, X86::CH, X86::CL, X86::CX, X86::ECX, 0 };
const unsigned RDI_Overlaps[] = { X86::RDI, X86::DI, X86::DIL, X86::EDI, 0 };
const unsigned RDX_Overlaps[] = { X86::RDX, X86::DH, X86::DL, X86::DX, X86::EDX, 0 };
const unsigned RIP_Overlaps[] = { X86::RIP, X86::EIP, X86::IP, 0 };
const unsigned RIZ_Overlaps[] = { X86::RIZ, 0 };
const unsigned RSI_Overlaps[] = { X86::RSI, X86::ESI, X86::SI, X86::SIL, 0 };
const unsigned RSP_Overlaps[] = { X86::RSP, X86::ESP, X86::SP, X86::SPL, 0 };
const unsigned SI_Overlaps[] = { X86::SI, X86::ESI, X86::RSI, X86::SIL, 0 };
const unsigned SIL_Overlaps[] = { X86::SIL, X86::ESI, X86::RSI, X86::SI, 0 };
const unsigned SP_Overlaps[] = { X86::SP, X86::ESP, X86::RSP, X86::SPL, 0 };
const unsigned SPL_Overlaps[] = { X86::SPL, X86::ESP, X86::RSP, X86::SP, 0 };
const unsigned SS_Overlaps[] = { X86::SS, 0 };
const unsigned ST0_Overlaps[] = { X86::ST0, 0 };
const unsigned ST1_Overlaps[] = { X86::ST1, X86::FP6, 0 };
const unsigned ST2_Overlaps[] = { X86::ST2, X86::FP5, 0 };
const unsigned ST3_Overlaps[] = { X86::ST3, X86::FP4, 0 };
const unsigned ST4_Overlaps[] = { X86::ST4, X86::FP3, 0 };
const unsigned ST5_Overlaps[] = { X86::ST5, X86::FP2, 0 };
const unsigned ST6_Overlaps[] = { X86::ST6, X86::FP1, 0 };
const unsigned ST7_Overlaps[] = { X86::ST7, X86::FP0, 0 };
const unsigned XMM0_Overlaps[] = { X86::XMM0, X86::YMM0, 0 };
const unsigned XMM1_Overlaps[] = { X86::XMM1, X86::YMM1, 0 };
const unsigned XMM2_Overlaps[] = { X86::XMM2, X86::YMM2, 0 };
const unsigned XMM3_Overlaps[] = { X86::XMM3, X86::YMM3, 0 };
const unsigned XMM4_Overlaps[] = { X86::XMM4, X86::YMM4, 0 };
const unsigned XMM5_Overlaps[] = { X86::XMM5, X86::YMM5, 0 };
const unsigned XMM6_Overlaps[] = { X86::XMM6, X86::YMM6, 0 };
const unsigned XMM7_Overlaps[] = { X86::XMM7, X86::YMM7, 0 };
const unsigned XMM8_Overlaps[] = { X86::XMM8, X86::YMM8, 0 };
const unsigned XMM9_Overlaps[] = { X86::XMM9, X86::YMM9, 0 };
const unsigned XMM10_Overlaps[] = { X86::XMM10, X86::YMM10, 0 };
const unsigned XMM11_Overlaps[] = { X86::XMM11, X86::YMM11, 0 };
const unsigned XMM12_Overlaps[] = { X86::XMM12, X86::YMM12, 0 };
const unsigned XMM13_Overlaps[] = { X86::XMM13, X86::YMM13, 0 };
const unsigned XMM14_Overlaps[] = { X86::XMM14, X86::YMM14, 0 };
const unsigned XMM15_Overlaps[] = { X86::XMM15, X86::YMM15, 0 };
const unsigned YMM0_Overlaps[] = { X86::YMM0, X86::XMM0, 0 };
const unsigned YMM1_Overlaps[] = { X86::YMM1, X86::XMM1, 0 };
const unsigned YMM2_Overlaps[] = { X86::YMM2, X86::XMM2, 0 };
const unsigned YMM3_Overlaps[] = { X86::YMM3, X86::XMM3, 0 };
const unsigned YMM4_Overlaps[] = { X86::YMM4, X86::XMM4, 0 };
const unsigned YMM5_Overlaps[] = { X86::YMM5, X86::XMM5, 0 };
const unsigned YMM6_Overlaps[] = { X86::YMM6, X86::XMM6, 0 };
const unsigned YMM7_Overlaps[] = { X86::YMM7, X86::XMM7, 0 };
const unsigned YMM8_Overlaps[] = { X86::YMM8, X86::XMM8, 0 };
const unsigned YMM9_Overlaps[] = { X86::YMM9, X86::XMM9, 0 };
const unsigned YMM10_Overlaps[] = { X86::YMM10, X86::XMM10, 0 };
const unsigned YMM11_Overlaps[] = { X86::YMM11, X86::XMM11, 0 };
const unsigned YMM12_Overlaps[] = { X86::YMM12, X86::XMM12, 0 };
const unsigned YMM13_Overlaps[] = { X86::YMM13, X86::XMM13, 0 };
const unsigned YMM14_Overlaps[] = { X86::YMM14, X86::XMM14, 0 };
const unsigned YMM15_Overlaps[] = { X86::YMM15, X86::XMM15, 0 };
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 XMM0_SubRegsSet[] = { 0 };
const unsigned XMM1_SubRegsSet[] = { 0 };
const unsigned XMM2_SubRegsSet[] = { 0 };
const unsigned XMM3_SubRegsSet[] = { 0 };
const unsigned XMM4_SubRegsSet[] = { 0 };
const unsigned XMM5_SubRegsSet[] = { 0 };
const unsigned XMM6_SubRegsSet[] = { 0 };
const unsigned XMM7_SubRegsSet[] = { 0 };
const unsigned XMM8_SubRegsSet[] = { 0 };
const unsigned XMM9_SubRegsSet[] = { 0 };
const unsigned XMM10_SubRegsSet[] = { 0 };
const unsigned XMM11_SubRegsSet[] = { 0 };
const unsigned XMM12_SubRegsSet[] = { 0 };
const unsigned XMM13_SubRegsSet[] = { 0 };
const unsigned XMM14_SubRegsSet[] = { 0 };
const unsigned XMM15_SubRegsSet[] = { 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 };
const unsigned Empty_SuperRegsSet[] = { 0 };
const unsigned AH_SuperRegsSet[] = { X86::AX, X86::EAX, X86::RAX, 0 };
const unsigned AL_SuperRegsSet[] = { X86::AX, X86::EAX, X86::RAX, 0 };
const unsigned AX_SuperRegsSet[] = { X86::EAX, X86::RAX, 0 };
const unsigned BH_SuperRegsSet[] = { X86::BX, X86::EBX, X86::RBX, 0 };
const unsigned BL_SuperRegsSet[] = { X86::BX, X86::EBX, X86::RBX, 0 };
const unsigned BP_SuperRegsSet[] = { X86::EBP, X86::RBP, 0 };
const unsigned BPL_SuperRegsSet[] = { X86::BP, X86::EBP, X86::RBP, 0 };
const unsigned BX_SuperRegsSet[] = { X86::EBX, X86::RBX, 0 };
const unsigned CH_SuperRegsSet[] = { X86::CX, X86::ECX, X86::RCX, 0 };
const unsigned CL_SuperRegsSet[] = { X86::CX, X86::ECX, X86::RCX, 0 };
const unsigned CX_SuperRegsSet[] = { X86::ECX, X86::RCX, 0 };
const unsigned DH_SuperRegsSet[] = { X86::DX, X86::EDX, X86::RDX, 0 };
const unsigned DI_SuperRegsSet[] = { X86::EDI, X86::RDI, 0 };
const unsigned DIL_SuperRegsSet[] = { X86::DI, X86::EDI, X86::RDI, 0 };
const unsigned DL_SuperRegsSet[] = { X86::DX, X86::EDX, X86::RDX, 0 };
const unsigned DX_SuperRegsSet[] = { X86::EDX, X86::RDX, 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::EIP, X86::RIP, 0 };
const unsigned R8B_SuperRegsSet[] = { X86::R8W, X86::R8D, X86::R8, 0 };
const unsigned R8D_SuperRegsSet[] = { X86::R8, 0 };
const unsigned R8W_SuperRegsSet[] = { X86::R8D, X86::R8, 0 };
const unsigned R9B_SuperRegsSet[] = { X86::R9W, X86::R9D, X86::R9, 0 };
const unsigned R9D_SuperRegsSet[] = { X86::R9, 0 };
const unsigned R9W_SuperRegsSet[] = { X86::R9D, X86::R9, 0 };
const unsigned R10B_SuperRegsSet[] = { X86::R10W, X86::R10D, X86::R10, 0 };
const unsigned R10D_SuperRegsSet[] = { X86::R10, 0 };
const unsigned R10W_SuperRegsSet[] = { X86::R10D, X86::R10, 0 };
const unsigned R11B_SuperRegsSet[] = { X86::R11W, X86::R11D, X86::R11, 0 };
const unsigned R11D_SuperRegsSet[] = { X86::R11, 0 };
const unsigned R11W_SuperRegsSet[] = { X86::R11D, X86::R11, 0 };
const unsigned R12B_SuperRegsSet[] = { X86::R12W, X86::R12D, X86::R12, 0 };
const unsigned R12D_SuperRegsSet[] = { X86::R12, 0 };
const unsigned R12W_SuperRegsSet[] = { X86::R12D, X86::R12, 0 };
const unsigned R13B_SuperRegsSet[] = { X86::R13W, X86::R13D, X86::R13, 0 };
const unsigned R13D_SuperRegsSet[] = { X86::R13, 0 };
const unsigned R13W_SuperRegsSet[] = { X86::R13D, X86::R13, 0 };
const unsigned R14B_SuperRegsSet[] = { X86::R14W, X86::R14D, X86::R14, 0 };
const unsigned R14D_SuperRegsSet[] = { X86::R14, 0 };
const unsigned R14W_SuperRegsSet[] = { X86::R14D, X86::R14, 0 };
const unsigned R15B_SuperRegsSet[] = { X86::R15W, X86::R15D, X86::R15, 0 };
const unsigned R15D_SuperRegsSet[] = { X86::R15, 0 };
const unsigned R15W_SuperRegsSet[] = { X86::R15D, X86::R15, 0 };
const unsigned SI_SuperRegsSet[] = { X86::ESI, X86::RSI, 0 };
const unsigned SIL_SuperRegsSet[] = { X86::SI, X86::ESI, X86::RSI, 0 };
const unsigned SP_SuperRegsSet[] = { X86::ESP, X86::RSP, 0 };
const unsigned SPL_SuperRegsSet[] = { X86::SP, X86::ESP, X86::RSP, 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 };
}
MCRegisterDesc X86RegDesc[] = { // Descriptors
{ "NOREG", 0, 0, 0 },
{ "AH", AH_Overlaps, Empty_SubRegsSet, AH_SuperRegsSet },
{ "AL", AL_Overlaps, Empty_SubRegsSet, AL_SuperRegsSet },
{ "AX", AX_Overlaps, AX_SubRegsSet, AX_SuperRegsSet },
{ "BH", BH_Overlaps, Empty_SubRegsSet, BH_SuperRegsSet },
{ "BL", BL_Overlaps, Empty_SubRegsSet, BL_SuperRegsSet },
{ "BP", BP_Overlaps, BP_SubRegsSet, BP_SuperRegsSet },
{ "BPL", BPL_Overlaps, Empty_SubRegsSet, BPL_SuperRegsSet },
{ "BX", BX_Overlaps, BX_SubRegsSet, BX_SuperRegsSet },
{ "CH", CH_Overlaps, Empty_SubRegsSet, CH_SuperRegsSet },
{ "CL", CL_Overlaps, Empty_SubRegsSet, CL_SuperRegsSet },
{ "CR0", CR0_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "CR1", CR1_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "CR2", CR2_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "CR3", CR3_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "CR4", CR4_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "CR5", CR5_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "CR6", CR6_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "CR7", CR7_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "CR8", CR8_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "CR9", CR9_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "CR10", CR10_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "CR11", CR11_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "CR12", CR12_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "CR13", CR13_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "CR14", CR14_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "CR15", CR15_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "CS", CS_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "CX", CX_Overlaps, CX_SubRegsSet, CX_SuperRegsSet },
{ "DH", DH_Overlaps, Empty_SubRegsSet, DH_SuperRegsSet },
{ "DI", DI_Overlaps, DI_SubRegsSet, DI_SuperRegsSet },
{ "DIL", DIL_Overlaps, Empty_SubRegsSet, DIL_SuperRegsSet },
{ "DL", DL_Overlaps, Empty_SubRegsSet, DL_SuperRegsSet },
{ "DR0", DR0_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "DR1", DR1_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "DR2", DR2_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "DR3", DR3_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "DR4", DR4_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "DR5", DR5_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "DR6", DR6_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "DR7", DR7_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "DS", DS_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "DX", DX_Overlaps, DX_SubRegsSet, DX_SuperRegsSet },
{ "EAX", EAX_Overlaps, EAX_SubRegsSet, EAX_SuperRegsSet },
{ "EBP", EBP_Overlaps, EBP_SubRegsSet, EBP_SuperRegsSet },
{ "EBX", EBX_Overlaps, EBX_SubRegsSet, EBX_SuperRegsSet },
{ "ECX", ECX_Overlaps, ECX_SubRegsSet, ECX_SuperRegsSet },
{ "EDI", EDI_Overlaps, EDI_SubRegsSet, EDI_SuperRegsSet },
{ "EDX", EDX_Overlaps, EDX_SubRegsSet, EDX_SuperRegsSet },
{ "EFLAGS", EFLAGS_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "EIP", EIP_Overlaps, EIP_SubRegsSet, EIP_SuperRegsSet },
{ "EIZ", EIZ_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "ES", ES_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "ESI", ESI_Overlaps, ESI_SubRegsSet, ESI_SuperRegsSet },
{ "ESP", ESP_Overlaps, ESP_SubRegsSet, ESP_SuperRegsSet },
{ "FP0", FP0_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "FP1", FP1_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "FP2", FP2_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "FP3", FP3_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "FP4", FP4_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "FP5", FP5_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "FP6", FP6_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "FS", FS_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "GS", GS_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "IP", IP_Overlaps, Empty_SubRegsSet, IP_SuperRegsSet },
{ "MM0", MM0_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "MM1", MM1_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "MM2", MM2_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "MM3", MM3_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "MM4", MM4_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "MM5", MM5_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "MM6", MM6_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "MM7", MM7_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "R8", R8_Overlaps, R8_SubRegsSet, Empty_SuperRegsSet },
{ "R8B", R8B_Overlaps, Empty_SubRegsSet, R8B_SuperRegsSet },
{ "R8D", R8D_Overlaps, R8D_SubRegsSet, R8D_SuperRegsSet },
{ "R8W", R8W_Overlaps, R8W_SubRegsSet, R8W_SuperRegsSet },
{ "R9", R9_Overlaps, R9_SubRegsSet, Empty_SuperRegsSet },
{ "R9B", R9B_Overlaps, Empty_SubRegsSet, R9B_SuperRegsSet },
{ "R9D", R9D_Overlaps, R9D_SubRegsSet, R9D_SuperRegsSet },
{ "R9W", R9W_Overlaps, R9W_SubRegsSet, R9W_SuperRegsSet },
{ "R10", R10_Overlaps, R10_SubRegsSet, Empty_SuperRegsSet },
{ "R10B", R10B_Overlaps, Empty_SubRegsSet, R10B_SuperRegsSet },
{ "R10D", R10D_Overlaps, R10D_SubRegsSet, R10D_SuperRegsSet },
{ "R10W", R10W_Overlaps, R10W_SubRegsSet, R10W_SuperRegsSet },
{ "R11", R11_Overlaps, R11_SubRegsSet, Empty_SuperRegsSet },
{ "R11B", R11B_Overlaps, Empty_SubRegsSet, R11B_SuperRegsSet },
{ "R11D", R11D_Overlaps, R11D_SubRegsSet, R11D_SuperRegsSet },
{ "R11W", R11W_Overlaps, R11W_SubRegsSet, R11W_SuperRegsSet },
{ "R12", R12_Overlaps, R12_SubRegsSet, Empty_SuperRegsSet },
{ "R12B", R12B_Overlaps, Empty_SubRegsSet, R12B_SuperRegsSet },
{ "R12D", R12D_Overlaps, R12D_SubRegsSet, R12D_SuperRegsSet },
{ "R12W", R12W_Overlaps, R12W_SubRegsSet, R12W_SuperRegsSet },
{ "R13", R13_Overlaps, R13_SubRegsSet, Empty_SuperRegsSet },
{ "R13B", R13B_Overlaps, Empty_SubRegsSet, R13B_SuperRegsSet },
{ "R13D", R13D_Overlaps, R13D_SubRegsSet, R13D_SuperRegsSet },
{ "R13W", R13W_Overlaps, R13W_SubRegsSet, R13W_SuperRegsSet },
{ "R14", R14_Overlaps, R14_SubRegsSet, Empty_SuperRegsSet },
{ "R14B", R14B_Overlaps, Empty_SubRegsSet, R14B_SuperRegsSet },
{ "R14D", R14D_Overlaps, R14D_SubRegsSet, R14D_SuperRegsSet },
{ "R14W", R14W_Overlaps, R14W_SubRegsSet, R14W_SuperRegsSet },
{ "R15", R15_Overlaps, R15_SubRegsSet, Empty_SuperRegsSet },
{ "R15B", R15B_Overlaps, Empty_SubRegsSet, R15B_SuperRegsSet },
{ "R15D", R15D_Overlaps, R15D_SubRegsSet, R15D_SuperRegsSet },
{ "R15W", R15W_Overlaps, R15W_SubRegsSet, R15W_SuperRegsSet },
{ "RAX", RAX_Overlaps, RAX_SubRegsSet, Empty_SuperRegsSet },
{ "RBP", RBP_Overlaps, RBP_SubRegsSet, Empty_SuperRegsSet },
{ "RBX", RBX_Overlaps, RBX_SubRegsSet, Empty_SuperRegsSet },
{ "RCX", RCX_Overlaps, RCX_SubRegsSet, Empty_SuperRegsSet },
{ "RDI", RDI_Overlaps, RDI_SubRegsSet, Empty_SuperRegsSet },
{ "RDX", RDX_Overlaps, RDX_SubRegsSet, Empty_SuperRegsSet },
{ "RIP", RIP_Overlaps, RIP_SubRegsSet, Empty_SuperRegsSet },
{ "RIZ", RIZ_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "RSI", RSI_Overlaps, RSI_SubRegsSet, Empty_SuperRegsSet },
{ "RSP", RSP_Overlaps, RSP_SubRegsSet, Empty_SuperRegsSet },
{ "SI", SI_Overlaps, SI_SubRegsSet, SI_SuperRegsSet },
{ "SIL", SIL_Overlaps, Empty_SubRegsSet, SIL_SuperRegsSet },
{ "SP", SP_Overlaps, SP_SubRegsSet, SP_SuperRegsSet },
{ "SPL", SPL_Overlaps, Empty_SubRegsSet, SPL_SuperRegsSet },
{ "SS", SS_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "ST0", ST0_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "ST1", ST1_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "ST2", ST2_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "ST3", ST3_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "ST4", ST4_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "ST5", ST5_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "ST6", ST6_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "ST7", ST7_Overlaps, Empty_SubRegsSet, Empty_SuperRegsSet },
{ "XMM0", XMM0_Overlaps, XMM0_SubRegsSet, XMM0_SuperRegsSet },
{ "XMM1", XMM1_Overlaps, XMM1_SubRegsSet, XMM1_SuperRegsSet },
{ "XMM2", XMM2_Overlaps, XMM2_SubRegsSet, XMM2_SuperRegsSet },
{ "XMM3", XMM3_Overlaps, XMM3_SubRegsSet, XMM3_SuperRegsSet },
{ "XMM4", XMM4_Overlaps, XMM4_SubRegsSet, XMM4_SuperRegsSet },
{ "XMM5", XMM5_Overlaps, XMM5_SubRegsSet, XMM5_SuperRegsSet },
{ "XMM6", XMM6_Overlaps, XMM6_SubRegsSet, XMM6_SuperRegsSet },
{ "XMM7", XMM7_Overlaps, XMM7_SubRegsSet, XMM7_SuperRegsSet },
{ "XMM8", XMM8_Overlaps, XMM8_SubRegsSet, XMM8_SuperRegsSet },
{ "XMM9", XMM9_Overlaps, XMM9_SubRegsSet, XMM9_SuperRegsSet },
{ "XMM10", XMM10_Overlaps, XMM10_SubRegsSet, XMM10_SuperRegsSet },
{ "XMM11", XMM11_Overlaps, XMM11_SubRegsSet, XMM11_SuperRegsSet },
{ "XMM12", XMM12_Overlaps, XMM12_SubRegsSet, XMM12_SuperRegsSet },
{ "XMM13", XMM13_Overlaps, XMM13_SubRegsSet, XMM13_SuperRegsSet },
{ "XMM14", XMM14_Overlaps, XMM14_SubRegsSet, XMM14_SuperRegsSet },
{ "XMM15", XMM15_Overlaps, XMM15_SubRegsSet, XMM15_SuperRegsSet },
{ "YMM0", YMM0_Overlaps, YMM0_SubRegsSet, Empty_SuperRegsSet },
{ "YMM1", YMM1_Overlaps, YMM1_SubRegsSet, Empty_SuperRegsSet },
{ "YMM2", YMM2_Overlaps, YMM2_SubRegsSet, Empty_SuperRegsSet },
{ "YMM3", YMM3_Overlaps, YMM3_SubRegsSet, Empty_SuperRegsSet },
{ "YMM4", YMM4_Overlaps, YMM4_SubRegsSet, Empty_SuperRegsSet },
{ "YMM5", YMM5_Overlaps, YMM5_SubRegsSet, Empty_SuperRegsSet },
{ "YMM6", YMM6_Overlaps, YMM6_SubRegsSet, Empty_SuperRegsSet },
{ "YMM7", YMM7_Overlaps, YMM7_SubRegsSet, Empty_SuperRegsSet },
{ "YMM8", YMM8_Overlaps, YMM8_SubRegsSet, Empty_SuperRegsSet },
{ "YMM9", YMM9_Overlaps, YMM9_SubRegsSet, Empty_SuperRegsSet },
{ "YMM10", YMM10_Overlaps, YMM10_SubRegsSet, Empty_SuperRegsSet },
{ "YMM11", YMM11_Overlaps, YMM11_SubRegsSet, Empty_SuperRegsSet },
{ "YMM12", YMM12_Overlaps, YMM12_SubRegsSet, Empty_SuperRegsSet },
{ "YMM13", YMM13_Overlaps, YMM13_SubRegsSet, Empty_SuperRegsSet },
{ "YMM14", YMM14_Overlaps, YMM14_SubRegsSet, Empty_SuperRegsSet },
{ "YMM15", YMM15_Overlaps, YMM15_SubRegsSet, Empty_SuperRegsSet },
};
namespace { // Register classes...
// 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 Bit set.
static const unsigned char GR8Bits[] = {
0xb6, 0x06, 0x00, 0xa0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x44, 0x44, 0x44, 0x44, 0x00, 0x50,
};
// 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 Bit set.
static const unsigned char GR64Bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0xfe, 0x06,
};
// 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 Bit set.
static const unsigned char GR16Bits[] = {
0x48, 0x01, 0x00, 0x50, 0x00, 0x04, 0x00, 0x00, 0x00, 0x10, 0x11, 0x11, 0x11, 0x01, 0x28,
};
// 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 Bit set.
static const unsigned char GR32Bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x61, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88,
};
// 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,
};
// FR32 Bit set.
static const unsigned char FR32Bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
};
// GR64_with_sub_8bit Register Class...
static const unsigned GR64_with_sub_8bit[] = {
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,
};
// GR64_with_sub_8bit Bit set.
static const unsigned char GR64_with_sub_8bitBits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x7e, 0x06,
};
// 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,
};
// FR64 Bit set.
static const unsigned char FR64Bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
};
// 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, X86::CR9, X86::CR10, X86::CR11, X86::CR12, X86::CR13, X86::CR14, X86::CR15,
};
// CONTROL_REG Bit set.
static const unsigned char CONTROL_REGBits[] = {
0x00, 0xf8, 0xff, 0x07,
};
// 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,
};
// VR128 Bit set.
static const unsigned char VR128Bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
};
// 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,
};
// VR256 Bit set.
static const unsigned char VR256Bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff,
};
// 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_NOSP Bit set.
static const unsigned char GR32_NOSPBits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x21, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88,
};
// GR32_NOAX Register Class...
static const unsigned GR32_NOAX[] = {
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_NOAX Bit set.
static const unsigned char GR32_NOAXBits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x61, 0x00, 0x00, 0x88, 0x88, 0x88, 0x88,
};
// 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_NOSP Bit set.
static const unsigned char GR64_NOSPBits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x22, 0x22, 0x22, 0x7e, 0x02,
};
// 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, X86::RIP,
};
// GR64_TC Bit set.
static const unsigned char GR64_TCBits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x20, 0x00, 0x00, 0xf2, 0x02,
};
// 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 Bit set.
static const unsigned char GR64_NOREXBits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x06,
};
// 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,
};
// GR8_NOREX Bit set.
static const unsigned char GR8_NOREXBits[] = {
0x36, 0x06, 0x00, 0x20, 0x01,
};
// 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,
};
// GR16_NOREX Bit set.
static const unsigned char GR16_NOREXBits[] = {
0x48, 0x01, 0x00, 0x50, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28,
};
// 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_NOREX Bit set.
static const unsigned char GR32_NOREXBits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x61,
};
// 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,
};
// DEBUG_REG Bit set.
static const unsigned char DEBUG_REGBits[] = {
0x00, 0x00, 0x00, 0x00, 0xfe, 0x01,
};
// VR64 Register Class...
static const unsigned VR64[] = {
X86::MM0, X86::MM1, X86::MM2, X86::MM3, X86::MM4, X86::MM5, X86::MM6, X86::MM7,
};
// VR64 Bit set.
static const unsigned char VR64Bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01,
};
// GR64_TC_with_sub_8bit Register Class...
static const unsigned GR64_TC_with_sub_8bit[] = {
X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::R8, X86::R9, X86::R11,
};
// GR64_TC_with_sub_8bit Bit set.
static const unsigned char GR64_TC_with_sub_8bitBits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x20, 0x00, 0x00, 0x72, 0x02,
};
// GR64_NOREX_with_sub_8bit Register Class...
static const unsigned GR64_NOREX_with_sub_8bit[] = {
X86::RAX, X86::RCX, X86::RDX, X86::RSI, X86::RDI, X86::RBX, X86::RBP, X86::RSP,
};
// GR64_NOREX_with_sub_8bit Bit set.
static const unsigned char GR64_NOREX_with_sub_8bitBits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x06,
};
// RST Register Class...
static const unsigned RST[] = {
X86::ST0, X86::ST1, X86::ST2, X86::ST3, X86::ST4, X86::ST5, X86::ST6, X86::ST7,
};
// RST Bit set.
static const unsigned char RSTBits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
};
// RFP32 Register Class...
static const unsigned RFP32[] = {
X86::FP0, X86::FP1, X86::FP2, X86::FP3, X86::FP4, X86::FP5, X86::FP6,
};
// RFP32 Bit set.
static const unsigned char RFP32Bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f,
};
// GR32_NOREX_NOSP Register Class...
static const unsigned GR32_NOREX_NOSP[] = {
X86::EAX, X86::ECX, X86::EDX, X86::ESI, X86::EDI, X86::EBX, X86::EBP,
};
// GR32_NOREX_NOSP Bit set.
static const unsigned char GR32_NOREX_NOSPBits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x21,
};
// RFP64 Register Class...
static const unsigned RFP64[] = {
X86::FP0, X86::FP1, X86::FP2, X86::FP3, X86::FP4, X86::FP5, X86::FP6,
};
// RFP64 Bit set.
static const unsigned char RFP64Bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f,
};
// 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_NOREX_NOSP Bit set.
static const unsigned char GR64_NOREX_NOSPBits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x02,
};
// RFP80 Register Class...
static const unsigned RFP80[] = {
X86::FP0, X86::FP1, X86::FP2, X86::FP3, X86::FP4, X86::FP5, X86::FP6,
};
// RFP80 Bit set.
static const unsigned char RFP80Bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f,
};
// SEGMENT_REG Register Class...
static const unsigned SEGMENT_REG[] = {
X86::CS, X86::DS, X86::SS, X86::ES, X86::FS, X86::GS,
};
// SEGMENT_REG Bit set.
static const unsigned char SEGMENT_REGBits[] = {
0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x10, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
};
// GR64_TCW64 Register Class...
static const unsigned GR64_TCW64[] = {
X86::RAX, X86::RCX, X86::RDX, X86::R8, X86::R9, X86::R11,
};
// GR64_TCW64 Bit set.
static const unsigned char GR64_TCW64Bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x20, 0x00, 0x00, 0x52,
};
// GR8_ABCD_L Register Class...
static const unsigned GR8_ABCD_L[] = {
X86::AL, X86::CL, X86::DL, X86::BL,
};
// GR8_ABCD_L Bit set.
static const unsigned char GR8_ABCD_LBits[] = {
0x24, 0x04, 0x00, 0x00, 0x01,
};
// GR8_ABCD_H Register Class...
static const unsigned GR8_ABCD_H[] = {
X86::AH, X86::CH, X86::DH, X86::BH,
};
// GR8_ABCD_H Bit set.
static const unsigned char GR8_ABCD_HBits[] = {
0x12, 0x02, 0x00, 0x20,
};
// GR16_ABCD Register Class...
static const unsigned GR16_ABCD[] = {
X86::AX, X86::CX, X86::DX, X86::BX,
};
// GR16_ABCD Bit set.
static const unsigned char GR16_ABCDBits[] = {
0x08, 0x01, 0x00, 0x10, 0x00, 0x04,
};
// GR32_ABCD Register Class...
static const unsigned GR32_ABCD[] = {
X86::EAX, X86::ECX, X86::EDX, X86::EBX,
};
// GR32_ABCD Bit set.
static const unsigned char GR32_ABCDBits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x01,
};
// GR64_ABCD Register Class...
static const unsigned GR64_ABCD[] = {
X86::RAX, X86::RCX, X86::RDX, X86::RBX,
};
// GR64_ABCD Bit set.
static const unsigned char GR64_ABCDBits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5a,
};
// GR32_TC Register Class...
static const unsigned GR32_TC[] = {
X86::EAX, X86::ECX, X86::EDX,
};
// GR32_TC Bit set.
static const unsigned char GR32_TCBits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x01,
};
// GR32_NOAX_with_sub_8bit_hi Register Class...
static const unsigned GR32_NOAX_with_sub_8bit_hi[] = {
X86::ECX, X86::EDX, X86::EBX,
};
// GR32_NOAX_with_sub_8bit_hi Bit set.
static const unsigned char GR32_NOAX_with_sub_8bit_hiBits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x01,
};
// GR64_TC_with_sub_8bit_hi Register Class...
static const unsigned GR64_TC_with_sub_8bit_hi[] = {
X86::RAX, X86::RCX, X86::RDX,
};
// GR64_TC_with_sub_8bit_hi Bit set.
static const unsigned char GR64_TC_with_sub_8bit_hiBits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52,
};
// GR32_AD Register Class...
static const unsigned GR32_AD[] = {
X86::EAX, X86::EDX,
};
// GR32_AD Bit set.
static const unsigned char GR32_ADBits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01,
};
// CCR Register Class...
static const unsigned CCR[] = {
X86::EFLAGS,
};
// CCR Bit set.
static const unsigned char CCRBits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
};
}
MCRegisterClass X86MCRegisterClasses[] = {
MCRegisterClass(X86::GR8RegClassID, "GR8", 1, 1, 1, 1, GR8, GR8 + 20, GR8Bits, sizeof(GR8Bits)),
MCRegisterClass(X86::GR64RegClassID, "GR64", 8, 8, 1, 1, GR64, GR64 + 17, GR64Bits, sizeof(GR64Bits)),
MCRegisterClass(X86::GR16RegClassID, "GR16", 2, 2, 1, 1, GR16, GR16 + 16, GR16Bits, sizeof(GR16Bits)),
MCRegisterClass(X86::GR32RegClassID, "GR32", 4, 4, 1, 1, GR32, GR32 + 16, GR32Bits, sizeof(GR32Bits)),
MCRegisterClass(X86::FR32RegClassID, "FR32", 4, 4, 1, 1, FR32, FR32 + 16, FR32Bits, sizeof(FR32Bits)),
MCRegisterClass(X86::GR64_with_sub_8bitRegClassID, "GR64_with_sub_8bit", 8, 8, 1, 1, GR64_with_sub_8bit, GR64_with_sub_8bit + 16, GR64_with_sub_8bitBits, sizeof(GR64_with_sub_8bitBits)),
MCRegisterClass(X86::FR64RegClassID, "FR64", 8, 8, 1, 1, FR64, FR64 + 16, FR64Bits, sizeof(FR64Bits)),
MCRegisterClass(X86::CONTROL_REGRegClassID, "CONTROL_REG", 8, 8, 1, 1, CONTROL_REG, CONTROL_REG + 16, CONTROL_REGBits, sizeof(CONTROL_REGBits)),
MCRegisterClass(X86::VR128RegClassID, "VR128", 16, 16, 1, 1, VR128, VR128 + 16, VR128Bits, sizeof(VR128Bits)),
MCRegisterClass(X86::VR256RegClassID, "VR256", 32, 32, 1, 1, VR256, VR256 + 16, VR256Bits, sizeof(VR256Bits)),
MCRegisterClass(X86::GR32_NOSPRegClassID, "GR32_NOSP", 4, 4, 1, 1, GR32_NOSP, GR32_NOSP + 15, GR32_NOSPBits, sizeof(GR32_NOSPBits)),
MCRegisterClass(X86::GR32_NOAXRegClassID, "GR32_NOAX", 4, 4, 1, 1, GR32_NOAX, GR32_NOAX + 15, GR32_NOAXBits, sizeof(GR32_NOAXBits)),
MCRegisterClass(X86::GR64_NOSPRegClassID, "GR64_NOSP", 8, 8, 1, 1, GR64_NOSP, GR64_NOSP + 15, GR64_NOSPBits, sizeof(GR64_NOSPBits)),
MCRegisterClass(X86::GR64_TCRegClassID, "GR64_TC", 8, 8, 1, 1, GR64_TC, GR64_TC + 9, GR64_TCBits, sizeof(GR64_TCBits)),
MCRegisterClass(X86::GR64_NOREXRegClassID, "GR64_NOREX", 8, 8, 1, 1, GR64_NOREX, GR64_NOREX + 9, GR64_NOREXBits, sizeof(GR64_NOREXBits)),
MCRegisterClass(X86::GR8_NOREXRegClassID, "GR8_NOREX", 1, 1, 1, 1, GR8_NOREX, GR8_NOREX + 8, GR8_NOREXBits, sizeof(GR8_NOREXBits)),
MCRegisterClass(X86::GR16_NOREXRegClassID, "GR16_NOREX", 2, 2, 1, 1, GR16_NOREX, GR16_NOREX + 8, GR16_NOREXBits, sizeof(GR16_NOREXBits)),
MCRegisterClass(X86::GR32_NOREXRegClassID, "GR32_NOREX", 4, 4, 1, 1, GR32_NOREX, GR32_NOREX + 8, GR32_NOREXBits, sizeof(GR32_NOREXBits)),
MCRegisterClass(X86::DEBUG_REGRegClassID, "DEBUG_REG", 4, 4, 1, 1, DEBUG_REG, DEBUG_REG + 8, DEBUG_REGBits, sizeof(DEBUG_REGBits)),
MCRegisterClass(X86::VR64RegClassID, "VR64", 8, 8, 1, 1, VR64, VR64 + 8, VR64Bits, sizeof(VR64Bits)),
MCRegisterClass(X86::GR64_TC_with_sub_8bitRegClassID, "GR64_TC_with_sub_8bit", 8, 8, 1, 1, GR64_TC_with_sub_8bit, GR64_TC_with_sub_8bit + 8, GR64_TC_with_sub_8bitBits, sizeof(GR64_TC_with_sub_8bitBits)),
MCRegisterClass(X86::GR64_NOREX_with_sub_8bitRegClassID, "GR64_NOREX_with_sub_8bit", 8, 8, 1, 1, GR64_NOREX_with_sub_8bit, GR64_NOREX_with_sub_8bit + 8, GR64_NOREX_with_sub_8bitBits, sizeof(GR64_NOREX_with_sub_8bitBits)),
MCRegisterClass(X86::RSTRegClassID, "RST", 10, 4, 1, 0, RST, RST + 8, RSTBits, sizeof(RSTBits)),
MCRegisterClass(X86::RFP32RegClassID, "RFP32", 4, 4, 1, 1, RFP32, RFP32 + 7, RFP32Bits, sizeof(RFP32Bits)),
MCRegisterClass(X86::GR32_NOREX_NOSPRegClassID, "GR32_NOREX_NOSP", 4, 4, 1, 1, GR32_NOREX_NOSP, GR32_NOREX_NOSP + 7, GR32_NOREX_NOSPBits, sizeof(GR32_NOREX_NOSPBits)),
MCRegisterClass(X86::RFP64RegClassID, "RFP64", 8, 4, 1, 1, RFP64, RFP64 + 7, RFP64Bits, sizeof(RFP64Bits)),
MCRegisterClass(X86::GR64_NOREX_NOSPRegClassID, "GR64_NOREX_NOSP", 8, 8, 1, 1, GR64_NOREX_NOSP, GR64_NOREX_NOSP + 7, GR64_NOREX_NOSPBits, sizeof(GR64_NOREX_NOSPBits)),
MCRegisterClass(X86::RFP80RegClassID, "RFP80", 10, 4, 1, 1, RFP80, RFP80 + 7, RFP80Bits, sizeof(RFP80Bits)),
MCRegisterClass(X86::SEGMENT_REGRegClassID, "SEGMENT_REG", 2, 2, 1, 1, SEGMENT_REG, SEGMENT_REG + 6, SEGMENT_REGBits, sizeof(SEGMENT_REGBits)),
MCRegisterClass(X86::GR64_TCW64RegClassID, "GR64_TCW64", 8, 8, 1, 1, GR64_TCW64, GR64_TCW64 + 6, GR64_TCW64Bits, sizeof(GR64_TCW64Bits)),
MCRegisterClass(X86::GR8_ABCD_LRegClassID, "GR8_ABCD_L", 1, 1, 1, 1, GR8_ABCD_L, GR8_ABCD_L + 4, GR8_ABCD_LBits, sizeof(GR8_ABCD_LBits)),
MCRegisterClass(X86::GR8_ABCD_HRegClassID, "GR8_ABCD_H", 1, 1, 1, 1, GR8_ABCD_H, GR8_ABCD_H + 4, GR8_ABCD_HBits, sizeof(GR8_ABCD_HBits)),
MCRegisterClass(X86::GR16_ABCDRegClassID, "GR16_ABCD", 2, 2, 1, 1, GR16_ABCD, GR16_ABCD + 4, GR16_ABCDBits, sizeof(GR16_ABCDBits)),
MCRegisterClass(X86::GR32_ABCDRegClassID, "GR32_ABCD", 4, 4, 1, 1, GR32_ABCD, GR32_ABCD + 4, GR32_ABCDBits, sizeof(GR32_ABCDBits)),
MCRegisterClass(X86::GR64_ABCDRegClassID, "GR64_ABCD", 8, 8, 1, 1, GR64_ABCD, GR64_ABCD + 4, GR64_ABCDBits, sizeof(GR64_ABCDBits)),
MCRegisterClass(X86::GR32_TCRegClassID, "GR32_TC", 4, 4, 1, 1, GR32_TC, GR32_TC + 3, GR32_TCBits, sizeof(GR32_TCBits)),
MCRegisterClass(X86::GR32_NOAX_with_sub_8bit_hiRegClassID, "GR32_NOAX_with_sub_8bit_hi", 4, 4, 1, 1, GR32_NOAX_with_sub_8bit_hi, GR32_NOAX_with_sub_8bit_hi + 3, GR32_NOAX_with_sub_8bit_hiBits, sizeof(GR32_NOAX_with_sub_8bit_hiBits)),
MCRegisterClass(X86::GR64_TC_with_sub_8bit_hiRegClassID, "GR64_TC_with_sub_8bit_hi", 8, 8, 1, 1, GR64_TC_with_sub_8bit_hi, GR64_TC_with_sub_8bit_hi + 3, GR64_TC_with_sub_8bit_hiBits, sizeof(GR64_TC_with_sub_8bit_hiBits)),
MCRegisterClass(X86::GR32_ADRegClassID, "GR32_AD", 4, 4, 1, 1, GR32_AD, GR32_AD + 2, GR32_ADBits, sizeof(GR32_ADBits)),
MCRegisterClass(X86::CCRRegClassID, "CCR", 4, 4, -1, 0, CCR, CCR + 1, CCRBits, sizeof(CCRBits)),
};
static inline void InitX86MCRegisterInfo(MCRegisterInfo *RI, unsigned RA, unsigned DwarfFlavour = 0, unsigned EHFlavour = 0) {
RI->InitMCRegisterInfo(X86RegDesc, 160, RA, X86MCRegisterClasses, 40);
switch (DwarfFlavour) {
default:
assert(0 && "Unknown DWARF flavour");
break;
case 0:
RI->mapDwarfRegToLLVMReg(41, X86::MM0, false );
RI->mapDwarfRegToLLVMReg(42, X86::MM1, false );
RI->mapDwarfRegToLLVMReg(43, X86::MM2, false );
RI->mapDwarfRegToLLVMReg(44, X86::MM3, false );
RI->mapDwarfRegToLLVMReg(45, X86::MM4, false );
RI->mapDwarfRegToLLVMReg(46, X86::MM5, false );
RI->mapDwarfRegToLLVMReg(47, X86::MM6, false );
RI->mapDwarfRegToLLVMReg(48, X86::MM7, false );
RI->mapDwarfRegToLLVMReg(8, X86::R8, false );
RI->mapDwarfRegToLLVMReg(9, X86::R9, false );
RI->mapDwarfRegToLLVMReg(10, X86::R10, false );
RI->mapDwarfRegToLLVMReg(11, X86::R11, false );
RI->mapDwarfRegToLLVMReg(12, X86::R12, false );
RI->mapDwarfRegToLLVMReg(13, X86::R13, false );
RI->mapDwarfRegToLLVMReg(14, X86::R14, false );
RI->mapDwarfRegToLLVMReg(15, X86::R15, false );
RI->mapDwarfRegToLLVMReg(0, X86::RAX, false );
RI->mapDwarfRegToLLVMReg(6, X86::RBP, false );
RI->mapDwarfRegToLLVMReg(3, X86::RBX, false );
RI->mapDwarfRegToLLVMReg(2, X86::RCX, false );
RI->mapDwarfRegToLLVMReg(5, X86::RDI, false );
RI->mapDwarfRegToLLVMReg(1, X86::RDX, false );
RI->mapDwarfRegToLLVMReg(16, X86::RIP, false );
RI->mapDwarfRegToLLVMReg(4, X86::RSI, false );
RI->mapDwarfRegToLLVMReg(7, X86::RSP, false );
RI->mapDwarfRegToLLVMReg(33, X86::ST0, false );
RI->mapDwarfRegToLLVMReg(34, X86::ST1, false );
RI->mapDwarfRegToLLVMReg(35, X86::ST2, false );
RI->mapDwarfRegToLLVMReg(36, X86::ST3, false );
RI->mapDwarfRegToLLVMReg(37, X86::ST4, false );
RI->mapDwarfRegToLLVMReg(38, X86::ST5, false );
RI->mapDwarfRegToLLVMReg(39, X86::ST6, false );
RI->mapDwarfRegToLLVMReg(40, X86::ST7, false );
RI->mapDwarfRegToLLVMReg(17, X86::XMM0, false );
RI->mapDwarfRegToLLVMReg(18, X86::XMM1, false );
RI->mapDwarfRegToLLVMReg(19, X86::XMM2, false );
RI->mapDwarfRegToLLVMReg(20, X86::XMM3, false );
RI->mapDwarfRegToLLVMReg(21, X86::XMM4, false );
RI->mapDwarfRegToLLVMReg(22, X86::XMM5, false );
RI->mapDwarfRegToLLVMReg(23, X86::XMM6, false );
RI->mapDwarfRegToLLVMReg(24, X86::XMM7, false );
RI->mapDwarfRegToLLVMReg(25, X86::XMM8, false );
RI->mapDwarfRegToLLVMReg(26, X86::XMM9, false );
RI->mapDwarfRegToLLVMReg(27, X86::XMM10, false );
RI->mapDwarfRegToLLVMReg(28, X86::XMM11, false );
RI->mapDwarfRegToLLVMReg(29, X86::XMM12, false );
RI->mapDwarfRegToLLVMReg(30, X86::XMM13, false );
RI->mapDwarfRegToLLVMReg(31, X86::XMM14, false );
RI->mapDwarfRegToLLVMReg(32, X86::XMM15, false );
break;
case 1:
RI->mapDwarfRegToLLVMReg(0, X86::EAX, false );
RI->mapDwarfRegToLLVMReg(4, X86::EBP, false );
RI->mapDwarfRegToLLVMReg(3, X86::EBX, false );
RI->mapDwarfRegToLLVMReg(1, X86::ECX, false );
RI->mapDwarfRegToLLVMReg(7, X86::EDI, false );
RI->mapDwarfRegToLLVMReg(2, X86::EDX, false );
RI->mapDwarfRegToLLVMReg(8, X86::EIP, false );
RI->mapDwarfRegToLLVMReg(6, X86::ESI, false );
RI->mapDwarfRegToLLVMReg(5, X86::ESP, false );
RI->mapDwarfRegToLLVMReg(29, X86::MM0, false );
RI->mapDwarfRegToLLVMReg(30, X86::MM1, false );
RI->mapDwarfRegToLLVMReg(31, X86::MM2, false );
RI->mapDwarfRegToLLVMReg(32, X86::MM3, false );
RI->mapDwarfRegToLLVMReg(33, X86::MM4, false );
RI->mapDwarfRegToLLVMReg(34, X86::MM5, false );
RI->mapDwarfRegToLLVMReg(35, X86::MM6, false );
RI->mapDwarfRegToLLVMReg(36, X86::MM7, false );
RI->mapDwarfRegToLLVMReg(12, X86::ST0, false );
RI->mapDwarfRegToLLVMReg(13, X86::ST1, false );
RI->mapDwarfRegToLLVMReg(14, X86::ST2, false );
RI->mapDwarfRegToLLVMReg(15, X86::ST3, false );
RI->mapDwarfRegToLLVMReg(16, X86::ST4, false );
RI->mapDwarfRegToLLVMReg(17, X86::ST5, false );
RI->mapDwarfRegToLLVMReg(18, X86::ST6, false );
RI->mapDwarfRegToLLVMReg(19, X86::ST7, false );
RI->mapDwarfRegToLLVMReg(21, X86::XMM0, false );
RI->mapDwarfRegToLLVMReg(22, X86::XMM1, false );
RI->mapDwarfRegToLLVMReg(23, X86::XMM2, false );
RI->mapDwarfRegToLLVMReg(24, X86::XMM3, false );
RI->mapDwarfRegToLLVMReg(25, X86::XMM4, false );
RI->mapDwarfRegToLLVMReg(26, X86::XMM5, false );
RI->mapDwarfRegToLLVMReg(27, X86::XMM6, false );
RI->mapDwarfRegToLLVMReg(28, X86::XMM7, false );
break;
case 2:
RI->mapDwarfRegToLLVMReg(0, X86::EAX, false );
RI->mapDwarfRegToLLVMReg(5, X86::EBP, false );
RI->mapDwarfRegToLLVMReg(3, X86::EBX, false );
RI->mapDwarfRegToLLVMReg(1, X86::ECX, false );
RI->mapDwarfRegToLLVMReg(7, X86::EDI, false );
RI->mapDwarfRegToLLVMReg(2, X86::EDX, false );
RI->mapDwarfRegToLLVMReg(8, X86::EIP, false );
RI->mapDwarfRegToLLVMReg(6, X86::ESI, false );
RI->mapDwarfRegToLLVMReg(4, X86::ESP, false );
RI->mapDwarfRegToLLVMReg(29, X86::MM0, false );
RI->mapDwarfRegToLLVMReg(30, X86::MM1, false );
RI->mapDwarfRegToLLVMReg(31, X86::MM2, false );
RI->mapDwarfRegToLLVMReg(32, X86::MM3, false );
RI->mapDwarfRegToLLVMReg(33, X86::MM4, false );
RI->mapDwarfRegToLLVMReg(34, X86::MM5, false );
RI->mapDwarfRegToLLVMReg(35, X86::MM6, false );
RI->mapDwarfRegToLLVMReg(36, X86::MM7, false );
RI->mapDwarfRegToLLVMReg(11, X86::ST0, false );
RI->mapDwarfRegToLLVMReg(12, X86::ST1, false );
RI->mapDwarfRegToLLVMReg(13, X86::ST2, false );
RI->mapDwarfRegToLLVMReg(14, X86::ST3, false );
RI->mapDwarfRegToLLVMReg(15, X86::ST4, false );
RI->mapDwarfRegToLLVMReg(16, X86::ST5, false );
RI->mapDwarfRegToLLVMReg(17, X86::ST6, false );
RI->mapDwarfRegToLLVMReg(18, X86::ST7, false );
RI->mapDwarfRegToLLVMReg(21, X86::XMM0, false );
RI->mapDwarfRegToLLVMReg(22, X86::XMM1, false );
RI->mapDwarfRegToLLVMReg(23, X86::XMM2, false );
RI->mapDwarfRegToLLVMReg(24, X86::XMM3, false );
RI->mapDwarfRegToLLVMReg(25, X86::XMM4, false );
RI->mapDwarfRegToLLVMReg(26, X86::XMM5, false );
RI->mapDwarfRegToLLVMReg(27, X86::XMM6, false );
RI->mapDwarfRegToLLVMReg(28, X86::XMM7, false );
break;
}
switch (EHFlavour) {
default:
assert(0 && "Unknown DWARF flavour");
break;
case 0:
RI->mapDwarfRegToLLVMReg(41, X86::MM0, true );
RI->mapDwarfRegToLLVMReg(42, X86::MM1, true );
RI->mapDwarfRegToLLVMReg(43, X86::MM2, true );
RI->mapDwarfRegToLLVMReg(44, X86::MM3, true );
RI->mapDwarfRegToLLVMReg(45, X86::MM4, true );
RI->mapDwarfRegToLLVMReg(46, X86::MM5, true );
RI->mapDwarfRegToLLVMReg(47, X86::MM6, true );
RI->mapDwarfRegToLLVMReg(48, X86::MM7, true );
RI->mapDwarfRegToLLVMReg(8, X86::R8, true );
RI->mapDwarfRegToLLVMReg(9, X86::R9, true );
RI->mapDwarfRegToLLVMReg(10, X86::R10, true );
RI->mapDwarfRegToLLVMReg(11, X86::R11, true );
RI->mapDwarfRegToLLVMReg(12, X86::R12, true );
RI->mapDwarfRegToLLVMReg(13, X86::R13, true );
RI->mapDwarfRegToLLVMReg(14, X86::R14, true );
RI->mapDwarfRegToLLVMReg(15, X86::R15, true );
RI->mapDwarfRegToLLVMReg(0, X86::RAX, true );
RI->mapDwarfRegToLLVMReg(6, X86::RBP, true );
RI->mapDwarfRegToLLVMReg(3, X86::RBX, true );
RI->mapDwarfRegToLLVMReg(2, X86::RCX, true );
RI->mapDwarfRegToLLVMReg(5, X86::RDI, true );
RI->mapDwarfRegToLLVMReg(1, X86::RDX, true );
RI->mapDwarfRegToLLVMReg(16, X86::RIP, true );
RI->mapDwarfRegToLLVMReg(4, X86::RSI, true );
RI->mapDwarfRegToLLVMReg(7, X86::RSP, true );
RI->mapDwarfRegToLLVMReg(33, X86::ST0, true );
RI->mapDwarfRegToLLVMReg(34, X86::ST1, true );
RI->mapDwarfRegToLLVMReg(35, X86::ST2, true );
RI->mapDwarfRegToLLVMReg(36, X86::ST3, true );
RI->mapDwarfRegToLLVMReg(37, X86::ST4, true );
RI->mapDwarfRegToLLVMReg(38, X86::ST5, true );
RI->mapDwarfRegToLLVMReg(39, X86::ST6, true );
RI->mapDwarfRegToLLVMReg(40, X86::ST7, true );
RI->mapDwarfRegToLLVMReg(17, X86::XMM0, true );
RI->mapDwarfRegToLLVMReg(18, X86::XMM1, true );
RI->mapDwarfRegToLLVMReg(19, X86::XMM2, true );
RI->mapDwarfRegToLLVMReg(20, X86::XMM3, true );
RI->mapDwarfRegToLLVMReg(21, X86::XMM4, true );
RI->mapDwarfRegToLLVMReg(22, X86::XMM5, true );
RI->mapDwarfRegToLLVMReg(23, X86::XMM6, true );
RI->mapDwarfRegToLLVMReg(24, X86::XMM7, true );
RI->mapDwarfRegToLLVMReg(25, X86::XMM8, true );
RI->mapDwarfRegToLLVMReg(26, X86::XMM9, true );
RI->mapDwarfRegToLLVMReg(27, X86::XMM10, true );
RI->mapDwarfRegToLLVMReg(28, X86::XMM11, true );
RI->mapDwarfRegToLLVMReg(29, X86::XMM12, true );
RI->mapDwarfRegToLLVMReg(30, X86::XMM13, true );
RI->mapDwarfRegToLLVMReg(31, X86::XMM14, true );
RI->mapDwarfRegToLLVMReg(32, X86::XMM15, true );
break;
case 1:
RI->mapDwarfRegToLLVMReg(0, X86::EAX, true );
RI->mapDwarfRegToLLVMReg(4, X86::EBP, true );
RI->mapDwarfRegToLLVMReg(3, X86::EBX, true );
RI->mapDwarfRegToLLVMReg(1, X86::ECX, true );
RI->mapDwarfRegToLLVMReg(7, X86::EDI, true );
RI->mapDwarfRegToLLVMReg(2, X86::EDX, true );
RI->mapDwarfRegToLLVMReg(8, X86::EIP, true );
RI->mapDwarfRegToLLVMReg(6, X86::ESI, true );
RI->mapDwarfRegToLLVMReg(5, X86::ESP, true );
RI->mapDwarfRegToLLVMReg(29, X86::MM0, true );
RI->mapDwarfRegToLLVMReg(30, X86::MM1, true );
RI->mapDwarfRegToLLVMReg(31, X86::MM2, true );
RI->mapDwarfRegToLLVMReg(32, X86::MM3, true );
RI->mapDwarfRegToLLVMReg(33, X86::MM4, true );
RI->mapDwarfRegToLLVMReg(34, X86::MM5, true );
RI->mapDwarfRegToLLVMReg(35, X86::MM6, true );
RI->mapDwarfRegToLLVMReg(36, X86::MM7, true );
RI->mapDwarfRegToLLVMReg(12, X86::ST0, true );
RI->mapDwarfRegToLLVMReg(13, X86::ST1, true );
RI->mapDwarfRegToLLVMReg(14, X86::ST2, true );
RI->mapDwarfRegToLLVMReg(15, X86::ST3, true );
RI->mapDwarfRegToLLVMReg(16, X86::ST4, true );
RI->mapDwarfRegToLLVMReg(17, X86::ST5, true );
RI->mapDwarfRegToLLVMReg(18, X86::ST6, true );
RI->mapDwarfRegToLLVMReg(19, X86::ST7, true );
RI->mapDwarfRegToLLVMReg(21, X86::XMM0, true );
RI->mapDwarfRegToLLVMReg(22, X86::XMM1, true );
RI->mapDwarfRegToLLVMReg(23, X86::XMM2, true );
RI->mapDwarfRegToLLVMReg(24, X86::XMM3, true );
RI->mapDwarfRegToLLVMReg(25, X86::XMM4, true );
RI->mapDwarfRegToLLVMReg(26, X86::XMM5, true );
RI->mapDwarfRegToLLVMReg(27, X86::XMM6, true );
RI->mapDwarfRegToLLVMReg(28, X86::XMM7, true );
break;
case 2:
RI->mapDwarfRegToLLVMReg(0, X86::EAX, true );
RI->mapDwarfRegToLLVMReg(5, X86::EBP, true );
RI->mapDwarfRegToLLVMReg(3, X86::EBX, true );
RI->mapDwarfRegToLLVMReg(1, X86::ECX, true );
RI->mapDwarfRegToLLVMReg(7, X86::EDI, true );
RI->mapDwarfRegToLLVMReg(2, X86::EDX, true );
RI->mapDwarfRegToLLVMReg(8, X86::EIP, true );
RI->mapDwarfRegToLLVMReg(6, X86::ESI, true );
RI->mapDwarfRegToLLVMReg(4, X86::ESP, true );
RI->mapDwarfRegToLLVMReg(29, X86::MM0, true );
RI->mapDwarfRegToLLVMReg(30, X86::MM1, true );
RI->mapDwarfRegToLLVMReg(31, X86::MM2, true );
RI->mapDwarfRegToLLVMReg(32, X86::MM3, true );
RI->mapDwarfRegToLLVMReg(33, X86::MM4, true );
RI->mapDwarfRegToLLVMReg(34, X86::MM5, true );
RI->mapDwarfRegToLLVMReg(35, X86::MM6, true );
RI->mapDwarfRegToLLVMReg(36, X86::MM7, true );
RI->mapDwarfRegToLLVMReg(11, X86::ST0, true );
RI->mapDwarfRegToLLVMReg(12, X86::ST1, true );
RI->mapDwarfRegToLLVMReg(13, X86::ST2, true );
RI->mapDwarfRegToLLVMReg(14, X86::ST3, true );
RI->mapDwarfRegToLLVMReg(15, X86::ST4, true );
RI->mapDwarfRegToLLVMReg(16, X86::ST5, true );
RI->mapDwarfRegToLLVMReg(17, X86::ST6, true );
RI->mapDwarfRegToLLVMReg(18, X86::ST7, true );
RI->mapDwarfRegToLLVMReg(21, X86::XMM0, true );
RI->mapDwarfRegToLLVMReg(22, X86::XMM1, true );
RI->mapDwarfRegToLLVMReg(23, X86::XMM2, true );
RI->mapDwarfRegToLLVMReg(24, X86::XMM3, true );
RI->mapDwarfRegToLLVMReg(25, X86::XMM4, true );
RI->mapDwarfRegToLLVMReg(26, X86::XMM5, true );
RI->mapDwarfRegToLLVMReg(27, X86::XMM6, true );
RI->mapDwarfRegToLLVMReg(28, X86::XMM7, true );
break;
}
switch (DwarfFlavour) {
default:
assert(0 && "Unknown DWARF flavour");
break;
case 0:
RI->mapLLVMRegToDwarfReg(X86::AH, -1, false );
RI->mapLLVMRegToDwarfReg(X86::AL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::AX, -1, false );
RI->mapLLVMRegToDwarfReg(X86::BH, -1, false );
RI->mapLLVMRegToDwarfReg(X86::BL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::BP, -1, false );
RI->mapLLVMRegToDwarfReg(X86::BPL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::BX, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CH, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR0, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR1, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR2, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR3, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR4, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR5, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR6, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR7, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR8, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR9, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR10, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR11, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR12, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR13, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR14, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR15, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CS, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CX, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DH, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DI, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DIL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR0, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR1, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR2, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR3, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR4, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR5, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR6, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR7, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DS, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DX, -1, false );
RI->mapLLVMRegToDwarfReg(X86::EAX, -2, false );
RI->mapLLVMRegToDwarfReg(X86::EBP, -2, false );
RI->mapLLVMRegToDwarfReg(X86::EBX, -2, false );
RI->mapLLVMRegToDwarfReg(X86::ECX, -2, false );
RI->mapLLVMRegToDwarfReg(X86::EDI, -2, false );
RI->mapLLVMRegToDwarfReg(X86::EDX, -2, false );
RI->mapLLVMRegToDwarfReg(X86::EFLAGS, -1, false );
RI->mapLLVMRegToDwarfReg(X86::EIP, -2, false );
RI->mapLLVMRegToDwarfReg(X86::EIZ, -1, false );
RI->mapLLVMRegToDwarfReg(X86::ES, -1, false );
RI->mapLLVMRegToDwarfReg(X86::ESI, -2, false );
RI->mapLLVMRegToDwarfReg(X86::ESP, -2, false );
RI->mapLLVMRegToDwarfReg(X86::FP0, -1, false );
RI->mapLLVMRegToDwarfReg(X86::FP1, -1, false );
RI->mapLLVMRegToDwarfReg(X86::FP2, -1, false );
RI->mapLLVMRegToDwarfReg(X86::FP3, -1, false );
RI->mapLLVMRegToDwarfReg(X86::FP4, -1, false );
RI->mapLLVMRegToDwarfReg(X86::FP5, -1, false );
RI->mapLLVMRegToDwarfReg(X86::FP6, -1, false );
RI->mapLLVMRegToDwarfReg(X86::FS, -1, false );
RI->mapLLVMRegToDwarfReg(X86::GS, -1, false );
RI->mapLLVMRegToDwarfReg(X86::IP, -1, false );
RI->mapLLVMRegToDwarfReg(X86::MM0, 41, false );
RI->mapLLVMRegToDwarfReg(X86::MM1, 42, false );
RI->mapLLVMRegToDwarfReg(X86::MM2, 43, false );
RI->mapLLVMRegToDwarfReg(X86::MM3, 44, false );
RI->mapLLVMRegToDwarfReg(X86::MM4, 45, false );
RI->mapLLVMRegToDwarfReg(X86::MM5, 46, false );
RI->mapLLVMRegToDwarfReg(X86::MM6, 47, false );
RI->mapLLVMRegToDwarfReg(X86::MM7, 48, false );
RI->mapLLVMRegToDwarfReg(X86::R8, 8, false );
RI->mapLLVMRegToDwarfReg(X86::R8B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R8D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R8W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R9, 9, false );
RI->mapLLVMRegToDwarfReg(X86::R9B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R9D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R9W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R10, 10, false );
RI->mapLLVMRegToDwarfReg(X86::R10B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R10D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R10W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R11, 11, false );
RI->mapLLVMRegToDwarfReg(X86::R11B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R11D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R11W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R12, 12, false );
RI->mapLLVMRegToDwarfReg(X86::R12B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R12D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R12W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R13, 13, false );
RI->mapLLVMRegToDwarfReg(X86::R13B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R13D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R13W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R14, 14, false );
RI->mapLLVMRegToDwarfReg(X86::R14B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R14D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R14W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R15, 15, false );
RI->mapLLVMRegToDwarfReg(X86::R15B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R15D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R15W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::RAX, 0, false );
RI->mapLLVMRegToDwarfReg(X86::RBP, 6, false );
RI->mapLLVMRegToDwarfReg(X86::RBX, 3, false );
RI->mapLLVMRegToDwarfReg(X86::RCX, 2, false );
RI->mapLLVMRegToDwarfReg(X86::RDI, 5, false );
RI->mapLLVMRegToDwarfReg(X86::RDX, 1, false );
RI->mapLLVMRegToDwarfReg(X86::RIP, 16, false );
RI->mapLLVMRegToDwarfReg(X86::RIZ, -1, false );
RI->mapLLVMRegToDwarfReg(X86::RSI, 4, false );
RI->mapLLVMRegToDwarfReg(X86::RSP, 7, false );
RI->mapLLVMRegToDwarfReg(X86::SI, -1, false );
RI->mapLLVMRegToDwarfReg(X86::SIL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::SP, -1, false );
RI->mapLLVMRegToDwarfReg(X86::SPL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::SS, -1, false );
RI->mapLLVMRegToDwarfReg(X86::ST0, 33, false );
RI->mapLLVMRegToDwarfReg(X86::ST1, 34, false );
RI->mapLLVMRegToDwarfReg(X86::ST2, 35, false );
RI->mapLLVMRegToDwarfReg(X86::ST3, 36, false );
RI->mapLLVMRegToDwarfReg(X86::ST4, 37, false );
RI->mapLLVMRegToDwarfReg(X86::ST5, 38, false );
RI->mapLLVMRegToDwarfReg(X86::ST6, 39, false );
RI->mapLLVMRegToDwarfReg(X86::ST7, 40, false );
RI->mapLLVMRegToDwarfReg(X86::XMM0, 17, false );
RI->mapLLVMRegToDwarfReg(X86::XMM1, 18, false );
RI->mapLLVMRegToDwarfReg(X86::XMM2, 19, false );
RI->mapLLVMRegToDwarfReg(X86::XMM3, 20, false );
RI->mapLLVMRegToDwarfReg(X86::XMM4, 21, false );
RI->mapLLVMRegToDwarfReg(X86::XMM5, 22, false );
RI->mapLLVMRegToDwarfReg(X86::XMM6, 23, false );
RI->mapLLVMRegToDwarfReg(X86::XMM7, 24, false );
RI->mapLLVMRegToDwarfReg(X86::XMM8, 25, false );
RI->mapLLVMRegToDwarfReg(X86::XMM9, 26, false );
RI->mapLLVMRegToDwarfReg(X86::XMM10, 27, false );
RI->mapLLVMRegToDwarfReg(X86::XMM11, 28, false );
RI->mapLLVMRegToDwarfReg(X86::XMM12, 29, false );
RI->mapLLVMRegToDwarfReg(X86::XMM13, 30, false );
RI->mapLLVMRegToDwarfReg(X86::XMM14, 31, false );
RI->mapLLVMRegToDwarfReg(X86::XMM15, 32, false );
RI->mapLLVMRegToDwarfReg(X86::YMM0, 17, false );
RI->mapLLVMRegToDwarfReg(X86::YMM1, 18, false );
RI->mapLLVMRegToDwarfReg(X86::YMM2, 19, false );
RI->mapLLVMRegToDwarfReg(X86::YMM3, 20, false );
RI->mapLLVMRegToDwarfReg(X86::YMM4, 21, false );
RI->mapLLVMRegToDwarfReg(X86::YMM5, 22, false );
RI->mapLLVMRegToDwarfReg(X86::YMM6, 23, false );
RI->mapLLVMRegToDwarfReg(X86::YMM7, 24, false );
RI->mapLLVMRegToDwarfReg(X86::YMM8, 25, false );
RI->mapLLVMRegToDwarfReg(X86::YMM9, 26, false );
RI->mapLLVMRegToDwarfReg(X86::YMM10, 27, false );
RI->mapLLVMRegToDwarfReg(X86::YMM11, 28, false );
RI->mapLLVMRegToDwarfReg(X86::YMM12, 29, false );
RI->mapLLVMRegToDwarfReg(X86::YMM13, 30, false );
RI->mapLLVMRegToDwarfReg(X86::YMM14, 31, false );
RI->mapLLVMRegToDwarfReg(X86::YMM15, 32, false );
break;
case 1:
RI->mapLLVMRegToDwarfReg(X86::AH, -1, false );
RI->mapLLVMRegToDwarfReg(X86::AL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::AX, -1, false );
RI->mapLLVMRegToDwarfReg(X86::BH, -1, false );
RI->mapLLVMRegToDwarfReg(X86::BL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::BP, -1, false );
RI->mapLLVMRegToDwarfReg(X86::BPL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::BX, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CH, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR0, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR1, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR2, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR3, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR4, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR5, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR6, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR7, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR8, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR9, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR10, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR11, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR12, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR13, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR14, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR15, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CS, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CX, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DH, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DI, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DIL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR0, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR1, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR2, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR3, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR4, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR5, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR6, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR7, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DS, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DX, -1, false );
RI->mapLLVMRegToDwarfReg(X86::EAX, 0, false );
RI->mapLLVMRegToDwarfReg(X86::EBP, 4, false );
RI->mapLLVMRegToDwarfReg(X86::EBX, 3, false );
RI->mapLLVMRegToDwarfReg(X86::ECX, 1, false );
RI->mapLLVMRegToDwarfReg(X86::EDI, 7, false );
RI->mapLLVMRegToDwarfReg(X86::EDX, 2, false );
RI->mapLLVMRegToDwarfReg(X86::EFLAGS, -1, false );
RI->mapLLVMRegToDwarfReg(X86::EIP, 8, false );
RI->mapLLVMRegToDwarfReg(X86::EIZ, -1, false );
RI->mapLLVMRegToDwarfReg(X86::ES, -1, false );
RI->mapLLVMRegToDwarfReg(X86::ESI, 6, false );
RI->mapLLVMRegToDwarfReg(X86::ESP, 5, false );
RI->mapLLVMRegToDwarfReg(X86::FP0, -1, false );
RI->mapLLVMRegToDwarfReg(X86::FP1, -1, false );
RI->mapLLVMRegToDwarfReg(X86::FP2, -1, false );
RI->mapLLVMRegToDwarfReg(X86::FP3, -1, false );
RI->mapLLVMRegToDwarfReg(X86::FP4, -1, false );
RI->mapLLVMRegToDwarfReg(X86::FP5, -1, false );
RI->mapLLVMRegToDwarfReg(X86::FP6, -1, false );
RI->mapLLVMRegToDwarfReg(X86::FS, -1, false );
RI->mapLLVMRegToDwarfReg(X86::GS, -1, false );
RI->mapLLVMRegToDwarfReg(X86::IP, -1, false );
RI->mapLLVMRegToDwarfReg(X86::MM0, 29, false );
RI->mapLLVMRegToDwarfReg(X86::MM1, 30, false );
RI->mapLLVMRegToDwarfReg(X86::MM2, 31, false );
RI->mapLLVMRegToDwarfReg(X86::MM3, 32, false );
RI->mapLLVMRegToDwarfReg(X86::MM4, 33, false );
RI->mapLLVMRegToDwarfReg(X86::MM5, 34, false );
RI->mapLLVMRegToDwarfReg(X86::MM6, 35, false );
RI->mapLLVMRegToDwarfReg(X86::MM7, 36, false );
RI->mapLLVMRegToDwarfReg(X86::R8, -2, false );
RI->mapLLVMRegToDwarfReg(X86::R8B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R8D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R8W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R9, -2, false );
RI->mapLLVMRegToDwarfReg(X86::R9B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R9D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R9W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R10, -2, false );
RI->mapLLVMRegToDwarfReg(X86::R10B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R10D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R10W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R11, -2, false );
RI->mapLLVMRegToDwarfReg(X86::R11B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R11D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R11W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R12, -2, false );
RI->mapLLVMRegToDwarfReg(X86::R12B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R12D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R12W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R13, -2, false );
RI->mapLLVMRegToDwarfReg(X86::R13B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R13D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R13W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R14, -2, false );
RI->mapLLVMRegToDwarfReg(X86::R14B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R14D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R14W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R15, -2, false );
RI->mapLLVMRegToDwarfReg(X86::R15B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R15D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R15W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::RAX, -2, false );
RI->mapLLVMRegToDwarfReg(X86::RBP, -2, false );
RI->mapLLVMRegToDwarfReg(X86::RBX, -2, false );
RI->mapLLVMRegToDwarfReg(X86::RCX, -2, false );
RI->mapLLVMRegToDwarfReg(X86::RDI, -2, false );
RI->mapLLVMRegToDwarfReg(X86::RDX, -2, false );
RI->mapLLVMRegToDwarfReg(X86::RIP, -2, false );
RI->mapLLVMRegToDwarfReg(X86::RIZ, -1, false );
RI->mapLLVMRegToDwarfReg(X86::RSI, -2, false );
RI->mapLLVMRegToDwarfReg(X86::RSP, -2, false );
RI->mapLLVMRegToDwarfReg(X86::SI, -1, false );
RI->mapLLVMRegToDwarfReg(X86::SIL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::SP, -1, false );
RI->mapLLVMRegToDwarfReg(X86::SPL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::SS, -1, false );
RI->mapLLVMRegToDwarfReg(X86::ST0, 12, false );
RI->mapLLVMRegToDwarfReg(X86::ST1, 13, false );
RI->mapLLVMRegToDwarfReg(X86::ST2, 14, false );
RI->mapLLVMRegToDwarfReg(X86::ST3, 15, false );
RI->mapLLVMRegToDwarfReg(X86::ST4, 16, false );
RI->mapLLVMRegToDwarfReg(X86::ST5, 17, false );
RI->mapLLVMRegToDwarfReg(X86::ST6, 18, false );
RI->mapLLVMRegToDwarfReg(X86::ST7, 19, false );
RI->mapLLVMRegToDwarfReg(X86::XMM0, 21, false );
RI->mapLLVMRegToDwarfReg(X86::XMM1, 22, false );
RI->mapLLVMRegToDwarfReg(X86::XMM2, 23, false );
RI->mapLLVMRegToDwarfReg(X86::XMM3, 24, false );
RI->mapLLVMRegToDwarfReg(X86::XMM4, 25, false );
RI->mapLLVMRegToDwarfReg(X86::XMM5, 26, false );
RI->mapLLVMRegToDwarfReg(X86::XMM6, 27, false );
RI->mapLLVMRegToDwarfReg(X86::XMM7, 28, false );
RI->mapLLVMRegToDwarfReg(X86::XMM8, -2, false );
RI->mapLLVMRegToDwarfReg(X86::XMM9, -2, false );
RI->mapLLVMRegToDwarfReg(X86::XMM10, -2, false );
RI->mapLLVMRegToDwarfReg(X86::XMM11, -2, false );
RI->mapLLVMRegToDwarfReg(X86::XMM12, -2, false );
RI->mapLLVMRegToDwarfReg(X86::XMM13, -2, false );
RI->mapLLVMRegToDwarfReg(X86::XMM14, -2, false );
RI->mapLLVMRegToDwarfReg(X86::XMM15, -2, false );
RI->mapLLVMRegToDwarfReg(X86::YMM0, 21, false );
RI->mapLLVMRegToDwarfReg(X86::YMM1, 22, false );
RI->mapLLVMRegToDwarfReg(X86::YMM2, 23, false );
RI->mapLLVMRegToDwarfReg(X86::YMM3, 24, false );
RI->mapLLVMRegToDwarfReg(X86::YMM4, 25, false );
RI->mapLLVMRegToDwarfReg(X86::YMM5, 26, false );
RI->mapLLVMRegToDwarfReg(X86::YMM6, 27, false );
RI->mapLLVMRegToDwarfReg(X86::YMM7, 28, false );
RI->mapLLVMRegToDwarfReg(X86::YMM8, -2, false );
RI->mapLLVMRegToDwarfReg(X86::YMM9, -2, false );
RI->mapLLVMRegToDwarfReg(X86::YMM10, -2, false );
RI->mapLLVMRegToDwarfReg(X86::YMM11, -2, false );
RI->mapLLVMRegToDwarfReg(X86::YMM12, -2, false );
RI->mapLLVMRegToDwarfReg(X86::YMM13, -2, false );
RI->mapLLVMRegToDwarfReg(X86::YMM14, -2, false );
RI->mapLLVMRegToDwarfReg(X86::YMM15, -2, false );
break;
case 2:
RI->mapLLVMRegToDwarfReg(X86::AH, -1, false );
RI->mapLLVMRegToDwarfReg(X86::AL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::AX, -1, false );
RI->mapLLVMRegToDwarfReg(X86::BH, -1, false );
RI->mapLLVMRegToDwarfReg(X86::BL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::BP, -1, false );
RI->mapLLVMRegToDwarfReg(X86::BPL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::BX, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CH, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR0, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR1, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR2, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR3, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR4, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR5, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR6, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR7, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR8, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR9, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR10, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR11, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR12, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR13, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR14, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CR15, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CS, -1, false );
RI->mapLLVMRegToDwarfReg(X86::CX, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DH, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DI, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DIL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR0, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR1, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR2, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR3, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR4, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR5, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR6, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DR7, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DS, -1, false );
RI->mapLLVMRegToDwarfReg(X86::DX, -1, false );
RI->mapLLVMRegToDwarfReg(X86::EAX, 0, false );
RI->mapLLVMRegToDwarfReg(X86::EBP, 5, false );
RI->mapLLVMRegToDwarfReg(X86::EBX, 3, false );
RI->mapLLVMRegToDwarfReg(X86::ECX, 1, false );
RI->mapLLVMRegToDwarfReg(X86::EDI, 7, false );
RI->mapLLVMRegToDwarfReg(X86::EDX, 2, false );
RI->mapLLVMRegToDwarfReg(X86::EFLAGS, -1, false );
RI->mapLLVMRegToDwarfReg(X86::EIP, 8, false );
RI->mapLLVMRegToDwarfReg(X86::EIZ, -1, false );
RI->mapLLVMRegToDwarfReg(X86::ES, -1, false );
RI->mapLLVMRegToDwarfReg(X86::ESI, 6, false );
RI->mapLLVMRegToDwarfReg(X86::ESP, 4, false );
RI->mapLLVMRegToDwarfReg(X86::FP0, -1, false );
RI->mapLLVMRegToDwarfReg(X86::FP1, -1, false );
RI->mapLLVMRegToDwarfReg(X86::FP2, -1, false );
RI->mapLLVMRegToDwarfReg(X86::FP3, -1, false );
RI->mapLLVMRegToDwarfReg(X86::FP4, -1, false );
RI->mapLLVMRegToDwarfReg(X86::FP5, -1, false );
RI->mapLLVMRegToDwarfReg(X86::FP6, -1, false );
RI->mapLLVMRegToDwarfReg(X86::FS, -1, false );
RI->mapLLVMRegToDwarfReg(X86::GS, -1, false );
RI->mapLLVMRegToDwarfReg(X86::IP, -1, false );
RI->mapLLVMRegToDwarfReg(X86::MM0, 29, false );
RI->mapLLVMRegToDwarfReg(X86::MM1, 30, false );
RI->mapLLVMRegToDwarfReg(X86::MM2, 31, false );
RI->mapLLVMRegToDwarfReg(X86::MM3, 32, false );
RI->mapLLVMRegToDwarfReg(X86::MM4, 33, false );
RI->mapLLVMRegToDwarfReg(X86::MM5, 34, false );
RI->mapLLVMRegToDwarfReg(X86::MM6, 35, false );
RI->mapLLVMRegToDwarfReg(X86::MM7, 36, false );
RI->mapLLVMRegToDwarfReg(X86::R8, -2, false );
RI->mapLLVMRegToDwarfReg(X86::R8B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R8D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R8W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R9, -2, false );
RI->mapLLVMRegToDwarfReg(X86::R9B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R9D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R9W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R10, -2, false );
RI->mapLLVMRegToDwarfReg(X86::R10B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R10D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R10W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R11, -2, false );
RI->mapLLVMRegToDwarfReg(X86::R11B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R11D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R11W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R12, -2, false );
RI->mapLLVMRegToDwarfReg(X86::R12B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R12D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R12W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R13, -2, false );
RI->mapLLVMRegToDwarfReg(X86::R13B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R13D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R13W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R14, -2, false );
RI->mapLLVMRegToDwarfReg(X86::R14B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R14D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R14W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R15, -2, false );
RI->mapLLVMRegToDwarfReg(X86::R15B, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R15D, -1, false );
RI->mapLLVMRegToDwarfReg(X86::R15W, -1, false );
RI->mapLLVMRegToDwarfReg(X86::RAX, -2, false );
RI->mapLLVMRegToDwarfReg(X86::RBP, -2, false );
RI->mapLLVMRegToDwarfReg(X86::RBX, -2, false );
RI->mapLLVMRegToDwarfReg(X86::RCX, -2, false );
RI->mapLLVMRegToDwarfReg(X86::RDI, -2, false );
RI->mapLLVMRegToDwarfReg(X86::RDX, -2, false );
RI->mapLLVMRegToDwarfReg(X86::RIP, -2, false );
RI->mapLLVMRegToDwarfReg(X86::RIZ, -1, false );
RI->mapLLVMRegToDwarfReg(X86::RSI, -2, false );
RI->mapLLVMRegToDwarfReg(X86::RSP, -2, false );
RI->mapLLVMRegToDwarfReg(X86::SI, -1, false );
RI->mapLLVMRegToDwarfReg(X86::SIL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::SP, -1, false );
RI->mapLLVMRegToDwarfReg(X86::SPL, -1, false );
RI->mapLLVMRegToDwarfReg(X86::SS, -1, false );
RI->mapLLVMRegToDwarfReg(X86::ST0, 11, false );
RI->mapLLVMRegToDwarfReg(X86::ST1, 12, false );
RI->mapLLVMRegToDwarfReg(X86::ST2, 13, false );
RI->mapLLVMRegToDwarfReg(X86::ST3, 14, false );
RI->mapLLVMRegToDwarfReg(X86::ST4, 15, false );
RI->mapLLVMRegToDwarfReg(X86::ST5, 16, false );
RI->mapLLVMRegToDwarfReg(X86::ST6, 17, false );
RI->mapLLVMRegToDwarfReg(X86::ST7, 18, false );
RI->mapLLVMRegToDwarfReg(X86::XMM0, 21, false );
RI->mapLLVMRegToDwarfReg(X86::XMM1, 22, false );
RI->mapLLVMRegToDwarfReg(X86::XMM2, 23, false );
RI->mapLLVMRegToDwarfReg(X86::XMM3, 24, false );
RI->mapLLVMRegToDwarfReg(X86::XMM4, 25, false );
RI->mapLLVMRegToDwarfReg(X86::XMM5, 26, false );
RI->mapLLVMRegToDwarfReg(X86::XMM6, 27, false );
RI->mapLLVMRegToDwarfReg(X86::XMM7, 28, false );
RI->mapLLVMRegToDwarfReg(X86::XMM8, -2, false );
RI->mapLLVMRegToDwarfReg(X86::XMM9, -2, false );
RI->mapLLVMRegToDwarfReg(X86::XMM10, -2, false );
RI->mapLLVMRegToDwarfReg(X86::XMM11, -2, false );
RI->mapLLVMRegToDwarfReg(X86::XMM12, -2, false );
RI->mapLLVMRegToDwarfReg(X86::XMM13, -2, false );
RI->mapLLVMRegToDwarfReg(X86::XMM14, -2, false );
RI->mapLLVMRegToDwarfReg(X86::XMM15, -2, false );
RI->mapLLVMRegToDwarfReg(X86::YMM0, 21, false );
RI->mapLLVMRegToDwarfReg(X86::YMM1, 22, false );
RI->mapLLVMRegToDwarfReg(X86::YMM2, 23, false );
RI->mapLLVMRegToDwarfReg(X86::YMM3, 24, false );
RI->mapLLVMRegToDwarfReg(X86::YMM4, 25, false );
RI->mapLLVMRegToDwarfReg(X86::YMM5, 26, false );
RI->mapLLVMRegToDwarfReg(X86::YMM6, 27, false );
RI->mapLLVMRegToDwarfReg(X86::YMM7, 28, false );
RI->mapLLVMRegToDwarfReg(X86::YMM8, -2, false );
RI->mapLLVMRegToDwarfReg(X86::YMM9, -2, false );
RI->mapLLVMRegToDwarfReg(X86::YMM10, -2, false );
RI->mapLLVMRegToDwarfReg(X86::YMM11, -2, false );
RI->mapLLVMRegToDwarfReg(X86::YMM12, -2, false );
RI->mapLLVMRegToDwarfReg(X86::YMM13, -2, false );
RI->mapLLVMRegToDwarfReg(X86::YMM14, -2, false );
RI->mapLLVMRegToDwarfReg(X86::YMM15, -2, false );
break;
}
switch (EHFlavour) {
default:
assert(0 && "Unknown DWARF flavour");
break;
case 0:
RI->mapLLVMRegToDwarfReg(X86::AH, -1, true );
RI->mapLLVMRegToDwarfReg(X86::AL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::AX, -1, true );
RI->mapLLVMRegToDwarfReg(X86::BH, -1, true );
RI->mapLLVMRegToDwarfReg(X86::BL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::BP, -1, true );
RI->mapLLVMRegToDwarfReg(X86::BPL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::BX, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CH, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR0, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR1, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR2, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR3, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR4, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR5, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR6, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR7, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR8, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR9, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR10, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR11, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR12, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR13, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR14, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR15, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CS, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CX, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DH, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DI, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DIL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR0, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR1, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR2, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR3, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR4, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR5, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR6, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR7, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DS, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DX, -1, true );
RI->mapLLVMRegToDwarfReg(X86::EAX, -2, true );
RI->mapLLVMRegToDwarfReg(X86::EBP, -2, true );
RI->mapLLVMRegToDwarfReg(X86::EBX, -2, true );
RI->mapLLVMRegToDwarfReg(X86::ECX, -2, true );
RI->mapLLVMRegToDwarfReg(X86::EDI, -2, true );
RI->mapLLVMRegToDwarfReg(X86::EDX, -2, true );
RI->mapLLVMRegToDwarfReg(X86::EFLAGS, -1, true );
RI->mapLLVMRegToDwarfReg(X86::EIP, -2, true );
RI->mapLLVMRegToDwarfReg(X86::EIZ, -1, true );
RI->mapLLVMRegToDwarfReg(X86::ES, -1, true );
RI->mapLLVMRegToDwarfReg(X86::ESI, -2, true );
RI->mapLLVMRegToDwarfReg(X86::ESP, -2, true );
RI->mapLLVMRegToDwarfReg(X86::FP0, -1, true );
RI->mapLLVMRegToDwarfReg(X86::FP1, -1, true );
RI->mapLLVMRegToDwarfReg(X86::FP2, -1, true );
RI->mapLLVMRegToDwarfReg(X86::FP3, -1, true );
RI->mapLLVMRegToDwarfReg(X86::FP4, -1, true );
RI->mapLLVMRegToDwarfReg(X86::FP5, -1, true );
RI->mapLLVMRegToDwarfReg(X86::FP6, -1, true );
RI->mapLLVMRegToDwarfReg(X86::FS, -1, true );
RI->mapLLVMRegToDwarfReg(X86::GS, -1, true );
RI->mapLLVMRegToDwarfReg(X86::IP, -1, true );
RI->mapLLVMRegToDwarfReg(X86::MM0, 41, true );
RI->mapLLVMRegToDwarfReg(X86::MM1, 42, true );
RI->mapLLVMRegToDwarfReg(X86::MM2, 43, true );
RI->mapLLVMRegToDwarfReg(X86::MM3, 44, true );
RI->mapLLVMRegToDwarfReg(X86::MM4, 45, true );
RI->mapLLVMRegToDwarfReg(X86::MM5, 46, true );
RI->mapLLVMRegToDwarfReg(X86::MM6, 47, true );
RI->mapLLVMRegToDwarfReg(X86::MM7, 48, true );
RI->mapLLVMRegToDwarfReg(X86::R8, 8, true );
RI->mapLLVMRegToDwarfReg(X86::R8B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R8D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R8W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R9, 9, true );
RI->mapLLVMRegToDwarfReg(X86::R9B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R9D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R9W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R10, 10, true );
RI->mapLLVMRegToDwarfReg(X86::R10B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R10D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R10W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R11, 11, true );
RI->mapLLVMRegToDwarfReg(X86::R11B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R11D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R11W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R12, 12, true );
RI->mapLLVMRegToDwarfReg(X86::R12B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R12D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R12W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R13, 13, true );
RI->mapLLVMRegToDwarfReg(X86::R13B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R13D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R13W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R14, 14, true );
RI->mapLLVMRegToDwarfReg(X86::R14B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R14D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R14W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R15, 15, true );
RI->mapLLVMRegToDwarfReg(X86::R15B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R15D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R15W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::RAX, 0, true );
RI->mapLLVMRegToDwarfReg(X86::RBP, 6, true );
RI->mapLLVMRegToDwarfReg(X86::RBX, 3, true );
RI->mapLLVMRegToDwarfReg(X86::RCX, 2, true );
RI->mapLLVMRegToDwarfReg(X86::RDI, 5, true );
RI->mapLLVMRegToDwarfReg(X86::RDX, 1, true );
RI->mapLLVMRegToDwarfReg(X86::RIP, 16, true );
RI->mapLLVMRegToDwarfReg(X86::RIZ, -1, true );
RI->mapLLVMRegToDwarfReg(X86::RSI, 4, true );
RI->mapLLVMRegToDwarfReg(X86::RSP, 7, true );
RI->mapLLVMRegToDwarfReg(X86::SI, -1, true );
RI->mapLLVMRegToDwarfReg(X86::SIL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::SP, -1, true );
RI->mapLLVMRegToDwarfReg(X86::SPL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::SS, -1, true );
RI->mapLLVMRegToDwarfReg(X86::ST0, 33, true );
RI->mapLLVMRegToDwarfReg(X86::ST1, 34, true );
RI->mapLLVMRegToDwarfReg(X86::ST2, 35, true );
RI->mapLLVMRegToDwarfReg(X86::ST3, 36, true );
RI->mapLLVMRegToDwarfReg(X86::ST4, 37, true );
RI->mapLLVMRegToDwarfReg(X86::ST5, 38, true );
RI->mapLLVMRegToDwarfReg(X86::ST6, 39, true );
RI->mapLLVMRegToDwarfReg(X86::ST7, 40, true );
RI->mapLLVMRegToDwarfReg(X86::XMM0, 17, true );
RI->mapLLVMRegToDwarfReg(X86::XMM1, 18, true );
RI->mapLLVMRegToDwarfReg(X86::XMM2, 19, true );
RI->mapLLVMRegToDwarfReg(X86::XMM3, 20, true );
RI->mapLLVMRegToDwarfReg(X86::XMM4, 21, true );
RI->mapLLVMRegToDwarfReg(X86::XMM5, 22, true );
RI->mapLLVMRegToDwarfReg(X86::XMM6, 23, true );
RI->mapLLVMRegToDwarfReg(X86::XMM7, 24, true );
RI->mapLLVMRegToDwarfReg(X86::XMM8, 25, true );
RI->mapLLVMRegToDwarfReg(X86::XMM9, 26, true );
RI->mapLLVMRegToDwarfReg(X86::XMM10, 27, true );
RI->mapLLVMRegToDwarfReg(X86::XMM11, 28, true );
RI->mapLLVMRegToDwarfReg(X86::XMM12, 29, true );
RI->mapLLVMRegToDwarfReg(X86::XMM13, 30, true );
RI->mapLLVMRegToDwarfReg(X86::XMM14, 31, true );
RI->mapLLVMRegToDwarfReg(X86::XMM15, 32, true );
RI->mapLLVMRegToDwarfReg(X86::YMM0, 17, true );
RI->mapLLVMRegToDwarfReg(X86::YMM1, 18, true );
RI->mapLLVMRegToDwarfReg(X86::YMM2, 19, true );
RI->mapLLVMRegToDwarfReg(X86::YMM3, 20, true );
RI->mapLLVMRegToDwarfReg(X86::YMM4, 21, true );
RI->mapLLVMRegToDwarfReg(X86::YMM5, 22, true );
RI->mapLLVMRegToDwarfReg(X86::YMM6, 23, true );
RI->mapLLVMRegToDwarfReg(X86::YMM7, 24, true );
RI->mapLLVMRegToDwarfReg(X86::YMM8, 25, true );
RI->mapLLVMRegToDwarfReg(X86::YMM9, 26, true );
RI->mapLLVMRegToDwarfReg(X86::YMM10, 27, true );
RI->mapLLVMRegToDwarfReg(X86::YMM11, 28, true );
RI->mapLLVMRegToDwarfReg(X86::YMM12, 29, true );
RI->mapLLVMRegToDwarfReg(X86::YMM13, 30, true );
RI->mapLLVMRegToDwarfReg(X86::YMM14, 31, true );
RI->mapLLVMRegToDwarfReg(X86::YMM15, 32, true );
break;
case 1:
RI->mapLLVMRegToDwarfReg(X86::AH, -1, true );
RI->mapLLVMRegToDwarfReg(X86::AL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::AX, -1, true );
RI->mapLLVMRegToDwarfReg(X86::BH, -1, true );
RI->mapLLVMRegToDwarfReg(X86::BL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::BP, -1, true );
RI->mapLLVMRegToDwarfReg(X86::BPL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::BX, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CH, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR0, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR1, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR2, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR3, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR4, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR5, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR6, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR7, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR8, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR9, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR10, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR11, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR12, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR13, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR14, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR15, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CS, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CX, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DH, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DI, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DIL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR0, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR1, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR2, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR3, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR4, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR5, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR6, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR7, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DS, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DX, -1, true );
RI->mapLLVMRegToDwarfReg(X86::EAX, 0, true );
RI->mapLLVMRegToDwarfReg(X86::EBP, 4, true );
RI->mapLLVMRegToDwarfReg(X86::EBX, 3, true );
RI->mapLLVMRegToDwarfReg(X86::ECX, 1, true );
RI->mapLLVMRegToDwarfReg(X86::EDI, 7, true );
RI->mapLLVMRegToDwarfReg(X86::EDX, 2, true );
RI->mapLLVMRegToDwarfReg(X86::EFLAGS, -1, true );
RI->mapLLVMRegToDwarfReg(X86::EIP, 8, true );
RI->mapLLVMRegToDwarfReg(X86::EIZ, -1, true );
RI->mapLLVMRegToDwarfReg(X86::ES, -1, true );
RI->mapLLVMRegToDwarfReg(X86::ESI, 6, true );
RI->mapLLVMRegToDwarfReg(X86::ESP, 5, true );
RI->mapLLVMRegToDwarfReg(X86::FP0, -1, true );
RI->mapLLVMRegToDwarfReg(X86::FP1, -1, true );
RI->mapLLVMRegToDwarfReg(X86::FP2, -1, true );
RI->mapLLVMRegToDwarfReg(X86::FP3, -1, true );
RI->mapLLVMRegToDwarfReg(X86::FP4, -1, true );
RI->mapLLVMRegToDwarfReg(X86::FP5, -1, true );
RI->mapLLVMRegToDwarfReg(X86::FP6, -1, true );
RI->mapLLVMRegToDwarfReg(X86::FS, -1, true );
RI->mapLLVMRegToDwarfReg(X86::GS, -1, true );
RI->mapLLVMRegToDwarfReg(X86::IP, -1, true );
RI->mapLLVMRegToDwarfReg(X86::MM0, 29, true );
RI->mapLLVMRegToDwarfReg(X86::MM1, 30, true );
RI->mapLLVMRegToDwarfReg(X86::MM2, 31, true );
RI->mapLLVMRegToDwarfReg(X86::MM3, 32, true );
RI->mapLLVMRegToDwarfReg(X86::MM4, 33, true );
RI->mapLLVMRegToDwarfReg(X86::MM5, 34, true );
RI->mapLLVMRegToDwarfReg(X86::MM6, 35, true );
RI->mapLLVMRegToDwarfReg(X86::MM7, 36, true );
RI->mapLLVMRegToDwarfReg(X86::R8, -2, true );
RI->mapLLVMRegToDwarfReg(X86::R8B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R8D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R8W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R9, -2, true );
RI->mapLLVMRegToDwarfReg(X86::R9B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R9D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R9W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R10, -2, true );
RI->mapLLVMRegToDwarfReg(X86::R10B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R10D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R10W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R11, -2, true );
RI->mapLLVMRegToDwarfReg(X86::R11B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R11D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R11W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R12, -2, true );
RI->mapLLVMRegToDwarfReg(X86::R12B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R12D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R12W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R13, -2, true );
RI->mapLLVMRegToDwarfReg(X86::R13B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R13D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R13W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R14, -2, true );
RI->mapLLVMRegToDwarfReg(X86::R14B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R14D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R14W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R15, -2, true );
RI->mapLLVMRegToDwarfReg(X86::R15B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R15D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R15W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::RAX, -2, true );
RI->mapLLVMRegToDwarfReg(X86::RBP, -2, true );
RI->mapLLVMRegToDwarfReg(X86::RBX, -2, true );
RI->mapLLVMRegToDwarfReg(X86::RCX, -2, true );
RI->mapLLVMRegToDwarfReg(X86::RDI, -2, true );
RI->mapLLVMRegToDwarfReg(X86::RDX, -2, true );
RI->mapLLVMRegToDwarfReg(X86::RIP, -2, true );
RI->mapLLVMRegToDwarfReg(X86::RIZ, -1, true );
RI->mapLLVMRegToDwarfReg(X86::RSI, -2, true );
RI->mapLLVMRegToDwarfReg(X86::RSP, -2, true );
RI->mapLLVMRegToDwarfReg(X86::SI, -1, true );
RI->mapLLVMRegToDwarfReg(X86::SIL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::SP, -1, true );
RI->mapLLVMRegToDwarfReg(X86::SPL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::SS, -1, true );
RI->mapLLVMRegToDwarfReg(X86::ST0, 12, true );
RI->mapLLVMRegToDwarfReg(X86::ST1, 13, true );
RI->mapLLVMRegToDwarfReg(X86::ST2, 14, true );
RI->mapLLVMRegToDwarfReg(X86::ST3, 15, true );
RI->mapLLVMRegToDwarfReg(X86::ST4, 16, true );
RI->mapLLVMRegToDwarfReg(X86::ST5, 17, true );
RI->mapLLVMRegToDwarfReg(X86::ST6, 18, true );
RI->mapLLVMRegToDwarfReg(X86::ST7, 19, true );
RI->mapLLVMRegToDwarfReg(X86::XMM0, 21, true );
RI->mapLLVMRegToDwarfReg(X86::XMM1, 22, true );
RI->mapLLVMRegToDwarfReg(X86::XMM2, 23, true );
RI->mapLLVMRegToDwarfReg(X86::XMM3, 24, true );
RI->mapLLVMRegToDwarfReg(X86::XMM4, 25, true );
RI->mapLLVMRegToDwarfReg(X86::XMM5, 26, true );
RI->mapLLVMRegToDwarfReg(X86::XMM6, 27, true );
RI->mapLLVMRegToDwarfReg(X86::XMM7, 28, true );
RI->mapLLVMRegToDwarfReg(X86::XMM8, -2, true );
RI->mapLLVMRegToDwarfReg(X86::XMM9, -2, true );
RI->mapLLVMRegToDwarfReg(X86::XMM10, -2, true );
RI->mapLLVMRegToDwarfReg(X86::XMM11, -2, true );
RI->mapLLVMRegToDwarfReg(X86::XMM12, -2, true );
RI->mapLLVMRegToDwarfReg(X86::XMM13, -2, true );
RI->mapLLVMRegToDwarfReg(X86::XMM14, -2, true );
RI->mapLLVMRegToDwarfReg(X86::XMM15, -2, true );
RI->mapLLVMRegToDwarfReg(X86::YMM0, 21, true );
RI->mapLLVMRegToDwarfReg(X86::YMM1, 22, true );
RI->mapLLVMRegToDwarfReg(X86::YMM2, 23, true );
RI->mapLLVMRegToDwarfReg(X86::YMM3, 24, true );
RI->mapLLVMRegToDwarfReg(X86::YMM4, 25, true );
RI->mapLLVMRegToDwarfReg(X86::YMM5, 26, true );
RI->mapLLVMRegToDwarfReg(X86::YMM6, 27, true );
RI->mapLLVMRegToDwarfReg(X86::YMM7, 28, true );
RI->mapLLVMRegToDwarfReg(X86::YMM8, -2, true );
RI->mapLLVMRegToDwarfReg(X86::YMM9, -2, true );
RI->mapLLVMRegToDwarfReg(X86::YMM10, -2, true );
RI->mapLLVMRegToDwarfReg(X86::YMM11, -2, true );
RI->mapLLVMRegToDwarfReg(X86::YMM12, -2, true );
RI->mapLLVMRegToDwarfReg(X86::YMM13, -2, true );
RI->mapLLVMRegToDwarfReg(X86::YMM14, -2, true );
RI->mapLLVMRegToDwarfReg(X86::YMM15, -2, true );
break;
case 2:
RI->mapLLVMRegToDwarfReg(X86::AH, -1, true );
RI->mapLLVMRegToDwarfReg(X86::AL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::AX, -1, true );
RI->mapLLVMRegToDwarfReg(X86::BH, -1, true );
RI->mapLLVMRegToDwarfReg(X86::BL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::BP, -1, true );
RI->mapLLVMRegToDwarfReg(X86::BPL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::BX, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CH, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR0, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR1, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR2, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR3, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR4, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR5, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR6, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR7, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR8, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR9, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR10, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR11, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR12, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR13, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR14, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CR15, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CS, -1, true );
RI->mapLLVMRegToDwarfReg(X86::CX, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DH, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DI, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DIL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR0, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR1, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR2, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR3, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR4, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR5, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR6, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DR7, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DS, -1, true );
RI->mapLLVMRegToDwarfReg(X86::DX, -1, true );
RI->mapLLVMRegToDwarfReg(X86::EAX, 0, true );
RI->mapLLVMRegToDwarfReg(X86::EBP, 5, true );
RI->mapLLVMRegToDwarfReg(X86::EBX, 3, true );
RI->mapLLVMRegToDwarfReg(X86::ECX, 1, true );
RI->mapLLVMRegToDwarfReg(X86::EDI, 7, true );
RI->mapLLVMRegToDwarfReg(X86::EDX, 2, true );
RI->mapLLVMRegToDwarfReg(X86::EFLAGS, -1, true );
RI->mapLLVMRegToDwarfReg(X86::EIP, 8, true );
RI->mapLLVMRegToDwarfReg(X86::EIZ, -1, true );
RI->mapLLVMRegToDwarfReg(X86::ES, -1, true );
RI->mapLLVMRegToDwarfReg(X86::ESI, 6, true );
RI->mapLLVMRegToDwarfReg(X86::ESP, 4, true );
RI->mapLLVMRegToDwarfReg(X86::FP0, -1, true );
RI->mapLLVMRegToDwarfReg(X86::FP1, -1, true );
RI->mapLLVMRegToDwarfReg(X86::FP2, -1, true );
RI->mapLLVMRegToDwarfReg(X86::FP3, -1, true );
RI->mapLLVMRegToDwarfReg(X86::FP4, -1, true );
RI->mapLLVMRegToDwarfReg(X86::FP5, -1, true );
RI->mapLLVMRegToDwarfReg(X86::FP6, -1, true );
RI->mapLLVMRegToDwarfReg(X86::FS, -1, true );
RI->mapLLVMRegToDwarfReg(X86::GS, -1, true );
RI->mapLLVMRegToDwarfReg(X86::IP, -1, true );
RI->mapLLVMRegToDwarfReg(X86::MM0, 29, true );
RI->mapLLVMRegToDwarfReg(X86::MM1, 30, true );
RI->mapLLVMRegToDwarfReg(X86::MM2, 31, true );
RI->mapLLVMRegToDwarfReg(X86::MM3, 32, true );
RI->mapLLVMRegToDwarfReg(X86::MM4, 33, true );
RI->mapLLVMRegToDwarfReg(X86::MM5, 34, true );
RI->mapLLVMRegToDwarfReg(X86::MM6, 35, true );
RI->mapLLVMRegToDwarfReg(X86::MM7, 36, true );
RI->mapLLVMRegToDwarfReg(X86::R8, -2, true );
RI->mapLLVMRegToDwarfReg(X86::R8B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R8D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R8W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R9, -2, true );
RI->mapLLVMRegToDwarfReg(X86::R9B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R9D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R9W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R10, -2, true );
RI->mapLLVMRegToDwarfReg(X86::R10B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R10D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R10W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R11, -2, true );
RI->mapLLVMRegToDwarfReg(X86::R11B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R11D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R11W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R12, -2, true );
RI->mapLLVMRegToDwarfReg(X86::R12B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R12D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R12W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R13, -2, true );
RI->mapLLVMRegToDwarfReg(X86::R13B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R13D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R13W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R14, -2, true );
RI->mapLLVMRegToDwarfReg(X86::R14B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R14D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R14W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R15, -2, true );
RI->mapLLVMRegToDwarfReg(X86::R15B, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R15D, -1, true );
RI->mapLLVMRegToDwarfReg(X86::R15W, -1, true );
RI->mapLLVMRegToDwarfReg(X86::RAX, -2, true );
RI->mapLLVMRegToDwarfReg(X86::RBP, -2, true );
RI->mapLLVMRegToDwarfReg(X86::RBX, -2, true );
RI->mapLLVMRegToDwarfReg(X86::RCX, -2, true );
RI->mapLLVMRegToDwarfReg(X86::RDI, -2, true );
RI->mapLLVMRegToDwarfReg(X86::RDX, -2, true );
RI->mapLLVMRegToDwarfReg(X86::RIP, -2, true );
RI->mapLLVMRegToDwarfReg(X86::RIZ, -1, true );
RI->mapLLVMRegToDwarfReg(X86::RSI, -2, true );
RI->mapLLVMRegToDwarfReg(X86::RSP, -2, true );
RI->mapLLVMRegToDwarfReg(X86::SI, -1, true );
RI->mapLLVMRegToDwarfReg(X86::SIL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::SP, -1, true );
RI->mapLLVMRegToDwarfReg(X86::SPL, -1, true );
RI->mapLLVMRegToDwarfReg(X86::SS, -1, true );
RI->mapLLVMRegToDwarfReg(X86::ST0, 11, true );
RI->mapLLVMRegToDwarfReg(X86::ST1, 12, true );
RI->mapLLVMRegToDwarfReg(X86::ST2, 13, true );
RI->mapLLVMRegToDwarfReg(X86::ST3, 14, true );
RI->mapLLVMRegToDwarfReg(X86::ST4, 15, true );
RI->mapLLVMRegToDwarfReg(X86::ST5, 16, true );
RI->mapLLVMRegToDwarfReg(X86::ST6, 17, true );
RI->mapLLVMRegToDwarfReg(X86::ST7, 18, true );
RI->mapLLVMRegToDwarfReg(X86::XMM0, 21, true );
RI->mapLLVMRegToDwarfReg(X86::XMM1, 22, true );
RI->mapLLVMRegToDwarfReg(X86::XMM2, 23, true );
RI->mapLLVMRegToDwarfReg(X86::XMM3, 24, true );
RI->mapLLVMRegToDwarfReg(X86::XMM4, 25, true );
RI->mapLLVMRegToDwarfReg(X86::XMM5, 26, true );
RI->mapLLVMRegToDwarfReg(X86::XMM6, 27, true );
RI->mapLLVMRegToDwarfReg(X86::XMM7, 28, true );
RI->mapLLVMRegToDwarfReg(X86::XMM8, -2, true );
RI->mapLLVMRegToDwarfReg(X86::XMM9, -2, true );
RI->mapLLVMRegToDwarfReg(X86::XMM10, -2, true );
RI->mapLLVMRegToDwarfReg(X86::XMM11, -2, true );
RI->mapLLVMRegToDwarfReg(X86::XMM12, -2, true );
RI->mapLLVMRegToDwarfReg(X86::XMM13, -2, true );
RI->mapLLVMRegToDwarfReg(X86::XMM14, -2, true );
RI->mapLLVMRegToDwarfReg(X86::XMM15, -2, true );
RI->mapLLVMRegToDwarfReg(X86::YMM0, 21, true );
RI->mapLLVMRegToDwarfReg(X86::YMM1, 22, true );
RI->mapLLVMRegToDwarfReg(X86::YMM2, 23, true );
RI->mapLLVMRegToDwarfReg(X86::YMM3, 24, true );
RI->mapLLVMRegToDwarfReg(X86::YMM4, 25, true );
RI->mapLLVMRegToDwarfReg(X86::YMM5, 26, true );
RI->mapLLVMRegToDwarfReg(X86::YMM6, 27, true );
RI->mapLLVMRegToDwarfReg(X86::YMM7, 28, true );
RI->mapLLVMRegToDwarfReg(X86::YMM8, -2, true );
RI->mapLLVMRegToDwarfReg(X86::YMM9, -2, true );
RI->mapLLVMRegToDwarfReg(X86::YMM10, -2, true );
RI->mapLLVMRegToDwarfReg(X86::YMM11, -2, true );
RI->mapLLVMRegToDwarfReg(X86::YMM12, -2, true );
RI->mapLLVMRegToDwarfReg(X86::YMM13, -2, true );
RI->mapLLVMRegToDwarfReg(X86::YMM14, -2, true );
RI->mapLLVMRegToDwarfReg(X86::YMM15, -2, true );
break;
}
}
} // End llvm namespace
#endif // GET_REGINFO_MC_DESC
//===- TableGen'erated file -------------------------------------*- C++ -*-===//
//
// Register Information Header Fragment
//
// Automatically generated file, do not edit!
//
//===----------------------------------------------------------------------===//
#ifdef GET_REGINFO_HEADER
#undef GET_REGINFO_HEADER
#include "llvm/Target/TargetRegisterInfo.h"
#include <string>
namespace llvm {
struct X86GenRegisterInfo : public TargetRegisterInfo {
explicit X86GenRegisterInfo(unsigned RA, unsigned D = 0, unsigned E = 0);
virtual bool needsStackRealignment(const MachineFunction &) const
{ return false; }
unsigned getSubReg(unsigned RegNo, unsigned Index) const;
unsigned getSubRegIndex(unsigned RegNo, unsigned SubRegNo) const;
unsigned composeSubRegIndices(unsigned, unsigned) const;
const TargetRegisterClass *getSubClassWithSubReg(const TargetRegisterClass*, unsigned) const;
};
// Subregister indices
namespace X86 {
enum {
NoSubRegister,
sub_8bit, // 1
sub_8bit_hi, // 2
sub_16bit, // 3
sub_32bit, // 4
sub_sd, // 5
sub_ss, // 6
sub_xmm, // 7
NUM_TARGET_NAMED_SUBREGS = 8
};
}
namespace X86 { // Register classes
struct GR8Class : public TargetRegisterClass {
GR8Class();
ArrayRef<unsigned> getRawAllocationOrder(const MachineFunction&) const;
};
extern GR8Class GR8RegClass;
static TargetRegisterClass * const GR8RegisterClass = &GR8RegClass;
struct GR64Class : public TargetRegisterClass {
GR64Class();
};
extern GR64Class GR64RegClass;
static TargetRegisterClass * const GR64RegisterClass = &GR64RegClass;
struct GR16Class : public TargetRegisterClass {
GR16Class();
};
extern GR16Class GR16RegClass;
static TargetRegisterClass * const GR16RegisterClass = &GR16RegClass;
struct GR32Class : public TargetRegisterClass {
GR32Class();
};
extern GR32Class GR32RegClass;
static TargetRegisterClass * const GR32RegisterClass = &GR32RegClass;
struct FR32Class : public TargetRegisterClass {
FR32Class();
};
extern FR32Class FR32RegClass;
static TargetRegisterClass * const FR32RegisterClass = &FR32RegClass;
struct GR64_with_sub_8bitClass : public TargetRegisterClass {
GR64_with_sub_8bitClass();
};
extern GR64_with_sub_8bitClass GR64_with_sub_8bitRegClass;
static TargetRegisterClass * const GR64_with_sub_8bitRegisterClass = &GR64_with_sub_8bitRegClass;
struct FR64Class : public TargetRegisterClass {
FR64Class();
};
extern FR64Class FR64RegClass;
static TargetRegisterClass * const FR64RegisterClass = &FR64RegClass;
struct CONTROL_REGClass : public TargetRegisterClass {
CONTROL_REGClass();
};
extern CONTROL_REGClass CONTROL_REGRegClass;
static TargetRegisterClass * const CONTROL_REGRegisterClass = &CONTROL_REGRegClass;
struct VR128Class : public TargetRegisterClass {
VR128Class();
};
extern VR128Class VR128RegClass;
static TargetRegisterClass * const VR128RegisterClass = &VR128RegClass;
struct VR256Class : public TargetRegisterClass {
VR256Class();
};
extern VR256Class VR256RegClass;
static TargetRegisterClass * const VR256RegisterClass = &VR256RegClass;
struct GR32_NOSPClass : public TargetRegisterClass {
GR32_NOSPClass();
};
extern GR32_NOSPClass GR32_NOSPRegClass;
static TargetRegisterClass * const GR32_NOSPRegisterClass = &GR32_NOSPRegClass;
struct GR32_NOAXClass : public TargetRegisterClass {
GR32_NOAXClass();
};
extern GR32_NOAXClass GR32_NOAXRegClass;
static TargetRegisterClass * const GR32_NOAXRegisterClass = &GR32_NOAXRegClass;
struct GR64_NOSPClass : public TargetRegisterClass {
GR64_NOSPClass();
};
extern GR64_NOSPClass GR64_NOSPRegClass;
static TargetRegisterClass * const GR64_NOSPRegisterClass = &GR64_NOSPRegClass;
struct GR64_TCClass : public TargetRegisterClass {
GR64_TCClass();
};
extern GR64_TCClass GR64_TCRegClass;
static TargetRegisterClass * const GR64_TCRegisterClass = &GR64_TCRegClass;
struct GR64_NOREXClass : public TargetRegisterClass {
GR64_NOREXClass();
};
extern GR64_NOREXClass GR64_NOREXRegClass;
static TargetRegisterClass * const GR64_NOREXRegisterClass = &GR64_NOREXRegClass;
struct GR8_NOREXClass : public TargetRegisterClass {
GR8_NOREXClass();
ArrayRef<unsigned> getRawAllocationOrder(const MachineFunction&) const;
};
extern GR8_NOREXClass GR8_NOREXRegClass;
static TargetRegisterClass * const GR8_NOREXRegisterClass = &GR8_NOREXRegClass;
struct GR16_NOREXClass : public TargetRegisterClass {
GR16_NOREXClass();
};
extern GR16_NOREXClass GR16_NOREXRegClass;
static TargetRegisterClass * const GR16_NOREXRegisterClass = &GR16_NOREXRegClass;
struct GR32_NOREXClass : public TargetRegisterClass {
GR32_NOREXClass();
};
extern GR32_NOREXClass GR32_NOREXRegClass;
static TargetRegisterClass * const GR32_NOREXRegisterClass = &GR32_NOREXRegClass;
struct DEBUG_REGClass : public TargetRegisterClass {
DEBUG_REGClass();
};
extern DEBUG_REGClass DEBUG_REGRegClass;
static TargetRegisterClass * const DEBUG_REGRegisterClass = &DEBUG_REGRegClass;
struct VR64Class : public TargetRegisterClass {
VR64Class();
};
extern VR64Class VR64RegClass;
static TargetRegisterClass * const VR64RegisterClass = &VR64RegClass;
struct GR64_TC_with_sub_8bitClass : public TargetRegisterClass {
GR64_TC_with_sub_8bitClass();
};
extern GR64_TC_with_sub_8bitClass GR64_TC_with_sub_8bitRegClass;
static TargetRegisterClass * const GR64_TC_with_sub_8bitRegisterClass = &GR64_TC_with_sub_8bitRegClass;
struct GR64_NOREX_with_sub_8bitClass : public TargetRegisterClass {
GR64_NOREX_with_sub_8bitClass();
};
extern GR64_NOREX_with_sub_8bitClass GR64_NOREX_with_sub_8bitRegClass;
static TargetRegisterClass * const GR64_NOREX_with_sub_8bitRegisterClass = &GR64_NOREX_with_sub_8bitRegClass;
struct RSTClass : public TargetRegisterClass {
RSTClass();
};
extern RSTClass RSTRegClass;
static TargetRegisterClass * const RSTRegisterClass = &RSTRegClass;
struct RFP32Class : public TargetRegisterClass {
RFP32Class();
};
extern RFP32Class RFP32RegClass;
static TargetRegisterClass * const RFP32RegisterClass = &RFP32RegClass;
struct GR32_NOREX_NOSPClass : public TargetRegisterClass {
GR32_NOREX_NOSPClass();
};
extern GR32_NOREX_NOSPClass GR32_NOREX_NOSPRegClass;
static TargetRegisterClass * const GR32_NOREX_NOSPRegisterClass = &GR32_NOREX_NOSPRegClass;
struct RFP64Class : public TargetRegisterClass {
RFP64Class();
};
extern RFP64Class RFP64RegClass;
static TargetRegisterClass * const RFP64RegisterClass = &RFP64RegClass;
struct GR64_NOREX_NOSPClass : public TargetRegisterClass {
GR64_NOREX_NOSPClass();
};
extern GR64_NOREX_NOSPClass GR64_NOREX_NOSPRegClass;
static TargetRegisterClass * const GR64_NOREX_NOSPRegisterClass = &GR64_NOREX_NOSPRegClass;
struct RFP80Class : public TargetRegisterClass {
RFP80Class();
};
extern RFP80Class RFP80RegClass;
static TargetRegisterClass * const RFP80RegisterClass = &RFP80RegClass;
struct SEGMENT_REGClass : public TargetRegisterClass {
SEGMENT_REGClass();
};
extern SEGMENT_REGClass SEGMENT_REGRegClass;
static TargetRegisterClass * const SEGMENT_REGRegisterClass = &SEGMENT_REGRegClass;
struct GR64_TCW64Class : public TargetRegisterClass {
GR64_TCW64Class();
};
extern GR64_TCW64Class GR64_TCW64RegClass;
static TargetRegisterClass * const GR64_TCW64RegisterClass = &GR64_TCW64RegClass;
struct GR8_ABCD_LClass : public TargetRegisterClass {
GR8_ABCD_LClass();
};
extern GR8_ABCD_LClass GR8_ABCD_LRegClass;
static TargetRegisterClass * const GR8_ABCD_LRegisterClass = &GR8_ABCD_LRegClass;
struct GR8_ABCD_HClass : public TargetRegisterClass {
GR8_ABCD_HClass();
};
extern GR8_ABCD_HClass GR8_ABCD_HRegClass;
static TargetRegisterClass * const GR8_ABCD_HRegisterClass = &GR8_ABCD_HRegClass;
struct GR16_ABCDClass : public TargetRegisterClass {
GR16_ABCDClass();
};
extern GR16_ABCDClass GR16_ABCDRegClass;
static TargetRegisterClass * const GR16_ABCDRegisterClass = &GR16_ABCDRegClass;
struct GR32_ABCDClass : public TargetRegisterClass {
GR32_ABCDClass();
};
extern GR32_ABCDClass GR32_ABCDRegClass;
static TargetRegisterClass * const GR32_ABCDRegisterClass = &GR32_ABCDRegClass;
struct GR64_ABCDClass : public TargetRegisterClass {
GR64_ABCDClass();
};
extern GR64_ABCDClass GR64_ABCDRegClass;
static TargetRegisterClass * const GR64_ABCDRegisterClass = &GR64_ABCDRegClass;
struct GR32_TCClass : public TargetRegisterClass {
GR32_TCClass();
};
extern GR32_TCClass GR32_TCRegClass;
static TargetRegisterClass * const GR32_TCRegisterClass = &GR32_TCRegClass;
struct GR32_NOAX_with_sub_8bit_hiClass : public TargetRegisterClass {
GR32_NOAX_with_sub_8bit_hiClass();
};
extern GR32_NOAX_with_sub_8bit_hiClass GR32_NOAX_with_sub_8bit_hiRegClass;
static TargetRegisterClass * const GR32_NOAX_with_sub_8bit_hiRegisterClass = &GR32_NOAX_with_sub_8bit_hiRegClass;
struct GR64_TC_with_sub_8bit_hiClass : public TargetRegisterClass {
GR64_TC_with_sub_8bit_hiClass();
};
extern GR64_TC_with_sub_8bit_hiClass GR64_TC_with_sub_8bit_hiRegClass;
static TargetRegisterClass * const GR64_TC_with_sub_8bit_hiRegisterClass = &GR64_TC_with_sub_8bit_hiRegClass;
struct GR32_ADClass : public TargetRegisterClass {
GR32_ADClass();
};
extern GR32_ADClass GR32_ADRegClass;
static TargetRegisterClass * const GR32_ADRegisterClass = &GR32_ADRegClass;
struct CCRClass : public TargetRegisterClass {
CCRClass();
};
extern CCRClass CCRRegClass;
static TargetRegisterClass * const CCRRegisterClass = &CCRRegClass;
} // end of namespace X86
} // End llvm namespace
#endif // GET_REGINFO_HEADER
//===- TableGen'erated file -------------------------------------*- C++ -*-===//
//
// Target Register and Register Classes Information
//
// Automatically generated file, do not edit!
//
//===----------------------------------------------------------------------===//
#ifdef GET_REGINFO_TARGET_DESC
#undef GET_REGINFO_TARGET_DESC
namespace llvm {
extern MCRegisterClass X86MCRegisterClasses[];
namespace { // Register classes...
// GR8VTs Register Class Value Types...
static const EVT GR8VTs[] = {
MVT::i8, MVT::Other
};
// GR64VTs Register Class Value Types...
static const EVT GR64VTs[] = {
MVT::i64, MVT::Other
};
// GR16VTs Register Class Value Types...
static const EVT GR16VTs[] = {
MVT::i16, MVT::Other
};
// GR32VTs Register Class Value Types...
static const EVT GR32VTs[] = {
MVT::i32, MVT::Other
};
// FR32VTs Register Class Value Types...
static const EVT FR32VTs[] = {
MVT::f32, MVT::Other
};
// GR64_with_sub_8bitVTs Register Class Value Types...
static const EVT GR64_with_sub_8bitVTs[] = {
MVT::i64, MVT::Other
};
// FR64VTs Register Class Value Types...
static const EVT FR64VTs[] = {
MVT::f64, MVT::Other
};
// CONTROL_REGVTs Register Class Value Types...
static const EVT CONTROL_REGVTs[] = {
MVT::i64, 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::v16i16, MVT::v8i32, MVT::v4i64, MVT::v8f32, MVT::v4f64, MVT::Other
};
// GR32_NOSPVTs Register Class Value Types...
static const EVT GR32_NOSPVTs[] = {
MVT::i32, MVT::Other
};
// GR32_NOAXVTs Register Class Value Types...
static const EVT GR32_NOAXVTs[] = {
MVT::i32, 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
};
// GR64_NOREXVTs Register Class Value Types...
static const EVT GR64_NOREXVTs[] = {
MVT::i64, MVT::Other
};
// GR8_NOREXVTs Register Class Value Types...
static const EVT GR8_NOREXVTs[] = {
MVT::i8, MVT::Other
};
// GR16_NOREXVTs Register Class Value Types...
static const EVT GR16_NOREXVTs[] = {
MVT::i16, MVT::Other
};
// GR32_NOREXVTs Register Class Value Types...
static const EVT GR32_NOREXVTs[] = {
MVT::i32, MVT::Other
};
// DEBUG_REGVTs Register Class Value Types...
static const EVT DEBUG_REGVTs[] = {
MVT::i32, MVT::Other
};
// VR64VTs Register Class Value Types...
static const EVT VR64VTs[] = {
MVT::x86mmx, MVT::Other
};
// GR64_TC_with_sub_8bitVTs Register Class Value Types...
static const EVT GR64_TC_with_sub_8bitVTs[] = {
MVT::i64, MVT::Other
};
// GR64_NOREX_with_sub_8bitVTs Register Class Value Types...
static const EVT GR64_NOREX_with_sub_8bitVTs[] = {
MVT::i64, MVT::Other
};
// RSTVTs Register Class Value Types...
static const EVT RSTVTs[] = {
MVT::f80, MVT::f64, MVT::f32, MVT::Other
};
// RFP32VTs Register Class Value Types...
static const EVT RFP32VTs[] = {
MVT::f32, MVT::Other
};
// GR32_NOREX_NOSPVTs Register Class Value Types...
static const EVT GR32_NOREX_NOSPVTs[] = {
MVT::i32, MVT::Other
};
// RFP64VTs Register Class Value Types...
static const EVT RFP64VTs[] = {
MVT::f64, MVT::Other
};
// GR64_NOREX_NOSPVTs Register Class Value Types...
static const EVT GR64_NOREX_NOSPVTs[] = {
MVT::i64, MVT::Other
};
// RFP80VTs Register Class Value Types...
static const EVT RFP80VTs[] = {
MVT::f80, MVT::Other
};
// SEGMENT_REGVTs Register Class Value Types...
static const EVT SEGMENT_REGVTs[] = {
MVT::i16, MVT::Other
};
// GR64_TCW64VTs Register Class Value Types...
static const EVT GR64_TCW64VTs[] = {
MVT::i64, MVT::Other
};
// GR8_ABCD_LVTs Register Class Value Types...
static const EVT GR8_ABCD_LVTs[] = {
MVT::i8, MVT::Other
};
// GR8_ABCD_HVTs Register Class Value Types...
static const EVT GR8_ABCD_HVTs[] = {
MVT::i8, MVT::Other
};
// GR16_ABCDVTs Register Class Value Types...
static const EVT GR16_ABCDVTs[] = {
MVT::i16, MVT::Other
};
// GR32_ABCDVTs Register Class Value Types...
static const EVT GR32_ABCDVTs[] = {
MVT::i32, MVT::Other
};
// GR64_ABCDVTs Register Class Value Types...
static const EVT GR64_ABCDVTs[] = {
MVT::i64, MVT::Other
};
// GR32_TCVTs Register Class Value Types...
static const EVT GR32_TCVTs[] = {
MVT::i32, MVT::Other
};
// GR32_NOAX_with_sub_8bit_hiVTs Register Class Value Types...
static const EVT GR32_NOAX_with_sub_8bit_hiVTs[] = {
MVT::i32, MVT::Other
};
// GR64_TC_with_sub_8bit_hiVTs Register Class Value Types...
static const EVT GR64_TC_with_sub_8bit_hiVTs[] = {
MVT::i64, MVT::Other
};
// GR32_ADVTs Register Class Value Types...
static const EVT GR32_ADVTs[] = {
MVT::i32, MVT::Other
};
// CCRVTs Register Class Value Types...
static const EVT CCRVTs[] = {
MVT::i32, MVT::Other
};
} // end anonymous namespace
namespace X86 { // Register class instances
GR8Class GR8RegClass;
GR64Class GR64RegClass;
GR16Class GR16RegClass;
GR32Class GR32RegClass;
FR32Class FR32RegClass;
GR64_with_sub_8bitClass GR64_with_sub_8bitRegClass;
FR64Class FR64RegClass;
CONTROL_REGClass CONTROL_REGRegClass;
VR128Class VR128RegClass;
VR256Class VR256RegClass;
GR32_NOSPClass GR32_NOSPRegClass;
GR32_NOAXClass GR32_NOAXRegClass;
GR64_NOSPClass GR64_NOSPRegClass;
GR64_TCClass GR64_TCRegClass;
GR64_NOREXClass GR64_NOREXRegClass;
GR8_NOREXClass GR8_NOREXRegClass;
GR16_NOREXClass GR16_NOREXRegClass;
GR32_NOREXClass GR32_NOREXRegClass;
DEBUG_REGClass DEBUG_REGRegClass;
VR64Class VR64RegClass;
GR64_TC_with_sub_8bitClass GR64_TC_with_sub_8bitRegClass;
GR64_NOREX_with_sub_8bitClass GR64_NOREX_with_sub_8bitRegClass;
RSTClass RSTRegClass;
RFP32Class RFP32RegClass;
GR32_NOREX_NOSPClass GR32_NOREX_NOSPRegClass;
RFP64Class RFP64RegClass;
GR64_NOREX_NOSPClass GR64_NOREX_NOSPRegClass;
RFP80Class RFP80RegClass;
SEGMENT_REGClass SEGMENT_REGRegClass;
GR64_TCW64Class GR64_TCW64RegClass;
GR8_ABCD_LClass GR8_ABCD_LRegClass;
GR8_ABCD_HClass GR8_ABCD_HRegClass;
GR16_ABCDClass GR16_ABCDRegClass;
GR32_ABCDClass GR32_ABCDRegClass;
GR64_ABCDClass GR64_ABCDRegClass;
GR32_TCClass GR32_TCRegClass;
GR32_NOAX_with_sub_8bit_hiClass GR32_NOAX_with_sub_8bit_hiRegClass;
GR64_TC_with_sub_8bit_hiClass GR64_TC_with_sub_8bit_hiRegClass;
GR32_ADClass GR32_ADRegClass;
CCRClass CCRRegClass;
static const TargetRegisterClass* const NullRegClasses[] = { NULL };
// GR8 Super-register Classes...
static const TargetRegisterClass* const GR8SuperRegClasses[] = {
&X86::GR64RegClass, &X86::GR16RegClass, &X86::GR32RegClass, &X86::GR32_NOSPRegClass, &X86::GR32_NOAXRegClass, &X86::GR64_NOSPRegClass, &X86::GR64_TCRegClass, &X86::GR32_TCRegClass, NULL
};
// GR64 Super-register Classes...
static const TargetRegisterClass* const GR64SuperRegClasses[] = {
NULL
};
// GR16 Super-register Classes...
static const TargetRegisterClass* const GR16SuperRegClasses[] = {
&X86::GR64RegClass, &X86::GR32RegClass, &X86::GR32_NOSPRegClass, &X86::GR32_NOAXRegClass, &X86::GR64_NOSPRegClass, &X86::GR64_TCRegClass, &X86::GR32_TCRegClass, NULL
};
// GR32 Super-register Classes...
static const TargetRegisterClass* const GR32SuperRegClasses[] = {
&X86::GR64RegClass, NULL
};
// FR32 Super-register Classes...
static const TargetRegisterClass* const FR32SuperRegClasses[] = {
&X86::VR128RegClass, &X86::VR256RegClass, NULL
};
// GR64_with_sub_8bit Super-register Classes...
static const TargetRegisterClass* const GR64_with_sub_8bitSuperRegClasses[] = {
NULL
};
// FR64 Super-register Classes...
static const TargetRegisterClass* const FR64SuperRegClasses[] = {
&X86::VR128RegClass, &X86::VR256RegClass, NULL
};
// CONTROL_REG Super-register Classes...
static const TargetRegisterClass* const CONTROL_REGSuperRegClasses[] = {
NULL
};
// VR128 Super-register Classes...
static const TargetRegisterClass* const VR128SuperRegClasses[] = {
&X86::VR256RegClass, NULL
};
// VR256 Super-register Classes...
static const TargetRegisterClass* const VR256SuperRegClasses[] = {
NULL
};
// GR32_NOSP Super-register Classes...
static const TargetRegisterClass* const GR32_NOSPSuperRegClasses[] = {
&X86::GR64_NOSPRegClass, NULL
};
// GR32_NOAX Super-register Classes...
static const TargetRegisterClass* const GR32_NOAXSuperRegClasses[] = {
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
};
// GR64_NOREX Super-register Classes...
static const TargetRegisterClass* const GR64_NOREXSuperRegClasses[] = {
NULL
};
// GR8_NOREX Super-register Classes...
static const TargetRegisterClass* const GR8_NOREXSuperRegClasses[] = {
&X86::GR64_NOREXRegClass, &X86::GR16_NOREXRegClass, &X86::GR32_NOREXRegClass, &X86::GR32_NOREX_NOSPRegClass, &X86::GR64_NOREX_NOSPRegClass, NULL
};
// GR16_NOREX Super-register Classes...
static const TargetRegisterClass* const GR16_NOREXSuperRegClasses[] = {
&X86::GR64_NOREXRegClass, &X86::GR32_NOREXRegClass, &X86::GR32_NOREX_NOSPRegClass, &X86::GR64_NOREX_NOSPRegClass, NULL
};
// GR32_NOREX Super-register Classes...
static const TargetRegisterClass* const GR32_NOREXSuperRegClasses[] = {
&X86::GR64_NOREXRegClass, NULL
};
// DEBUG_REG Super-register Classes...
static const TargetRegisterClass* const DEBUG_REGSuperRegClasses[] = {
NULL
};
// VR64 Super-register Classes...
static const TargetRegisterClass* const VR64SuperRegClasses[] = {
NULL
};
// GR64_TC_with_sub_8bit Super-register Classes...
static const TargetRegisterClass* const GR64_TC_with_sub_8bitSuperRegClasses[] = {
NULL
};
// GR64_NOREX_with_sub_8bit Super-register Classes...
static const TargetRegisterClass* const GR64_NOREX_with_sub_8bitSuperRegClasses[] = {
NULL
};
// RST Super-register Classes...
static const TargetRegisterClass* const RSTSuperRegClasses[] = {
NULL
};
// RFP32 Super-register Classes...
static const TargetRegisterClass* const RFP32SuperRegClasses[] = {
NULL
};
// GR32_NOREX_NOSP Super-register Classes...
static const TargetRegisterClass* const GR32_NOREX_NOSPSuperRegClasses[] = {
&X86::GR64_NOREX_NOSPRegClass, NULL
};
// RFP64 Super-register Classes...
static const TargetRegisterClass* const RFP64SuperRegClasses[] = {
NULL
};
// GR64_NOREX_NOSP Super-register Classes...
static const TargetRegisterClass* const GR64_NOREX_NOSPSuperRegClasses[] = {
NULL
};
// RFP80 Super-register Classes...
static const TargetRegisterClass* const RFP80SuperRegClasses[] = {
NULL
};
// SEGMENT_REG Super-register Classes...
static const TargetRegisterClass* const SEGMENT_REGSuperRegClasses[] = {
NULL
};
// GR64_TCW64 Super-register Classes...
static const TargetRegisterClass* const GR64_TCW64SuperRegClasses[] = {
NULL
};
// GR8_ABCD_L Super-register Classes...
static const TargetRegisterClass* const GR8_ABCD_LSuperRegClasses[] = {
&X86::GR16_ABCDRegClass, &X86::GR32_ABCDRegClass, &X86::GR64_ABCDRegClass, &X86::GR32_ADRegClass, NULL
};
// GR8_ABCD_H Super-register Classes...
static const TargetRegisterClass* const GR8_ABCD_HSuperRegClasses[] = {
&X86::GR16_ABCDRegClass, &X86::GR32_ABCDRegClass, &X86::GR64_ABCDRegClass, &X86::GR32_ADRegClass, NULL
};
// GR16_ABCD Super-register Classes...
static const TargetRegisterClass* const GR16_ABCDSuperRegClasses[] = {
&X86::GR32_ABCDRegClass, &X86::GR64_ABCDRegClass, &X86::GR32_ADRegClass, NULL
};
// GR32_ABCD Super-register Classes...
static const TargetRegisterClass* const GR32_ABCDSuperRegClasses[] = {
&X86::GR64_ABCDRegClass, NULL
};
// GR64_ABCD Super-register Classes...
static const TargetRegisterClass* const GR64_ABCDSuperRegClasses[] = {
NULL
};
// GR32_TC Super-register Classes...
static const TargetRegisterClass* const GR32_TCSuperRegClasses[] = {
&X86::GR64_TCRegClass, NULL
};
// GR32_NOAX_with_sub_8bit_hi Super-register Classes...
static const TargetRegisterClass* const GR32_NOAX_with_sub_8bit_hiSuperRegClasses[] = {
NULL
};
// GR64_TC_with_sub_8bit_hi Super-register Classes...
static const TargetRegisterClass* const GR64_TC_with_sub_8bit_hiSuperRegClasses[] = {
NULL
};
// GR32_AD Super-register Classes...
static const TargetRegisterClass* const GR32_ADSuperRegClasses[] = {
NULL
};
// CCR Super-register Classes...
static const TargetRegisterClass* const CCRSuperRegClasses[] = {
NULL
};
static const unsigned GR8SubclassMask[] = { 0xc0008001, 0x00000000, };
static const unsigned GR64SubclassMask[] = { 0x24307022, 0x00000024, };
static const unsigned GR16SubclassMask[] = { 0x00010004, 0x00000001, };
static const unsigned GR32SubclassMask[] = { 0x01020c08, 0x0000005a, };
static const unsigned FR32SubclassMask[] = { 0x00000150, 0x00000000, };
static const unsigned GR64_with_sub_8bitSubclassMask[] = { 0x24301020, 0x00000024, };
static const unsigned FR64SubclassMask[] = { 0x00000140, 0x00000000, };
static const unsigned CONTROL_REGSubclassMask[] = { 0x00000080, 0x00000000, };
static const unsigned VR128SubclassMask[] = { 0x00000100, 0x00000000, };
static const unsigned VR256SubclassMask[] = { 0x00000200, 0x00000000, };
static const unsigned GR32_NOSPSubclassMask[] = { 0x01000400, 0x0000005a, };
static const unsigned GR32_NOAXSubclassMask[] = { 0x00000800, 0x00000010, };
static const unsigned GR64_NOSPSubclassMask[] = { 0x24101000, 0x00000024, };
static const unsigned GR64_TCSubclassMask[] = { 0x20102000, 0x00000020, };
static const unsigned GR64_NOREXSubclassMask[] = { 0x04204000, 0x00000024, };
static const unsigned GR8_NOREXSubclassMask[] = { 0xc0008000, 0x00000000, };
static const unsigned GR16_NOREXSubclassMask[] = { 0x00010000, 0x00000001, };
static const unsigned GR32_NOREXSubclassMask[] = { 0x01020000, 0x0000005a, };
static const unsigned DEBUG_REGSubclassMask[] = { 0x00040000, 0x00000000, };
static const unsigned VR64SubclassMask[] = { 0x00080000, 0x00000000, };
static const unsigned GR64_TC_with_sub_8bitSubclassMask[] = { 0x20100000, 0x00000020, };
static const unsigned GR64_NOREX_with_sub_8bitSubclassMask[] = { 0x04200000, 0x00000024, };
static const unsigned RSTSubclassMask[] = { 0x00400000, 0x00000000, };
static const unsigned RFP32SubclassMask[] = { 0x0a800000, 0x00000000, };
static const unsigned GR32_NOREX_NOSPSubclassMask[] = { 0x01000000, 0x0000005a, };
static const unsigned RFP64SubclassMask[] = { 0x0a000000, 0x00000000, };
static const unsigned GR64_NOREX_NOSPSubclassMask[] = { 0x04000000, 0x00000024, };
static const unsigned RFP80SubclassMask[] = { 0x08000000, 0x00000000, };
static const unsigned SEGMENT_REGSubclassMask[] = { 0x10000000, 0x00000000, };
static const unsigned GR64_TCW64SubclassMask[] = { 0x20000000, 0x00000020, };
static const unsigned GR8_ABCD_LSubclassMask[] = { 0x40000000, 0x00000000, };
static const unsigned GR8_ABCD_HSubclassMask[] = { 0x80000000, 0x00000000, };
static const unsigned GR16_ABCDSubclassMask[] = { 0x00000000, 0x00000001, };
static const unsigned GR32_ABCDSubclassMask[] = { 0x00000000, 0x0000005a, };
static const unsigned GR64_ABCDSubclassMask[] = { 0x00000000, 0x00000024, };
static const unsigned GR32_TCSubclassMask[] = { 0x00000000, 0x00000048, };
static const unsigned GR32_NOAX_with_sub_8bit_hiSubclassMask[] = { 0x00000000, 0x00000010, };
static const unsigned GR64_TC_with_sub_8bit_hiSubclassMask[] = { 0x00000000, 0x00000020, };
static const unsigned GR32_ADSubclassMask[] = { 0x00000000, 0x00000040, };
static const unsigned CCRSubclassMask[] = { 0x00000000, 0x00000080, };
static const TargetRegisterClass* const GR64_with_sub_8bitSuperclasses[] = {
&X86::GR64RegClass,
NULL
};
static const TargetRegisterClass* const FR64Superclasses[] = {
&X86::FR32RegClass,
NULL
};
static const TargetRegisterClass* const VR128Superclasses[] = {
&X86::FR32RegClass,
&X86::FR64RegClass,
NULL
};
static const TargetRegisterClass* const GR32_NOSPSuperclasses[] = {
&X86::GR32RegClass,
NULL
};
static const TargetRegisterClass* const GR32_NOAXSuperclasses[] = {
&X86::GR32RegClass,
NULL
};
static const TargetRegisterClass* const GR64_NOSPSuperclasses[] = {
&X86::GR64RegClass,
&X86::GR64_with_sub_8bitRegClass,
NULL
};
static const TargetRegisterClass* const GR64_TCSuperclasses[] = {
&X86::GR64RegClass,
NULL
};
static const TargetRegisterClass* const GR64_NOREXSuperclasses[] = {
&X86::GR64RegClass,
NULL
};
static const TargetRegisterClass* const GR8_NOREXSuperclasses[] = {
&X86::GR8RegClass,
NULL
};
static const TargetRegisterClass* const GR16_NOREXSuperclasses[] = {
&X86::GR16RegClass,
NULL
};
static const TargetRegisterClass* const GR32_NOREXSuperclasses[] = {
&X86::GR32RegClass,
NULL
};
static const TargetRegisterClass* const GR64_TC_with_sub_8bitSuperclasses[] = {
&X86::GR64RegClass,
&X86::GR64_with_sub_8bitRegClass,
&X86::GR64_NOSPRegClass,
&X86::GR64_TCRegClass,
NULL
};
static const TargetRegisterClass* const GR64_NOREX_with_sub_8bitSuperclasses[] = {
&X86::GR64RegClass,
&X86::GR64_with_sub_8bitRegClass,
&X86::GR64_NOREXRegClass,
NULL
};
static const TargetRegisterClass* const GR32_NOREX_NOSPSuperclasses[] = {
&X86::GR32RegClass,
&X86::GR32_NOSPRegClass,
&X86::GR32_NOREXRegClass,
NULL
};
static const TargetRegisterClass* const RFP64Superclasses[] = {
&X86::RFP32RegClass,
NULL
};
static const TargetRegisterClass* const GR64_NOREX_NOSPSuperclasses[] = {
&X86::GR64RegClass,
&X86::GR64_with_sub_8bitRegClass,
&X86::GR64_NOSPRegClass,
&X86::GR64_NOREXRegClass,
&X86::GR64_NOREX_with_sub_8bitRegClass,
NULL
};
static const TargetRegisterClass* const RFP80Superclasses[] = {
&X86::RFP32RegClass,
&X86::RFP64RegClass,
NULL
};
static const TargetRegisterClass* const GR64_TCW64Superclasses[] = {
&X86::GR64RegClass,
&X86::GR64_with_sub_8bitRegClass,
&X86::GR64_NOSPRegClass,
&X86::GR64_TCRegClass,
&X86::GR64_TC_with_sub_8bitRegClass,
NULL
};
static const TargetRegisterClass* const GR8_ABCD_LSuperclasses[] = {
&X86::GR8RegClass,
&X86::GR8_NOREXRegClass,
NULL
};
static const TargetRegisterClass* const GR8_ABCD_HSuperclasses[] = {
&X86::GR8RegClass,
&X86::GR8_NOREXRegClass,
NULL
};
static const TargetRegisterClass* const GR16_ABCDSuperclasses[] = {
&X86::GR16RegClass,
&X86::GR16_NOREXRegClass,
NULL
};
static const TargetRegisterClass* const GR32_ABCDSuperclasses[] = {
&X86::GR32RegClass,
&X86::GR32_NOSPRegClass,
&X86::GR32_NOREXRegClass,
&X86::GR32_NOREX_NOSPRegClass,
NULL
};
static const TargetRegisterClass* const GR64_ABCDSuperclasses[] = {
&X86::GR64RegClass,
&X86::GR64_with_sub_8bitRegClass,
&X86::GR64_NOSPRegClass,
&X86::GR64_NOREXRegClass,
&X86::GR64_NOREX_with_sub_8bitRegClass,
&X86::GR64_NOREX_NOSPRegClass,
NULL
};
static const TargetRegisterClass* const GR32_TCSuperclasses[] = {
&X86::GR32RegClass,
&X86::GR32_NOSPRegClass,
&X86::GR32_NOREXRegClass,
&X86::GR32_NOREX_NOSPRegClass,
&X86::GR32_ABCDRegClass,
NULL
};
static const TargetRegisterClass* const GR32_NOAX_with_sub_8bit_hiSuperclasses[] = {
&X86::GR32RegClass,
&X86::GR32_NOSPRegClass,
&X86::GR32_NOAXRegClass,
&X86::GR32_NOREXRegClass,
&X86::GR32_NOREX_NOSPRegClass,
&X86::GR32_ABCDRegClass,
NULL
};
static const TargetRegisterClass* const GR64_TC_with_sub_8bit_hiSuperclasses[] = {
&X86::GR64RegClass,
&X86::GR64_with_sub_8bitRegClass,
&X86::GR64_NOSPRegClass,
&X86::GR64_TCRegClass,
&X86::GR64_NOREXRegClass,
&X86::GR64_TC_with_sub_8bitRegClass,
&X86::GR64_NOREX_with_sub_8bitRegClass,
&X86::GR64_NOREX_NOSPRegClass,
&X86::GR64_TCW64RegClass,
&X86::GR64_ABCDRegClass,
NULL
};
static const TargetRegisterClass* const GR32_ADSuperclasses[] = {
&X86::GR32RegClass,
&X86::GR32_NOSPRegClass,
&X86::GR32_NOREXRegClass,
&X86::GR32_NOREX_NOSPRegClass,
&X86::GR32_ABCDRegClass,
&X86::GR32_TCRegClass,
NULL
};
GR8Class::GR8Class() : TargetRegisterClass(&X86MCRegisterClasses[GR8RegClassID], GR8VTs, GR8SubclassMask, NullRegClasses, GR8SuperRegClasses) {}
static inline unsigned GR8AltOrderSelect(const MachineFunction &MF) {
return MF.getTarget().getSubtarget<X86Subtarget>().is64Bit();
}
ArrayRef<unsigned> GR8Class::getRawAllocationOrder(const MachineFunction &MF) const {
static const unsigned AltOrder1[] = { X86::AL, X86::CL, X86::DL, X86::BL, X86::SIL, X86::DIL, X86::BPL, X86::SPL, X86::R8B, X86::R9B, X86::R10B, X86::R11B, X86::R14B, X86::R15B, X86::R12B, X86::R13B };
const MCRegisterClass &MCR = X86MCRegisterClasses[X86::GR8RegClassID]; static const ArrayRef<unsigned> Order[] = {
makeArrayRef(MCR.begin(), MCR.getNumRegs()),
makeArrayRef(AltOrder1)
};
const unsigned Select = GR8AltOrderSelect(MF);
assert(Select < 2);
return Order[Select];
}
GR64Class::GR64Class() : TargetRegisterClass(&X86MCRegisterClasses[GR64RegClassID], GR64VTs, GR64SubclassMask, NullRegClasses, GR64SuperRegClasses) {}
GR16Class::GR16Class() : TargetRegisterClass(&X86MCRegisterClasses[GR16RegClassID], GR16VTs, GR16SubclassMask, NullRegClasses, GR16SuperRegClasses) {}
GR32Class::GR32Class() : TargetRegisterClass(&X86MCRegisterClasses[GR32RegClassID], GR32VTs, GR32SubclassMask, NullRegClasses, GR32SuperRegClasses) {}
FR32Class::FR32Class() : TargetRegisterClass(&X86MCRegisterClasses[FR32RegClassID], FR32VTs, FR32SubclassMask, NullRegClasses, FR32SuperRegClasses) {}
GR64_with_sub_8bitClass::GR64_with_sub_8bitClass() : TargetRegisterClass(&X86MCRegisterClasses[GR64_with_sub_8bitRegClassID], GR64_with_sub_8bitVTs, GR64_with_sub_8bitSubclassMask, GR64_with_sub_8bitSuperclasses, GR64_with_sub_8bitSuperRegClasses) {}
FR64Class::FR64Class() : TargetRegisterClass(&X86MCRegisterClasses[FR64RegClassID], FR64VTs, FR64SubclassMask, FR64Superclasses, FR64SuperRegClasses) {}
CONTROL_REGClass::CONTROL_REGClass() : TargetRegisterClass(&X86MCRegisterClasses[CONTROL_REGRegClassID], CONTROL_REGVTs, CONTROL_REGSubclassMask, NullRegClasses, CONTROL_REGSuperRegClasses) {}
VR128Class::VR128Class() : TargetRegisterClass(&X86MCRegisterClasses[VR128RegClassID], VR128VTs, VR128SubclassMask, VR128Superclasses, VR128SuperRegClasses) {}
VR256Class::VR256Class() : TargetRegisterClass(&X86MCRegisterClasses[VR256RegClassID], VR256VTs, VR256SubclassMask, NullRegClasses, VR256SuperRegClasses) {}
GR32_NOSPClass::GR32_NOSPClass() : TargetRegisterClass(&X86MCRegisterClasses[GR32_NOSPRegClassID], GR32_NOSPVTs, GR32_NOSPSubclassMask, GR32_NOSPSuperclasses, GR32_NOSPSuperRegClasses) {}
GR32_NOAXClass::GR32_NOAXClass() : TargetRegisterClass(&X86MCRegisterClasses[GR32_NOAXRegClassID], GR32_NOAXVTs, GR32_NOAXSubclassMask, GR32_NOAXSuperclasses, GR32_NOAXSuperRegClasses) {}
GR64_NOSPClass::GR64_NOSPClass() : TargetRegisterClass(&X86MCRegisterClasses[GR64_NOSPRegClassID], GR64_NOSPVTs, GR64_NOSPSubclassMask, GR64_NOSPSuperclasses, GR64_NOSPSuperRegClasses) {}
GR64_TCClass::GR64_TCClass() : TargetRegisterClass(&X86MCRegisterClasses[GR64_TCRegClassID], GR64_TCVTs, GR64_TCSubclassMask, GR64_TCSuperclasses, GR64_TCSuperRegClasses) {}
GR64_NOREXClass::GR64_NOREXClass() : TargetRegisterClass(&X86MCRegisterClasses[GR64_NOREXRegClassID], GR64_NOREXVTs, GR64_NOREXSubclassMask, GR64_NOREXSuperclasses, GR64_NOREXSuperRegClasses) {}
GR8_NOREXClass::GR8_NOREXClass() : TargetRegisterClass(&X86MCRegisterClasses[GR8_NOREXRegClassID], GR8_NOREXVTs, GR8_NOREXSubclassMask, GR8_NOREXSuperclasses, GR8_NOREXSuperRegClasses) {}
static inline unsigned GR8_NOREXAltOrderSelect(const MachineFunction &MF) {
return MF.getTarget().getSubtarget<X86Subtarget>().is64Bit();
}
ArrayRef<unsigned> GR8_NOREXClass::getRawAllocationOrder(const MachineFunction &MF) const {
static const unsigned AltOrder1[] = { X86::AL, X86::CL, X86::DL, X86::BL };
const MCRegisterClass &MCR = X86MCRegisterClasses[X86::GR8_NOREXRegClassID]; static const ArrayRef<unsigned> Order[] = {
makeArrayRef(MCR.begin(), MCR.getNumRegs()),
makeArrayRef(AltOrder1)
};
const unsigned Select = GR8_NOREXAltOrderSelect(MF);
assert(Select < 2);
return Order[Select];
}
GR16_NOREXClass::GR16_NOREXClass() : TargetRegisterClass(&X86MCRegisterClasses[GR16_NOREXRegClassID], GR16_NOREXVTs, GR16_NOREXSubclassMask, GR16_NOREXSuperclasses, GR16_NOREXSuperRegClasses) {}
GR32_NOREXClass::GR32_NOREXClass() : TargetRegisterClass(&X86MCRegisterClasses[GR32_NOREXRegClassID], GR32_NOREXVTs, GR32_NOREXSubclassMask, GR32_NOREXSuperclasses, GR32_NOREXSuperRegClasses) {}
DEBUG_REGClass::DEBUG_REGClass() : TargetRegisterClass(&X86MCRegisterClasses[DEBUG_REGRegClassID], DEBUG_REGVTs, DEBUG_REGSubclassMask, NullRegClasses, DEBUG_REGSuperRegClasses) {}
VR64Class::VR64Class() : TargetRegisterClass(&X86MCRegisterClasses[VR64RegClassID], VR64VTs, VR64SubclassMask, NullRegClasses, VR64SuperRegClasses) {}
GR64_TC_with_sub_8bitClass::GR64_TC_with_sub_8bitClass() : TargetRegisterClass(&X86MCRegisterClasses[GR64_TC_with_sub_8bitRegClassID], GR64_TC_with_sub_8bitVTs, GR64_TC_with_sub_8bitSubclassMask, GR64_TC_with_sub_8bitSuperclasses, GR64_TC_with_sub_8bitSuperRegClasses) {}
GR64_NOREX_with_sub_8bitClass::GR64_NOREX_with_sub_8bitClass() : TargetRegisterClass(&X86MCRegisterClasses[GR64_NOREX_with_sub_8bitRegClassID], GR64_NOREX_with_sub_8bitVTs, GR64_NOREX_with_sub_8bitSubclassMask, GR64_NOREX_with_sub_8bitSuperclasses, GR64_NOREX_with_sub_8bitSuperRegClasses) {}
RSTClass::RSTClass() : TargetRegisterClass(&X86MCRegisterClasses[RSTRegClassID], RSTVTs, RSTSubclassMask, NullRegClasses, RSTSuperRegClasses) {}
RFP32Class::RFP32Class() : TargetRegisterClass(&X86MCRegisterClasses[RFP32RegClassID], RFP32VTs, RFP32SubclassMask, NullRegClasses, RFP32SuperRegClasses) {}
GR32_NOREX_NOSPClass::GR32_NOREX_NOSPClass() : TargetRegisterClass(&X86MCRegisterClasses[GR32_NOREX_NOSPRegClassID], GR32_NOREX_NOSPVTs, GR32_NOREX_NOSPSubclassMask, GR32_NOREX_NOSPSuperclasses, GR32_NOREX_NOSPSuperRegClasses) {}
RFP64Class::RFP64Class() : TargetRegisterClass(&X86MCRegisterClasses[RFP64RegClassID], RFP64VTs, RFP64SubclassMask, RFP64Superclasses, RFP64SuperRegClasses) {}
GR64_NOREX_NOSPClass::GR64_NOREX_NOSPClass() : TargetRegisterClass(&X86MCRegisterClasses[GR64_NOREX_NOSPRegClassID], GR64_NOREX_NOSPVTs, GR64_NOREX_NOSPSubclassMask, GR64_NOREX_NOSPSuperclasses, GR64_NOREX_NOSPSuperRegClasses) {}
RFP80Class::RFP80Class() : TargetRegisterClass(&X86MCRegisterClasses[RFP80RegClassID], RFP80VTs, RFP80SubclassMask, RFP80Superclasses, RFP80SuperRegClasses) {}
SEGMENT_REGClass::SEGMENT_REGClass() : TargetRegisterClass(&X86MCRegisterClasses[SEGMENT_REGRegClassID], SEGMENT_REGVTs, SEGMENT_REGSubclassMask, NullRegClasses, SEGMENT_REGSuperRegClasses) {}
GR64_TCW64Class::GR64_TCW64Class() : TargetRegisterClass(&X86MCRegisterClasses[GR64_TCW64RegClassID], GR64_TCW64VTs, GR64_TCW64SubclassMask, GR64_TCW64Superclasses, GR64_TCW64SuperRegClasses) {}
GR8_ABCD_LClass::GR8_ABCD_LClass() : TargetRegisterClass(&X86MCRegisterClasses[GR8_ABCD_LRegClassID], GR8_ABCD_LVTs, GR8_ABCD_LSubclassMask, GR8_ABCD_LSuperclasses, GR8_ABCD_LSuperRegClasses) {}
GR8_ABCD_HClass::GR8_ABCD_HClass() : TargetRegisterClass(&X86MCRegisterClasses[GR8_ABCD_HRegClassID], GR8_ABCD_HVTs, GR8_ABCD_HSubclassMask, GR8_ABCD_HSuperclasses, GR8_ABCD_HSuperRegClasses) {}
GR16_ABCDClass::GR16_ABCDClass() : TargetRegisterClass(&X86MCRegisterClasses[GR16_ABCDRegClassID], GR16_ABCDVTs, GR16_ABCDSubclassMask, GR16_ABCDSuperclasses, GR16_ABCDSuperRegClasses) {}
GR32_ABCDClass::GR32_ABCDClass() : TargetRegisterClass(&X86MCRegisterClasses[GR32_ABCDRegClassID], GR32_ABCDVTs, GR32_ABCDSubclassMask, GR32_ABCDSuperclasses, GR32_ABCDSuperRegClasses) {}
GR64_ABCDClass::GR64_ABCDClass() : TargetRegisterClass(&X86MCRegisterClasses[GR64_ABCDRegClassID], GR64_ABCDVTs, GR64_ABCDSubclassMask, GR64_ABCDSuperclasses, GR64_ABCDSuperRegClasses) {}
GR32_TCClass::GR32_TCClass() : TargetRegisterClass(&X86MCRegisterClasses[GR32_TCRegClassID], GR32_TCVTs, GR32_TCSubclassMask, GR32_TCSuperclasses, GR32_TCSuperRegClasses) {}
GR32_NOAX_with_sub_8bit_hiClass::GR32_NOAX_with_sub_8bit_hiClass() : TargetRegisterClass(&X86MCRegisterClasses[GR32_NOAX_with_sub_8bit_hiRegClassID], GR32_NOAX_with_sub_8bit_hiVTs, GR32_NOAX_with_sub_8bit_hiSubclassMask, GR32_NOAX_with_sub_8bit_hiSuperclasses, GR32_NOAX_with_sub_8bit_hiSuperRegClasses) {}
GR64_TC_with_sub_8bit_hiClass::GR64_TC_with_sub_8bit_hiClass() : TargetRegisterClass(&X86MCRegisterClasses[GR64_TC_with_sub_8bit_hiRegClassID], GR64_TC_with_sub_8bit_hiVTs, GR64_TC_with_sub_8bit_hiSubclassMask, GR64_TC_with_sub_8bit_hiSuperclasses, GR64_TC_with_sub_8bit_hiSuperRegClasses) {}
GR32_ADClass::GR32_ADClass() : TargetRegisterClass(&X86MCRegisterClasses[GR32_ADRegClassID], GR32_ADVTs, GR32_ADSubclassMask, GR32_ADSuperclasses, GR32_ADSuperRegClasses) {}
CCRClass::CCRClass() : TargetRegisterClass(&X86MCRegisterClasses[CCRRegClassID], CCRVTs, CCRSubclassMask, NullRegClasses, CCRSuperRegClasses) {}
}
namespace {
const TargetRegisterClass* const RegisterClasses[] = {
&X86::GR8RegClass,
&X86::GR64RegClass,
&X86::GR16RegClass,
&X86::GR32RegClass,
&X86::FR32RegClass,
&X86::GR64_with_sub_8bitRegClass,
&X86::FR64RegClass,
&X86::CONTROL_REGRegClass,
&X86::VR128RegClass,
&X86::VR256RegClass,
&X86::GR32_NOSPRegClass,
&X86::GR32_NOAXRegClass,
&X86::GR64_NOSPRegClass,
&X86::GR64_TCRegClass,
&X86::GR64_NOREXRegClass,
&X86::GR8_NOREXRegClass,
&X86::GR16_NOREXRegClass,
&X86::GR32_NOREXRegClass,
&X86::DEBUG_REGRegClass,
&X86::VR64RegClass,
&X86::GR64_TC_with_sub_8bitRegClass,
&X86::GR64_NOREX_with_sub_8bitRegClass,
&X86::RSTRegClass,
&X86::RFP32RegClass,
&X86::GR32_NOREX_NOSPRegClass,
&X86::RFP64RegClass,
&X86::GR64_NOREX_NOSPRegClass,
&X86::RFP80RegClass,
&X86::SEGMENT_REGRegClass,
&X86::GR64_TCW64RegClass,
&X86::GR8_ABCD_LRegClass,
&X86::GR8_ABCD_HRegClass,
&X86::GR16_ABCDRegClass,
&X86::GR32_ABCDRegClass,
&X86::GR64_ABCDRegClass,
&X86::GR32_TCRegClass,
&X86::GR32_NOAX_with_sub_8bit_hiRegClass,
&X86::GR64_TC_with_sub_8bit_hiRegClass,
&X86::GR32_ADRegClass,
&X86::CCRRegClass,
};
}
static const TargetRegisterInfoDesc X86RegInfoDesc[] = { // Extra Descriptors
{ 0, 0 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 1, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 1, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 0 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 1, 1 },
{ 0, 0 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 1, 1 },
{ 0, 1 },
{ 1, 1 },
{ 0, 1 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 0 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 1, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
{ 0, 1 },
};
static const char *const X86SubRegIndexTable[] = { "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;
}
}
const TargetRegisterClass *X86GenRegisterInfo::getSubClassWithSubReg(const TargetRegisterClass *RC, unsigned Idx) const {
static const uint8_t Table[40][7] = {
{ // GR8
0, // sub_8bit
0, // sub_8bit_hi
0, // sub_16bit
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR64
6, // sub_8bit -> GR64_with_sub_8bit
35, // sub_8bit_hi -> GR64_ABCD
2, // sub_16bit -> GR64
2, // sub_32bit -> GR64
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR16
3, // sub_8bit -> GR16
33, // sub_8bit_hi -> GR16_ABCD
0, // sub_16bit
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR32
4, // sub_8bit -> GR32
34, // sub_8bit_hi -> GR32_ABCD
4, // sub_16bit -> GR32
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // FR32
0, // sub_8bit
0, // sub_8bit_hi
0, // sub_16bit
0, // sub_32bit
5, // sub_sd -> FR32
5, // sub_ss -> FR32
0, // sub_xmm
},
{ // GR64_with_sub_8bit
6, // sub_8bit -> GR64_with_sub_8bit
35, // sub_8bit_hi -> GR64_ABCD
6, // sub_16bit -> GR64_with_sub_8bit
6, // sub_32bit -> GR64_with_sub_8bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // FR64
0, // sub_8bit
0, // sub_8bit_hi
0, // sub_16bit
0, // sub_32bit
7, // sub_sd -> FR64
7, // sub_ss -> FR64
0, // sub_xmm
},
{ // CONTROL_REG
0, // sub_8bit
0, // sub_8bit_hi
0, // sub_16bit
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // VR128
0, // sub_8bit
0, // sub_8bit_hi
0, // sub_16bit
0, // sub_32bit
9, // sub_sd -> VR128
9, // sub_ss -> VR128
0, // sub_xmm
},
{ // VR256
0, // sub_8bit
0, // sub_8bit_hi
0, // sub_16bit
0, // sub_32bit
10, // sub_sd -> VR256
10, // sub_ss -> VR256
10, // sub_xmm -> VR256
},
{ // GR32_NOSP
11, // sub_8bit -> GR32_NOSP
34, // sub_8bit_hi -> GR32_ABCD
11, // sub_16bit -> GR32_NOSP
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR32_NOAX
12, // sub_8bit -> GR32_NOAX
37, // sub_8bit_hi -> GR32_NOAX_with_sub_8bit_hi
12, // sub_16bit -> GR32_NOAX
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR64_NOSP
13, // sub_8bit -> GR64_NOSP
35, // sub_8bit_hi -> GR64_ABCD
13, // sub_16bit -> GR64_NOSP
13, // sub_32bit -> GR64_NOSP
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR64_TC
21, // sub_8bit -> GR64_TC_with_sub_8bit
38, // sub_8bit_hi -> GR64_TC_with_sub_8bit_hi
14, // sub_16bit -> GR64_TC
14, // sub_32bit -> GR64_TC
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR64_NOREX
22, // sub_8bit -> GR64_NOREX_with_sub_8bit
35, // sub_8bit_hi -> GR64_ABCD
15, // sub_16bit -> GR64_NOREX
15, // sub_32bit -> GR64_NOREX
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR8_NOREX
0, // sub_8bit
0, // sub_8bit_hi
0, // sub_16bit
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR16_NOREX
17, // sub_8bit -> GR16_NOREX
33, // sub_8bit_hi -> GR16_ABCD
0, // sub_16bit
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR32_NOREX
18, // sub_8bit -> GR32_NOREX
34, // sub_8bit_hi -> GR32_ABCD
18, // sub_16bit -> GR32_NOREX
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // DEBUG_REG
0, // sub_8bit
0, // sub_8bit_hi
0, // sub_16bit
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // VR64
0, // sub_8bit
0, // sub_8bit_hi
0, // sub_16bit
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR64_TC_with_sub_8bit
21, // sub_8bit -> GR64_TC_with_sub_8bit
38, // sub_8bit_hi -> GR64_TC_with_sub_8bit_hi
21, // sub_16bit -> GR64_TC_with_sub_8bit
21, // sub_32bit -> GR64_TC_with_sub_8bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR64_NOREX_with_sub_8bit
22, // sub_8bit -> GR64_NOREX_with_sub_8bit
35, // sub_8bit_hi -> GR64_ABCD
22, // sub_16bit -> GR64_NOREX_with_sub_8bit
22, // sub_32bit -> GR64_NOREX_with_sub_8bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // RST
0, // sub_8bit
0, // sub_8bit_hi
0, // sub_16bit
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // RFP32
0, // sub_8bit
0, // sub_8bit_hi
0, // sub_16bit
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR32_NOREX_NOSP
25, // sub_8bit -> GR32_NOREX_NOSP
34, // sub_8bit_hi -> GR32_ABCD
25, // sub_16bit -> GR32_NOREX_NOSP
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // RFP64
0, // sub_8bit
0, // sub_8bit_hi
0, // sub_16bit
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR64_NOREX_NOSP
27, // sub_8bit -> GR64_NOREX_NOSP
35, // sub_8bit_hi -> GR64_ABCD
27, // sub_16bit -> GR64_NOREX_NOSP
27, // sub_32bit -> GR64_NOREX_NOSP
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // RFP80
0, // sub_8bit
0, // sub_8bit_hi
0, // sub_16bit
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // SEGMENT_REG
0, // sub_8bit
0, // sub_8bit_hi
0, // sub_16bit
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR64_TCW64
30, // sub_8bit -> GR64_TCW64
38, // sub_8bit_hi -> GR64_TC_with_sub_8bit_hi
30, // sub_16bit -> GR64_TCW64
30, // sub_32bit -> GR64_TCW64
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR8_ABCD_L
0, // sub_8bit
0, // sub_8bit_hi
0, // sub_16bit
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR8_ABCD_H
0, // sub_8bit
0, // sub_8bit_hi
0, // sub_16bit
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR16_ABCD
33, // sub_8bit -> GR16_ABCD
33, // sub_8bit_hi -> GR16_ABCD
0, // sub_16bit
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR32_ABCD
34, // sub_8bit -> GR32_ABCD
34, // sub_8bit_hi -> GR32_ABCD
34, // sub_16bit -> GR32_ABCD
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR64_ABCD
35, // sub_8bit -> GR64_ABCD
35, // sub_8bit_hi -> GR64_ABCD
35, // sub_16bit -> GR64_ABCD
35, // sub_32bit -> GR64_ABCD
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR32_TC
36, // sub_8bit -> GR32_TC
36, // sub_8bit_hi -> GR32_TC
36, // sub_16bit -> GR32_TC
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR32_NOAX_with_sub_8bit_hi
37, // sub_8bit -> GR32_NOAX_with_sub_8bit_hi
37, // sub_8bit_hi -> GR32_NOAX_with_sub_8bit_hi
37, // sub_16bit -> GR32_NOAX_with_sub_8bit_hi
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR64_TC_with_sub_8bit_hi
38, // sub_8bit -> GR64_TC_with_sub_8bit_hi
38, // sub_8bit_hi -> GR64_TC_with_sub_8bit_hi
38, // sub_16bit -> GR64_TC_with_sub_8bit_hi
38, // sub_32bit -> GR64_TC_with_sub_8bit_hi
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // GR32_AD
39, // sub_8bit -> GR32_AD
39, // sub_8bit_hi -> GR32_AD
39, // sub_16bit -> GR32_AD
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
{ // CCR
0, // sub_8bit
0, // sub_8bit_hi
0, // sub_16bit
0, // sub_32bit
0, // sub_sd
0, // sub_ss
0, // sub_xmm
},
};
assert(RC && "Missing regclass");
if (!Idx) return RC;
--Idx;
assert(Idx < 7 && "Bad subreg");
unsigned TV = Table[RC->getID()][Idx];
return TV ? getRegClass(TV - 1) : 0;
}
extern MCRegisterDesc X86RegDesc[];
X86GenRegisterInfo::X86GenRegisterInfo(unsigned RA, unsigned DwarfFlavour, unsigned EHFlavour)
: TargetRegisterInfo(X86RegInfoDesc, RegisterClasses, RegisterClasses+40,
X86SubRegIndexTable) {
InitMCRegisterInfo(X86RegDesc, 160, RA, X86MCRegisterClasses, 40);
switch (DwarfFlavour) {
default:
assert(0 && "Unknown DWARF flavour");
break;
case 0:
mapDwarfRegToLLVMReg(41, X86::MM0, false );
mapDwarfRegToLLVMReg(42, X86::MM1, false );
mapDwarfRegToLLVMReg(43, X86::MM2, false );
mapDwarfRegToLLVMReg(44, X86::MM3, false );
mapDwarfRegToLLVMReg(45, X86::MM4, false );
mapDwarfRegToLLVMReg(46, X86::MM5, false );
mapDwarfRegToLLVMReg(47, X86::MM6, false );
mapDwarfRegToLLVMReg(48, X86::MM7, false );
mapDwarfRegToLLVMReg(8, X86::R8, false );
mapDwarfRegToLLVMReg(9, X86::R9, false );
mapDwarfRegToLLVMReg(10, X86::R10, false );
mapDwarfRegToLLVMReg(11, X86::R11, false );
mapDwarfRegToLLVMReg(12, X86::R12, false );
mapDwarfRegToLLVMReg(13, X86::R13, false );
mapDwarfRegToLLVMReg(14, X86::R14, false );
mapDwarfRegToLLVMReg(15, X86::R15, false );
mapDwarfRegToLLVMReg(0, X86::RAX, false );
mapDwarfRegToLLVMReg(6, X86::RBP, false );
mapDwarfRegToLLVMReg(3, X86::RBX, false );
mapDwarfRegToLLVMReg(2, X86::RCX, false );
mapDwarfRegToLLVMReg(5, X86::RDI, false );
mapDwarfRegToLLVMReg(1, X86::RDX, false );
mapDwarfRegToLLVMReg(16, X86::RIP, false );
mapDwarfRegToLLVMReg(4, X86::RSI, false );
mapDwarfRegToLLVMReg(7, X86::RSP, false );
mapDwarfRegToLLVMReg(33, X86::ST0, false );
mapDwarfRegToLLVMReg(34, X86::ST1, false );
mapDwarfRegToLLVMReg(35, X86::ST2, false );
mapDwarfRegToLLVMReg(36, X86::ST3, false );
mapDwarfRegToLLVMReg(37, X86::ST4, false );
mapDwarfRegToLLVMReg(38, X86::ST5, false );
mapDwarfRegToLLVMReg(39, X86::ST6, false );
mapDwarfRegToLLVMReg(40, X86::ST7, false );
mapDwarfRegToLLVMReg(17, X86::XMM0, false );
mapDwarfRegToLLVMReg(18, X86::XMM1, false );
mapDwarfRegToLLVMReg(19, X86::XMM2, false );
mapDwarfRegToLLVMReg(20, X86::XMM3, false );
mapDwarfRegToLLVMReg(21, X86::XMM4, false );
mapDwarfRegToLLVMReg(22, X86::XMM5, false );
mapDwarfRegToLLVMReg(23, X86::XMM6, false );
mapDwarfRegToLLVMReg(24, X86::XMM7, false );
mapDwarfRegToLLVMReg(25, X86::XMM8, false );
mapDwarfRegToLLVMReg(26, X86::XMM9, false );
mapDwarfRegToLLVMReg(27, X86::XMM10, false );
mapDwarfRegToLLVMReg(28, X86::XMM11, false );
mapDwarfRegToLLVMReg(29, X86::XMM12, false );
mapDwarfRegToLLVMReg(30, X86::XMM13, false );
mapDwarfRegToLLVMReg(31, X86::XMM14, false );
mapDwarfRegToLLVMReg(32, X86::XMM15, false );
break;
case 1:
mapDwarfRegToLLVMReg(0, X86::EAX, false );
mapDwarfRegToLLVMReg(4, X86::EBP, false );
mapDwarfRegToLLVMReg(3, X86::EBX, false );
mapDwarfRegToLLVMReg(1, X86::ECX, false );
mapDwarfRegToLLVMReg(7, X86::EDI, false );
mapDwarfRegToLLVMReg(2, X86::EDX, false );
mapDwarfRegToLLVMReg(8, X86::EIP, false );
mapDwarfRegToLLVMReg(6, X86::ESI, false );
mapDwarfRegToLLVMReg(5, X86::ESP, false );
mapDwarfRegToLLVMReg(29, X86::MM0, false );
mapDwarfRegToLLVMReg(30, X86::MM1, false );
mapDwarfRegToLLVMReg(31, X86::MM2, false );
mapDwarfRegToLLVMReg(32, X86::MM3, false );
mapDwarfRegToLLVMReg(33, X86::MM4, false );
mapDwarfRegToLLVMReg(34, X86::MM5, false );
mapDwarfRegToLLVMReg(35, X86::MM6, false );
mapDwarfRegToLLVMReg(36, X86::MM7, false );
mapDwarfRegToLLVMReg(12, X86::ST0, false );
mapDwarfRegToLLVMReg(13, X86::ST1, false );
mapDwarfRegToLLVMReg(14, X86::ST2, false );
mapDwarfRegToLLVMReg(15, X86::ST3, false );
mapDwarfRegToLLVMReg(16, X86::ST4, false );
mapDwarfRegToLLVMReg(17, X86::ST5, false );
mapDwarfRegToLLVMReg(18, X86::ST6, false );
mapDwarfRegToLLVMReg(19, X86::ST7, false );
mapDwarfRegToLLVMReg(21, X86::XMM0, false );
mapDwarfRegToLLVMReg(22, X86::XMM1, false );
mapDwarfRegToLLVMReg(23, X86::XMM2, false );
mapDwarfRegToLLVMReg(24, X86::XMM3, false );
mapDwarfRegToLLVMReg(25, X86::XMM4, false );
mapDwarfRegToLLVMReg(26, X86::XMM5, false );
mapDwarfRegToLLVMReg(27, X86::XMM6, false );
mapDwarfRegToLLVMReg(28, X86::XMM7, false );
break;
case 2:
mapDwarfRegToLLVMReg(0, X86::EAX, false );
mapDwarfRegToLLVMReg(5, X86::EBP, false );
mapDwarfRegToLLVMReg(3, X86::EBX, false );
mapDwarfRegToLLVMReg(1, X86::ECX, false );
mapDwarfRegToLLVMReg(7, X86::EDI, false );
mapDwarfRegToLLVMReg(2, X86::EDX, false );
mapDwarfRegToLLVMReg(8, X86::EIP, false );
mapDwarfRegToLLVMReg(6, X86::ESI, false );
mapDwarfRegToLLVMReg(4, X86::ESP, false );
mapDwarfRegToLLVMReg(29, X86::MM0, false );
mapDwarfRegToLLVMReg(30, X86::MM1, false );
mapDwarfRegToLLVMReg(31, X86::MM2, false );
mapDwarfRegToLLVMReg(32, X86::MM3, false );
mapDwarfRegToLLVMReg(33, X86::MM4, false );
mapDwarfRegToLLVMReg(34, X86::MM5, false );
mapDwarfRegToLLVMReg(35, X86::MM6, false );
mapDwarfRegToLLVMReg(36, X86::MM7, false );
mapDwarfRegToLLVMReg(11, X86::ST0, false );
mapDwarfRegToLLVMReg(12, X86::ST1, false );
mapDwarfRegToLLVMReg(13, X86::ST2, false );
mapDwarfRegToLLVMReg(14, X86::ST3, false );
mapDwarfRegToLLVMReg(15, X86::ST4, false );
mapDwarfRegToLLVMReg(16, X86::ST5, false );
mapDwarfRegToLLVMReg(17, X86::ST6, false );
mapDwarfRegToLLVMReg(18, X86::ST7, false );
mapDwarfRegToLLVMReg(21, X86::XMM0, false );
mapDwarfRegToLLVMReg(22, X86::XMM1, false );
mapDwarfRegToLLVMReg(23, X86::XMM2, false );
mapDwarfRegToLLVMReg(24, X86::XMM3, false );
mapDwarfRegToLLVMReg(25, X86::XMM4, false );
mapDwarfRegToLLVMReg(26, X86::XMM5, false );
mapDwarfRegToLLVMReg(27, X86::XMM6, false );
mapDwarfRegToLLVMReg(28, X86::XMM7, false );
break;
}
switch (EHFlavour) {
default:
assert(0 && "Unknown DWARF flavour");
break;
case 0:
mapDwarfRegToLLVMReg(41, X86::MM0, true );
mapDwarfRegToLLVMReg(42, X86::MM1, true );
mapDwarfRegToLLVMReg(43, X86::MM2, true );
mapDwarfRegToLLVMReg(44, X86::MM3, true );
mapDwarfRegToLLVMReg(45, X86::MM4, true );
mapDwarfRegToLLVMReg(46, X86::MM5, true );
mapDwarfRegToLLVMReg(47, X86::MM6, true );
mapDwarfRegToLLVMReg(48, X86::MM7, true );
mapDwarfRegToLLVMReg(8, X86::R8, true );
mapDwarfRegToLLVMReg(9, X86::R9, true );
mapDwarfRegToLLVMReg(10, X86::R10, true );
mapDwarfRegToLLVMReg(11, X86::R11, true );
mapDwarfRegToLLVMReg(12, X86::R12, true );
mapDwarfRegToLLVMReg(13, X86::R13, true );
mapDwarfRegToLLVMReg(14, X86::R14, true );
mapDwarfRegToLLVMReg(15, X86::R15, true );
mapDwarfRegToLLVMReg(0, X86::RAX, true );
mapDwarfRegToLLVMReg(6, X86::RBP, true );
mapDwarfRegToLLVMReg(3, X86::RBX, true );
mapDwarfRegToLLVMReg(2, X86::RCX, true );
mapDwarfRegToLLVMReg(5, X86::RDI, true );
mapDwarfRegToLLVMReg(1, X86::RDX, true );
mapDwarfRegToLLVMReg(16, X86::RIP, true );
mapDwarfRegToLLVMReg(4, X86::RSI, true );
mapDwarfRegToLLVMReg(7, X86::RSP, true );
mapDwarfRegToLLVMReg(33, X86::ST0, true );
mapDwarfRegToLLVMReg(34, X86::ST1, true );
mapDwarfRegToLLVMReg(35, X86::ST2, true );
mapDwarfRegToLLVMReg(36, X86::ST3, true );
mapDwarfRegToLLVMReg(37, X86::ST4, true );
mapDwarfRegToLLVMReg(38, X86::ST5, true );
mapDwarfRegToLLVMReg(39, X86::ST6, true );
mapDwarfRegToLLVMReg(40, X86::ST7, true );
mapDwarfRegToLLVMReg(17, X86::XMM0, true );
mapDwarfRegToLLVMReg(18, X86::XMM1, true );
mapDwarfRegToLLVMReg(19, X86::XMM2, true );
mapDwarfRegToLLVMReg(20, X86::XMM3, true );
mapDwarfRegToLLVMReg(21, X86::XMM4, true );
mapDwarfRegToLLVMReg(22, X86::XMM5, true );
mapDwarfRegToLLVMReg(23, X86::XMM6, true );
mapDwarfRegToLLVMReg(24, X86::XMM7, true );
mapDwarfRegToLLVMReg(25, X86::XMM8, true );
mapDwarfRegToLLVMReg(26, X86::XMM9, true );
mapDwarfRegToLLVMReg(27, X86::XMM10, true );
mapDwarfRegToLLVMReg(28, X86::XMM11, true );
mapDwarfRegToLLVMReg(29, X86::XMM12, true );
mapDwarfRegToLLVMReg(30, X86::XMM13, true );
mapDwarfRegToLLVMReg(31, X86::XMM14, true );
mapDwarfRegToLLVMReg(32, X86::XMM15, true );
break;
case 1:
mapDwarfRegToLLVMReg(0, X86::EAX, true );
mapDwarfRegToLLVMReg(4, X86::EBP, true );
mapDwarfRegToLLVMReg(3, X86::EBX, true );
mapDwarfRegToLLVMReg(1, X86::ECX, true );
mapDwarfRegToLLVMReg(7, X86::EDI, true );
mapDwarfRegToLLVMReg(2, X86::EDX, true );
mapDwarfRegToLLVMReg(8, X86::EIP, true );
mapDwarfRegToLLVMReg(6, X86::ESI, true );
mapDwarfRegToLLVMReg(5, X86::ESP, true );
mapDwarfRegToLLVMReg(29, X86::MM0, true );
mapDwarfRegToLLVMReg(30, X86::MM1, true );
mapDwarfRegToLLVMReg(31, X86::MM2, true );
mapDwarfRegToLLVMReg(32, X86::MM3, true );
mapDwarfRegToLLVMReg(33, X86::MM4, true );
mapDwarfRegToLLVMReg(34, X86::MM5, true );
mapDwarfRegToLLVMReg(35, X86::MM6, true );
mapDwarfRegToLLVMReg(36, X86::MM7, true );
mapDwarfRegToLLVMReg(12, X86::ST0, true );
mapDwarfRegToLLVMReg(13, X86::ST1, true );
mapDwarfRegToLLVMReg(14, X86::ST2, true );
mapDwarfRegToLLVMReg(15, X86::ST3, true );
mapDwarfRegToLLVMReg(16, X86::ST4, true );
mapDwarfRegToLLVMReg(17, X86::ST5, true );
mapDwarfRegToLLVMReg(18, X86::ST6, true );
mapDwarfRegToLLVMReg(19, X86::ST7, true );
mapDwarfRegToLLVMReg(21, X86::XMM0, true );
mapDwarfRegToLLVMReg(22, X86::XMM1, true );
mapDwarfRegToLLVMReg(23, X86::XMM2, true );
mapDwarfRegToLLVMReg(24, X86::XMM3, true );
mapDwarfRegToLLVMReg(25, X86::XMM4, true );
mapDwarfRegToLLVMReg(26, X86::XMM5, true );
mapDwarfRegToLLVMReg(27, X86::XMM6, true );
mapDwarfRegToLLVMReg(28, X86::XMM7, true );
break;
case 2:
mapDwarfRegToLLVMReg(0, X86::EAX, true );
mapDwarfRegToLLVMReg(5, X86::EBP, true );
mapDwarfRegToLLVMReg(3, X86::EBX, true );
mapDwarfRegToLLVMReg(1, X86::ECX, true );
mapDwarfRegToLLVMReg(7, X86::EDI, true );
mapDwarfRegToLLVMReg(2, X86::EDX, true );
mapDwarfRegToLLVMReg(8, X86::EIP, true );
mapDwarfRegToLLVMReg(6, X86::ESI, true );
mapDwarfRegToLLVMReg(4, X86::ESP, true );
mapDwarfRegToLLVMReg(29, X86::MM0, true );
mapDwarfRegToLLVMReg(30, X86::MM1, true );
mapDwarfRegToLLVMReg(31, X86::MM2, true );
mapDwarfRegToLLVMReg(32, X86::MM3, true );
mapDwarfRegToLLVMReg(33, X86::MM4, true );
mapDwarfRegToLLVMReg(34, X86::MM5, true );
mapDwarfRegToLLVMReg(35, X86::MM6, true );
mapDwarfRegToLLVMReg(36, X86::MM7, true );
mapDwarfRegToLLVMReg(11, X86::ST0, true );
mapDwarfRegToLLVMReg(12, X86::ST1, true );
mapDwarfRegToLLVMReg(13, X86::ST2, true );
mapDwarfRegToLLVMReg(14, X86::ST3, true );
mapDwarfRegToLLVMReg(15, X86::ST4, true );
mapDwarfRegToLLVMReg(16, X86::ST5, true );
mapDwarfRegToLLVMReg(17, X86::ST6, true );
mapDwarfRegToLLVMReg(18, X86::ST7, true );
mapDwarfRegToLLVMReg(21, X86::XMM0, true );
mapDwarfRegToLLVMReg(22, X86::XMM1, true );
mapDwarfRegToLLVMReg(23, X86::XMM2, true );
mapDwarfRegToLLVMReg(24, X86::XMM3, true );
mapDwarfRegToLLVMReg(25, X86::XMM4, true );
mapDwarfRegToLLVMReg(26, X86::XMM5, true );
mapDwarfRegToLLVMReg(27, X86::XMM6, true );
mapDwarfRegToLLVMReg(28, X86::XMM7, true );
break;
}
switch (DwarfFlavour) {
default:
assert(0 && "Unknown DWARF flavour");
break;
case 0:
mapLLVMRegToDwarfReg(X86::AH, -1, false );
mapLLVMRegToDwarfReg(X86::AL, -1, false );
mapLLVMRegToDwarfReg(X86::AX, -1, false );
mapLLVMRegToDwarfReg(X86::BH, -1, false );
mapLLVMRegToDwarfReg(X86::BL, -1, false );
mapLLVMRegToDwarfReg(X86::BP, -1, false );
mapLLVMRegToDwarfReg(X86::BPL, -1, false );
mapLLVMRegToDwarfReg(X86::BX, -1, false );
mapLLVMRegToDwarfReg(X86::CH, -1, false );
mapLLVMRegToDwarfReg(X86::CL, -1, false );
mapLLVMRegToDwarfReg(X86::CR0, -1, false );
mapLLVMRegToDwarfReg(X86::CR1, -1, false );
mapLLVMRegToDwarfReg(X86::CR2, -1, false );
mapLLVMRegToDwarfReg(X86::CR3, -1, false );
mapLLVMRegToDwarfReg(X86::CR4, -1, false );
mapLLVMRegToDwarfReg(X86::CR5, -1, false );
mapLLVMRegToDwarfReg(X86::CR6, -1, false );
mapLLVMRegToDwarfReg(X86::CR7, -1, false );
mapLLVMRegToDwarfReg(X86::CR8, -1, false );
mapLLVMRegToDwarfReg(X86::CR9, -1, false );
mapLLVMRegToDwarfReg(X86::CR10, -1, false );
mapLLVMRegToDwarfReg(X86::CR11, -1, false );
mapLLVMRegToDwarfReg(X86::CR12, -1, false );
mapLLVMRegToDwarfReg(X86::CR13, -1, false );
mapLLVMRegToDwarfReg(X86::CR14, -1, false );
mapLLVMRegToDwarfReg(X86::CR15, -1, false );
mapLLVMRegToDwarfReg(X86::CS, -1, false );
mapLLVMRegToDwarfReg(X86::CX, -1, false );
mapLLVMRegToDwarfReg(X86::DH, -1, false );
mapLLVMRegToDwarfReg(X86::DI, -1, false );
mapLLVMRegToDwarfReg(X86::DIL, -1, false );
mapLLVMRegToDwarfReg(X86::DL, -1, false );
mapLLVMRegToDwarfReg(X86::DR0, -1, false );
mapLLVMRegToDwarfReg(X86::DR1, -1, false );
mapLLVMRegToDwarfReg(X86::DR2, -1, false );
mapLLVMRegToDwarfReg(X86::DR3, -1, false );
mapLLVMRegToDwarfReg(X86::DR4, -1, false );
mapLLVMRegToDwarfReg(X86::DR5, -1, false );
mapLLVMRegToDwarfReg(X86::DR6, -1, false );
mapLLVMRegToDwarfReg(X86::DR7, -1, false );
mapLLVMRegToDwarfReg(X86::DS, -1, false );
mapLLVMRegToDwarfReg(X86::DX, -1, false );
mapLLVMRegToDwarfReg(X86::EAX, -2, false );
mapLLVMRegToDwarfReg(X86::EBP, -2, false );
mapLLVMRegToDwarfReg(X86::EBX, -2, false );
mapLLVMRegToDwarfReg(X86::ECX, -2, false );
mapLLVMRegToDwarfReg(X86::EDI, -2, false );
mapLLVMRegToDwarfReg(X86::EDX, -2, false );
mapLLVMRegToDwarfReg(X86::EFLAGS, -1, false );
mapLLVMRegToDwarfReg(X86::EIP, -2, false );
mapLLVMRegToDwarfReg(X86::EIZ, -1, false );
mapLLVMRegToDwarfReg(X86::ES, -1, false );
mapLLVMRegToDwarfReg(X86::ESI, -2, false );
mapLLVMRegToDwarfReg(X86::ESP, -2, false );
mapLLVMRegToDwarfReg(X86::FP0, -1, false );
mapLLVMRegToDwarfReg(X86::FP1, -1, false );
mapLLVMRegToDwarfReg(X86::FP2, -1, false );
mapLLVMRegToDwarfReg(X86::FP3, -1, false );
mapLLVMRegToDwarfReg(X86::FP4, -1, false );
mapLLVMRegToDwarfReg(X86::FP5, -1, false );
mapLLVMRegToDwarfReg(X86::FP6, -1, false );
mapLLVMRegToDwarfReg(X86::FS, -1, false );
mapLLVMRegToDwarfReg(X86::GS, -1, false );
mapLLVMRegToDwarfReg(X86::IP, -1, false );
mapLLVMRegToDwarfReg(X86::MM0, 41, false );
mapLLVMRegToDwarfReg(X86::MM1, 42, false );
mapLLVMRegToDwarfReg(X86::MM2, 43, false );
mapLLVMRegToDwarfReg(X86::MM3, 44, false );
mapLLVMRegToDwarfReg(X86::MM4, 45, false );
mapLLVMRegToDwarfReg(X86::MM5, 46, false );
mapLLVMRegToDwarfReg(X86::MM6, 47, false );
mapLLVMRegToDwarfReg(X86::MM7, 48, false );
mapLLVMRegToDwarfReg(X86::R8, 8, false );
mapLLVMRegToDwarfReg(X86::R8B, -1, false );
mapLLVMRegToDwarfReg(X86::R8D, -1, false );
mapLLVMRegToDwarfReg(X86::R8W, -1, false );
mapLLVMRegToDwarfReg(X86::R9, 9, false );
mapLLVMRegToDwarfReg(X86::R9B, -1, false );
mapLLVMRegToDwarfReg(X86::R9D, -1, false );
mapLLVMRegToDwarfReg(X86::R9W, -1, false );
mapLLVMRegToDwarfReg(X86::R10, 10, false );
mapLLVMRegToDwarfReg(X86::R10B, -1, false );
mapLLVMRegToDwarfReg(X86::R10D, -1, false );
mapLLVMRegToDwarfReg(X86::R10W, -1, false );
mapLLVMRegToDwarfReg(X86::R11, 11, false );
mapLLVMRegToDwarfReg(X86::R11B, -1, false );
mapLLVMRegToDwarfReg(X86::R11D, -1, false );
mapLLVMRegToDwarfReg(X86::R11W, -1, false );
mapLLVMRegToDwarfReg(X86::R12, 12, false );
mapLLVMRegToDwarfReg(X86::R12B, -1, false );
mapLLVMRegToDwarfReg(X86::R12D, -1, false );
mapLLVMRegToDwarfReg(X86::R12W, -1, false );
mapLLVMRegToDwarfReg(X86::R13, 13, false );
mapLLVMRegToDwarfReg(X86::R13B, -1, false );
mapLLVMRegToDwarfReg(X86::R13D, -1, false );
mapLLVMRegToDwarfReg(X86::R13W, -1, false );
mapLLVMRegToDwarfReg(X86::R14, 14, false );
mapLLVMRegToDwarfReg(X86::R14B, -1, false );
mapLLVMRegToDwarfReg(X86::R14D, -1, false );
mapLLVMRegToDwarfReg(X86::R14W, -1, false );
mapLLVMRegToDwarfReg(X86::R15, 15, false );
mapLLVMRegToDwarfReg(X86::R15B, -1, false );
mapLLVMRegToDwarfReg(X86::R15D, -1, false );
mapLLVMRegToDwarfReg(X86::R15W, -1, false );
mapLLVMRegToDwarfReg(X86::RAX, 0, false );
mapLLVMRegToDwarfReg(X86::RBP, 6, false );
mapLLVMRegToDwarfReg(X86::RBX, 3, false );
mapLLVMRegToDwarfReg(X86::RCX, 2, false );
mapLLVMRegToDwarfReg(X86::RDI, 5, false );
mapLLVMRegToDwarfReg(X86::RDX, 1, false );
mapLLVMRegToDwarfReg(X86::RIP, 16, false );
mapLLVMRegToDwarfReg(X86::RIZ, -1, false );
mapLLVMRegToDwarfReg(X86::RSI, 4, false );
mapLLVMRegToDwarfReg(X86::RSP, 7, false );
mapLLVMRegToDwarfReg(X86::SI, -1, false );
mapLLVMRegToDwarfReg(X86::SIL, -1, false );
mapLLVMRegToDwarfReg(X86::SP, -1, false );
mapLLVMRegToDwarfReg(X86::SPL, -1, false );
mapLLVMRegToDwarfReg(X86::SS, -1, false );
mapLLVMRegToDwarfReg(X86::ST0, 33, false );
mapLLVMRegToDwarfReg(X86::ST1, 34, false );
mapLLVMRegToDwarfReg(X86::ST2, 35, false );
mapLLVMRegToDwarfReg(X86::ST3, 36, false );
mapLLVMRegToDwarfReg(X86::ST4, 37, false );
mapLLVMRegToDwarfReg(X86::ST5, 38, false );
mapLLVMRegToDwarfReg(X86::ST6, 39, false );
mapLLVMRegToDwarfReg(X86::ST7, 40, false );
mapLLVMRegToDwarfReg(X86::XMM0, 17, false );
mapLLVMRegToDwarfReg(X86::XMM1, 18, false );
mapLLVMRegToDwarfReg(X86::XMM2, 19, false );
mapLLVMRegToDwarfReg(X86::XMM3, 20, false );
mapLLVMRegToDwarfReg(X86::XMM4, 21, false );
mapLLVMRegToDwarfReg(X86::XMM5, 22, false );
mapLLVMRegToDwarfReg(X86::XMM6, 23, false );
mapLLVMRegToDwarfReg(X86::XMM7, 24, false );
mapLLVMRegToDwarfReg(X86::XMM8, 25, false );
mapLLVMRegToDwarfReg(X86::XMM9, 26, false );
mapLLVMRegToDwarfReg(X86::XMM10, 27, false );
mapLLVMRegToDwarfReg(X86::XMM11, 28, false );
mapLLVMRegToDwarfReg(X86::XMM12, 29, false );
mapLLVMRegToDwarfReg(X86::XMM13, 30, false );
mapLLVMRegToDwarfReg(X86::XMM14, 31, false );
mapLLVMRegToDwarfReg(X86::XMM15, 32, false );
mapLLVMRegToDwarfReg(X86::YMM0, 17, false );
mapLLVMRegToDwarfReg(X86::YMM1, 18, false );
mapLLVMRegToDwarfReg(X86::YMM2, 19, false );
mapLLVMRegToDwarfReg(X86::YMM3, 20, false );
mapLLVMRegToDwarfReg(X86::YMM4, 21, false );
mapLLVMRegToDwarfReg(X86::YMM5, 22, false );
mapLLVMRegToDwarfReg(X86::YMM6, 23, false );
mapLLVMRegToDwarfReg(X86::YMM7, 24, false );
mapLLVMRegToDwarfReg(X86::YMM8, 25, false );
mapLLVMRegToDwarfReg(X86::YMM9, 26, false );
mapLLVMRegToDwarfReg(X86::YMM10, 27, false );
mapLLVMRegToDwarfReg(X86::YMM11, 28, false );
mapLLVMRegToDwarfReg(X86::YMM12, 29, false );
mapLLVMRegToDwarfReg(X86::YMM13, 30, false );
mapLLVMRegToDwarfReg(X86::YMM14, 31, false );
mapLLVMRegToDwarfReg(X86::YMM15, 32, false );
break;
case 1:
mapLLVMRegToDwarfReg(X86::AH, -1, false );
mapLLVMRegToDwarfReg(X86::AL, -1, false );
mapLLVMRegToDwarfReg(X86::AX, -1, false );
mapLLVMRegToDwarfReg(X86::BH, -1, false );
mapLLVMRegToDwarfReg(X86::BL, -1, false );
mapLLVMRegToDwarfReg(X86::BP, -1, false );
mapLLVMRegToDwarfReg(X86::BPL, -1, false );
mapLLVMRegToDwarfReg(X86::BX, -1, false );
mapLLVMRegToDwarfReg(X86::CH, -1, false );
mapLLVMRegToDwarfReg(X86::CL, -1, false );
mapLLVMRegToDwarfReg(X86::CR0, -1, false );
mapLLVMRegToDwarfReg(X86::CR1, -1, false );
mapLLVMRegToDwarfReg(X86::CR2, -1, false );
mapLLVMRegToDwarfReg(X86::CR3, -1, false );
mapLLVMRegToDwarfReg(X86::CR4, -1, false );
mapLLVMRegToDwarfReg(X86::CR5, -1, false );
mapLLVMRegToDwarfReg(X86::CR6, -1, false );
mapLLVMRegToDwarfReg(X86::CR7, -1, false );
mapLLVMRegToDwarfReg(X86::CR8, -1, false );
mapLLVMRegToDwarfReg(X86::CR9, -1, false );
mapLLVMRegToDwarfReg(X86::CR10, -1, false );
mapLLVMRegToDwarfReg(X86::CR11, -1, false );
mapLLVMRegToDwarfReg(X86::CR12, -1, false );
mapLLVMRegToDwarfReg(X86::CR13, -1, false );
mapLLVMRegToDwarfReg(X86::CR14, -1, false );
mapLLVMRegToDwarfReg(X86::CR15, -1, false );
mapLLVMRegToDwarfReg(X86::CS, -1, false );
mapLLVMRegToDwarfReg(X86::CX, -1, false );
mapLLVMRegToDwarfReg(X86::DH, -1, false );
mapLLVMRegToDwarfReg(X86::DI, -1, false );
mapLLVMRegToDwarfReg(X86::DIL, -1, false );
mapLLVMRegToDwarfReg(X86::DL, -1, false );
mapLLVMRegToDwarfReg(X86::DR0, -1, false );
mapLLVMRegToDwarfReg(X86::DR1, -1, false );
mapLLVMRegToDwarfReg(X86::DR2, -1, false );
mapLLVMRegToDwarfReg(X86::DR3, -1, false );
mapLLVMRegToDwarfReg(X86::DR4, -1, false );
mapLLVMRegToDwarfReg(X86::DR5, -1, false );
mapLLVMRegToDwarfReg(X86::DR6, -1, false );
mapLLVMRegToDwarfReg(X86::DR7, -1, false );
mapLLVMRegToDwarfReg(X86::DS, -1, false );
mapLLVMRegToDwarfReg(X86::DX, -1, false );
mapLLVMRegToDwarfReg(X86::EAX, 0, false );
mapLLVMRegToDwarfReg(X86::EBP, 4, false );
mapLLVMRegToDwarfReg(X86::EBX, 3, false );
mapLLVMRegToDwarfReg(X86::ECX, 1, false );
mapLLVMRegToDwarfReg(X86::EDI, 7, false );
mapLLVMRegToDwarfReg(X86::EDX, 2, false );
mapLLVMRegToDwarfReg(X86::EFLAGS, -1, false );
mapLLVMRegToDwarfReg(X86::EIP, 8, false );
mapLLVMRegToDwarfReg(X86::EIZ, -1, false );
mapLLVMRegToDwarfReg(X86::ES, -1, false );
mapLLVMRegToDwarfReg(X86::ESI, 6, false );
mapLLVMRegToDwarfReg(X86::ESP, 5, false );
mapLLVMRegToDwarfReg(X86::FP0, -1, false );
mapLLVMRegToDwarfReg(X86::FP1, -1, false );
mapLLVMRegToDwarfReg(X86::FP2, -1, false );
mapLLVMRegToDwarfReg(X86::FP3, -1, false );
mapLLVMRegToDwarfReg(X86::FP4, -1, false );
mapLLVMRegToDwarfReg(X86::FP5, -1, false );
mapLLVMRegToDwarfReg(X86::FP6, -1, false );
mapLLVMRegToDwarfReg(X86::FS, -1, false );
mapLLVMRegToDwarfReg(X86::GS, -1, false );
mapLLVMRegToDwarfReg(X86::IP, -1, false );
mapLLVMRegToDwarfReg(X86::MM0, 29, false );
mapLLVMRegToDwarfReg(X86::MM1, 30, false );
mapLLVMRegToDwarfReg(X86::MM2, 31, false );
mapLLVMRegToDwarfReg(X86::MM3, 32, false );
mapLLVMRegToDwarfReg(X86::MM4, 33, false );
mapLLVMRegToDwarfReg(X86::MM5, 34, false );
mapLLVMRegToDwarfReg(X86::MM6, 35, false );
mapLLVMRegToDwarfReg(X86::MM7, 36, false );
mapLLVMRegToDwarfReg(X86::R8, -2, false );
mapLLVMRegToDwarfReg(X86::R8B, -1, false );
mapLLVMRegToDwarfReg(X86::R8D, -1, false );
mapLLVMRegToDwarfReg(X86::R8W, -1, false );
mapLLVMRegToDwarfReg(X86::R9, -2, false );
mapLLVMRegToDwarfReg(X86::R9B, -1, false );
mapLLVMRegToDwarfReg(X86::R9D, -1, false );
mapLLVMRegToDwarfReg(X86::R9W, -1, false );
mapLLVMRegToDwarfReg(X86::R10, -2, false );
mapLLVMRegToDwarfReg(X86::R10B, -1, false );
mapLLVMRegToDwarfReg(X86::R10D, -1, false );
mapLLVMRegToDwarfReg(X86::R10W, -1, false );
mapLLVMRegToDwarfReg(X86::R11, -2, false );
mapLLVMRegToDwarfReg(X86::R11B, -1, false );
mapLLVMRegToDwarfReg(X86::R11D, -1, false );
mapLLVMRegToDwarfReg(X86::R11W, -1, false );
mapLLVMRegToDwarfReg(X86::R12, -2, false );
mapLLVMRegToDwarfReg(X86::R12B, -1, false );
mapLLVMRegToDwarfReg(X86::R12D, -1, false );
mapLLVMRegToDwarfReg(X86::R12W, -1, false );
mapLLVMRegToDwarfReg(X86::R13, -2, false );
mapLLVMRegToDwarfReg(X86::R13B, -1, false );
mapLLVMRegToDwarfReg(X86::R13D, -1, false );
mapLLVMRegToDwarfReg(X86::R13W, -1, false );
mapLLVMRegToDwarfReg(X86::R14, -2, false );
mapLLVMRegToDwarfReg(X86::R14B, -1, false );
mapLLVMRegToDwarfReg(X86::R14D, -1, false );
mapLLVMRegToDwarfReg(X86::R14W, -1, false );
mapLLVMRegToDwarfReg(X86::R15, -2, false );
mapLLVMRegToDwarfReg(X86::R15B, -1, false );
mapLLVMRegToDwarfReg(X86::R15D, -1, false );
mapLLVMRegToDwarfReg(X86::R15W, -1, false );
mapLLVMRegToDwarfReg(X86::RAX, -2, false );
mapLLVMRegToDwarfReg(X86::RBP, -2, false );
mapLLVMRegToDwarfReg(X86::RBX, -2, false );
mapLLVMRegToDwarfReg(X86::RCX, -2, false );
mapLLVMRegToDwarfReg(X86::RDI, -2, false );
mapLLVMRegToDwarfReg(X86::RDX, -2, false );
mapLLVMRegToDwarfReg(X86::RIP, -2, false );
mapLLVMRegToDwarfReg(X86::RIZ, -1, false );
mapLLVMRegToDwarfReg(X86::RSI, -2, false );
mapLLVMRegToDwarfReg(X86::RSP, -2, false );
mapLLVMRegToDwarfReg(X86::SI, -1, false );
mapLLVMRegToDwarfReg(X86::SIL, -1, false );
mapLLVMRegToDwarfReg(X86::SP, -1, false );
mapLLVMRegToDwarfReg(X86::SPL, -1, false );
mapLLVMRegToDwarfReg(X86::SS, -1, false );
mapLLVMRegToDwarfReg(X86::ST0, 12, false );
mapLLVMRegToDwarfReg(X86::ST1, 13, false );
mapLLVMRegToDwarfReg(X86::ST2, 14, false );
mapLLVMRegToDwarfReg(X86::ST3, 15, false );
mapLLVMRegToDwarfReg(X86::ST4, 16, false );
mapLLVMRegToDwarfReg(X86::ST5, 17, false );
mapLLVMRegToDwarfReg(X86::ST6, 18, false );
mapLLVMRegToDwarfReg(X86::ST7, 19, false );
mapLLVMRegToDwarfReg(X86::XMM0, 21, false );
mapLLVMRegToDwarfReg(X86::XMM1, 22, false );
mapLLVMRegToDwarfReg(X86::XMM2, 23, false );
mapLLVMRegToDwarfReg(X86::XMM3, 24, false );
mapLLVMRegToDwarfReg(X86::XMM4, 25, false );
mapLLVMRegToDwarfReg(X86::XMM5, 26, false );
mapLLVMRegToDwarfReg(X86::XMM6, 27, false );
mapLLVMRegToDwarfReg(X86::XMM7, 28, false );
mapLLVMRegToDwarfReg(X86::XMM8, -2, false );
mapLLVMRegToDwarfReg(X86::XMM9, -2, false );
mapLLVMRegToDwarfReg(X86::XMM10, -2, false );
mapLLVMRegToDwarfReg(X86::XMM11, -2, false );
mapLLVMRegToDwarfReg(X86::XMM12, -2, false );
mapLLVMRegToDwarfReg(X86::XMM13, -2, false );
mapLLVMRegToDwarfReg(X86::XMM14, -2, false );
mapLLVMRegToDwarfReg(X86::XMM15, -2, false );
mapLLVMRegToDwarfReg(X86::YMM0, 21, false );
mapLLVMRegToDwarfReg(X86::YMM1, 22, false );
mapLLVMRegToDwarfReg(X86::YMM2, 23, false );
mapLLVMRegToDwarfReg(X86::YMM3, 24, false );
mapLLVMRegToDwarfReg(X86::YMM4, 25, false );
mapLLVMRegToDwarfReg(X86::YMM5, 26, false );
mapLLVMRegToDwarfReg(X86::YMM6, 27, false );
mapLLVMRegToDwarfReg(X86::YMM7, 28, false );
mapLLVMRegToDwarfReg(X86::YMM8, -2, false );
mapLLVMRegToDwarfReg(X86::YMM9, -2, false );
mapLLVMRegToDwarfReg(X86::YMM10, -2, false );
mapLLVMRegToDwarfReg(X86::YMM11, -2, false );
mapLLVMRegToDwarfReg(X86::YMM12, -2, false );
mapLLVMRegToDwarfReg(X86::YMM13, -2, false );
mapLLVMRegToDwarfReg(X86::YMM14, -2, false );
mapLLVMRegToDwarfReg(X86::YMM15, -2, false );
break;
case 2:
mapLLVMRegToDwarfReg(X86::AH, -1, false );
mapLLVMRegToDwarfReg(X86::AL, -1, false );
mapLLVMRegToDwarfReg(X86::AX, -1, false );
mapLLVMRegToDwarfReg(X86::BH, -1, false );
mapLLVMRegToDwarfReg(X86::BL, -1, false );
mapLLVMRegToDwarfReg(X86::BP, -1, false );
mapLLVMRegToDwarfReg(X86::BPL, -1, false );
mapLLVMRegToDwarfReg(X86::BX, -1, false );
mapLLVMRegToDwarfReg(X86::CH, -1, false );
mapLLVMRegToDwarfReg(X86::CL, -1, false );
mapLLVMRegToDwarfReg(X86::CR0, -1, false );
mapLLVMRegToDwarfReg(X86::CR1, -1, false );
mapLLVMRegToDwarfReg(X86::CR2, -1, false );
mapLLVMRegToDwarfReg(X86::CR3, -1, false );
mapLLVMRegToDwarfReg(X86::CR4, -1, false );
mapLLVMRegToDwarfReg(X86::CR5, -1, false );
mapLLVMRegToDwarfReg(X86::CR6, -1, false );
mapLLVMRegToDwarfReg(X86::CR7, -1, false );
mapLLVMRegToDwarfReg(X86::CR8, -1, false );
mapLLVMRegToDwarfReg(X86::CR9, -1, false );
mapLLVMRegToDwarfReg(X86::CR10, -1, false );
mapLLVMRegToDwarfReg(X86::CR11, -1, false );
mapLLVMRegToDwarfReg(X86::CR12, -1, false );
mapLLVMRegToDwarfReg(X86::CR13, -1, false );
mapLLVMRegToDwarfReg(X86::CR14, -1, false );
mapLLVMRegToDwarfReg(X86::CR15, -1, false );
mapLLVMRegToDwarfReg(X86::CS, -1, false );
mapLLVMRegToDwarfReg(X86::CX, -1, false );
mapLLVMRegToDwarfReg(X86::DH, -1, false );
mapLLVMRegToDwarfReg(X86::DI, -1, false );
mapLLVMRegToDwarfReg(X86::DIL, -1, false );
mapLLVMRegToDwarfReg(X86::DL, -1, false );
mapLLVMRegToDwarfReg(X86::DR0, -1, false );
mapLLVMRegToDwarfReg(X86::DR1, -1, false );
mapLLVMRegToDwarfReg(X86::DR2, -1, false );
mapLLVMRegToDwarfReg(X86::DR3, -1, false );
mapLLVMRegToDwarfReg(X86::DR4, -1, false );
mapLLVMRegToDwarfReg(X86::DR5, -1, false );
mapLLVMRegToDwarfReg(X86::DR6, -1, false );
mapLLVMRegToDwarfReg(X86::DR7, -1, false );
mapLLVMRegToDwarfReg(X86::DS, -1, false );
mapLLVMRegToDwarfReg(X86::DX, -1, false );
mapLLVMRegToDwarfReg(X86::EAX, 0, false );
mapLLVMRegToDwarfReg(X86::EBP, 5, false );
mapLLVMRegToDwarfReg(X86::EBX, 3, false );
mapLLVMRegToDwarfReg(X86::ECX, 1, false );
mapLLVMRegToDwarfReg(X86::EDI, 7, false );
mapLLVMRegToDwarfReg(X86::EDX, 2, false );
mapLLVMRegToDwarfReg(X86::EFLAGS, -1, false );
mapLLVMRegToDwarfReg(X86::EIP, 8, false );
mapLLVMRegToDwarfReg(X86::EIZ, -1, false );
mapLLVMRegToDwarfReg(X86::ES, -1, false );
mapLLVMRegToDwarfReg(X86::ESI, 6, false );
mapLLVMRegToDwarfReg(X86::ESP, 4, false );
mapLLVMRegToDwarfReg(X86::FP0, -1, false );
mapLLVMRegToDwarfReg(X86::FP1, -1, false );
mapLLVMRegToDwarfReg(X86::FP2, -1, false );
mapLLVMRegToDwarfReg(X86::FP3, -1, false );
mapLLVMRegToDwarfReg(X86::FP4, -1, false );
mapLLVMRegToDwarfReg(X86::FP5, -1, false );
mapLLVMRegToDwarfReg(X86::FP6, -1, false );
mapLLVMRegToDwarfReg(X86::FS, -1, false );
mapLLVMRegToDwarfReg(X86::GS, -1, false );
mapLLVMRegToDwarfReg(X86::IP, -1, false );
mapLLVMRegToDwarfReg(X86::MM0, 29, false );
mapLLVMRegToDwarfReg(X86::MM1, 30, false );
mapLLVMRegToDwarfReg(X86::MM2, 31, false );
mapLLVMRegToDwarfReg(X86::MM3, 32, false );
mapLLVMRegToDwarfReg(X86::MM4, 33, false );
mapLLVMRegToDwarfReg(X86::MM5, 34, false );
mapLLVMRegToDwarfReg(X86::MM6, 35, false );
mapLLVMRegToDwarfReg(X86::MM7, 36, false );
mapLLVMRegToDwarfReg(X86::R8, -2, false );
mapLLVMRegToDwarfReg(X86::R8B, -1, false );
mapLLVMRegToDwarfReg(X86::R8D, -1, false );
mapLLVMRegToDwarfReg(X86::R8W, -1, false );
mapLLVMRegToDwarfReg(X86::R9, -2, false );
mapLLVMRegToDwarfReg(X86::R9B, -1, false );
mapLLVMRegToDwarfReg(X86::R9D, -1, false );
mapLLVMRegToDwarfReg(X86::R9W, -1, false );
mapLLVMRegToDwarfReg(X86::R10, -2, false );
mapLLVMRegToDwarfReg(X86::R10B, -1, false );
mapLLVMRegToDwarfReg(X86::R10D, -1, false );
mapLLVMRegToDwarfReg(X86::R10W, -1, false );
mapLLVMRegToDwarfReg(X86::R11, -2, false );
mapLLVMRegToDwarfReg(X86::R11B, -1, false );
mapLLVMRegToDwarfReg(X86::R11D, -1, false );
mapLLVMRegToDwarfReg(X86::R11W, -1, false );
mapLLVMRegToDwarfReg(X86::R12, -2, false );
mapLLVMRegToDwarfReg(X86::R12B, -1, false );
mapLLVMRegToDwarfReg(X86::R12D, -1, false );
mapLLVMRegToDwarfReg(X86::R12W, -1, false );
mapLLVMRegToDwarfReg(X86::R13, -2, false );
mapLLVMRegToDwarfReg(X86::R13B, -1, false );
mapLLVMRegToDwarfReg(X86::R13D, -1, false );
mapLLVMRegToDwarfReg(X86::R13W, -1, false );
mapLLVMRegToDwarfReg(X86::R14, -2, false );
mapLLVMRegToDwarfReg(X86::R14B, -1, false );
mapLLVMRegToDwarfReg(X86::R14D, -1, false );
mapLLVMRegToDwarfReg(X86::R14W, -1, false );
mapLLVMRegToDwarfReg(X86::R15, -2, false );
mapLLVMRegToDwarfReg(X86::R15B, -1, false );
mapLLVMRegToDwarfReg(X86::R15D, -1, false );
mapLLVMRegToDwarfReg(X86::R15W, -1, false );
mapLLVMRegToDwarfReg(X86::RAX, -2, false );
mapLLVMRegToDwarfReg(X86::RBP, -2, false );
mapLLVMRegToDwarfReg(X86::RBX, -2, false );
mapLLVMRegToDwarfReg(X86::RCX, -2, false );
mapLLVMRegToDwarfReg(X86::RDI, -2, false );
mapLLVMRegToDwarfReg(X86::RDX, -2, false );
mapLLVMRegToDwarfReg(X86::RIP, -2, false );
mapLLVMRegToDwarfReg(X86::RIZ, -1, false );
mapLLVMRegToDwarfReg(X86::RSI, -2, false );
mapLLVMRegToDwarfReg(X86::RSP, -2, false );
mapLLVMRegToDwarfReg(X86::SI, -1, false );
mapLLVMRegToDwarfReg(X86::SIL, -1, false );
mapLLVMRegToDwarfReg(X86::SP, -1, false );
mapLLVMRegToDwarfReg(X86::SPL, -1, false );
mapLLVMRegToDwarfReg(X86::SS, -1, false );
mapLLVMRegToDwarfReg(X86::ST0, 11, false );
mapLLVMRegToDwarfReg(X86::ST1, 12, false );
mapLLVMRegToDwarfReg(X86::ST2, 13, false );
mapLLVMRegToDwarfReg(X86::ST3, 14, false );
mapLLVMRegToDwarfReg(X86::ST4, 15, false );
mapLLVMRegToDwarfReg(X86::ST5, 16, false );
mapLLVMRegToDwarfReg(X86::ST6, 17, false );
mapLLVMRegToDwarfReg(X86::ST7, 18, false );
mapLLVMRegToDwarfReg(X86::XMM0, 21, false );
mapLLVMRegToDwarfReg(X86::XMM1, 22, false );
mapLLVMRegToDwarfReg(X86::XMM2, 23, false );
mapLLVMRegToDwarfReg(X86::XMM3, 24, false );
mapLLVMRegToDwarfReg(X86::XMM4, 25, false );
mapLLVMRegToDwarfReg(X86::XMM5, 26, false );
mapLLVMRegToDwarfReg(X86::XMM6, 27, false );
mapLLVMRegToDwarfReg(X86::XMM7, 28, false );
mapLLVMRegToDwarfReg(X86::XMM8, -2, false );
mapLLVMRegToDwarfReg(X86::XMM9, -2, false );
mapLLVMRegToDwarfReg(X86::XMM10, -2, false );
mapLLVMRegToDwarfReg(X86::XMM11, -2, false );
mapLLVMRegToDwarfReg(X86::XMM12, -2, false );
mapLLVMRegToDwarfReg(X86::XMM13, -2, false );
mapLLVMRegToDwarfReg(X86::XMM14, -2, false );
mapLLVMRegToDwarfReg(X86::XMM15, -2, false );
mapLLVMRegToDwarfReg(X86::YMM0, 21, false );
mapLLVMRegToDwarfReg(X86::YMM1, 22, false );
mapLLVMRegToDwarfReg(X86::YMM2, 23, false );
mapLLVMRegToDwarfReg(X86::YMM3, 24, false );
mapLLVMRegToDwarfReg(X86::YMM4, 25, false );
mapLLVMRegToDwarfReg(X86::YMM5, 26, false );
mapLLVMRegToDwarfReg(X86::YMM6, 27, false );
mapLLVMRegToDwarfReg(X86::YMM7, 28, false );
mapLLVMRegToDwarfReg(X86::YMM8, -2, false );
mapLLVMRegToDwarfReg(X86::YMM9, -2, false );
mapLLVMRegToDwarfReg(X86::YMM10, -2, false );
mapLLVMRegToDwarfReg(X86::YMM11, -2, false );
mapLLVMRegToDwarfReg(X86::YMM12, -2, false );
mapLLVMRegToDwarfReg(X86::YMM13, -2, false );
mapLLVMRegToDwarfReg(X86::YMM14, -2, false );
mapLLVMRegToDwarfReg(X86::YMM15, -2, false );
break;
}
switch (EHFlavour) {
default:
assert(0 && "Unknown DWARF flavour");
break;
case 0:
mapLLVMRegToDwarfReg(X86::AH, -1, true );
mapLLVMRegToDwarfReg(X86::AL, -1, true );
mapLLVMRegToDwarfReg(X86::AX, -1, true );
mapLLVMRegToDwarfReg(X86::BH, -1, true );
mapLLVMRegToDwarfReg(X86::BL, -1, true );
mapLLVMRegToDwarfReg(X86::BP, -1, true );
mapLLVMRegToDwarfReg(X86::BPL, -1, true );
mapLLVMRegToDwarfReg(X86::BX, -1, true );
mapLLVMRegToDwarfReg(X86::CH, -1, true );
mapLLVMRegToDwarfReg(X86::CL, -1, true );
mapLLVMRegToDwarfReg(X86::CR0, -1, true );
mapLLVMRegToDwarfReg(X86::CR1, -1, true );
mapLLVMRegToDwarfReg(X86::CR2, -1, true );
mapLLVMRegToDwarfReg(X86::CR3, -1, true );
mapLLVMRegToDwarfReg(X86::CR4, -1, true );
mapLLVMRegToDwarfReg(X86::CR5, -1, true );
mapLLVMRegToDwarfReg(X86::CR6, -1, true );
mapLLVMRegToDwarfReg(X86::CR7, -1, true );
mapLLVMRegToDwarfReg(X86::CR8, -1, true );
mapLLVMRegToDwarfReg(X86::CR9, -1, true );
mapLLVMRegToDwarfReg(X86::CR10, -1, true );
mapLLVMRegToDwarfReg(X86::CR11, -1, true );
mapLLVMRegToDwarfReg(X86::CR12, -1, true );
mapLLVMRegToDwarfReg(X86::CR13, -1, true );
mapLLVMRegToDwarfReg(X86::CR14, -1, true );
mapLLVMRegToDwarfReg(X86::CR15, -1, true );
mapLLVMRegToDwarfReg(X86::CS, -1, true );
mapLLVMRegToDwarfReg(X86::CX, -1, true );
mapLLVMRegToDwarfReg(X86::DH, -1, true );
mapLLVMRegToDwarfReg(X86::DI, -1, true );
mapLLVMRegToDwarfReg(X86::DIL, -1, true );
mapLLVMRegToDwarfReg(X86::DL, -1, true );
mapLLVMRegToDwarfReg(X86::DR0, -1, true );
mapLLVMRegToDwarfReg(X86::DR1, -1, true );
mapLLVMRegToDwarfReg(X86::DR2, -1, true );
mapLLVMRegToDwarfReg(X86::DR3, -1, true );
mapLLVMRegToDwarfReg(X86::DR4, -1, true );
mapLLVMRegToDwarfReg(X86::DR5, -1, true );
mapLLVMRegToDwarfReg(X86::DR6, -1, true );
mapLLVMRegToDwarfReg(X86::DR7, -1, true );
mapLLVMRegToDwarfReg(X86::DS, -1, true );
mapLLVMRegToDwarfReg(X86::DX, -1, true );
mapLLVMRegToDwarfReg(X86::EAX, -2, true );
mapLLVMRegToDwarfReg(X86::EBP, -2, true );
mapLLVMRegToDwarfReg(X86::EBX, -2, true );
mapLLVMRegToDwarfReg(X86::ECX, -2, true );
mapLLVMRegToDwarfReg(X86::EDI, -2, true );
mapLLVMRegToDwarfReg(X86::EDX, -2, true );
mapLLVMRegToDwarfReg(X86::EFLAGS, -1, true );
mapLLVMRegToDwarfReg(X86::EIP, -2, true );
mapLLVMRegToDwarfReg(X86::EIZ, -1, true );
mapLLVMRegToDwarfReg(X86::ES, -1, true );
mapLLVMRegToDwarfReg(X86::ESI, -2, true );
mapLLVMRegToDwarfReg(X86::ESP, -2, true );
mapLLVMRegToDwarfReg(X86::FP0, -1, true );
mapLLVMRegToDwarfReg(X86::FP1, -1, true );
mapLLVMRegToDwarfReg(X86::FP2, -1, true );
mapLLVMRegToDwarfReg(X86::FP3, -1, true );
mapLLVMRegToDwarfReg(X86::FP4, -1, true );
mapLLVMRegToDwarfReg(X86::FP5, -1, true );
mapLLVMRegToDwarfReg(X86::FP6, -1, true );
mapLLVMRegToDwarfReg(X86::FS, -1, true );
mapLLVMRegToDwarfReg(X86::GS, -1, true );
mapLLVMRegToDwarfReg(X86::IP, -1, true );
mapLLVMRegToDwarfReg(X86::MM0, 41, true );
mapLLVMRegToDwarfReg(X86::MM1, 42, true );
mapLLVMRegToDwarfReg(X86::MM2, 43, true );
mapLLVMRegToDwarfReg(X86::MM3, 44, true );
mapLLVMRegToDwarfReg(X86::MM4, 45, true );
mapLLVMRegToDwarfReg(X86::MM5, 46, true );
mapLLVMRegToDwarfReg(X86::MM6, 47, true );
mapLLVMRegToDwarfReg(X86::MM7, 48, true );
mapLLVMRegToDwarfReg(X86::R8, 8, true );
mapLLVMRegToDwarfReg(X86::R8B, -1, true );
mapLLVMRegToDwarfReg(X86::R8D, -1, true );
mapLLVMRegToDwarfReg(X86::R8W, -1, true );
mapLLVMRegToDwarfReg(X86::R9, 9, true );
mapLLVMRegToDwarfReg(X86::R9B, -1, true );
mapLLVMRegToDwarfReg(X86::R9D, -1, true );
mapLLVMRegToDwarfReg(X86::R9W, -1, true );
mapLLVMRegToDwarfReg(X86::R10, 10, true );
mapLLVMRegToDwarfReg(X86::R10B, -1, true );
mapLLVMRegToDwarfReg(X86::R10D, -1, true );
mapLLVMRegToDwarfReg(X86::R10W, -1, true );
mapLLVMRegToDwarfReg(X86::R11, 11, true );
mapLLVMRegToDwarfReg(X86::R11B, -1, true );
mapLLVMRegToDwarfReg(X86::R11D, -1, true );
mapLLVMRegToDwarfReg(X86::R11W, -1, true );
mapLLVMRegToDwarfReg(X86::R12, 12, true );
mapLLVMRegToDwarfReg(X86::R12B, -1, true );
mapLLVMRegToDwarfReg(X86::R12D, -1, true );
mapLLVMRegToDwarfReg(X86::R12W, -1, true );
mapLLVMRegToDwarfReg(X86::R13, 13, true );
mapLLVMRegToDwarfReg(X86::R13B, -1, true );
mapLLVMRegToDwarfReg(X86::R13D, -1, true );
mapLLVMRegToDwarfReg(X86::R13W, -1, true );
mapLLVMRegToDwarfReg(X86::R14, 14, true );
mapLLVMRegToDwarfReg(X86::R14B, -1, true );
mapLLVMRegToDwarfReg(X86::R14D, -1, true );
mapLLVMRegToDwarfReg(X86::R14W, -1, true );
mapLLVMRegToDwarfReg(X86::R15, 15, true );
mapLLVMRegToDwarfReg(X86::R15B, -1, true );
mapLLVMRegToDwarfReg(X86::R15D, -1, true );
mapLLVMRegToDwarfReg(X86::R15W, -1, true );
mapLLVMRegToDwarfReg(X86::RAX, 0, true );
mapLLVMRegToDwarfReg(X86::RBP, 6, true );
mapLLVMRegToDwarfReg(X86::RBX, 3, true );
mapLLVMRegToDwarfReg(X86::RCX, 2, true );
mapLLVMRegToDwarfReg(X86::RDI, 5, true );
mapLLVMRegToDwarfReg(X86::RDX, 1, true );
mapLLVMRegToDwarfReg(X86::RIP, 16, true );
mapLLVMRegToDwarfReg(X86::RIZ, -1, true );
mapLLVMRegToDwarfReg(X86::RSI, 4, true );
mapLLVMRegToDwarfReg(X86::RSP, 7, true );
mapLLVMRegToDwarfReg(X86::SI, -1, true );
mapLLVMRegToDwarfReg(X86::SIL, -1, true );
mapLLVMRegToDwarfReg(X86::SP, -1, true );
mapLLVMRegToDwarfReg(X86::SPL, -1, true );
mapLLVMRegToDwarfReg(X86::SS, -1, true );
mapLLVMRegToDwarfReg(X86::ST0, 33, true );
mapLLVMRegToDwarfReg(X86::ST1, 34, true );
mapLLVMRegToDwarfReg(X86::ST2, 35, true );
mapLLVMRegToDwarfReg(X86::ST3, 36, true );
mapLLVMRegToDwarfReg(X86::ST4, 37, true );
mapLLVMRegToDwarfReg(X86::ST5, 38, true );
mapLLVMRegToDwarfReg(X86::ST6, 39, true );
mapLLVMRegToDwarfReg(X86::ST7, 40, true );
mapLLVMRegToDwarfReg(X86::XMM0, 17, true );
mapLLVMRegToDwarfReg(X86::XMM1, 18, true );
mapLLVMRegToDwarfReg(X86::XMM2, 19, true );
mapLLVMRegToDwarfReg(X86::XMM3, 20, true );
mapLLVMRegToDwarfReg(X86::XMM4, 21, true );
mapLLVMRegToDwarfReg(X86::XMM5, 22, true );
mapLLVMRegToDwarfReg(X86::XMM6, 23, true );
mapLLVMRegToDwarfReg(X86::XMM7, 24, true );
mapLLVMRegToDwarfReg(X86::XMM8, 25, true );
mapLLVMRegToDwarfReg(X86::XMM9, 26, true );
mapLLVMRegToDwarfReg(X86::XMM10, 27, true );
mapLLVMRegToDwarfReg(X86::XMM11, 28, true );
mapLLVMRegToDwarfReg(X86::XMM12, 29, true );
mapLLVMRegToDwarfReg(X86::XMM13, 30, true );
mapLLVMRegToDwarfReg(X86::XMM14, 31, true );
mapLLVMRegToDwarfReg(X86::XMM15, 32, true );
mapLLVMRegToDwarfReg(X86::YMM0, 17, true );
mapLLVMRegToDwarfReg(X86::YMM1, 18, true );
mapLLVMRegToDwarfReg(X86::YMM2, 19, true );
mapLLVMRegToDwarfReg(X86::YMM3, 20, true );
mapLLVMRegToDwarfReg(X86::YMM4, 21, true );
mapLLVMRegToDwarfReg(X86::YMM5, 22, true );
mapLLVMRegToDwarfReg(X86::YMM6, 23, true );
mapLLVMRegToDwarfReg(X86::YMM7, 24, true );
mapLLVMRegToDwarfReg(X86::YMM8, 25, true );
mapLLVMRegToDwarfReg(X86::YMM9, 26, true );
mapLLVMRegToDwarfReg(X86::YMM10, 27, true );
mapLLVMRegToDwarfReg(X86::YMM11, 28, true );
mapLLVMRegToDwarfReg(X86::YMM12, 29, true );
mapLLVMRegToDwarfReg(X86::YMM13, 30, true );
mapLLVMRegToDwarfReg(X86::YMM14, 31, true );
mapLLVMRegToDwarfReg(X86::YMM15, 32, true );
break;
case 1:
mapLLVMRegToDwarfReg(X86::AH, -1, true );
mapLLVMRegToDwarfReg(X86::AL, -1, true );
mapLLVMRegToDwarfReg(X86::AX, -1, true );
mapLLVMRegToDwarfReg(X86::BH, -1, true );
mapLLVMRegToDwarfReg(X86::BL, -1, true );
mapLLVMRegToDwarfReg(X86::BP, -1, true );
mapLLVMRegToDwarfReg(X86::BPL, -1, true );
mapLLVMRegToDwarfReg(X86::BX, -1, true );
mapLLVMRegToDwarfReg(X86::CH, -1, true );
mapLLVMRegToDwarfReg(X86::CL, -1, true );
mapLLVMRegToDwarfReg(X86::CR0, -1, true );
mapLLVMRegToDwarfReg(X86::CR1, -1, true );
mapLLVMRegToDwarfReg(X86::CR2, -1, true );
mapLLVMRegToDwarfReg(X86::CR3, -1, true );
mapLLVMRegToDwarfReg(X86::CR4, -1, true );
mapLLVMRegToDwarfReg(X86::CR5, -1, true );
mapLLVMRegToDwarfReg(X86::CR6, -1, true );
mapLLVMRegToDwarfReg(X86::CR7, -1, true );
mapLLVMRegToDwarfReg(X86::CR8, -1, true );
mapLLVMRegToDwarfReg(X86::CR9, -1, true );
mapLLVMRegToDwarfReg(X86::CR10, -1, true );
mapLLVMRegToDwarfReg(X86::CR11, -1, true );
mapLLVMRegToDwarfReg(X86::CR12, -1, true );
mapLLVMRegToDwarfReg(X86::CR13, -1, true );
mapLLVMRegToDwarfReg(X86::CR14, -1, true );
mapLLVMRegToDwarfReg(X86::CR15, -1, true );
mapLLVMRegToDwarfReg(X86::CS, -1, true );
mapLLVMRegToDwarfReg(X86::CX, -1, true );
mapLLVMRegToDwarfReg(X86::DH, -1, true );
mapLLVMRegToDwarfReg(X86::DI, -1, true );
mapLLVMRegToDwarfReg(X86::DIL, -1, true );
mapLLVMRegToDwarfReg(X86::DL, -1, true );
mapLLVMRegToDwarfReg(X86::DR0, -1, true );
mapLLVMRegToDwarfReg(X86::DR1, -1, true );
mapLLVMRegToDwarfReg(X86::DR2, -1, true );
mapLLVMRegToDwarfReg(X86::DR3, -1, true );
mapLLVMRegToDwarfReg(X86::DR4, -1, true );
mapLLVMRegToDwarfReg(X86::DR5, -1, true );
mapLLVMRegToDwarfReg(X86::DR6, -1, true );
mapLLVMRegToDwarfReg(X86::DR7, -1, true );
mapLLVMRegToDwarfReg(X86::DS, -1, true );
mapLLVMRegToDwarfReg(X86::DX, -1, true );
mapLLVMRegToDwarfReg(X86::EAX, 0, true );
mapLLVMRegToDwarfReg(X86::EBP, 4, true );
mapLLVMRegToDwarfReg(X86::EBX, 3, true );
mapLLVMRegToDwarfReg(X86::ECX, 1, true );
mapLLVMRegToDwarfReg(X86::EDI, 7, true );
mapLLVMRegToDwarfReg(X86::EDX, 2, true );
mapLLVMRegToDwarfReg(X86::EFLAGS, -1, true );
mapLLVMRegToDwarfReg(X86::EIP, 8, true );
mapLLVMRegToDwarfReg(X86::EIZ, -1, true );
mapLLVMRegToDwarfReg(X86::ES, -1, true );
mapLLVMRegToDwarfReg(X86::ESI, 6, true );
mapLLVMRegToDwarfReg(X86::ESP, 5, true );
mapLLVMRegToDwarfReg(X86::FP0, -1, true );
mapLLVMRegToDwarfReg(X86::FP1, -1, true );
mapLLVMRegToDwarfReg(X86::FP2, -1, true );
mapLLVMRegToDwarfReg(X86::FP3, -1, true );
mapLLVMRegToDwarfReg(X86::FP4, -1, true );
mapLLVMRegToDwarfReg(X86::FP5, -1, true );
mapLLVMRegToDwarfReg(X86::FP6, -1, true );
mapLLVMRegToDwarfReg(X86::FS, -1, true );
mapLLVMRegToDwarfReg(X86::GS, -1, true );
mapLLVMRegToDwarfReg(X86::IP, -1, true );
mapLLVMRegToDwarfReg(X86::MM0, 29, true );
mapLLVMRegToDwarfReg(X86::MM1, 30, true );
mapLLVMRegToDwarfReg(X86::MM2, 31, true );
mapLLVMRegToDwarfReg(X86::MM3, 32, true );
mapLLVMRegToDwarfReg(X86::MM4, 33, true );
mapLLVMRegToDwarfReg(X86::MM5, 34, true );
mapLLVMRegToDwarfReg(X86::MM6, 35, true );
mapLLVMRegToDwarfReg(X86::MM7, 36, true );
mapLLVMRegToDwarfReg(X86::R8, -2, true );
mapLLVMRegToDwarfReg(X86::R8B, -1, true );
mapLLVMRegToDwarfReg(X86::R8D, -1, true );
mapLLVMRegToDwarfReg(X86::R8W, -1, true );
mapLLVMRegToDwarfReg(X86::R9, -2, true );
mapLLVMRegToDwarfReg(X86::R9B, -1, true );
mapLLVMRegToDwarfReg(X86::R9D, -1, true );
mapLLVMRegToDwarfReg(X86::R9W, -1, true );
mapLLVMRegToDwarfReg(X86::R10, -2, true );
mapLLVMRegToDwarfReg(X86::R10B, -1, true );
mapLLVMRegToDwarfReg(X86::R10D, -1, true );
mapLLVMRegToDwarfReg(X86::R10W, -1, true );
mapLLVMRegToDwarfReg(X86::R11, -2, true );
mapLLVMRegToDwarfReg(X86::R11B, -1, true );
mapLLVMRegToDwarfReg(X86::R11D, -1, true );
mapLLVMRegToDwarfReg(X86::R11W, -1, true );
mapLLVMRegToDwarfReg(X86::R12, -2, true );
mapLLVMRegToDwarfReg(X86::R12B, -1, true );
mapLLVMRegToDwarfReg(X86::R12D, -1, true );
mapLLVMRegToDwarfReg(X86::R12W, -1, true );
mapLLVMRegToDwarfReg(X86::R13, -2, true );
mapLLVMRegToDwarfReg(X86::R13B, -1, true );
mapLLVMRegToDwarfReg(X86::R13D, -1, true );
mapLLVMRegToDwarfReg(X86::R13W, -1, true );
mapLLVMRegToDwarfReg(X86::R14, -2, true );
mapLLVMRegToDwarfReg(X86::R14B, -1, true );
mapLLVMRegToDwarfReg(X86::R14D, -1, true );
mapLLVMRegToDwarfReg(X86::R14W, -1, true );
mapLLVMRegToDwarfReg(X86::R15, -2, true );
mapLLVMRegToDwarfReg(X86::R15B, -1, true );
mapLLVMRegToDwarfReg(X86::R15D, -1, true );
mapLLVMRegToDwarfReg(X86::R15W, -1, true );
mapLLVMRegToDwarfReg(X86::RAX, -2, true );
mapLLVMRegToDwarfReg(X86::RBP, -2, true );
mapLLVMRegToDwarfReg(X86::RBX, -2, true );
mapLLVMRegToDwarfReg(X86::RCX, -2, true );
mapLLVMRegToDwarfReg(X86::RDI, -2, true );
mapLLVMRegToDwarfReg(X86::RDX, -2, true );
mapLLVMRegToDwarfReg(X86::RIP, -2, true );
mapLLVMRegToDwarfReg(X86::RIZ, -1, true );
mapLLVMRegToDwarfReg(X86::RSI, -2, true );
mapLLVMRegToDwarfReg(X86::RSP, -2, true );
mapLLVMRegToDwarfReg(X86::SI, -1, true );
mapLLVMRegToDwarfReg(X86::SIL, -1, true );
mapLLVMRegToDwarfReg(X86::SP, -1, true );
mapLLVMRegToDwarfReg(X86::SPL, -1, true );
mapLLVMRegToDwarfReg(X86::SS, -1, true );
mapLLVMRegToDwarfReg(X86::ST0, 12, true );
mapLLVMRegToDwarfReg(X86::ST1, 13, true );
mapLLVMRegToDwarfReg(X86::ST2, 14, true );
mapLLVMRegToDwarfReg(X86::ST3, 15, true );
mapLLVMRegToDwarfReg(X86::ST4, 16, true );
mapLLVMRegToDwarfReg(X86::ST5, 17, true );
mapLLVMRegToDwarfReg(X86::ST6, 18, true );
mapLLVMRegToDwarfReg(X86::ST7, 19, true );
mapLLVMRegToDwarfReg(X86::XMM0, 21, true );
mapLLVMRegToDwarfReg(X86::XMM1, 22, true );
mapLLVMRegToDwarfReg(X86::XMM2, 23, true );
mapLLVMRegToDwarfReg(X86::XMM3, 24, true );
mapLLVMRegToDwarfReg(X86::XMM4, 25, true );
mapLLVMRegToDwarfReg(X86::XMM5, 26, true );
mapLLVMRegToDwarfReg(X86::XMM6, 27, true );
mapLLVMRegToDwarfReg(X86::XMM7, 28, true );
mapLLVMRegToDwarfReg(X86::XMM8, -2, true );
mapLLVMRegToDwarfReg(X86::XMM9, -2, true );
mapLLVMRegToDwarfReg(X86::XMM10, -2, true );
mapLLVMRegToDwarfReg(X86::XMM11, -2, true );
mapLLVMRegToDwarfReg(X86::XMM12, -2, true );
mapLLVMRegToDwarfReg(X86::XMM13, -2, true );
mapLLVMRegToDwarfReg(X86::XMM14, -2, true );
mapLLVMRegToDwarfReg(X86::XMM15, -2, true );
mapLLVMRegToDwarfReg(X86::YMM0, 21, true );
mapLLVMRegToDwarfReg(X86::YMM1, 22, true );
mapLLVMRegToDwarfReg(X86::YMM2, 23, true );
mapLLVMRegToDwarfReg(X86::YMM3, 24, true );
mapLLVMRegToDwarfReg(X86::YMM4, 25, true );
mapLLVMRegToDwarfReg(X86::YMM5, 26, true );
mapLLVMRegToDwarfReg(X86::YMM6, 27, true );
mapLLVMRegToDwarfReg(X86::YMM7, 28, true );
mapLLVMRegToDwarfReg(X86::YMM8, -2, true );
mapLLVMRegToDwarfReg(X86::YMM9, -2, true );
mapLLVMRegToDwarfReg(X86::YMM10, -2, true );
mapLLVMRegToDwarfReg(X86::YMM11, -2, true );
mapLLVMRegToDwarfReg(X86::YMM12, -2, true );
mapLLVMRegToDwarfReg(X86::YMM13, -2, true );
mapLLVMRegToDwarfReg(X86::YMM14, -2, true );
mapLLVMRegToDwarfReg(X86::YMM15, -2, true );
break;
case 2:
mapLLVMRegToDwarfReg(X86::AH, -1, true );
mapLLVMRegToDwarfReg(X86::AL, -1, true );
mapLLVMRegToDwarfReg(X86::AX, -1, true );
mapLLVMRegToDwarfReg(X86::BH, -1, true );
mapLLVMRegToDwarfReg(X86::BL, -1, true );
mapLLVMRegToDwarfReg(X86::BP, -1, true );
mapLLVMRegToDwarfReg(X86::BPL, -1, true );
mapLLVMRegToDwarfReg(X86::BX, -1, true );
mapLLVMRegToDwarfReg(X86::CH, -1, true );
mapLLVMRegToDwarfReg(X86::CL, -1, true );
mapLLVMRegToDwarfReg(X86::CR0, -1, true );
mapLLVMRegToDwarfReg(X86::CR1, -1, true );
mapLLVMRegToDwarfReg(X86::CR2, -1, true );
mapLLVMRegToDwarfReg(X86::CR3, -1, true );
mapLLVMRegToDwarfReg(X86::CR4, -1, true );
mapLLVMRegToDwarfReg(X86::CR5, -1, true );
mapLLVMRegToDwarfReg(X86::CR6, -1, true );
mapLLVMRegToDwarfReg(X86::CR7, -1, true );
mapLLVMRegToDwarfReg(X86::CR8, -1, true );
mapLLVMRegToDwarfReg(X86::CR9, -1, true );
mapLLVMRegToDwarfReg(X86::CR10, -1, true );
mapLLVMRegToDwarfReg(X86::CR11, -1, true );
mapLLVMRegToDwarfReg(X86::CR12, -1, true );
mapLLVMRegToDwarfReg(X86::CR13, -1, true );
mapLLVMRegToDwarfReg(X86::CR14, -1, true );
mapLLVMRegToDwarfReg(X86::CR15, -1, true );
mapLLVMRegToDwarfReg(X86::CS, -1, true );
mapLLVMRegToDwarfReg(X86::CX, -1, true );
mapLLVMRegToDwarfReg(X86::DH, -1, true );
mapLLVMRegToDwarfReg(X86::DI, -1, true );
mapLLVMRegToDwarfReg(X86::DIL, -1, true );
mapLLVMRegToDwarfReg(X86::DL, -1, true );
mapLLVMRegToDwarfReg(X86::DR0, -1, true );
mapLLVMRegToDwarfReg(X86::DR1, -1, true );
mapLLVMRegToDwarfReg(X86::DR2, -1, true );
mapLLVMRegToDwarfReg(X86::DR3, -1, true );
mapLLVMRegToDwarfReg(X86::DR4, -1, true );
mapLLVMRegToDwarfReg(X86::DR5, -1, true );
mapLLVMRegToDwarfReg(X86::DR6, -1, true );
mapLLVMRegToDwarfReg(X86::DR7, -1, true );
mapLLVMRegToDwarfReg(X86::DS, -1, true );
mapLLVMRegToDwarfReg(X86::DX, -1, true );
mapLLVMRegToDwarfReg(X86::EAX, 0, true );
mapLLVMRegToDwarfReg(X86::EBP, 5, true );
mapLLVMRegToDwarfReg(X86::EBX, 3, true );
mapLLVMRegToDwarfReg(X86::ECX, 1, true );
mapLLVMRegToDwarfReg(X86::EDI, 7, true );
mapLLVMRegToDwarfReg(X86::EDX, 2, true );
mapLLVMRegToDwarfReg(X86::EFLAGS, -1, true );
mapLLVMRegToDwarfReg(X86::EIP, 8, true );
mapLLVMRegToDwarfReg(X86::EIZ, -1, true );
mapLLVMRegToDwarfReg(X86::ES, -1, true );
mapLLVMRegToDwarfReg(X86::ESI, 6, true );
mapLLVMRegToDwarfReg(X86::ESP, 4, true );
mapLLVMRegToDwarfReg(X86::FP0, -1, true );
mapLLVMRegToDwarfReg(X86::FP1, -1, true );
mapLLVMRegToDwarfReg(X86::FP2, -1, true );
mapLLVMRegToDwarfReg(X86::FP3, -1, true );
mapLLVMRegToDwarfReg(X86::FP4, -1, true );
mapLLVMRegToDwarfReg(X86::FP5, -1, true );
mapLLVMRegToDwarfReg(X86::FP6, -1, true );
mapLLVMRegToDwarfReg(X86::FS, -1, true );
mapLLVMRegToDwarfReg(X86::GS, -1, true );
mapLLVMRegToDwarfReg(X86::IP, -1, true );
mapLLVMRegToDwarfReg(X86::MM0, 29, true );
mapLLVMRegToDwarfReg(X86::MM1, 30, true );
mapLLVMRegToDwarfReg(X86::MM2, 31, true );
mapLLVMRegToDwarfReg(X86::MM3, 32, true );
mapLLVMRegToDwarfReg(X86::MM4, 33, true );
mapLLVMRegToDwarfReg(X86::MM5, 34, true );
mapLLVMRegToDwarfReg(X86::MM6, 35, true );
mapLLVMRegToDwarfReg(X86::MM7, 36, true );
mapLLVMRegToDwarfReg(X86::R8, -2, true );
mapLLVMRegToDwarfReg(X86::R8B, -1, true );
mapLLVMRegToDwarfReg(X86::R8D, -1, true );
mapLLVMRegToDwarfReg(X86::R8W, -1, true );
mapLLVMRegToDwarfReg(X86::R9, -2, true );
mapLLVMRegToDwarfReg(X86::R9B, -1, true );
mapLLVMRegToDwarfReg(X86::R9D, -1, true );
mapLLVMRegToDwarfReg(X86::R9W, -1, true );
mapLLVMRegToDwarfReg(X86::R10, -2, true );
mapLLVMRegToDwarfReg(X86::R10B, -1, true );
mapLLVMRegToDwarfReg(X86::R10D, -1, true );
mapLLVMRegToDwarfReg(X86::R10W, -1, true );
mapLLVMRegToDwarfReg(X86::R11, -2, true );
mapLLVMRegToDwarfReg(X86::R11B, -1, true );
mapLLVMRegToDwarfReg(X86::R11D, -1, true );
mapLLVMRegToDwarfReg(X86::R11W, -1, true );
mapLLVMRegToDwarfReg(X86::R12, -2, true );
mapLLVMRegToDwarfReg(X86::R12B, -1, true );
mapLLVMRegToDwarfReg(X86::R12D, -1, true );
mapLLVMRegToDwarfReg(X86::R12W, -1, true );
mapLLVMRegToDwarfReg(X86::R13, -2, true );
mapLLVMRegToDwarfReg(X86::R13B, -1, true );
mapLLVMRegToDwarfReg(X86::R13D, -1, true );
mapLLVMRegToDwarfReg(X86::R13W, -1, true );
mapLLVMRegToDwarfReg(X86::R14, -2, true );
mapLLVMRegToDwarfReg(X86::R14B, -1, true );
mapLLVMRegToDwarfReg(X86::R14D, -1, true );
mapLLVMRegToDwarfReg(X86::R14W, -1, true );
mapLLVMRegToDwarfReg(X86::R15, -2, true );
mapLLVMRegToDwarfReg(X86::R15B, -1, true );
mapLLVMRegToDwarfReg(X86::R15D, -1, true );
mapLLVMRegToDwarfReg(X86::R15W, -1, true );
mapLLVMRegToDwarfReg(X86::RAX, -2, true );
mapLLVMRegToDwarfReg(X86::RBP, -2, true );
mapLLVMRegToDwarfReg(X86::RBX, -2, true );
mapLLVMRegToDwarfReg(X86::RCX, -2, true );
mapLLVMRegToDwarfReg(X86::RDI, -2, true );
mapLLVMRegToDwarfReg(X86::RDX, -2, true );
mapLLVMRegToDwarfReg(X86::RIP, -2, true );
mapLLVMRegToDwarfReg(X86::RIZ, -1, true );
mapLLVMRegToDwarfReg(X86::RSI, -2, true );
mapLLVMRegToDwarfReg(X86::RSP, -2, true );
mapLLVMRegToDwarfReg(X86::SI, -1, true );
mapLLVMRegToDwarfReg(X86::SIL, -1, true );
mapLLVMRegToDwarfReg(X86::SP, -1, true );
mapLLVMRegToDwarfReg(X86::SPL, -1, true );
mapLLVMRegToDwarfReg(X86::SS, -1, true );
mapLLVMRegToDwarfReg(X86::ST0, 11, true );
mapLLVMRegToDwarfReg(X86::ST1, 12, true );
mapLLVMRegToDwarfReg(X86::ST2, 13, true );
mapLLVMRegToDwarfReg(X86::ST3, 14, true );
mapLLVMRegToDwarfReg(X86::ST4, 15, true );
mapLLVMRegToDwarfReg(X86::ST5, 16, true );
mapLLVMRegToDwarfReg(X86::ST6, 17, true );
mapLLVMRegToDwarfReg(X86::ST7, 18, true );
mapLLVMRegToDwarfReg(X86::XMM0, 21, true );
mapLLVMRegToDwarfReg(X86::XMM1, 22, true );
mapLLVMRegToDwarfReg(X86::XMM2, 23, true );
mapLLVMRegToDwarfReg(X86::XMM3, 24, true );
mapLLVMRegToDwarfReg(X86::XMM4, 25, true );
mapLLVMRegToDwarfReg(X86::XMM5, 26, true );
mapLLVMRegToDwarfReg(X86::XMM6, 27, true );
mapLLVMRegToDwarfReg(X86::XMM7, 28, true );
mapLLVMRegToDwarfReg(X86::XMM8, -2, true );
mapLLVMRegToDwarfReg(X86::XMM9, -2, true );
mapLLVMRegToDwarfReg(X86::XMM10, -2, true );
mapLLVMRegToDwarfReg(X86::XMM11, -2, true );
mapLLVMRegToDwarfReg(X86::XMM12, -2, true );
mapLLVMRegToDwarfReg(X86::XMM13, -2, true );
mapLLVMRegToDwarfReg(X86::XMM14, -2, true );
mapLLVMRegToDwarfReg(X86::XMM15, -2, true );
mapLLVMRegToDwarfReg(X86::YMM0, 21, true );
mapLLVMRegToDwarfReg(X86::YMM1, 22, true );
mapLLVMRegToDwarfReg(X86::YMM2, 23, true );
mapLLVMRegToDwarfReg(X86::YMM3, 24, true );
mapLLVMRegToDwarfReg(X86::YMM4, 25, true );
mapLLVMRegToDwarfReg(X86::YMM5, 26, true );
mapLLVMRegToDwarfReg(X86::YMM6, 27, true );
mapLLVMRegToDwarfReg(X86::YMM7, 28, true );
mapLLVMRegToDwarfReg(X86::YMM8, -2, true );
mapLLVMRegToDwarfReg(X86::YMM9, -2, true );
mapLLVMRegToDwarfReg(X86::YMM10, -2, true );
mapLLVMRegToDwarfReg(X86::YMM11, -2, true );
mapLLVMRegToDwarfReg(X86::YMM12, -2, true );
mapLLVMRegToDwarfReg(X86::YMM13, -2, true );
mapLLVMRegToDwarfReg(X86::YMM14, -2, true );
mapLLVMRegToDwarfReg(X86::YMM15, -2, true );
break;
}
}
} // End llvm namespace
#endif // GET_REGINFO_TARGET_DESC