1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org//===-- SIRegisterInfo.h - SI Register Info Interface ----------*- C++ -*--===// 2f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 3f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// The LLVM Compiler Infrastructure 4f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 5f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// This file is distributed under the University of Illinois Open Source 6f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// License. See LICENSE.TXT for details. 7f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 8f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org//===----------------------------------------------------------------------===// 9f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 10f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// Interface definition for SIRegisterInfo 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org//===----------------------------------------------------------------------===// 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#ifndef SIREGISTERINFO_H_ 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#define SIREGISTERINFO_H_ 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "AMDGPURegisterInfo.h" 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgnamespace llvm { 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgclass AMDGPUTargetMachine; 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgclass TargetInstrInfo; 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgstruct SIRegisterInfo : public AMDGPURegisterInfo 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org AMDGPUTargetMachine &TM; 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const TargetInstrInfo &TII; 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org SIRegisterInfo(AMDGPUTargetMachine &tm, const TargetInstrInfo &tii); 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org virtual BitVector getReservedRegs(const MachineFunction &MF) const; 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /// getBinaryCode - Returns the hardware encoding for a register 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org virtual unsigned getBinaryCode(unsigned reg) const; 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /// getISARegClass - rc is an AMDIL reg class. This function returns the 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /// SI register class that is equivalent to the given AMDIL register class. 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org virtual const TargetRegisterClass * 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org getISARegClass(const TargetRegisterClass * rc) const; 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /// getHWRegNum - Generated function that returns the hardware encoding for 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /// a register 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org unsigned getHWRegNum(unsigned reg) const; 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /// getCFGStructurizerRegClass - get the register class of the specified 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org /// type to use in the CFGStructurizer 48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org virtual const TargetRegisterClass * getCFGStructurizerRegClass(MVT VT) const; 49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org}; 51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} // End namespace llvm 53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#endif // SIREGISTERINFO_H_ 55