diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-06-17 23:15:00 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2011-06-17 23:15:00 +0000 |
commit | aad458d57f7ce2969da4d859b1cf705f61cb093e (patch) | |
tree | b7db16c72654c81f0b92c7b654489ee03a2583c3 /lib/Target | |
parent | 5e687ac6158bc28f1831699d7dbfa39d3120b892 (diff) | |
download | external_llvm-aad458d57f7ce2969da4d859b1cf705f61cb093e.zip external_llvm-aad458d57f7ce2969da4d859b1cf705f61cb093e.tar.gz external_llvm-aad458d57f7ce2969da4d859b1cf705f61cb093e.tar.bz2 |
SI, DI, BP, and SP don't have 8-bit sub-registers in x86 mode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133308 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target')
-rw-r--r-- | lib/Target/X86/X86RegisterInfo.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/Target/X86/X86RegisterInfo.cpp b/lib/Target/X86/X86RegisterInfo.cpp index 1ad6203..9b013a3 100644 --- a/lib/Target/X86/X86RegisterInfo.cpp +++ b/lib/Target/X86/X86RegisterInfo.cpp @@ -517,13 +517,20 @@ BitVector X86RegisterInfo::getReservedRegs(const MachineFunction &MF) const { // Reserve the registers that only exist in 64-bit mode. if (!Is64Bit) { + // These 8-bit registers are part of the x86-64 extension even though their + // super-registers are old 32-bits. + Reserved.set(X86::SIL); + Reserved.set(X86::DIL); + Reserved.set(X86::BPL); + Reserved.set(X86::SPL); + for (unsigned n = 0; n != 8; ++n) { + // R8, R9, ... const unsigned GPR64[] = { X86::R8, X86::R9, X86::R10, X86::R11, X86::R12, X86::R13, X86::R14, X86::R15 }; - for (const unsigned *AI = getOverlaps(GPR64[n]); unsigned Reg = *AI; - ++AI) + for (const unsigned *AI = getOverlaps(GPR64[n]); unsigned Reg = *AI; ++AI) Reserved.set(Reg); // XMM8, XMM9, ... |