MipsSEFrameLowering.h revision cdb3ba71ce550c5a41c84c3678225a39d6f0a414
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: 23cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka explicit MipsSEFrameLowering(const MipsSubtarget &STI) 24cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka : MipsFrameLowering(STI) {} 25cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 26cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka /// emitProlog/emitEpilog - These methods insert prolog and epilog code into 27cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka /// the function. 28cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka void emitPrologue(MachineFunction &MF) const; 29cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const; 30cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 31cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka bool spillCalleeSavedRegisters(MachineBasicBlock &MBB, 32cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka MachineBasicBlock::iterator MI, 33cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka const std::vector<CalleeSavedInfo> &CSI, 34cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka const TargetRegisterInfo *TRI) const; 35cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 36cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka bool hasReservedCallFrame(const MachineFunction &MF) const; 37cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 38cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka void processFunctionBeforeCalleeSavedScan(MachineFunction &MF, 39cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka RegScavenger *RS) const; 40cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka}; 41cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 42cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka} // End llvm namespace 43cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 44cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka#endif 45