1fa63f976522bd4faf19249e8c9ac4d3edda498d9Tom Stellard//===-- SIRegisterInfo.cpp - SI Register Information ---------------------===// 2a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// 3a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// The LLVM Compiler Infrastructure 4a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// 5a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// This file is distributed under the University of Illinois Open Source 6a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// License. See LICENSE.TXT for details. 7a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// 8a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard//===----------------------------------------------------------------------===// 9a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// 10fa63f976522bd4faf19249e8c9ac4d3edda498d9Tom Stellard// This file contains the SI implementation of the TargetRegisterInfo class. 11a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard// 12a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard//===----------------------------------------------------------------------===// 13a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 14a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 15a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard#include "SIRegisterInfo.h" 16a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard#include "AMDGPUTargetMachine.h" 17a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 18a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellardusing namespace llvm; 19a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 20a75c6163e605f35b14f26930dd9227e4f337ec9eTom StellardSIRegisterInfo::SIRegisterInfo(AMDGPUTargetMachine &tm, 21a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard const TargetInstrInfo &tii) 22a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard: AMDGPURegisterInfo(tm, tii), 23a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard TM(tm), 24a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard TII(tii) 25a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard { } 26a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 27a75c6163e605f35b14f26930dd9227e4f337ec9eTom StellardBitVector SIRegisterInfo::getReservedRegs(const MachineFunction &MF) const 28a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard{ 29a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard BitVector Reserved(getNumRegs()); 30a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard return Reserved; 31a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard} 32a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 33a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellardunsigned SIRegisterInfo::getBinaryCode(unsigned reg) const 34a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard{ 35a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard switch (reg) { 3676b44034b9b234d3db4012342f0fae677d4f10f6Tom Stellard case AMDGPU::M0: return 124; 3776b44034b9b234d3db4012342f0fae677d4f10f6Tom Stellard case AMDGPU::SREG_LIT_0: return 128; 38a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard default: return getHWRegNum(reg); 39a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard } 40a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard} 41a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 42a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellardconst TargetRegisterClass * 43a75c6163e605f35b14f26930dd9227e4f337ec9eTom StellardSIRegisterInfo::getISARegClass(const TargetRegisterClass * rc) const 44a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard{ 45a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard switch (rc->getID()) { 4676b44034b9b234d3db4012342f0fae677d4f10f6Tom Stellard case AMDGPU::GPRF32RegClassID: 4776b44034b9b234d3db4012342f0fae677d4f10f6Tom Stellard return &AMDGPU::VReg_32RegClass; 48a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard default: return rc; 49a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard } 50a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard} 51a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard 52d6c2d3722d795381d3cdf11fe00f63780ad0725aTom Stellardconst TargetRegisterClass * SIRegisterInfo::getCFGStructurizerRegClass( 53d6c2d3722d795381d3cdf11fe00f63780ad0725aTom Stellard MVT VT) const 54d6c2d3722d795381d3cdf11fe00f63780ad0725aTom Stellard{ 55d6c2d3722d795381d3cdf11fe00f63780ad0725aTom Stellard switch(VT.SimpleTy) { 56d6c2d3722d795381d3cdf11fe00f63780ad0725aTom Stellard default: 57228a6641ccddaf24a993f827af1e97379785985aTom Stellard case MVT::i32: return &AMDGPU::VReg_32RegClass; 58d6c2d3722d795381d3cdf11fe00f63780ad0725aTom Stellard } 59d6c2d3722d795381d3cdf11fe00f63780ad0725aTom Stellard} 60a75c6163e605f35b14f26930dd9227e4f337ec9eTom Stellard#include "SIRegisterGetHWRegNum.inc" 61