LLVM 20.0.0git
|
Expand the kernel using modulo variable expansion algorithm (MVE). More...
#include "llvm/CodeGen/ModuloSchedule.h"
Public Member Functions | |
ModuloScheduleExpanderMVE (MachineFunction &MF, ModuloSchedule &S, LiveIntervals &LIS) | |
void | expand () |
Static Public Member Functions | |
static bool | canApply (MachineLoop &L) |
Check if ModuloScheduleExpanderMVE can be applied to L. | |
Expand the kernel using modulo variable expansion algorithm (MVE).
It unrolls the kernel enough to avoid overlap of register lifetime.
Definition at line 375 of file ModuloSchedule.h.
|
inline |
Definition at line 436 of file ModuloSchedule.h.
|
static |
Check if ModuloScheduleExpanderMVE can be applied to L.
Definition at line 2691 of file ModuloSchedule.cpp.
References llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::count(), llvm::dbgs(), llvm::MachineBasicBlock::getParent(), getPhiRegs(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::insert(), llvm::MachineOperand::isReg(), LLVM_DEBUG, MI, MRI, llvm::MachineBasicBlock::phis(), and llvm::Ref.
Referenced by llvm::SwingSchedulerDAG::schedule().
void ModuloScheduleExpanderMVE::expand | ( | ) |
Definition at line 2680 of file ModuloSchedule.cpp.
References llvm::ModuloSchedule::dump(), llvm::LoopBase< BlockT, LoopT >::getExitBlock(), llvm::ModuloSchedule::getLoop(), llvm::LoopBase< BlockT, LoopT >::getLoopPreheader(), llvm::MachineLoop::getTopBlock(), and LLVM_DEBUG.
Referenced by llvm::SwingSchedulerDAG::schedule().