blob: 75fd908d98d0d2a1913eafd382042e7363807cad [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
Chandler Carruth8a8cd2b2014-01-07 11:48:04 +000018#include "SystemZSubtarget.h"
Ulrich Weigand5f613df2013-05-06 16:15:19 +000019#include "llvm/Target/TargetMachine.h"
Ulrich Weigand5f613df2013-05-06 16:15:19 +000020
21namespace llvm {
22
Eric Christopher52349952014-07-01 20:19:02 +000023class TargetFrameLowering;
24
Ulrich Weigand5f613df2013-05-06 16:15:19 +000025class SystemZTargetMachine : public LLVMTargetMachine {
26 SystemZSubtarget Subtarget;
Ulrich Weigand5f613df2013-05-06 16:15:19 +000027
28public:
29 SystemZTargetMachine(const Target &T, StringRef TT, StringRef CPU,
30 StringRef FS, const TargetOptions &Options,
31 Reloc::Model RM, CodeModel::Model CM,
32 CodeGenOpt::Level OL);
33
34 // Override TargetMachine.
Richard Sandifordb4d67b52014-03-06 12:03:36 +000035 const SystemZSubtarget *getSubtargetImpl() const override {
Ulrich Weigand5f613df2013-05-06 16:15:19 +000036 return &Subtarget;
37 }
Ulrich Weigand5f613df2013-05-06 16:15:19 +000038 // Override LLVMTargetMachine
Richard Sandifordb4d67b52014-03-06 12:03:36 +000039 TargetPassConfig *createPassConfig(PassManagerBase &PM) override;
Ulrich Weigand5f613df2013-05-06 16:15:19 +000040};
41
42} // end namespace llvm
43
44#endif