diff options
author | Evan Cheng <evan.cheng@apple.com> | 2007-11-13 17:54:34 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2007-11-13 17:54:34 +0000 |
commit | e7c8754a521d90e1164f2db7a5f999f51b818f12 (patch) | |
tree | 6b99bca44a6df972e495a8e6a45f9079d691a86f /lib/Target/X86 | |
parent | c69107ca11282a905c252d1b62091951087f13dc (diff) | |
download | external_llvm-e7c8754a521d90e1164f2db7a5f999f51b818f12.zip external_llvm-e7c8754a521d90e1164f2db7a5f999f51b818f12.tar.gz external_llvm-e7c8754a521d90e1164f2db7a5f999f51b818f12.tar.bz2 |
Fix x86-64 jit: remove reliance on Dwarf numbers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44048 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86')
-rw-r--r-- | lib/Target/X86/X86CodeEmitter.cpp | 19 | ||||
-rw-r--r-- | lib/Target/X86/X86RegisterInfo.cpp | 22 |
2 files changed, 29 insertions, 12 deletions
diff --git a/lib/Target/X86/X86CodeEmitter.cpp b/lib/Target/X86/X86CodeEmitter.cpp index 90d361b..8102ce6 100644 --- a/lib/Target/X86/X86CodeEmitter.cpp +++ b/lib/Target/X86/X86CodeEmitter.cpp @@ -385,13 +385,20 @@ static unsigned sizeOfImm(const TargetInstrDescriptor *Desc) { bool Emitter::isX86_64ExtendedReg(const MachineOperand &MO) { if (!MO.isRegister()) return false; unsigned RegNo = MO.getReg(); - int DWNum = II->getRegisterInfo().getDwarfRegNum(RegNo); - if (DWNum >= II->getRegisterInfo().getDwarfRegNum(X86::R8) && - DWNum <= II->getRegisterInfo().getDwarfRegNum(X86::R15)) - return true; - if (DWNum >= II->getRegisterInfo().getDwarfRegNum(X86::XMM8) && - DWNum <= II->getRegisterInfo().getDwarfRegNum(X86::XMM15)) + switch (MO.getReg()) { + default: break; + case X86::R8: case X86::R9: case X86::R10: case X86::R11: + case X86::R12: case X86::R13: case X86::R14: case X86::R15: + case X86::R8D: case X86::R9D: case X86::R10D: case X86::R11D: + case X86::R12D: case X86::R13D: case X86::R14D: case X86::R15D: + case X86::R8W: case X86::R9W: case X86::R10W: case X86::R11W: + case X86::R12W: case X86::R13W: case X86::R14W: case X86::R15W: + case X86::R8B: case X86::R9B: case X86::R10B: case X86::R11B: + case X86::R12B: case X86::R13B: case X86::R14B: case X86::R15B: + case X86::XMM8: case X86::XMM9: case X86::XMM10: case X86::XMM11: + case X86::XMM12: case X86::XMM13: case X86::XMM14: case X86::XMM15: return true; + } return false; } diff --git a/lib/Target/X86/X86RegisterInfo.cpp b/lib/Target/X86/X86RegisterInfo.cpp index 9d8a208..ee754df 100644 --- a/lib/Target/X86/X86RegisterInfo.cpp +++ b/lib/Target/X86/X86RegisterInfo.cpp @@ -713,12 +713,22 @@ unsigned X86RegisterInfo::getX86RegNum(unsigned RegNo) { case X86::ST4: case X86::ST5: case X86::ST6: case X86::ST7: return RegNo-X86::ST0; - case X86::XMM0: case X86::XMM1: case X86::XMM2: case X86::XMM3: - case X86::XMM4: case X86::XMM5: case X86::XMM6: case X86::XMM7: - return getDwarfRegNum(RegNo) - getDwarfRegNum(X86::XMM0); - case X86::XMM8: case X86::XMM9: case X86::XMM10: case X86::XMM11: - case X86::XMM12: case X86::XMM13: case X86::XMM14: case X86::XMM15: - return getDwarfRegNum(RegNo) - getDwarfRegNum(X86::XMM8); + case X86::XMM0: case X86::XMM8: + return 0; + case X86::XMM1: case X86::XMM9: + return 1; + case X86::XMM2: case X86::XMM10: + return 2; + case X86::XMM3: case X86::XMM11: + return 3; + case X86::XMM4: case X86::XMM12: + return 4; + case X86::XMM5: case X86::XMM13: + return 5; + case X86::XMM6: case X86::XMM14: + return 6; + case X86::XMM7: case X86::XMM15: + return 7; default: assert(isVirtualRegister(RegNo) && "Unknown physical register!"); |