LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
X86TargetMachine.h
Go to the documentation of this file.
1 //===-- X86TargetMachine.h - Define TargetMachine for the X86 ---*- 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 X86 specific subclass of TargetMachine.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef X86TARGETMACHINE_H
15 #define X86TARGETMACHINE_H
16 
17 #include "X86.h"
18 #include "X86FrameLowering.h"
19 #include "X86ISelLowering.h"
20 #include "X86InstrInfo.h"
21 #include "X86JITInfo.h"
22 #include "X86SelectionDAGInfo.h"
23 #include "X86Subtarget.h"
24 #include "llvm/IR/DataLayout.h"
27 
28 namespace llvm {
29 
30 class StringRef;
31 
33  X86Subtarget Subtarget;
34  X86FrameLowering FrameLowering;
35  InstrItineraryData InstrItins;
36 
37 public:
42  bool is64Bit);
43 
44  virtual const X86InstrInfo *getInstrInfo() const {
45  llvm_unreachable("getInstrInfo not implemented");
46  }
47  virtual const TargetFrameLowering *getFrameLowering() const {
48  return &FrameLowering;
49  }
50  virtual X86JITInfo *getJITInfo() {
51  llvm_unreachable("getJITInfo not implemented");
52  }
53  virtual const X86Subtarget *getSubtargetImpl() const{ return &Subtarget; }
54  virtual const X86TargetLowering *getTargetLowering() const {
55  llvm_unreachable("getTargetLowering not implemented");
56  }
57  virtual const X86SelectionDAGInfo *getSelectionDAGInfo() const {
58  llvm_unreachable("getSelectionDAGInfo not implemented");
59  }
60  virtual const X86RegisterInfo *getRegisterInfo() const {
61  return &getInstrInfo()->getRegisterInfo();
62  }
63  virtual const InstrItineraryData *getInstrItineraryData() const {
64  return &InstrItins;
65  }
66 
67  /// \brief Register X86 analysis passes with a pass manager.
68  virtual void addAnalysisPasses(PassManagerBase &PM);
69 
70  // Set up the pass pipeline.
71  virtual TargetPassConfig *createPassConfig(PassManagerBase &PM);
72 
73  virtual bool addCodeEmitter(PassManagerBase &PM,
74  JITCodeEmitter &JCE);
75 };
76 
77 /// X86_32TargetMachine - X86 32-bit target machine.
78 ///
80  virtual void anchor();
81  const DataLayout DL; // Calculates type size & alignment
82  X86InstrInfo InstrInfo;
83  X86TargetLowering TLInfo;
84  X86SelectionDAGInfo TSInfo;
85  X86JITInfo JITInfo;
86 public:
91  virtual const DataLayout *getDataLayout() const { return &DL; }
92  virtual const X86TargetLowering *getTargetLowering() const {
93  return &TLInfo;
94  }
95  virtual const X86SelectionDAGInfo *getSelectionDAGInfo() const {
96  return &TSInfo;
97  }
98  virtual const X86InstrInfo *getInstrInfo() const {
99  return &InstrInfo;
100  }
101  virtual X86JITInfo *getJITInfo() {
102  return &JITInfo;
103  }
104 };
105 
106 /// X86_64TargetMachine - X86 64-bit target machine.
107 ///
109  virtual void anchor();
110  const DataLayout DL; // Calculates type size & alignment
111  X86InstrInfo InstrInfo;
112  X86TargetLowering TLInfo;
113  X86SelectionDAGInfo TSInfo;
114  X86JITInfo JITInfo;
115 public:
119  CodeGenOpt::Level OL);
120  virtual const DataLayout *getDataLayout() const { return &DL; }
121  virtual const X86TargetLowering *getTargetLowering() const {
122  return &TLInfo;
123  }
124  virtual const X86SelectionDAGInfo *getSelectionDAGInfo() const {
125  return &TSInfo;
126  }
127  virtual const X86InstrInfo *getInstrInfo() const {
128  return &InstrInfo;
129  }
130  virtual X86JITInfo *getJITInfo() {
131  return &JITInfo;
132  }
133 };
134 
135 } // End llvm namespace
136 
137 #endif
X86_64TargetMachine(const Target &T, StringRef TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL)
virtual TargetPassConfig * createPassConfig(PassManagerBase &PM)
virtual X86JITInfo * getJITInfo()
virtual bool addCodeEmitter(PassManagerBase &PM, JITCodeEmitter &JCE)
virtual const X86TargetLowering * getTargetLowering() const
virtual const X86RegisterInfo & getRegisterInfo() const
Definition: X86InstrInfo.h:164
#define llvm_unreachable(msg)
virtual void addAnalysisPasses(PassManagerBase &PM)
Register X86 analysis passes with a pass manager.
virtual const X86InstrInfo * getInstrInfo() const
virtual const X86SelectionDAGInfo * getSelectionDAGInfo() const
virtual X86JITInfo * getJITInfo()
X86TargetMachine(const Target &T, StringRef TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL, bool is64Bit)
virtual const X86RegisterInfo * getRegisterInfo() const
virtual const InstrItineraryData * getInstrItineraryData() const
virtual const DataLayout * getDataLayout() const
virtual const DataLayout * getDataLayout() const
virtual const X86SelectionDAGInfo * getSelectionDAGInfo() const
virtual X86JITInfo * getJITInfo()
virtual const X86TargetLowering * getTargetLowering() const
virtual const X86InstrInfo * getInstrInfo() const
virtual const TargetFrameLowering * getFrameLowering() const
virtual const X86TargetLowering * getTargetLowering() const
virtual const X86SelectionDAGInfo * getSelectionDAGInfo() const
virtual const X86Subtarget * getSubtargetImpl() const
X86_32TargetMachine(const Target &T, StringRef TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL)
virtual const X86InstrInfo * getInstrInfo() const