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 //===----------------------------------------------------------------------===//
10 // The AMDGPU TargetMachine interface definition for hw codgen targets.
12 //===----------------------------------------------------------------------===//
14 #ifndef AMDGPU_TARGET_MACHINE_H
15 #define AMDGPU_TARGET_MACHINE_H
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"
27 MCAsmInfo
* createMCAsmInfo(const Target
&T
, StringRef TT
);
29 class AMDGPUTargetMachine
: public LLVMTargetMachine
{
31 AMDGPUSubtarget Subtarget
;
32 const TargetData DataLayout
;
33 AMDILFrameLowering FrameLowering
;
34 AMDILIntrinsicInfo IntrinsicInfo
;
35 const AMDGPUInstrInfo
* InstrInfo
;
36 AMDGPUTargetLowering
* TLInfo
;
37 const InstrItineraryData
* InstrItins
;
41 AMDGPUTargetMachine(const Target
&T
, StringRef TT
, StringRef FS
,
43 TargetOptions Options
,
44 Reloc::Model RM
, CodeModel::Model CM
,
45 CodeGenOpt::Level OL
);
46 ~AMDGPUTargetMachine();
47 virtual const AMDILFrameLowering
* getFrameLowering() const {
48 return &FrameLowering
;
50 virtual const AMDILIntrinsicInfo
* getIntrinsicInfo() const {
51 return &IntrinsicInfo
;
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();
58 virtual AMDGPUTargetLowering
* getTargetLowering() const {
61 virtual const InstrItineraryData
* getInstrItineraryData() const {
64 virtual const TargetData
* getTargetData() const { return &DataLayout
; }
65 virtual TargetPassConfig
*createPassConfig(PassManagerBase
&PM
);
66 virtual bool addPassesToEmitFile(PassManagerBase
&PM
,
67 formatted_raw_ostream
&Out
,
68 CodeGenFileType FileType
,
72 } // End namespace llvm
74 #endif // AMDGPU_TARGET_MACHINE_H