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 MCPhysReg * getCalleeSavedRegs (const MachineFunction *MF) const override
 Code Generation virtual methods...
const uint32_t * getCallPreservedMask (const MachineFunction &MF, CallingConv::ID) const override
const uint32_t * getHLXCallPreservedMask () const
 Mask for calls that pass or return values in HLX registers.
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
Register getVTCMStackRegister () const
unsigned getHexagonSubRegIndex (const TargetRegisterClass &RC, unsigned GenIdx) const
const MCPhysReg * getCallerSavedRegs (const MachineFunction *MF, const TargetRegisterClass *RC) const
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 185 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 143 of file HexagonRegisterInfo.cpp.

References llvm::MachineFunction::getInfo(), and hasHLXSignature().

◆ getCallerSavedRegs()

◆ getCallPreservedMask()

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

Definition at line 166 of file HexagonRegisterInfo.cpp.

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

◆ getFrameRegister() [1/2]

Register HexagonRegisterInfo::getFrameRegister ( ) const

Definition at line 482 of file HexagonRegisterInfo.cpp.

Referenced by getFrameRegister().

◆ getFrameRegister() [2/2]

◆ getHexagonSubRegIndex()

◆ getHLXCallPreservedMask()

const uint32_t * HexagonRegisterInfo::getHLXCallPreservedMask ( ) const

Mask for calls that pass or return values in HLX registers.

Definition at line 171 of file HexagonRegisterInfo.cpp.

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

◆ getReservedRegs()

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

Definition at line 176 of file HexagonRegisterInfo.cpp.

References computeStackAlignBaseRegister(), and llvm::Reserved.

◆ getStackRegister()

Register HexagonRegisterInfo::getStackRegister ( ) const

◆ getVTCMStackRegister()

Register HexagonRegisterInfo::getVTCMStackRegister ( ) const

Definition at line 491 of file HexagonRegisterInfo.cpp.

◆ 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 59 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 53 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 522 of file HexagonRegisterInfo.cpp.

References llvm::MachineFunction::getSubtarget().


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