1251607Sdim//==- SystemZTargetMachine.h - Define TargetMachine for SystemZ ---*- C++ -*-=// 2251607Sdim// 3251607Sdim// The LLVM Compiler Infrastructure 4251607Sdim// 5251607Sdim// This file is distributed under the University of Illinois Open Source 6251607Sdim// License. See LICENSE.TXT for details. 7251607Sdim// 8251607Sdim//===----------------------------------------------------------------------===// 9251607Sdim// 10251607Sdim// This file declares the SystemZ specific subclass of TargetMachine. 11251607Sdim// 12251607Sdim//===----------------------------------------------------------------------===// 13251607Sdim 14251607Sdim 15251607Sdim#ifndef SYSTEMZTARGETMACHINE_H 16251607Sdim#define SYSTEMZTARGETMACHINE_H 17251607Sdim 18251607Sdim#include "SystemZFrameLowering.h" 19251607Sdim#include "SystemZISelLowering.h" 20251607Sdim#include "SystemZInstrInfo.h" 21251607Sdim#include "SystemZRegisterInfo.h" 22251607Sdim#include "SystemZSubtarget.h" 23263509Sdim#include "SystemZSelectionDAGInfo.h" 24251607Sdim#include "llvm/IR/DataLayout.h" 25251607Sdim#include "llvm/Target/TargetFrameLowering.h" 26251607Sdim#include "llvm/Target/TargetMachine.h" 27251607Sdim 28251607Sdimnamespace llvm { 29251607Sdim 30251607Sdimclass SystemZTargetMachine : public LLVMTargetMachine { 31251607Sdim SystemZSubtarget Subtarget; 32251607Sdim const DataLayout DL; 33251607Sdim SystemZInstrInfo InstrInfo; 34251607Sdim SystemZTargetLowering TLInfo; 35263509Sdim SystemZSelectionDAGInfo TSInfo; 36251607Sdim SystemZFrameLowering FrameLowering; 37251607Sdim 38251607Sdimpublic: 39251607Sdim SystemZTargetMachine(const Target &T, StringRef TT, StringRef CPU, 40251607Sdim StringRef FS, const TargetOptions &Options, 41251607Sdim Reloc::Model RM, CodeModel::Model CM, 42251607Sdim CodeGenOpt::Level OL); 43251607Sdim 44251607Sdim // Override TargetMachine. 45251607Sdim virtual const TargetFrameLowering *getFrameLowering() const LLVM_OVERRIDE { 46251607Sdim return &FrameLowering; 47251607Sdim } 48251607Sdim virtual const SystemZInstrInfo *getInstrInfo() const LLVM_OVERRIDE { 49251607Sdim return &InstrInfo; 50251607Sdim } 51251607Sdim virtual const SystemZSubtarget *getSubtargetImpl() const LLVM_OVERRIDE { 52251607Sdim return &Subtarget; 53251607Sdim } 54251607Sdim virtual const DataLayout *getDataLayout() const LLVM_OVERRIDE { 55251607Sdim return &DL; 56251607Sdim } 57251607Sdim virtual const SystemZRegisterInfo *getRegisterInfo() const LLVM_OVERRIDE { 58251607Sdim return &InstrInfo.getRegisterInfo(); 59251607Sdim } 60251607Sdim virtual const SystemZTargetLowering *getTargetLowering() const LLVM_OVERRIDE { 61251607Sdim return &TLInfo; 62251607Sdim } 63251607Sdim virtual const TargetSelectionDAGInfo *getSelectionDAGInfo() const 64251607Sdim LLVM_OVERRIDE { 65251607Sdim return &TSInfo; 66251607Sdim } 67251607Sdim 68251607Sdim // Override LLVMTargetMachine 69251607Sdim virtual TargetPassConfig *createPassConfig(PassManagerBase &PM) LLVM_OVERRIDE; 70251607Sdim}; 71251607Sdim 72251607Sdim} // end namespace llvm 73251607Sdim 74251607Sdim#endif 75