LLVM 20.0.0git
Public Types | Public Member Functions | List of all members
llvm::ModuloScheduleExpander Class Reference

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.
 
MachineBasicBlockgetRewrittenKernel ()
 Returns the newly rewritten kernel block, or nullptr if this was optimized away.
 

Detailed Description

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.

Member Typedef Documentation

◆ InstrChangesTy

Definition at line 163 of file ModuloSchedule.h.

Constructor & Destructor Documentation

◆ ModuloScheduleExpander()

llvm::ModuloScheduleExpander::ModuloScheduleExpander ( MachineFunction MF,
ModuloSchedule S,
LiveIntervals LIS,
InstrChangesTy  InstrChanges 
)
inline

Create a new ModuloScheduleExpander.

  • InstrChanges Modifications to make to instructions with memory operands. FIXME: InstrChanges is opaque and is an implementation detail of an optimization in MachinePipeliner that crosses abstraction boundaries.

Definition at line 265 of file ModuloSchedule.h.

References MRI, and TII.

Member Function Documentation

◆ cleanup()

void ModuloScheduleExpander::cleanup ( )

◆ expand()

void ModuloScheduleExpander::expand ( )

◆ getRewrittenKernel()

MachineBasicBlock * llvm::ModuloScheduleExpander::getRewrittenKernel ( )
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().


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