|
LLVM 23.0.0git
|
A rematerializable register defined by a single machine instruction. More...
#include "llvm/CodeGen/Rematerializer.h"
Classes | |
| struct | Dependency |
A read register operand of DefMI that is rematerializable (according to the rematerializer). More... | |
Public Types | |
| using | RegionUsers = SmallDenseSet<MachineInstr *, 4> |
Public Member Functions | |
| Register | getDefReg () const |
| Returns the rematerializable register from its defining instruction. | |
| bool | hasUsersInDefRegion () const |
| bool | hasUsersOutsideDefRegion () const |
| std::pair< MachineInstr *, MachineInstr * > | getRegionUseBounds (unsigned UseRegion, const LiveIntervals &LIS) const |
Returns the first and last user of the register in region UseRegion. | |
| bool | isAlive () const |
Public Attributes | |
| MachineInstr * | DefMI |
| Single MI defining the rematerializable register. | |
| unsigned | DefRegion |
Defining region of DefMI. | |
| LaneBitmask | Mask |
| The rematerializable register's lane bitmask. | |
| SmallDenseMap< unsigned, RegionUsers, 2 > | Uses |
| Uses of the register, mapped by region. | |
| SmallVector< Dependency, 2 > | Dependencies |
| This register's rematerializable dependencies, one per unique rematerializable register operand. | |
A rematerializable register defined by a single machine instruction.
A rematerializable register has a set of dependencies, which correspond to the unique read register operands of its defining instruction. They are identified by their machine operand index, and can themselves be rematerializable. Operand indices corresponding to unrematerializable dependencies are managed by and queried from the rematerializer.
A rematerializable register also has an arbitrary number of users in an arbitrary number of regions, potentially including its own defining region. When rematerializations lead to operand changes in users, a register may find itself without any user left, at which point the rematerializer deletes it (setting its defining MI to nullptr).
Definition at line 115 of file Rematerializer.h.
| using llvm::Rematerializer::Reg::RegionUsers = SmallDenseSet<MachineInstr *, 4> |
Definition at line 123 of file Rematerializer.h.
|
inline |
Returns the rematerializable register from its defining instruction.
Definition at line 143 of file Rematerializer.h.
References assert(), and DefMI.
Referenced by llvm::Rematerializer::printID(), llvm::Rematerializer::printRematReg(), llvm::Rematerializer::rematerializeReg(), and llvm::Rematerializer::updateLiveIntervals().
| std::pair< MachineInstr *, MachineInstr * > Rematerializer::Reg::getRegionUseBounds | ( | unsigned | UseRegion, |
| const LiveIntervals & | LIS ) const |
Returns the first and last user of the register in region UseRegion.
If the register has no user in the region, returns a pair of nullptr's.
Definition at line 605 of file Rematerializer.cpp.
References assert(), and Uses.
Referenced by llvm::Rematerializer::rematerializeToRegion().
|
inline |
Definition at line 149 of file Rematerializer.h.
|
inline |
Definition at line 153 of file Rematerializer.h.
|
inline |
Definition at line 164 of file Rematerializer.h.
References DefMI.
Referenced by llvm::Rollbacker::rollback(), and llvm::Rematerializer::updateLiveIntervals().
| MachineInstr* llvm::Rematerializer::Reg::DefMI |
Single MI defining the rematerializable register.
Definition at line 117 of file Rematerializer.h.
Referenced by llvm::Rematerializer::findRematInRegion(), getDefReg(), isAlive(), llvm::Rematerializer::printID(), llvm::Rematerializer::printRematReg(), llvm::Rematerializer::recreateReg(), llvm::Rematerializer::rematerializeReg(), and llvm::Rematerializer::updateLiveIntervals().
| unsigned llvm::Rematerializer::Reg::DefRegion |
Defining region of DefMI.
Definition at line 119 of file Rematerializer.h.
Referenced by llvm::Rematerializer::findRematInRegion(), hasUsersInDefRegion(), hasUsersOutsideDefRegion(), llvm::Rematerializer::printID(), llvm::Rematerializer::printRematReg(), llvm::Rematerializer::recreateReg(), and llvm::Rematerializer::rematerializeReg().
| SmallVector<Dependency, 2> llvm::Rematerializer::Reg::Dependencies |
This register's rematerializable dependencies, one per unique rematerializable register operand.
Definition at line 140 of file Rematerializer.h.
Referenced by llvm::Rematerializer::recreateReg(), and llvm::Rematerializer::rematerializeReg().
| LaneBitmask llvm::Rematerializer::Reg::Mask |
The rematerializable register's lane bitmask.
Definition at line 121 of file Rematerializer.h.
Referenced by llvm::Rematerializer::rematerializeReg().
| SmallDenseMap<unsigned, RegionUsers, 2> llvm::Rematerializer::Reg::Uses |
Uses of the register, mapped by region.
Definition at line 125 of file Rematerializer.h.
Referenced by llvm::Rematerializer::findRematInRegion(), getRegionUseBounds(), hasUsersInDefRegion(), hasUsersOutsideDefRegion(), llvm::Rematerializer::printRematReg(), and llvm::Rematerializer::transferAllUsers().