LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
XCoreTargetMachine.h
Go to the documentation of this file.
1 //===-- XCoreTargetMachine.h - Define TargetMachine for XCore ---*- 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 XCore specific subclass of TargetMachine.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef XCORETARGETMACHINE_H
15 #define XCORETARGETMACHINE_H
16 
17 #include "XCoreFrameLowering.h"
18 #include "XCoreISelLowering.h"
19 #include "XCoreInstrInfo.h"
20 #include "XCoreSelectionDAGInfo.h"
21 #include "XCoreSubtarget.h"
22 #include "llvm/IR/DataLayout.h"
24 
25 namespace llvm {
26 
28  XCoreSubtarget Subtarget;
29  const DataLayout DL; // Calculates type size & alignment
30  XCoreInstrInfo InstrInfo;
31  XCoreFrameLowering FrameLowering;
32  XCoreTargetLowering TLInfo;
33  XCoreSelectionDAGInfo TSInfo;
34 public:
39 
40  virtual const XCoreInstrInfo *getInstrInfo() const { return &InstrInfo; }
41  virtual const XCoreFrameLowering *getFrameLowering() const {
42  return &FrameLowering;
43  }
44  virtual const XCoreSubtarget *getSubtargetImpl() const { return &Subtarget; }
45  virtual const XCoreTargetLowering *getTargetLowering() const {
46  return &TLInfo;
47  }
48 
49  virtual const XCoreSelectionDAGInfo* getSelectionDAGInfo() const {
50  return &TSInfo;
51  }
52 
53  virtual const TargetRegisterInfo *getRegisterInfo() const {
54  return &InstrInfo.getRegisterInfo();
55  }
56  virtual const DataLayout *getDataLayout() const { return &DL; }
57 
58  // Pass Pipeline Configuration
59  virtual TargetPassConfig *createPassConfig(PassManagerBase &PM);
60 
61  virtual void addAnalysisPasses(PassManagerBase &PM);
62 };
63 
64 } // end namespace llvm
65 
66 #endif
XCoreTargetMachine(const Target &T, StringRef TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOpt::Level OL)
virtual const TargetRegisterInfo & getRegisterInfo() const
virtual const XCoreSubtarget * getSubtargetImpl() const
virtual const XCoreSelectionDAGInfo * getSelectionDAGInfo() const
virtual const DataLayout * getDataLayout() const
virtual const TargetRegisterInfo * getRegisterInfo() const
virtual const XCoreInstrInfo * getInstrInfo() const
virtual void addAnalysisPasses(PassManagerBase &PM)
Register analysis passes for this target with a pass manager.
virtual const XCoreTargetLowering * getTargetLowering() const
virtual const XCoreFrameLowering * getFrameLowering() const
virtual TargetPassConfig * createPassConfig(PassManagerBase &PM)