1//===-- AMDGPUTargetMachine.h - AMDGPU TargetMachine Interface --*- 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// The AMDGPU TargetMachine interface definition for hw codgen targets. 11// 12//===----------------------------------------------------------------------===// 13 14#ifndef AMDGPU_TARGET_MACHINE_H 15#define AMDGPU_TARGET_MACHINE_H 16 17#include "AMDGPUInstrInfo.h" 18#include "AMDGPUSubtarget.h" 19#include "AMDILFrameLowering.h" 20#include "AMDILIntrinsicInfo.h" 21#include "R600ISelLowering.h" 22#include "llvm/ADT/OwningPtr.h" 23#include "llvm/Target/TargetData.h" 24 25namespace llvm { 26 27MCAsmInfo* createMCAsmInfo(const Target &T, StringRef TT); 28 29class AMDGPUTargetMachine : public LLVMTargetMachine { 30 31 AMDGPUSubtarget Subtarget; 32 const TargetData DataLayout; 33 AMDGPUFrameLowering FrameLowering; 34 AMDGPUIntrinsicInfo IntrinsicInfo; 35 const AMDGPUInstrInfo * InstrInfo; 36 AMDGPUTargetLowering * TLInfo; 37 const InstrItineraryData* InstrItins; 38 bool mDump; 39 40public: 41 AMDGPUTargetMachine(const Target &T, StringRef TT, StringRef FS, 42 StringRef CPU, 43 TargetOptions Options, 44 Reloc::Model RM, CodeModel::Model CM, 45 CodeGenOpt::Level OL); 46 ~AMDGPUTargetMachine(); 47 virtual const AMDGPUFrameLowering* getFrameLowering() const { 48 return &FrameLowering; 49 } 50 virtual const AMDGPUIntrinsicInfo* getIntrinsicInfo() const { 51 return &IntrinsicInfo; 52 } 53 virtual const AMDGPUInstrInfo *getInstrInfo() const {return InstrInfo;} 54 virtual const AMDGPUSubtarget *getSubtargetImpl() const {return &Subtarget; } 55 virtual const AMDGPURegisterInfo *getRegisterInfo() const { 56 return &InstrInfo->getRegisterInfo(); 57 } 58 virtual AMDGPUTargetLowering * getTargetLowering() const { 59 return TLInfo; 60 } 61 virtual const InstrItineraryData* getInstrItineraryData() const { 62 return InstrItins; 63 } 64 virtual const TargetData* getTargetData() const { return &DataLayout; } 65 virtual TargetPassConfig *createPassConfig(PassManagerBase &PM); 66}; 67 68} // End namespace llvm 69 70#endif // AMDGPU_TARGET_MACHINE_H 71