1 //===-- AMDGPURegisterInfo.h - AMDGPURegisterInfo 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 // This file contains the TargetRegisterInfo interface that is implemented
11 // by all hw codegen targets.
13 //===----------------------------------------------------------------------===//
15 #ifndef AMDGPUREGISTERINFO_H_
16 #define AMDGPUREGISTERINFO_H_
18 #include "llvm/ADT/BitVector.h"
19 #include "llvm/Target/TargetRegisterInfo.h"
21 #define GET_REGINFO_HEADER
22 #define GET_REGINFO_ENUM
23 #include "AMDGPUGenRegisterInfo.inc"
27 class AMDGPUTargetMachine
;
28 class TargetInstrInfo
;
30 struct AMDGPURegisterInfo
: public AMDGPUGenRegisterInfo
33 const TargetInstrInfo
&TII
;
34 static const uint16_t CalleeSavedReg
;
36 AMDGPURegisterInfo(TargetMachine
&tm
, const TargetInstrInfo
&tii
);
38 virtual BitVector
getReservedRegs(const MachineFunction
&MF
) const {
39 assert(!"Unimplemented"); return BitVector();
42 /// getISARegClass - rc is an AMDIL reg class. This function returns the
43 /// ISA reg class that is equivalent to the given AMDIL reg class.
44 virtual const TargetRegisterClass
* getISARegClass(
45 const TargetRegisterClass
* rc
) const {
46 assert(!"Unimplemented"); return NULL
;
49 virtual const TargetRegisterClass
* getCFGStructurizerRegClass(MVT VT
) const {
50 assert(!"Unimplemented"); return NULL
;
53 const uint16_t* getCalleeSavedRegs(const MachineFunction
*MF
) const;
54 void eliminateFrameIndex(MachineBasicBlock::iterator MI
, int SPAdj
,
55 RegScavenger
*RS
) const;
56 unsigned getFrameRegister(const MachineFunction
&MF
) const;
60 } // End namespace llvm
62 #endif // AMDIDSAREGISTERINFO_H_