LLVM 20.0.0git
|
The ModuloScheduleExpander takes a ModuloSchedule and expands it in-place, rewriting the old loop and inserting prologs and epilogs as required. More...
#include "llvm/CodeGen/ModuloSchedule.h"
Public Types | |
using | InstrChangesTy = DenseMap< MachineInstr *, std::pair< unsigned, int64_t > > |
Public Member Functions | |
ModuloScheduleExpander (MachineFunction &MF, ModuloSchedule &S, LiveIntervals &LIS, InstrChangesTy InstrChanges) | |
Create a new ModuloScheduleExpander. | |
void | expand () |
Performs the actual expansion. | |
void | cleanup () |
Performs final cleanup after expansion. | |
MachineBasicBlock * | getRewrittenKernel () |
Returns the newly rewritten kernel block, or nullptr if this was optimized away. | |
The ModuloScheduleExpander takes a ModuloSchedule and expands it in-place, rewriting the old loop and inserting prologs and epilogs as required.
Definition at line 161 of file ModuloSchedule.h.
using llvm::ModuloScheduleExpander::InstrChangesTy = DenseMap<MachineInstr *, std::pair<unsigned, int64_t> > |
Definition at line 163 of file ModuloSchedule.h.
|
inline |
Create a new ModuloScheduleExpander.
Definition at line 265 of file ModuloSchedule.h.
void ModuloScheduleExpander::cleanup | ( | ) |
Performs final cleanup after expansion.
Definition at line 186 of file ModuloSchedule.cpp.
References I, and llvm::LiveIntervals::RemoveMachineInstrFromMaps().
Referenced by llvm::WindowScheduler::expand(), llvm::SwingSchedulerDAG::schedule(), and llvm::PeelingModuloScheduleExpander::validateAgainstModuloScheduleExpander().
void ModuloScheduleExpander::expand | ( | ) |
Performs the actual expansion.
Definition at line 71 of file ModuloSchedule.cpp.
References llvm::ModuloSchedule::getInstructions(), llvm::ModuloSchedule::getLoop(), llvm::ModuloSchedule::getStage(), llvm::MachineLoop::getTopBlock(), MI, llvm::MachineBasicBlock::pred_begin(), llvm::MachineRegisterInfo::use_operands(), and UseMI.
Referenced by llvm::WindowScheduler::expand(), llvm::SwingSchedulerDAG::schedule(), and llvm::PeelingModuloScheduleExpander::validateAgainstModuloScheduleExpander().
|
inline |
Returns the newly rewritten kernel block, or nullptr if this was optimized away.
Definition at line 278 of file ModuloSchedule.h.
Referenced by llvm::PeelingModuloScheduleExpander::validateAgainstModuloScheduleExpander().