LLVM 24.0.0git
llvm::HexagonRegisterInfo Class Reference

#include "Target/Hexagon/HexagonRegisterInfo.h"

Inheritance diagram for llvm::HexagonRegisterInfo:
[legend]

Public Member Functions

 HexagonRegisterInfo (unsigned HwMode)
const MCPhysReggetCalleeSavedRegs (const MachineFunction *MF) const override
 Code Generation virtual methods...
const uint32_tgetCallPreservedMask (const MachineFunction &MF, CallingConv::ID) const override
BitVector getReservedRegs (const MachineFunction &MF) const override
Register computeStackAlignBaseRegister (const MachineFunction &MF) const
 Compute the first available callee-saved register to use as the aligned-stack base register when this function needs dynamic stack realignment.
bool eliminateFrameIndex (MachineBasicBlock::iterator II, int SPAdj, unsigned FIOperandNum, RegScavenger *RS=nullptr) const override
bool requiresRegisterScavenging (const MachineFunction &MF) const override
 Returns true since we may need scavenging for a temporary register when generating hardware loop instructions.
bool requiresFrameIndexScavenging (const MachineFunction &MF) const override
 Returns true.
bool useFPForScavengingIndex (const MachineFunction &MF) const override
 Returns true if the frame pointer is valid.
bool shouldCoalesce (MachineInstr *MI, const TargetRegisterClass *SrcRC, unsigned SubReg, const TargetRegisterClass *DstRC, unsigned DstSubReg, const TargetRegisterClass *NewRC, LiveIntervals &LIS) const override
Register getFrameRegister (const MachineFunction &MF) const override
Register getFrameRegister () const
Register getStackRegister () const
unsigned getHexagonSubRegIndex (const TargetRegisterClass &RC, unsigned GenIdx) const
const MCPhysReggetCallerSavedRegs (const MachineFunction *MF, const TargetRegisterClass *RC) const
const TargetRegisterClassgetPointerRegClass (unsigned Kind=0) const override
bool isGlobalReg (MCPhysReg Reg) const
 Returns true if the given reserved physical register is live across function calls/returns.
bool isFakeReg (MCPhysReg Reg) const
 Returns true if the given reserved physical register Reg is live across function calls/returns.
bool isEHReturnCalleeSaveReg (Register Reg) const

Detailed Description

Definition at line 29 of file HexagonRegisterInfo.h.

Constructor & Destructor Documentation

◆ HexagonRegisterInfo()

HexagonRegisterInfo::HexagonRegisterInfo ( unsigned HwMode)

Definition at line 52 of file HexagonRegisterInfo.cpp.

Member Function Documentation

◆ computeStackAlignBaseRegister()

Register HexagonRegisterInfo::computeStackAlignBaseRegister ( const MachineFunction & MF) const

Compute the first available callee-saved register to use as the aligned-stack base register when this function needs dynamic stack realignment.

This does not update the machine function info.

Definition at line 171 of file HexagonRegisterInfo.cpp.

References computeStackAlignBaseRegister().

Referenced by computeStackAlignBaseRegister(), and getReservedRegs().

◆ eliminateFrameIndex()

◆ getCalleeSavedRegs()

const MCPhysReg * HexagonRegisterInfo::getCalleeSavedRegs ( const MachineFunction * MF) const
override

Code Generation virtual methods...

Definition at line 134 of file HexagonRegisterInfo.cpp.

References llvm::MachineFunction::getInfo().

Referenced by llvm::HexagonFrameLowering::determineCalleeSaves().

◆ getCallerSavedRegs()

◆ getCallPreservedMask()

const uint32_t * HexagonRegisterInfo::getCallPreservedMask ( const MachineFunction & MF,
CallingConv::ID  ) const
override

Definition at line 156 of file HexagonRegisterInfo.cpp.

Referenced by llvm::HexagonTargetLowering::LowerCall().

◆ getFrameRegister() [1/2]

Register HexagonRegisterInfo::getFrameRegister ( ) const

Definition at line 460 of file HexagonRegisterInfo.cpp.

Referenced by getFrameRegister().

◆ getFrameRegister() [2/2]

◆ getHexagonSubRegIndex()

◆ getPointerRegClass()

const TargetRegisterClass * HexagonRegisterInfo::getPointerRegClass ( unsigned Kind = 0) const
override

Definition at line 501 of file HexagonRegisterInfo.cpp.

◆ getReservedRegs()

BitVector HexagonRegisterInfo::getReservedRegs ( const MachineFunction & MF) const
override

Definition at line 162 of file HexagonRegisterInfo.cpp.

References computeStackAlignBaseRegister(), and llvm::Reserved.

◆ getStackRegister()

Register HexagonRegisterInfo::getStackRegister ( ) const

◆ isEHReturnCalleeSaveReg()

bool HexagonRegisterInfo::isEHReturnCalleeSaveReg ( Register Reg) const

Definition at line 76 of file HexagonRegisterInfo.cpp.

◆ isFakeReg()

bool HexagonRegisterInfo::isFakeReg ( MCPhysReg Reg) const

Returns true if the given reserved physical register Reg is live across function calls/returns.

This function should not be used for non-reserved registers, instead register liveness information should be checked

Definition at line 66 of file HexagonRegisterInfo.cpp.

◆ isGlobalReg()

bool HexagonRegisterInfo::isGlobalReg ( MCPhysReg Reg) const

Returns true if the given reserved physical register is live across function calls/returns.

Definition at line 56 of file HexagonRegisterInfo.cpp.

◆ requiresFrameIndexScavenging()

bool llvm::HexagonRegisterInfo::requiresFrameIndexScavenging ( const MachineFunction & MF) const
inlineoverride

Returns true.

Spill code for predicate registers might need an extra register.

Definition at line 57 of file HexagonRegisterInfo.h.

◆ requiresRegisterScavenging()

bool llvm::HexagonRegisterInfo::requiresRegisterScavenging ( const MachineFunction & MF) const
inlineoverride

Returns true since we may need scavenging for a temporary register when generating hardware loop instructions.

Definition at line 51 of file HexagonRegisterInfo.h.

◆ shouldCoalesce()

◆ useFPForScavengingIndex()

bool HexagonRegisterInfo::useFPForScavengingIndex ( const MachineFunction & MF) const
override

Returns true if the frame pointer is valid.

Definition at line 495 of file HexagonRegisterInfo.cpp.

References llvm::MachineFunction::getSubtarget().


The documentation for this class was generated from the following files: