LLVM  9.0.0svn
MipsRegisterInfo.h
Go to the documentation of this file.
1 //===- MipsRegisterInfo.h - Mips Register Information Impl ------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file contains the Mips implementation of the TargetRegisterInfo class.
10 //
11 //===----------------------------------------------------------------------===//
12 
13 #ifndef LLVM_LIB_TARGET_MIPS_MIPSREGISTERINFO_H
14 #define LLVM_LIB_TARGET_MIPS_MIPSREGISTERINFO_H
15 
16 #include "Mips.h"
18 #include <cstdint>
19 
20 #define GET_REGINFO_HEADER
21 #include "MipsGenRegisterInfo.inc"
22 
23 namespace llvm {
24 
25 class TargetRegisterClass;
26 
28 public:
29  enum class MipsPtrClass {
30  /// The default register class for integer values.
31  Default = 0,
32  /// The subset of registers permitted in certain microMIPS instructions
33  /// such as lw16.
34  GPR16MM = 1,
35  /// The stack pointer only.
36  StackPointer = 2,
37  /// The global pointer only.
38  GlobalPointer = 3,
39  };
40 
42 
43  /// Get PIC indirect call register
44  static unsigned getPICCallReg();
45 
46  /// Code Generation virtual methods...
48  unsigned Kind) const override;
49 
50  unsigned getRegPressureLimit(const TargetRegisterClass *RC,
51  MachineFunction &MF) const override;
52  const MCPhysReg *getCalleeSavedRegs(const MachineFunction *MF) const override;
54  CallingConv::ID) const override;
55  static const uint32_t *getMips16RetHelperMask();
56 
57  BitVector getReservedRegs(const MachineFunction &MF) const override;
58 
59  bool requiresRegisterScavenging(const MachineFunction &MF) const override;
60 
61  bool trackLivenessAfterRegAlloc(const MachineFunction &MF) const override;
62 
63  /// Stack Frame Processing Methods
65  int SPAdj, unsigned FIOperandNum,
66  RegScavenger *RS = nullptr) const override;
67 
68  // Stack realignment queries.
69  bool canRealignStack(const MachineFunction &MF) const override;
70 
71  /// Debug information queries.
72  Register getFrameRegister(const MachineFunction &MF) const override;
73 
74  /// Return GPR register class.
75  virtual const TargetRegisterClass *intRegClass(unsigned Size) const = 0;
76 
77 private:
78  virtual void eliminateFI(MachineBasicBlock::iterator II, unsigned OpNo,
79  int FrameIndex, uint64_t StackSize,
80  int64_t SPOffset) const = 0;
81 };
82 
83 } // end namespace llvm
84 
85 #endif // LLVM_LIB_TARGET_MIPS_MIPSREGISTERINFO_H
This class represents lattice values for constants.
Definition: AllocatorList.h:23
The subset of registers permitted in certain microMIPS instructions such as lw16. ...
unsigned getRegPressureLimit(const TargetRegisterClass *RC, MachineFunction &MF) const override
Register getFrameRegister(const MachineFunction &MF) const override
Debug information queries.
virtual const TargetRegisterClass * intRegClass(unsigned Size) const =0
Return GPR register class.
BitVector getReservedRegs(const MachineFunction &MF) const override
uint16_t MCPhysReg
An unsigned integer type large enough to represent all physical registers, but not necessarily virtua...
const TargetRegisterClass * getPointerRegClass(const MachineFunction &MF, unsigned Kind) const override
Code Generation virtual methods...
The default register class for integer values.
static unsigned getPICCallReg()
Get PIC indirect call register.
const MCPhysReg * getCalleeSavedRegs(const MachineFunction *MF) const override
Mips Callee Saved Registers.
static const uint32_t * getMips16RetHelperMask()
bool trackLivenessAfterRegAlloc(const MachineFunction &MF) const override
uint32_t Size
Definition: Profile.cpp:46
bool requiresRegisterScavenging(const MachineFunction &MF) const override
void eliminateFrameIndex(MachineBasicBlock::iterator II, int SPAdj, unsigned FIOperandNum, RegScavenger *RS=nullptr) const override
Stack Frame Processing Methods.
bool canRealignStack(const MachineFunction &MF) const override
const uint32_t * getCallPreservedMask(const MachineFunction &MF, CallingConv::ID) const override
Wrapper class representing virtual and physical registers.
Definition: Register.h:18