LLVM: llvm::RegScavenger Class Reference (original) (raw)
#include "[llvm/CodeGen/RegisterScavenging.h](RegisterScavenging%5F8h%5Fsource.html)"
| Public Member Functions | |
|---|---|
| RegScavenger ()=default | |
| void | assignRegToScavengingIndex (int FI, Register Reg, MachineInstr *Restore=nullptr) |
| Record that Reg is in use at scavenging index FI. | |
| void | enterBasicBlock (MachineBasicBlock &MBB) |
| Start tracking liveness from the begin of basic block MBB. | |
| void | enterBasicBlockEnd (MachineBasicBlock &MBB) |
| Start tracking liveness from the end of basic block MBB. | |
| void | backward () |
| Update internal register state and move MBB iterator backwards. | |
| void | backward (MachineBasicBlock::iterator I) |
| Call backward() to update internal register state to just before *I. | |
| bool | isRegUsed (Register Reg, bool includeReserved=true) const |
| Return if a specific register is currently used. | |
| BitVector | getRegsAvailable (const TargetRegisterClass *RC) |
| Return all available registers in the register class in Mask. | |
| Register | FindUnusedReg (const TargetRegisterClass *RC) const |
| Find an unused register of the specified register class. | |
| void | addScavengingFrameIndex (int FI) |
| Add a scavenging frame index. | |
| bool | isScavengingFrameIndex (int FI) const |
| Query whether a frame index is a scavenging frame index. | |
| void | getScavengingFrameIndices (SmallVectorImpl< int > &A) const |
| Get an array of scavenging frame indices. | |
| Register | scavengeRegisterBackwards (const TargetRegisterClass &RC, MachineBasicBlock::iterator To, bool RestoreAfter, int SPAdj, bool AllowSpill=true) |
| Make a register of the specific register class available from the current position backwards to the place before To. | |
| void | setRegUsed (Register Reg, LaneBitmask LaneMask=LaneBitmask::getAll()) |
| Tell the scavenger a register is used. |
Definition at line 34 of file RegisterScavenging.h.
| llvm::RegScavenger::RegScavenger ( ) | default |
|---|
◆ addScavengingFrameIndex()
| void llvm::RegScavenger::addScavengingFrameIndex ( int FI) | inline |
|---|
◆ assignRegToScavengingIndex()
| void llvm::RegScavenger::assignRegToScavengingIndex ( int FI, Register Reg, MachineInstr * Restore = nullptr ) | inline |
|---|
Record that Reg is in use at scavenging index FI.
This is for targets which need to directly manage the spilling process, and need to update the scavenger's internal state. It's expected this be called a second time with Restore set to a non-null value, so that the externally inserted restore instruction resets the scavenged slot liveness when encountered.
Definition at line 70 of file RegisterScavenging.h.
References assert(), llvm_unreachable, and Reg.
◆ backward() [1/2]
| void RegScavenger::backward | ( | ) |
|---|
◆ backward() [2/2]
◆ enterBasicBlock()
◆ enterBasicBlockEnd()
◆ FindUnusedReg()
◆ getRegsAvailable()
◆ getScavengingFrameIndices()
| void llvm::RegScavenger::getScavengingFrameIndices ( SmallVectorImpl< int > & A) const | inline |
|---|
◆ isRegUsed()
| bool RegScavenger::isRegUsed | ( | Register | Reg, |
|---|---|---|---|
| bool | includeReserved = true ) const |
◆ isScavengingFrameIndex()
| bool llvm::RegScavenger::isScavengingFrameIndex ( int FI) const | inline |
|---|
◆ scavengeRegisterBackwards()
◆ setRegUsed()
The documentation for this class was generated from the following files:
- include/llvm/CodeGen/RegisterScavenging.h
- lib/CodeGen/RegisterScavenging.cpp