1f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard//===-- SIRegisterInfo.h - SI Register Info Interface ----------*- C++ -*--===// 2f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard// 3f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard// The LLVM Compiler Infrastructure 4f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard// 5f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard// This file is distributed under the University of Illinois Open Source 6f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard// License. See LICENSE.TXT for details. 7f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard// 8f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard//===----------------------------------------------------------------------===// 9f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard// 10f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard/// \file 11f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard/// \brief Interface definition for SIRegisterInfo 12f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard// 13f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard//===----------------------------------------------------------------------===// 14f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard 15f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard 16f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard#ifndef SIREGISTERINFO_H_ 17f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard#define SIREGISTERINFO_H_ 18f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard 19f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard#include "AMDGPURegisterInfo.h" 20f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard 21f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellardnamespace llvm { 22f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard 23f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellardclass AMDGPUTargetMachine; 24f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellardclass TargetInstrInfo; 25f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard 26f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellardstruct SIRegisterInfo : public AMDGPURegisterInfo { 27f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard AMDGPUTargetMachine &TM; 28f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard const TargetInstrInfo &TII; 29f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard 30f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard SIRegisterInfo(AMDGPUTargetMachine &tm, const TargetInstrInfo &tii); 31f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard 32f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard virtual BitVector getReservedRegs(const MachineFunction &MF) const; 33f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard 34f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard /// \param RC is an AMDIL reg class. 35f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard /// 36f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard /// \returns the SI register class that is equivalent to \p RC. 37f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard virtual const TargetRegisterClass * 38f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard getISARegClass(const TargetRegisterClass *RC) const; 39f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard 40f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard /// \brief get the register class of the specified type to use in the 41f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard /// CFGStructurizer 42f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard virtual const TargetRegisterClass * getCFGStructurizerRegClass(MVT VT) const; 43f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard}; 44f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard 45f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard} // End namespace llvm 46f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard 47f98f2ce29e6e2996fa58f38979143eceaa818335Tom Stellard#endif // SIREGISTERINFO_H_ 48