LLVM API Documentation
00001 //===- SkeletonRegisterInfo.h - Skeleton Register Information Impl -*- C++ -*-==// 00002 // 00003 // The LLVM Compiler Infrastructure 00004 // 00005 // This file was developed by the LLVM research group and is distributed under 00006 // the University of Illinois Open Source License. See LICENSE.TXT for details. 00007 // 00008 //===----------------------------------------------------------------------===// 00009 // 00010 // This file contains the Skeleton implementation of the MRegisterInfo class. 00011 // 00012 //===----------------------------------------------------------------------===// 00013 00014 #ifndef SKELETON_REGISTERINFO_H 00015 #define SKELETON_REGISTERINFO_H 00016 00017 #include "SkeletonGenRegisterInfo.h.inc" 00018 00019 namespace llvm { 00020 class Type; 00021 00022 struct SkeletonRegisterInfo : public SkeletonGenRegisterInfo { 00023 SkeletonRegisterInfo(); 00024 const TargetRegisterClass* getRegClassForType(const Type* Ty) const; 00025 00026 void storeRegToStackSlot(MachineBasicBlock &MBB, 00027 MachineBasicBlock::iterator MBBI, 00028 unsigned SrcReg, int FrameIndex) const; 00029 00030 void loadRegFromStackSlot(MachineBasicBlock &MBB, 00031 MachineBasicBlock::iterator MBBI, 00032 unsigned DestReg, int FrameIndex) const; 00033 00034 void copyRegToReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI, 00035 unsigned DestReg, unsigned SrcReg, 00036 const TargetRegisterClass *RC) const; 00037 00038 void eliminateCallFramePseudoInstr(MachineFunction &MF, 00039 MachineBasicBlock &MBB, 00040 MachineBasicBlock::iterator I) const; 00041 00042 void eliminateFrameIndex(MachineBasicBlock::iterator II) const; 00043 00044 void processFunctionBeforeFrameFinalized(MachineFunction &MF) const; 00045 00046 void emitPrologue(MachineFunction &MF) const; 00047 void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const; 00048 }; 00049 } // end namespace llvm 00050 00051 #endif