18f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle//===-- Mips16RegisterInfo.h - Mips16 Register Information ------*- C++ -*-===//
28f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle//
38f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle//                     The LLVM Compiler Infrastructure
48f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle//
58f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle// This file is distributed under the University of Illinois Open Source
68f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle// License. See LICENSE.TXT for details.
78f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle//
88f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle//===----------------------------------------------------------------------===//
98f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle//
108f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle// This file contains the Mips16 implementation of the TargetRegisterInfo class.
118f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle//
128f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle//===----------------------------------------------------------------------===//
138e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath
148e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath#ifndef LLVM_LIB_TARGET_MIPS_MIPS16REGISTERINFO_H
158e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath#define LLVM_LIB_TARGET_MIPS_MIPS16REGISTERINFO_H
168f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
178e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath#include "MipsRegisterInfo.h"
188e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath
198e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamathnamespace llvm {
208e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamathclass Mips16InstrInfo;
218e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath
228e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamathclass Mips16RegisterInfo : public MipsRegisterInfo {
238e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamathpublic:
248e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath  Mips16RegisterInfo();
258e9a0e92906742b17eb08d7fb83cca91965f9b8eNarayan Kamath
268f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle  bool requiresRegisterScavenging(const MachineFunction &MF) const override;
278f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
288f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle  bool requiresFrameIndexScavenging(const MachineFunction &MF) const override;
298f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
308f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle  bool useFPForScavengingIndex(const MachineFunction &MF) const override;
318f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
328f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle  bool saveScavengerRegister(MachineBasicBlock &MBB,
338f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle                                     MachineBasicBlock::iterator I,
348f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle                                     MachineBasicBlock::iterator &UseMI,
358f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle                                     const TargetRegisterClass *RC,
368f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle                                     unsigned Reg) const override;
378f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
388f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle  const TargetRegisterClass *intRegClass(unsigned Size) const override;
398f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
408f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravleprivate:
418f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle  void eliminateFI(MachineBasicBlock::iterator II, unsigned OpNo,
428f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle                   int FrameIndex, uint64_t StackSize,
438f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle                   int64_t SPOffset) const override;
448f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle};
458f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
468f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle} // end namespace llvm
478f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle
488f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle#endif
498f0d92bba199d906c70a5e40d7f3516c1a424117Calin Juravle