1cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka//===-- MipsSEFrameLowering.h - Mips32/64 frame lowering --------*- C++ -*-===// 2cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka// 3cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka// The LLVM Compiler Infrastructure 4cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka// 5cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka// This file is distributed under the University of Illinois Open Source 6cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka// License. See LICENSE.TXT for details. 7cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka// 8cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka//===----------------------------------------------------------------------===// 9cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka// 10cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka// 11cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka// 12cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka//===----------------------------------------------------------------------===// 13cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 14cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka#ifndef MIPSSE_FRAMEINFO_H 15cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka#define MIPSSE_FRAMEINFO_H 16cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 17cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka#include "MipsFrameLowering.h" 18cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 19cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanakanamespace llvm { 20cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 21cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanakaclass MipsSEFrameLowering : public MipsFrameLowering { 22cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanakapublic: 23cd81d94322a39503e4a3e87b6ee03d4fcb3465fbStephen Hines explicit MipsSEFrameLowering(const MipsSubtarget &STI); 24cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 25cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka /// emitProlog/emitEpilog - These methods insert prolog and epilog code into 26cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka /// the function. 27dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines void emitPrologue(MachineFunction &MF) const override; 28dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const override; 29cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 30700ed80d3da5e98e05ceb90e9bfb66058581a6dbEli Bendersky void eliminateCallFramePseudoInstr(MachineFunction &MF, 31dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines MachineBasicBlock &MBB, 32dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines MachineBasicBlock::iterator I) const override; 33700ed80d3da5e98e05ceb90e9bfb66058581a6dbEli Bendersky 34cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka bool spillCalleeSavedRegisters(MachineBasicBlock &MBB, 35cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka MachineBasicBlock::iterator MI, 36cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka const std::vector<CalleeSavedInfo> &CSI, 37dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines const TargetRegisterInfo *TRI) const override; 38cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 39dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines bool hasReservedCallFrame(const MachineFunction &MF) const override; 40cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 41cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka void processFunctionBeforeCalleeSavedScan(MachineFunction &MF, 42dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines RegScavenger *RS) const override; 43544cc21cf4807116251a699d8b1d3d4bace21597Akira Hatanaka unsigned ehDataReg(unsigned I) const; 44cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka}; 45cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 46cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka} // End llvm namespace 47cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 48cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka#endif 49