Allow the target machines to specify endianness and pointer size

llvm-svn: 5128
This commit is contained in:
Chris Lattner 2002-12-24 00:02:17 +00:00
parent e6761db961
commit a4d7e4f203
2 changed files with 20 additions and 4 deletions

View 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() {}

View 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