18589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka//===-- Mips16RegisterInfo.h - Mips16 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 Mips16 implementation of the TargetRegisterInfo class.
118589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka//
128589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka//===----------------------------------------------------------------------===//
138589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka
148589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka#ifndef MIPS16REGISTERINFO_H
158589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka#define MIPS16REGISTERINFO_H
168589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka
178589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka#include "MipsRegisterInfo.h"
188589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka
198589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanakanamespace llvm {
2091a35f03da446009cd1de4cdabaa1cdec7e74e0cAkira Hatanakaclass Mips16InstrInfo;
218589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka
228589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanakaclass Mips16RegisterInfo : public MipsRegisterInfo {
238589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanakapublic:
2441e632d9e1a55d36cb08b0551ad82a13d9137a5eBill Wendling  Mips16RegisterInfo(const MipsSubtarget &Subtarget);
258589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka
26dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  bool requiresRegisterScavenging(const MachineFunction &MF) const override;
271f23239c5bdbeb45a612238acd48bb497b3cce15Reed Kotler
28dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  bool requiresFrameIndexScavenging(const MachineFunction &MF) const override;
291f23239c5bdbeb45a612238acd48bb497b3cce15Reed Kotler
30dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  bool useFPForScavengingIndex(const MachineFunction &MF) const override;
311f23239c5bdbeb45a612238acd48bb497b3cce15Reed Kotler
321f23239c5bdbeb45a612238acd48bb497b3cce15Reed Kotler  bool saveScavengerRegister(MachineBasicBlock &MBB,
331f23239c5bdbeb45a612238acd48bb497b3cce15Reed Kotler                                     MachineBasicBlock::iterator I,
341f23239c5bdbeb45a612238acd48bb497b3cce15Reed Kotler                                     MachineBasicBlock::iterator &UseMI,
351f23239c5bdbeb45a612238acd48bb497b3cce15Reed Kotler                                     const TargetRegisterClass *RC,
36dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines                                     unsigned Reg) const override;
371f23239c5bdbeb45a612238acd48bb497b3cce15Reed Kotler
38dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  const TargetRegisterClass *intRegClass(unsigned Size) const override;
395114226c1896f250be8881adf67d55a7e54b50fcAkira Hatanaka
408589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanakaprivate:
41dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  void eliminateFI(MachineBasicBlock::iterator II, unsigned OpNo,
42dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines                   int FrameIndex, uint64_t StackSize,
43dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines                   int64_t SPOffset) const override;
448589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka};
458589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka
468589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka} // end namespace llvm
478589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka
488589010e3d1d5a902992a5039cffa9d4116982c5Akira Hatanaka#endif
49