1 //===-- AMDGPUTargetMachine.h - AMDGPU TargetMachine Interface --*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
11 /// \brief The AMDGPU TargetMachine interface definition for hw codgen targets.
13 //===----------------------------------------------------------------------===//
15 #ifndef AMDGPU_TARGET_MACHINE_H
16 #define AMDGPU_TARGET_MACHINE_H
18 #include "AMDGPUFrameLowering.h"
19 #include "AMDGPUInstrInfo.h"
20 #include "AMDGPUSubtarget.h"
21 #include "AMDILIntrinsicInfo.h"
22 #include "R600ISelLowering.h"
23 #include "llvm/ADT/OwningPtr.h"
24 #include "llvm/IR/DataLayout.h"
28 class AMDGPUTargetMachine : public LLVMTargetMachine {
30 AMDGPUSubtarget Subtarget;
31 const DataLayout Layout;
32 AMDGPUFrameLowering FrameLowering;
33 AMDGPUIntrinsicInfo IntrinsicInfo;
34 OwningPtr<AMDGPUInstrInfo> InstrInfo;
35 OwningPtr<AMDGPUTargetLowering> TLInfo;
36 const InstrItineraryData *InstrItins;
39 AMDGPUTargetMachine(const Target &T, StringRef TT, StringRef FS,
40 StringRef CPU, TargetOptions Options, Reloc::Model RM,
41 CodeModel::Model CM, CodeGenOpt::Level OL);
42 ~AMDGPUTargetMachine();
43 virtual const AMDGPUFrameLowering *getFrameLowering() const {
44 return &FrameLowering;
46 virtual const AMDGPUIntrinsicInfo *getIntrinsicInfo() const {
47 return &IntrinsicInfo;
49 virtual const AMDGPUInstrInfo *getInstrInfo() const {
50 return InstrInfo.get();
52 virtual const AMDGPUSubtarget *getSubtargetImpl() const { return &Subtarget; }
53 virtual const AMDGPURegisterInfo *getRegisterInfo() const {
54 return &InstrInfo->getRegisterInfo();
56 virtual AMDGPUTargetLowering *getTargetLowering() const {
59 virtual const InstrItineraryData *getInstrItineraryData() const {
62 virtual const DataLayout *getDataLayout() const { return &Layout; }
63 virtual TargetPassConfig *createPassConfig(PassManagerBase &PM);
66 } // End namespace llvm
68 #endif // AMDGPU_TARGET_MACHINE_H