LLVM API Documentation

Mips16RegisterInfo.h
Go to the documentation of this file.
00001 //===-- Mips16RegisterInfo.h - Mips16 Register Information ------*- C++ -*-===//
00002 //
00003 //                     The LLVM Compiler Infrastructure
00004 //
00005 // This file is distributed under the University of Illinois Open Source
00006 // License. See LICENSE.TXT for details.
00007 //
00008 //===----------------------------------------------------------------------===//
00009 //
00010 // This file contains the Mips16 implementation of the TargetRegisterInfo class.
00011 //
00012 //===----------------------------------------------------------------------===//
00013 
00014 #ifndef LLVM_LIB_TARGET_MIPS_MIPS16REGISTERINFO_H
00015 #define LLVM_LIB_TARGET_MIPS_MIPS16REGISTERINFO_H
00016 
00017 #include "MipsRegisterInfo.h"
00018 
00019 namespace llvm {
00020 class Mips16InstrInfo;
00021 
00022 class Mips16RegisterInfo : public MipsRegisterInfo {
00023 public:
00024   Mips16RegisterInfo(const MipsSubtarget &Subtarget);
00025 
00026   bool requiresRegisterScavenging(const MachineFunction &MF) const override;
00027 
00028   bool requiresFrameIndexScavenging(const MachineFunction &MF) const override;
00029 
00030   bool useFPForScavengingIndex(const MachineFunction &MF) const override;
00031 
00032   bool saveScavengerRegister(MachineBasicBlock &MBB,
00033                                      MachineBasicBlock::iterator I,
00034                                      MachineBasicBlock::iterator &UseMI,
00035                                      const TargetRegisterClass *RC,
00036                                      unsigned Reg) const override;
00037 
00038   const TargetRegisterClass *intRegClass(unsigned Size) const override;
00039 
00040 private:
00041   void eliminateFI(MachineBasicBlock::iterator II, unsigned OpNo,
00042                    int FrameIndex, uint64_t StackSize,
00043                    int64_t SPOffset) const override;
00044 };
00045 
00046 } // end namespace llvm
00047 
00048 #endif