AMDGPU: Add core backend files for R600/SI codegen v6
[oota-llvm.git] / lib / Target / AMDGPU / SIRegisterInfo.cpp
1 //===-- SIRegisterInfo.cpp - SI Register Information ---------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file contains the SI implementation of the TargetRegisterInfo class.
11 //
12 //===----------------------------------------------------------------------===//
13
14
15 #include "SIRegisterInfo.h"
16 #include "AMDGPUTargetMachine.h"
17 #include "AMDGPUUtil.h"
18
19 using namespace llvm;
20
21 SIRegisterInfo::SIRegisterInfo(AMDGPUTargetMachine &tm,
22     const TargetInstrInfo &tii)
23 : AMDGPURegisterInfo(tm, tii),
24   TM(tm),
25   TII(tii)
26   { }
27
28 BitVector SIRegisterInfo::getReservedRegs(const MachineFunction &MF) const
29 {
30   BitVector Reserved(getNumRegs());
31   return Reserved;
32 }
33
34 const TargetRegisterClass *
35 SIRegisterInfo::getISARegClass(const TargetRegisterClass * rc) const
36 {
37   switch (rc->getID()) {
38   case AMDGPU::GPRF32RegClassID:
39     return &AMDGPU::VReg_32RegClass;
40   default: return rc;
41   }
42 }
43
44 const TargetRegisterClass * SIRegisterInfo::getCFGStructurizerRegClass(
45                                                                    MVT VT) const
46 {
47   switch(VT.SimpleTy) {
48     default:
49     case MVT::i32: return &AMDGPU::VReg_32RegClass;
50   }
51 }