1 //===-- llvm/Target/TargetMachineImpls.h - Target Descriptions --*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file was developed by the LLVM research group and is distributed under
6 // the University of Illinois Open Source License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // This file defines the entry point to getting access to the various target
11 // machine implementations available to LLVM.
13 //===----------------------------------------------------------------------===//
15 #ifndef LLVM_TARGET_TARGETMACHINEIMPLS_H
16 #define LLVM_TARGET_TARGETMACHINEIMPLS_H
19 /// Command line options shared between TargetMachine implementations -
20 /// these should go in their own header eventually.
22 extern bool PrintMachineCode;
27 class IntrinsicLowering;
29 // allocateCTargetMachine - Allocate and return a subclass of TargetMachine
30 // that implements emits C code. This takes ownership of the
31 // IntrinsicLowering pointer, deleting it when the target machine is
34 TargetMachine *allocateCTargetMachine(const Module &M,
35 IntrinsicLowering *IL = 0);
37 // allocateSparcV9TargetMachine - Allocate and return a subclass of
38 // TargetMachine that implements the 64-bit Sparc backend. This takes
39 // ownership of the IntrinsicLowering pointer, deleting it when the target
40 // machine is destroyed.
42 TargetMachine *allocateSparcV9TargetMachine(const Module &M,
43 IntrinsicLowering *IL = 0);
45 // allocateX86TargetMachine - Allocate and return a subclass of TargetMachine
46 // that implements the X86 backend. This takes ownership of the
47 // IntrinsicLowering pointer, deleting it when the target machine is
50 TargetMachine *allocateX86TargetMachine(const Module &M,
51 IntrinsicLowering *IL = 0);
53 // allocatePowerPCTargetMachine - Allocate and return a subclass
54 // of TargetMachine that implements the PowerPC backend. This takes
55 // ownership of the IntrinsicLowering pointer, deleting it when
56 // the target machine is destroyed.
58 TargetMachine *allocatePowerPCTargetMachine(const Module &M,
59 IntrinsicLowering *IL = 0);
60 } // End llvm namespace