5e10c5c951ca06311078273ca20a467ef5b851cb
[oota-llvm.git] / include / llvm / Target / TargetMachineImpls.h
1 //===-- llvm/Target/TargetMachineImpls.h - Target Descriptions --*- C++ -*-===//
2 //
3 // This file defines the entry point to getting access to the various target
4 // machine implementations available to LLVM.
5 //
6 //===----------------------------------------------------------------------===//
7
8 #ifndef LLVM_TARGET_TARGETMACHINEIMPLS_H
9 #define LLVM_TARGET_TARGETMACHINEIMPLS_H
10
11 namespace TM {
12   enum {
13     PtrSizeMask  = 1,
14     PtrSize32    = 0,
15     PtrSize64    = 1,
16
17     EndianMask   = 2,
18     LittleEndian = 0,
19     BigEndian    = 2,
20   };
21 }
22
23 class TargetMachine;
24
25 // allocateSparcTargetMachine - Allocate and return a subclass of TargetMachine
26 // that implements the Sparc backend.
27 //
28 TargetMachine *allocateSparcTargetMachine(unsigned Configuration =
29                                           TM::PtrSize64|TM::BigEndian);
30
31 // allocateX86TargetMachine - Allocate and return a subclass of TargetMachine
32 // that implements the X86 backend.  The X86 target machine can run in
33 // "emulation" mode, where it is capable of emulating machines of larger pointer
34 // size and different endianness if desired.
35 //
36 TargetMachine *allocateX86TargetMachine(unsigned Configuration =
37                                         TM::PtrSize32|TM::LittleEndian);
38
39 #endif