llvm-6502/lib/Target/PTX/PTXRegisterInfo.h
Evan Cheng a347f85dbe Starting to refactor Target to separate out code that's needed to fully describe
target machine from those that are only needed by codegen. The goal is to
sink the essential target description into MC layer so we can start building
MC based tools without needing to link in the entire codegen.

First step is to refactor TargetRegisterInfo. This patch added a base class
MCRegisterInfo which TargetRegisterInfo is derived from. Changed TableGen to
separate register description from the rest of the stuff.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133782 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-24 01:44:41 +00:00

65 lines
2.0 KiB
C++

//===- PTXRegisterInfo.h - PTX Register Information Impl --------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file contains the PTX implementation of the MRegisterInfo class.
//
//===----------------------------------------------------------------------===//
#ifndef PTX_REGISTER_INFO_H
#define PTX_REGISTER_INFO_H
#include "llvm/Support/ErrorHandling.h"
#include "llvm/ADT/BitVector.h"
#include "PTXGenRegisterInfo.h.inc"
namespace llvm {
class PTXTargetMachine;
class MachineFunction;
struct PTXRegisterInfo : public PTXGenRegisterInfo {
PTXRegisterInfo(PTXTargetMachine &TM,
const TargetInstrInfo &TII);
virtual const unsigned
*getCalleeSavedRegs(const MachineFunction *MF = 0) const {
static const unsigned CalleeSavedRegs[] = { 0 };
return CalleeSavedRegs; // save nothing
}
virtual BitVector getReservedRegs(const MachineFunction &MF) const {
BitVector Reserved(getNumRegs());
return Reserved; // reserve no regs
}
virtual void eliminateFrameIndex(MachineBasicBlock::iterator II,
int SPAdj,
RegScavenger *RS = NULL) const;
virtual unsigned getFrameRegister(const MachineFunction &MF) const {
llvm_unreachable("PTX does not have a frame register");
return 0;
}
virtual unsigned getRARegister() const {
llvm_unreachable("PTX does not have a return address register");
return 0;
}
virtual int getDwarfRegNum(unsigned RegNum, bool isEH) const {
return PTXGenRegisterInfo::getDwarfRegNumFull(RegNum, 0);
}
virtual int getLLVMRegNum(unsigned RegNum, bool isEH) const {
return PTXGenRegisterInfo::getLLVMRegNumFull(RegNum, 0);
}
}; // struct PTXRegisterInfo
} // namespace llvm
#endif // PTX_REGISTER_INFO_H