1cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka//===-- Mips16FrameLowering.h - Mips16 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 1437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines#ifndef LLVM_LIB_TARGET_MIPS_MIPS16FRAMELOWERING_H 1537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines#define LLVM_LIB_TARGET_MIPS_MIPS16FRAMELOWERING_H 16cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 17cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka#include "MipsFrameLowering.h" 18cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 19cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanakanamespace llvm { 20cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanakaclass Mips16FrameLowering : public MipsFrameLowering { 21cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanakapublic: 22c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hines explicit Mips16FrameLowering(const MipsSubtarget &STI); 23cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 24cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka /// emitProlog/emitEpilog - These methods insert prolog and epilog code into 25cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka /// the function. 266948897e478cbd66626159776a8017b3c18579b9Pirama Arumuga Nainar void emitPrologue(MachineFunction &MF, MachineBasicBlock &MBB) const override; 27dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines void emitEpilogue(MachineFunction &MF, MachineBasicBlock &MBB) const override; 28cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 29cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka bool spillCalleeSavedRegisters(MachineBasicBlock &MBB, 30cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka MachineBasicBlock::iterator MI, 31cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka const std::vector<CalleeSavedInfo> &CSI, 32dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines const TargetRegisterInfo *TRI) const override; 33cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 340fdf3b029b35f495d7261fe78737e434edc84758Akira Hatanaka bool restoreCalleeSavedRegisters(MachineBasicBlock &MBB, 35dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines MachineBasicBlock::iterator MI, 36dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines const std::vector<CalleeSavedInfo> &CSI, 37dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines const TargetRegisterInfo *TRI) const override; 380fdf3b029b35f495d7261fe78737e434edc84758Akira Hatanaka 39dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines bool hasReservedCallFrame(const MachineFunction &MF) const override; 40cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 41cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar void determineCalleeSaves(MachineFunction &MF, BitVector &SavedRegs, 42cddc3e03e4ec99c0268c03a126195173e519ed58Pirama Arumuga Nainar RegScavenger *RS) const override; 43cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka}; 44cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 45cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka} // End llvm namespace 46cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka 47cdb3ba71ce550c5a41c84c3678225a39d6f0a414Akira Hatanaka#endif 48