LLVM API Documentation
00001 //===- IA64RegisterInfo.h - IA64 Register Information Impl ------*- C++ -*-===// 00002 // 00003 // The LLVM Compiler Infrastructure 00004 // 00005 // This file was developed by Duraid Madina and is distributed under the 00006 // University of Illinois Open Source License. See LICENSE.TXT for details. 00007 // 00008 //===----------------------------------------------------------------------===// 00009 // 00010 // This file contains the IA64 implementation of the MRegisterInfo class. 00011 // 00012 //===----------------------------------------------------------------------===// 00013 00014 #ifndef IA64REGISTERINFO_H 00015 #define IA64REGISTERINFO_H 00016 00017 #include "llvm/Target/MRegisterInfo.h" 00018 #include "IA64GenRegisterInfo.h.inc" 00019 00020 namespace llvm { class llvm::Type; } 00021 00022 namespace llvm { 00023 00024 struct IA64RegisterInfo : public IA64GenRegisterInfo { 00025 IA64RegisterInfo(); 00026 00027 /// Code Generation virtual methods... 00028 void storeRegToStackSlot(MachineBasicBlock &MBB, 00029 MachineBasicBlock::iterator MI, 00030 unsigned SrcReg, int FrameIndex, 00031 const TargetRegisterClass *RC) const; 00032 00033 void loadRegFromStackSlot(MachineBasicBlock &MBB, 00034 MachineBasicBlock::iterator MI, 00035 unsigned DestReg, int FrameIndex, 00036 const TargetRegisterClass *RC) const; 00037 00038 void copyRegToReg(MachineBasicBlock &MBB, 00039 MachineBasicBlock::iterator MI, 00040 unsigned DestReg, unsigned SrcReg, 00041 const TargetRegisterClass *RC) const; 00042 00043 const unsigned *getCalleeSaveRegs() const; 00044 00045 const TargetRegisterClass* const* getCalleeSaveRegClasses() const; 00046 00047 void eliminateCallFramePseudoInstr(MachineFunction &MF, 00048 MachineBasicBlock &MBB, 00049 MachineBasicBlock::iterator MI) const; 00050 00051 void eliminateFrameIndex(MachineBasicBlock::iterator MI) const; 00052 00053 void emitPrologue(MachineFunction &MF) const; 00054 void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const; 00055 00056 // Debug information queries. 00057 unsigned getRARegister() const; 00058 unsigned getFrameRegister(MachineFunction &MF) const; 00059 }; 00060 00061 } // End llvm namespace 00062 00063 #endif 00064