LLVM  10.0.0svn
NVPTXRegisterInfo.h
Go to the documentation of this file.
1 //===- NVPTXRegisterInfo.h - NVPTX Register Information Impl ----*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file contains the NVPTX implementation of the TargetRegisterInfo class.
10 //
11 //===----------------------------------------------------------------------===//
12 
13 #ifndef LLVM_LIB_TARGET_NVPTX_NVPTXREGISTERINFO_H
14 #define LLVM_LIB_TARGET_NVPTX_NVPTXREGISTERINFO_H
15 
16 #include "ManagedStringPool.h"
18 #include <sstream>
19 
20 #define GET_REGINFO_HEADER
21 #include "NVPTXGenRegisterInfo.inc"
22 
23 namespace llvm {
25 private:
26  // Hold Strings that can be free'd all together with NVPTXRegisterInfo
27  ManagedStringPool ManagedStrPool;
28 
29 public:
31 
32  //------------------------------------------------------
33  // Pure virtual functions from TargetRegisterInfo
34  //------------------------------------------------------
35 
36  // NVPTX callee saved registers
37  const MCPhysReg *getCalleeSavedRegs(const MachineFunction *MF) const override;
38 
39  BitVector getReservedRegs(const MachineFunction &MF) const override;
40 
42  unsigned FIOperandNum,
43  RegScavenger *RS = nullptr) const override;
44 
45  Register getFrameRegister(const MachineFunction &MF) const override;
46 
48  return const_cast<ManagedStringPool *>(&ManagedStrPool);
49  }
50 
51  const char *getName(unsigned RegNo) const {
52  std::stringstream O;
53  O << "reg" << RegNo;
54  return getStrPool()->getManagedString(O.str().c_str())->c_str();
55  }
56 
57 };
58 
59 std::string getNVPTXRegClassName(const TargetRegisterClass *RC);
60 std::string getNVPTXRegClassStr(const TargetRegisterClass *RC);
61 
62 } // end namespace llvm
63 
64 #endif
This class represents lattice values for constants.
Definition: AllocatorList.h:23
const MCPhysReg * getCalleeSavedRegs(const MachineFunction *MF) const override
NVPTX Callee Saved Registers.
ManagedStringPool - The strings allocated from a managed string pool are owned by the string pool and...
void eliminateFrameIndex(MachineBasicBlock::iterator MI, int SPAdj, unsigned FIOperandNum, RegScavenger *RS=nullptr) const override
Register getFrameRegister(const MachineFunction &MF) const override
uint16_t MCPhysReg
An unsigned integer type large enough to represent all physical registers, but not necessarily virtua...
Definition: MCRegister.h:19
BitVector getReservedRegs(const MachineFunction &MF) const override
SmallVectorImpl< T >::const_pointer c_str(SmallVectorImpl< T > &str)
std::string * getManagedString(const char *S)
const char * getName(unsigned RegNo) const
std::string getNVPTXRegClassStr(TargetRegisterClass const *RC)
std::string getNVPTXRegClassName(TargetRegisterClass const *RC)
IRTranslator LLVM IR MI
ManagedStringPool * getStrPool() const
Wrapper class representing virtual and physical registers.
Definition: Register.h:19