X86RegisterInfo.h revision 2adb3959f629bdacab0e47b29e52139595523236
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
12class Type;
13
14struct X86RegisterInfo : public MRegisterInfo {
15  X86RegisterInfo();
16
17  MRegisterInfo::const_iterator const_regclass_begin() const;
18  MRegisterInfo::const_iterator const_regclass_end() const;
19
20  MachineBasicBlock::iterator
21  storeReg2RegOffset(MachineBasicBlock *MBB,
22                     MachineBasicBlock::iterator MBBI,
23                     unsigned DestReg, unsigned SrcReg,
24                     unsigned ImmOffset, unsigned dataSize) const;
25
26  MachineBasicBlock::iterator
27  loadRegOffset2Reg(MachineBasicBlock *MBB,
28                    MachineBasicBlock::iterator MBBI,
29                    unsigned DestReg, unsigned SrcReg,
30                    unsigned ImmOffset, unsigned dataSize) const;
31
32  unsigned getFramePointer() const;
33  unsigned getStackPointer() const;
34
35  const unsigned* getCalleeSaveRegs() const;
36  const unsigned* getCallerSaveRegs() const;
37
38  MachineBasicBlock::iterator emitPrologue(MachineBasicBlock *MBB,
39                                           MachineBasicBlock::iterator MBBI,
40                                           unsigned numBytes) const;
41
42  MachineBasicBlock::iterator emitEpilogue(MachineBasicBlock *MBB,
43                                           MachineBasicBlock::iterator MBBI,
44                                           unsigned numBytes) const;
45
46  /// Returns register class appropriate for input SSA register
47  ///
48  const TargetRegisterClass *getClassForReg(unsigned Reg) const;
49
50  const TargetRegisterClass* getRegClassForType(const Type* Ty) const;
51
52  unsigned getNumRegClasses() const;
53
54};
55
56#endif
57