]>
git.proxmox.com Git - rustc.git/blob - src/llvm/lib/Target/R600/AMDGPURegisterInfo.cpp
1 //===-- AMDGPURegisterInfo.cpp - AMDGPU Register Information -------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
11 /// \brief Parent TargetRegisterInfo class common to all hw codegen targets.
13 //===----------------------------------------------------------------------===//
15 #include "AMDGPURegisterInfo.h"
16 #include "AMDGPUTargetMachine.h"
20 AMDGPURegisterInfo::AMDGPURegisterInfo(const AMDGPUSubtarget
&st
)
21 : AMDGPUGenRegisterInfo(0),
25 //===----------------------------------------------------------------------===//
26 // Function handling callbacks - Functions are a seldom used feature of GPUS, so
27 // they are not supported at this time.
28 //===----------------------------------------------------------------------===//
30 const MCPhysReg
AMDGPURegisterInfo::CalleeSavedReg
= AMDGPU::NoRegister
;
33 AMDGPURegisterInfo::getCalleeSavedRegs(const MachineFunction
*MF
) const {
34 return &CalleeSavedReg
;
37 void AMDGPURegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator MI
,
39 unsigned FIOperandNum
,
40 RegScavenger
*RS
) const {
41 llvm_unreachable("Subroutines not supported yet");
44 unsigned AMDGPURegisterInfo::getFrameRegister(const MachineFunction
&MF
) const {
45 return AMDGPU::NoRegister
;
48 unsigned AMDGPURegisterInfo::getSubRegFromChannel(unsigned Channel
) const {
49 static const unsigned SubRegs
[] = {
50 AMDGPU::sub0
, AMDGPU::sub1
, AMDGPU::sub2
, AMDGPU::sub3
, AMDGPU::sub4
,
51 AMDGPU::sub5
, AMDGPU::sub6
, AMDGPU::sub7
, AMDGPU::sub8
, AMDGPU::sub9
,
52 AMDGPU::sub10
, AMDGPU::sub11
, AMDGPU::sub12
, AMDGPU::sub13
, AMDGPU::sub14
,
56 assert(Channel
< array_lengthof(SubRegs
));
57 return SubRegs
[Channel
];
60 unsigned AMDGPURegisterInfo::getIndirectSubReg(unsigned IndirectIndex
) const {
62 return getSubRegFromChannel(IndirectIndex
);
65 #define GET_REGINFO_TARGET_DESC
66 #include "AMDGPUGenRegisterInfo.inc"