LLVM 23.0.0git
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<Register, int64_t>>

Public Member Functions

 ModuloScheduleExpander (MachineFunction &MF, ModuloSchedule &S, LiveIntervals &LIS, InstrChangesTy InstrChanges)
 Create a new ModuloScheduleExpander.
LLVM_ABI void expand ()
 Performs the actual expansion.
LLVM_ABI 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 llvm::move().

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: