1f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org//===-- SIRegisterInfo.cpp - SI Register Information ---------------------===// 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// This file contains the SI implementation of the TargetRegisterInfo class. 11f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org// 12f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org//===----------------------------------------------------------------------===// 13f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 14f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 15f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "SIRegisterInfo.h" 16f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "AMDGPUTargetMachine.h" 17f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 18f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgusing namespace llvm; 19f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 20f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgSIRegisterInfo::SIRegisterInfo(AMDGPUTargetMachine &tm, 21f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org const TargetInstrInfo &tii) 22f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org: AMDGPURegisterInfo(tm, tii), 23f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org TM(tm), 24f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org TII(tii) 25f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org { } 26f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 27f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgBitVector SIRegisterInfo::getReservedRegs(const MachineFunction &MF) const 28f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 29f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org BitVector Reserved(getNumRegs()); 30f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return Reserved; 31f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 32f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 33f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgunsigned SIRegisterInfo::getBinaryCode(unsigned reg) const 34f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 35f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (reg) { 36f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case AMDGPU::M0: return 124; 37f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case AMDGPU::SREG_LIT_0: return 128; 38f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: return getHWRegNum(reg); 39f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 40f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 41f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 42f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgconst TargetRegisterClass * 43f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgSIRegisterInfo::getISARegClass(const TargetRegisterClass * rc) const 44f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 45f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch (rc->getID()) { 46f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case AMDGPU::GPRF32RegClassID: 47f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org return &AMDGPU::VReg_32RegClass; 48f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: return rc; 49f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 50f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 51f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org 52f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.orgconst TargetRegisterClass * SIRegisterInfo::getCFGStructurizerRegClass( 53f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org MVT VT) const 54f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org{ 55f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org switch(VT.SimpleTy) { 56f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org default: 57f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org case MVT::i32: return &AMDGPU::VReg_32RegClass; 58f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org } 59f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org} 60f2ba7591b1407a7ee9209f842c50696914dc2dedkbr@chromium.org#include "SIRegisterGetHWRegNum.inc" 61