]> granicus.if.org Git - llvm/commitdiff
Allow the target machines to specify endianness and pointer size
authorChris Lattner <sabre@nondot.org>
Tue, 24 Dec 2002 00:02:17 +0000 (00:02 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 24 Dec 2002 00:02:17 +0000 (00:02 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5128 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Target/TargetMachine.h
include/llvm/Target/TargetMachineImpls.h

index 02d57880b727ef0810cced0d032004faec69a827..508ae330db2846d8b700f09ce0df9ae644805b48 100644 (file)
@@ -39,13 +39,14 @@ public:
   
 protected:
   TargetMachine(const std::string &name, // Can only create subclasses...
+               bool LittleEndian = false,
                 unsigned char SubWordSize = 1, unsigned char IntRegSize = 8,
                unsigned char PtrSize = 8, unsigned char PtrAl = 8,
                unsigned char DoubleAl = 8, unsigned char FloatAl = 4,
                unsigned char LongAl = 8, unsigned char IntAl = 4,
                unsigned char ShortAl = 2, unsigned char ByteAl = 1)
-    : Name(name), DataLayout(name, SubWordSize, IntRegSize, PtrSize, PtrAl,
-                             DoubleAl, FloatAl, LongAl,
+    : Name(name), DataLayout(name, LittleEndian, SubWordSize, IntRegSize,
+                            PtrSize, PtrAl, DoubleAl, FloatAl, LongAl,
                              IntAl, ShortAl, ByteAl) {}
 public:
   virtual ~TargetMachine() {}
index e9156c7b2dc6351a3185a2b3f20bd1da447ba73c..4b8450eb0107f85ee36a31efe7bd05011a1b5f1c 100644 (file)
@@ -8,6 +8,18 @@
 #ifndef LLVM_TARGET_TARGETMACHINEIMPLS_H
 #define LLVM_TARGET_TARGETMACHINEIMPLS_H
 
+namespace TM {
+  enum {
+    PtrSizeMask  = 1,
+    PtrSize32    = 0,
+    PtrSize64    = 1,
+
+    EndianMask   = 2,
+    LittleEndian = 0,
+    BigEndian    = 2,
+  };
+}
+
 class TargetMachine;
 
 // allocateSparcTargetMachine - Allocate and return a subclass of TargetMachine
@@ -16,8 +28,11 @@ class TargetMachine;
 TargetMachine *allocateSparcTargetMachine();
 
 // allocateX86TargetMachine - Allocate and return a subclass of TargetMachine
-// that implements the X86 backend.
+// that implements the X86 backend.  The X86 target machine can run in
+// "emulation" mode, where it is capable of emulating machines of larger pointer
+// size and different endianness if desired.
 //
-TargetMachine *allocateX86TargetMachine();
+TargetMachine *allocateX86TargetMachine(unsigned Configuration =
+                                          TM::PtrSize32|TM::LittleEndian);
 
 #endif