LLVM API Documentation

Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

SkeletonRegisterInfo.h

Go to the documentation of this file.
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