Rewrite mwait and monitor support and custom lower arguments.
[oota-llvm.git] / lib / Target / X86 / X86FrameInfo.h
index 433d965605cf80379ed7288a484619500874ecb8..fbbde923b9798d4b9a6abb51feccf190c020a2d8 100644 (file)
 
 namespace llvm {
   class MCSymbol;
+  class X86TargetMachine;
 
 class X86FrameInfo : public TargetFrameInfo {
-protected:
+  const X86TargetMachine &TM;
   const X86Subtarget &STI;
-
 public:
-  explicit X86FrameInfo(const X86Subtarget &sti)
+  explicit X86FrameInfo(const X86TargetMachine &tm, const X86Subtarget &sti)
     : TargetFrameInfo(StackGrowsDown,
                       sti.getStackAlignment(),
                       (sti.isTargetWin64() ? -40 : (sti.is64Bit() ? -8 : -4))),
-      STI(sti) {
+      TM(tm), STI(sti) {
   }
 
   void emitCalleeSavedFrameMoves(MachineFunction &MF, MCSymbol *Label,
@@ -40,9 +40,24 @@ public:
   void emitPrologue(MachineFunction &MF) const;
   void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const;
 
+  void processFunctionBeforeCalleeSavedScan(MachineFunction &MF,
+                                            RegScavenger *RS = NULL) const;
+
+  bool spillCalleeSavedRegisters(MachineBasicBlock &MBB,
+                                 MachineBasicBlock::iterator MI,
+                                 const std::vector<CalleeSavedInfo> &CSI,
+                                 const TargetRegisterInfo *TRI) const;
+
+  bool restoreCalleeSavedRegisters(MachineBasicBlock &MBB,
+                                   MachineBasicBlock::iterator MI,
+                                   const std::vector<CalleeSavedInfo> &CSI,
+                                   const TargetRegisterInfo *TRI) const;
+
   bool hasFP(const MachineFunction &MF) const;
   bool hasReservedCallFrame(const MachineFunction &MF) const;
 
+  void getInitialFrameState(std::vector<MachineMove> &Moves) const;
+  int getFrameIndexOffset(const MachineFunction &MF, int FI) const;
 };
 
 } // End llvm namespace