18589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka//===-- MipsSERegisterInfo.h - Mips32/64 Register Information ---*- C++ -*-===//
28589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka//
38589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka//                     The LLVM Compiler Infrastructure
48589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka//
58589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka// This file is distributed under the University of Illinois Open Source
68589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka// License. See LICENSE.TXT for details.
78589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka//
88589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka//===----------------------------------------------------------------------===//
98589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka//
108589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka// This file contains the Mips32/64 implementation of the TargetRegisterInfo
118589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka// class.
128589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka//
138589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka//===----------------------------------------------------------------------===//
148589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka
158589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka#ifndef MIPSSEREGISTERINFO_H
168589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka#define MIPSSEREGISTERINFO_H
178589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka
188589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka#include "MipsRegisterInfo.h"
198589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka
208589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanakanamespace llvm {
2191a35f03da446009cd1de4cdabaa1cdec7e74e0cAkira Hatanakaclass MipsSEInstrInfo;
228589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka
238589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanakaclass MipsSERegisterInfo : public MipsRegisterInfo {
2491a35f03da446009cd1de4cdabaa1cdec7e74e0cAkira Hatanaka  const MipsSEInstrInfo &TII;
2591a35f03da446009cd1de4cdabaa1cdec7e74e0cAkira Hatanaka
268589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanakapublic:
278589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka  MipsSERegisterInfo(const MipsSubtarget &Subtarget,
2891a35f03da446009cd1de4cdabaa1cdec7e74e0cAkira Hatanaka                     const MipsSEInstrInfo &TII);
298589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka
3011a45c214c26bdc49ef58c0eb214df5200867ceeAkira Hatanaka  bool requiresRegisterScavenging(const MachineFunction &MF) const;
3111a45c214c26bdc49ef58c0eb214df5200867ceeAkira Hatanaka
3211a45c214c26bdc49ef58c0eb214df5200867ceeAkira Hatanaka  bool requiresFrameIndexScavenging(const MachineFunction &MF) const;
3311a45c214c26bdc49ef58c0eb214df5200867ceeAkira Hatanaka
348589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanakaprivate:
358589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka  virtual void eliminateFI(MachineBasicBlock::iterator II, unsigned OpNo,
368589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka                           int FrameIndex, uint64_t StackSize,
378589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka                           int64_t SPOffset) const;
388589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka};
398589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka
408589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka} // end namespace llvm
418589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka
428589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka#endif
43