~pali/+junk/llvm-toolchain-3.7

« back to all changes in this revision

Viewing changes to lib/Target/NVPTX/NVPTXRegisterInfo.h

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2015-07-15 17:51:08 UTC
  • Revision ID: package-import@ubuntu.com-20150715175108-l8mynwovkx4zx697
Tags: upstream-3.7~+rc2
ImportĀ upstreamĀ versionĀ 3.7~+rc2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//===- NVPTXRegisterInfo.h - NVPTX Register Information Impl ----*- C++ -*-===//
 
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 NVPTX implementation of the TargetRegisterInfo class.
 
11
//
 
12
//===----------------------------------------------------------------------===//
 
13
 
 
14
#ifndef LLVM_LIB_TARGET_NVPTX_NVPTXREGISTERINFO_H
 
15
#define LLVM_LIB_TARGET_NVPTX_NVPTXREGISTERINFO_H
 
16
 
 
17
#include "ManagedStringPool.h"
 
18
#include "llvm/Target/TargetRegisterInfo.h"
 
19
#include <sstream>
 
20
 
 
21
#define GET_REGINFO_HEADER
 
22
#include "NVPTXGenRegisterInfo.inc"
 
23
 
 
24
namespace llvm {
 
25
class NVPTXRegisterInfo : public NVPTXGenRegisterInfo {
 
26
private:
 
27
  // Hold Strings that can be free'd all together with NVPTXRegisterInfo
 
28
  ManagedStringPool ManagedStrPool;
 
29
 
 
30
public:
 
31
  NVPTXRegisterInfo();
 
32
 
 
33
  //------------------------------------------------------
 
34
  // Pure virtual functions from TargetRegisterInfo
 
35
  //------------------------------------------------------
 
36
 
 
37
  // NVPTX callee saved registers
 
38
  const MCPhysReg *getCalleeSavedRegs(const MachineFunction *MF) const override;
 
39
 
 
40
  BitVector getReservedRegs(const MachineFunction &MF) const override;
 
41
 
 
42
  void eliminateFrameIndex(MachineBasicBlock::iterator MI, int SPAdj,
 
43
                           unsigned FIOperandNum,
 
44
                           RegScavenger *RS = nullptr) const override;
 
45
 
 
46
  unsigned getFrameRegister(const MachineFunction &MF) const override;
 
47
 
 
48
  ManagedStringPool *getStrPool() const {
 
49
    return const_cast<ManagedStringPool *>(&ManagedStrPool);
 
50
  }
 
51
 
 
52
  const char *getName(unsigned RegNo) const {
 
53
    std::stringstream O;
 
54
    O << "reg" << RegNo;
 
55
    return getStrPool()->getManagedString(O.str().c_str())->c_str();
 
56
  }
 
57
 
 
58
};
 
59
 
 
60
std::string getNVPTXRegClassName(const TargetRegisterClass *RC);
 
61
std::string getNVPTXRegClassStr(const TargetRegisterClass *RC);
 
62
 
 
63
} // end namespace llvm
 
64
 
 
65
#endif