LLVM API Documentation
00001 //===- AlphaRegisterInfo.h - Alpha Register Information Impl ----*- C++ -*-===// 00002 // 00003 // The LLVM Compiler Infrastructure 00004 // 00005 // This file is distributed under the University of Illinois Open Source 00006 // License. See LICENSE.TXT for details. 00007 // 00008 //===----------------------------------------------------------------------===// 00009 // 00010 // This file contains the Alpha implementation of the TargetRegisterInfo class. 00011 // 00012 //===----------------------------------------------------------------------===// 00013 00014 #ifndef ALPHAREGISTERINFO_H 00015 #define ALPHAREGISTERINFO_H 00016 00017 #include "llvm/Target/TargetRegisterInfo.h" 00018 #include "AlphaGenRegisterInfo.h.inc" 00019 00020 namespace llvm { 00021 00022 class TargetInstrInfo; 00023 class Type; 00024 00025 struct AlphaRegisterInfo : public AlphaGenRegisterInfo { 00026 const TargetInstrInfo &TII; 00027 00028 AlphaRegisterInfo(const TargetInstrInfo &tii); 00029 00030 /// Code Generation virtual methods... 00031 const unsigned *getCalleeSavedRegs(const MachineFunction *MF = 0) const; 00032 00033 const TargetRegisterClass* const* getCalleeSavedRegClasses( 00034 const MachineFunction *MF = 0) const; 00035 00036 BitVector getReservedRegs(const MachineFunction &MF) const; 00037 00038 bool hasFP(const MachineFunction &MF) const; 00039 00040 void eliminateCallFramePseudoInstr(MachineFunction &MF, 00041 MachineBasicBlock &MBB, 00042 MachineBasicBlock::iterator I) const; 00043 00044 void eliminateFrameIndex(MachineBasicBlock::iterator II, 00045 int SPAdj, RegScavenger *RS = NULL) const; 00046 00047 //void processFunctionBeforeFrameFinalized(MachineFunction &MF) const; 00048 00049 void emitPrologue(MachineFunction &MF) const; 00050 void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const; 00051 00052 // Debug information queries. 00053 unsigned getRARegister() const; 00054 unsigned getFrameRegister(MachineFunction &MF) const; 00055 00056 // Exception handling queries. 00057 unsigned getEHExceptionRegister() const; 00058 unsigned getEHHandlerRegister() const; 00059 00060 int getDwarfRegNum(unsigned RegNum, bool isEH) const; 00061 00062 static std::string getPrettyName(unsigned reg); 00063 }; 00064 00065 } // end namespace llvm 00066 00067 #endif