Allow the target machines to specify endianness and pointer size

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5128 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2002-12-24 00:02:17 +00:00
parent 836f675c49
commit 434c86dd3f
2 changed files with 20 additions and 4 deletions

View File

@@ -39,13 +39,14 @@ public:
protected: protected:
TargetMachine(const std::string &name, // Can only create subclasses... TargetMachine(const std::string &name, // Can only create subclasses...
bool LittleEndian = false,
unsigned char SubWordSize = 1, unsigned char IntRegSize = 8, unsigned char SubWordSize = 1, unsigned char IntRegSize = 8,
unsigned char PtrSize = 8, unsigned char PtrAl = 8, unsigned char PtrSize = 8, unsigned char PtrAl = 8,
unsigned char DoubleAl = 8, unsigned char FloatAl = 4, unsigned char DoubleAl = 8, unsigned char FloatAl = 4,
unsigned char LongAl = 8, unsigned char IntAl = 4, unsigned char LongAl = 8, unsigned char IntAl = 4,
unsigned char ShortAl = 2, unsigned char ByteAl = 1) unsigned char ShortAl = 2, unsigned char ByteAl = 1)
: Name(name), DataLayout(name, SubWordSize, IntRegSize, PtrSize, PtrAl, : Name(name), DataLayout(name, LittleEndian, SubWordSize, IntRegSize,
DoubleAl, FloatAl, LongAl, PtrSize, PtrAl, DoubleAl, FloatAl, LongAl,
IntAl, ShortAl, ByteAl) {} IntAl, ShortAl, ByteAl) {}
public: public:
virtual ~TargetMachine() {} virtual ~TargetMachine() {}

View File

@@ -8,6 +8,18 @@
#ifndef LLVM_TARGET_TARGETMACHINEIMPLS_H #ifndef LLVM_TARGET_TARGETMACHINEIMPLS_H
#define 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; class TargetMachine;
// allocateSparcTargetMachine - Allocate and return a subclass of TargetMachine // allocateSparcTargetMachine - Allocate and return a subclass of TargetMachine
@@ -16,8 +28,11 @@ class TargetMachine;
TargetMachine *allocateSparcTargetMachine(); TargetMachine *allocateSparcTargetMachine();
// allocateX86TargetMachine - Allocate and return a subclass of TargetMachine // 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 #endif