//===-- llvm/Target/TargetMachineImpls.h - Target Descriptions --*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file was developed by the LLVM research group and is distributed under
+// the University of Illinois Open Source License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
//
// This file defines the entry point to getting access to the various target
// machine implementations available to LLVM.
#ifndef LLVM_TARGET_TARGETMACHINEIMPLS_H
#define LLVM_TARGET_TARGETMACHINEIMPLS_H
-namespace TM {
- enum {
- PtrSizeMask = 1,
- PtrSize32 = 0,
- PtrSize64 = 1,
+namespace llvm {
+ /// Command line options shared between TargetMachine implementations -
+ /// these should go in their own header eventually.
+ ///
+ extern bool PrintMachineCode;
+ extern bool NoFramePointerElim;
- EndianMask = 2,
- LittleEndian = 0,
- BigEndian = 2,
- };
-}
+ class TargetMachine;
+ class Module;
+ class IntrinsicLowering;
+
+ // allocateCTargetMachine - Allocate and return a subclass of TargetMachine
+ // that implements emits C code. This takes ownership of the
+ // IntrinsicLowering pointer, deleting it when the target machine is
+ // destroyed.
+ //
+ TargetMachine *allocateCTargetMachine(const Module &M,
+ IntrinsicLowering *IL = 0);
-class TargetMachine;
+ // allocateSparcV9TargetMachine - Allocate and return a subclass of
+ // TargetMachine that implements the 64-bit Sparc backend. This takes
+ // ownership of the IntrinsicLowering pointer, deleting it when the target
+ // machine is destroyed.
+ //
+ TargetMachine *allocateSparcV9TargetMachine(const Module &M,
+ IntrinsicLowering *IL = 0);
+
+ // allocateX86TargetMachine - Allocate and return a subclass of TargetMachine
+ // that implements the X86 backend. This takes ownership of the
+ // IntrinsicLowering pointer, deleting it when the target machine is
+ // destroyed.
+ //
+ TargetMachine *allocateX86TargetMachine(const Module &M,
+ IntrinsicLowering *IL = 0);
-// allocateSparcTargetMachine - Allocate and return a subclass of TargetMachine
-// that implements the Sparc backend.
-//
-TargetMachine *allocateSparcTargetMachine(unsigned Configuration =
- TM::PtrSize64|TM::BigEndian);
-
-// allocateX86TargetMachine - Allocate and return a subclass of TargetMachine
-// 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(unsigned Configuration =
- TM::PtrSize32|TM::LittleEndian);
+ // allocatePowerPCTargetMachine - Allocate and return a subclass
+ // of TargetMachine that implements the PowerPC backend. This takes
+ // ownership of the IntrinsicLowering pointer, deleting it when
+ // the target machine is destroyed.
+ //
+ TargetMachine *allocatePowerPCTargetMachine(const Module &M,
+ IntrinsicLowering *IL = 0);
+} // End llvm namespace
#endif