[llvm] r268795 - [X86] Rename the X32_ADDR_ACCESS register class into LOW32_ADDR_ACCESS.

Quentin Colombet via llvm-commits llvm-commits at lists.llvm.org
Fri May 6 14:10:44 PDT 2016


Author: qcolombet
Date: Fri May  6 16:10:43 2016
New Revision: 268795

URL: http://llvm.org/viewvc/llvm-project?rev=268795&view=rev
Log:
[X86] Rename the X32_ADDR_ACCESS register class into LOW32_ADDR_ACCESS.

This register class may be used by any ABIs that uses x86_64 ISA while
using 32-bit addresses, not just in X32 cases. Make sure the name
reflects that.

Modified:
    llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp
    llvm/trunk/lib/Target/X86/X86RegisterInfo.td

Modified: llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp?rev=268795&r1=268794&r2=268795&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp Fri May  6 16:10:43 2016
@@ -163,9 +163,10 @@ X86RegisterInfo::getPointerRegClass(cons
     if (Subtarget.isTarget64BitLP64())
       return &X86::GR64RegClass;
     // If the target is 64bit but we have been told to use 32bit addresses,
-    // we can still use RIP-relative addresses.
+    // we can still use 64-bit register as long as we know the high bits
+    // are zeros.
     // Reflect that in the returned register class.
-    return Is64Bit ? &X86::X32_ADDR_ACCESSRegClass : &X86::GR32RegClass;
+    return Is64Bit ? &X86::LOW32_ADDR_ACCESSRegClass : &X86::GR32RegClass;
   case 1: // Normal GPRs except the stack pointer (for encoding reasons).
     if (Subtarget.isTarget64BitLP64())
       return &X86::GR64_NOSPRegClass;

Modified: llvm/trunk/lib/Target/X86/X86RegisterInfo.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86RegisterInfo.td?rev=268795&r1=268794&r2=268795&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86RegisterInfo.td (original)
+++ llvm/trunk/lib/Target/X86/X86RegisterInfo.td Fri May  6 16:10:43 2016
@@ -415,14 +415,17 @@ def GR32_NOREX_NOSP : RegisterClass<"X86
 def GR64_NOREX_NOSP : RegisterClass<"X86", [i64], 64,
                                     (and GR64_NOREX, GR64_NOSP)>;
 
-// Register classes used for X32 address accesses.
-// In X32 mode it is fine to use RIP as we are sure the 32 high bits
-// are not set.
-// We do not need variants for NOSP as RIP is not allowed there.
+// Register classes used for ABIs that use 32-bit address accesses,
+// while using the whole x84_64 ISA.
+
+// In such cases, it is fine to use RIP as we are sure the 32 high
+// bits are not set. We do not need variants for NOSP as RIP is not
+// allowed there.
 // Alignment is 64 because we have RIP.
 // FIXME: We could allow all 64bit registers, but we would need
-// something to check that the 32 high bits are not set.
-def X32_ADDR_ACCESS : RegisterClass<"X86", [i32], 64, (add GR32, RIP)>;
+// something to check that the 32 high bits are not set,
+// which we do not have right now.
+def LOW32_ADDR_ACCESS : RegisterClass<"X86", [i32], 64, (add GR32, RIP)>;
 
 // A class to support the 'A' assembler constraint: EAX then EDX.
 def GR32_AD : RegisterClass<"X86", [i32], 32, (add EAX, EDX)>;




More information about the llvm-commits mailing list