1
//===- NVPTXRegisterInfo.h - NVPTX Register Information Impl ----*- C++ -*-===//
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
//===----------------------------------------------------------------------===//
10
// This file contains the NVPTX implementation of the TargetRegisterInfo class.
12
//===----------------------------------------------------------------------===//
14
#ifndef LLVM_LIB_TARGET_NVPTX_NVPTXREGISTERINFO_H
15
#define LLVM_LIB_TARGET_NVPTX_NVPTXREGISTERINFO_H
17
#include "ManagedStringPool.h"
18
#include "llvm/Target/TargetRegisterInfo.h"
21
#define GET_REGINFO_HEADER
22
#include "NVPTXGenRegisterInfo.inc"
25
class NVPTXRegisterInfo : public NVPTXGenRegisterInfo {
27
// Hold Strings that can be free'd all together with NVPTXRegisterInfo
28
ManagedStringPool ManagedStrPool;
33
//------------------------------------------------------
34
// Pure virtual functions from TargetRegisterInfo
35
//------------------------------------------------------
37
// NVPTX callee saved registers
38
const MCPhysReg *getCalleeSavedRegs(const MachineFunction *MF) const override;
40
BitVector getReservedRegs(const MachineFunction &MF) const override;
42
void eliminateFrameIndex(MachineBasicBlock::iterator MI, int SPAdj,
43
unsigned FIOperandNum,
44
RegScavenger *RS = nullptr) const override;
46
unsigned getFrameRegister(const MachineFunction &MF) const override;
48
ManagedStringPool *getStrPool() const {
49
return const_cast<ManagedStringPool *>(&ManagedStrPool);
52
const char *getName(unsigned RegNo) const {
55
return getStrPool()->getManagedString(O.str().c_str())->c_str();
60
std::string getNVPTXRegClassName(const TargetRegisterClass *RC);
61
std::string getNVPTXRegClassStr(const TargetRegisterClass *RC);
63
} // end namespace llvm