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