1. Use SubtargetFeatures in llc/lli.
[oota-llvm.git] / lib / Target / Skeleton / SkeletonRegisterInfo.h
1 //===- SkeletonRegisterInfo.h - Skeleton Register Information Impl -*- C++ -*-==//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file was developed by the LLVM research group and is distributed under
6 // the University of Illinois Open Source License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file contains the Skeleton implementation of the MRegisterInfo class.
11 //
12 //===----------------------------------------------------------------------===//
13
14 #ifndef SKELETON_REGISTERINFO_H
15 #define SKELETON_REGISTERINFO_H
16
17 #include "SkeletonGenRegisterInfo.h.inc"
18
19 namespace llvm {
20   class Type;
21
22   struct SkeletonRegisterInfo : public SkeletonGenRegisterInfo {
23     SkeletonRegisterInfo();
24
25     void storeRegToStackSlot(MachineBasicBlock &MBB,
26                              MachineBasicBlock::iterator MBBI,
27                              unsigned SrcReg, int FrameIndex) const;
28
29     void loadRegFromStackSlot(MachineBasicBlock &MBB,
30                               MachineBasicBlock::iterator MBBI,
31                               unsigned DestReg, int FrameIndex) const;
32
33     void copyRegToReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI,
34                       unsigned DestReg, unsigned SrcReg,
35                       const TargetRegisterClass *RC) const;
36
37     void eliminateCallFramePseudoInstr(MachineFunction &MF,
38                                        MachineBasicBlock &MBB,
39                                        MachineBasicBlock::iterator I) const;
40
41     void eliminateFrameIndex(MachineBasicBlock::iterator II) const;
42
43     void processFunctionBeforeFrameFinalized(MachineFunction &MF) const;
44
45     void emitPrologue(MachineFunction &MF) const;
46     void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const;
47   };
48 } // end namespace llvm
49
50 #endif