LLVM  3.7.0
SparcTargetMachine.h
Go to the documentation of this file.
1 //===-- SparcTargetMachine.h - Define TargetMachine for Sparc ---*- C++ -*-===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file declares the Sparc specific subclass of TargetMachine.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef LLVM_LIB_TARGET_SPARC_SPARCTARGETMACHINE_H
15 #define LLVM_LIB_TARGET_SPARC_SPARCTARGETMACHINE_H
16 
17 #include "SparcInstrInfo.h"
18 #include "SparcSubtarget.h"
20 
21 namespace llvm {
22 
24  std::unique_ptr<TargetLoweringObjectFile> TLOF;
25  SparcSubtarget Subtarget;
26 public:
27  SparcTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
30  bool is64bit);
31  ~SparcTargetMachine() override;
32 
33  const SparcSubtarget *getSubtargetImpl(const Function &) const override {
34  return &Subtarget;
35  }
36 
37  // Pass Pipeline Configuration
38  TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
40  return TLOF.get();
41  }
42 };
43 
44 /// SparcV8TargetMachine - Sparc 32-bit target machine
45 ///
47  virtual void anchor();
48 public:
49  SparcV8TargetMachine(const Target &T, const Triple &TT, StringRef CPU,
53 };
54 
55 /// SparcV9TargetMachine - Sparc 64-bit target machine
56 ///
58  virtual void anchor();
59 public:
60  SparcV9TargetMachine(const Target &T, const Triple &TT, StringRef CPU,
64 };
65 
67  virtual void anchor();
68 
69 public:
70  SparcelTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
74 };
75 
76 } // end namespace llvm
77 
78 #endif
SparcTargetMachine(const Target &T, const Triple &TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL, bool is64bit)
SparcTargetMachine ctor - Create an ILP32 architecture model.
SparcV9TargetMachine(const Target &T, const Triple &TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL)
const SparcSubtarget * getSubtargetImpl(const Function &) const override
Virtual method implemented by subclasses that returns a reference to that target's TargetSubtargetInf...
Target-Independent Code Generator Pass Configuration Options.
TargetLoweringObjectFile * getObjFileLowering() const override
SparcV8TargetMachine(const Target &T, const Triple &TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL)
This class describes a target machine that is implemented with the LLVM target-independent code gener...
SparcelTargetMachine(const Target &T, const Triple &TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL)
Triple - Helper class for working with autoconf configuration names.
Definition: Triple.h:44
SparcV8TargetMachine - Sparc 32-bit target machine.
Target - Wrapper for Target specific information.
TargetPassConfig * createPassConfig(PassManagerBase &PM) override
Create a pass configuration object to be used by addPassToEmitX methods for generating a pipeline of ...
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:40
SparcV9TargetMachine - Sparc 64-bit target machine.