Switch over to TableGen generated register file description
[oota-llvm.git] / lib / Target / X86 / X86RegisterInfo.h
1 //===- X86RegisterInfo.h - X86 Register Information Impl --------*- C++ -*-===//
2 //
3 // This file contains the X86 implementation of the MRegisterInfo class.
4 //
5 //===----------------------------------------------------------------------===//
6
7 #ifndef X86REGISTERINFO_H
8 #define X86REGISTERINFO_H
9
10 #include "llvm/Target/MRegisterInfo.h"
11
12 class Type;
13
14 #include "X86GenRegisterInfo.h.inc"
15
16 struct X86RegisterInfo : public X86GenRegisterInfo {
17   X86RegisterInfo();
18   const TargetRegisterClass* getRegClassForType(const Type* Ty) const;
19
20   /// Code Generation virtual methods...
21   void storeRegToStackSlot(MachineBasicBlock &MBB,
22                            MachineBasicBlock::iterator &MBBI,
23                            unsigned SrcReg, int FrameIndex,
24                            const TargetRegisterClass *RC) const;
25
26   void loadRegFromStackSlot(MachineBasicBlock &MBB,
27                             MachineBasicBlock::iterator &MBBI,
28                             unsigned DestReg, int FrameIndex,
29                             const TargetRegisterClass *RC) const;
30   
31   void copyRegToReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator &MBBI,
32                    unsigned DestReg, unsigned SrcReg,
33                    const TargetRegisterClass *RC) const;
34
35   void eliminateCallFramePseudoInstr(MachineFunction &MF,
36                                      MachineBasicBlock &MBB,
37                                      MachineBasicBlock::iterator &I) const;
38
39   void eliminateFrameIndex(MachineFunction &MF,
40                            MachineBasicBlock::iterator &II) const;
41
42   void processFunctionBeforeFrameFinalized(MachineFunction &MF) const;
43
44   void emitPrologue(MachineFunction &MF) const;
45   void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const;
46 };
47
48 #endif