blob: b3e56dbbc09d0fb927f562a1e193932ad3176ce1 [file] [log] [blame]
Ulrich Weigand5f613df2013-05-06 16:15:19 +00001//==- SystemZTargetMachine.h - Define TargetMachine for SystemZ ---*- 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 SystemZ specific subclass of TargetMachine.
11//
12//===----------------------------------------------------------------------===//
13
14
15#ifndef SYSTEMZTARGETMACHINE_H
16#define SYSTEMZTARGETMACHINE_H
17
18#include "SystemZFrameLowering.h"
19#include "SystemZISelLowering.h"
20#include "SystemZInstrInfo.h"
21#include "SystemZRegisterInfo.h"
Richard Sandifordd131ff82013-07-08 09:35:23 +000022#include "SystemZSelectionDAGInfo.h"
Chandler Carruth8a8cd2b2014-01-07 11:48:04 +000023#include "SystemZSubtarget.h"
Ulrich Weigand5f613df2013-05-06 16:15:19 +000024#include "llvm/IR/DataLayout.h"
25#include "llvm/Target/TargetFrameLowering.h"
26#include "llvm/Target/TargetMachine.h"
Ulrich Weigand5f613df2013-05-06 16:15:19 +000027
28namespace llvm {
29
30class SystemZTargetMachine : public LLVMTargetMachine {
31 SystemZSubtarget Subtarget;
32 const DataLayout DL;
33 SystemZInstrInfo InstrInfo;
34 SystemZTargetLowering TLInfo;
Richard Sandifordd131ff82013-07-08 09:35:23 +000035 SystemZSelectionDAGInfo TSInfo;
Ulrich Weigand5f613df2013-05-06 16:15:19 +000036 SystemZFrameLowering FrameLowering;
37
38public:
39 SystemZTargetMachine(const Target &T, StringRef TT, StringRef CPU,
40 StringRef FS, const TargetOptions &Options,
41 Reloc::Model RM, CodeModel::Model CM,
42 CodeGenOpt::Level OL);
43
44 // Override TargetMachine.
45 virtual const TargetFrameLowering *getFrameLowering() const LLVM_OVERRIDE {
46 return &FrameLowering;
47 }
48 virtual const SystemZInstrInfo *getInstrInfo() const LLVM_OVERRIDE {
49 return &InstrInfo;
50 }
51 virtual const SystemZSubtarget *getSubtargetImpl() const LLVM_OVERRIDE {
52 return &Subtarget;
53 }
54 virtual const DataLayout *getDataLayout() const LLVM_OVERRIDE {
55 return &DL;
56 }
57 virtual const SystemZRegisterInfo *getRegisterInfo() const LLVM_OVERRIDE {
58 return &InstrInfo.getRegisterInfo();
59 }
60 virtual const SystemZTargetLowering *getTargetLowering() const LLVM_OVERRIDE {
61 return &TLInfo;
62 }
63 virtual const TargetSelectionDAGInfo *getSelectionDAGInfo() const
64 LLVM_OVERRIDE {
65 return &TSInfo;
66 }
67
68 // Override LLVMTargetMachine
69 virtual TargetPassConfig *createPassConfig(PassManagerBase &PM) LLVM_OVERRIDE;
70};
71
72} // end namespace llvm
73
74#endif