//===- 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