LLVM
10.0.0svn
|
A reimplementation of ModuloScheduleExpander. More...
#include "llvm/CodeGen/ModuloSchedule.h"
Public Member Functions | |
PeelingModuloScheduleExpander (MachineFunction &MF, ModuloSchedule &S, LiveIntervals *LIS) | |
void | expand () |
void | validateAgainstModuloScheduleExpander () |
Runs ModuloScheduleExpander and treats it as a golden input to validate aspects of the code generated by PeelingModuloScheduleExpander. More... | |
Protected Member Functions | |
void | rewriteKernel () |
Converts BB from the original loop body to the rewritten, pipelined steady-state. More... | |
A reimplementation of ModuloScheduleExpander.
It works by generating a standalone kernel loop and peeling out the prologs and epilogs.
Definition at line 273 of file ModuloSchedule.h.
|
inline |
Definition at line 304 of file ModuloSchedule.h.
References llvm::DenseMapBase< DenseMap< KeyT, ValueT, KeyInfoT, BucketT >, KeyT, ValueT, KeyInfoT, BucketT >::count(), expand(), llvm::ModuloSchedule::getStage(), and MI.
void PeelingModuloScheduleExpander::expand | ( | ) |
Definition at line 1817 of file ModuloSchedule.cpp.
References LLVM_DEBUG.
Referenced by llvm::SwingSchedulerDAG::schedule().
|
protected |
Converts BB from the original loop body to the rewritten, pipelined steady-state.
Definition at line 1812 of file ModuloSchedule.cpp.
void PeelingModuloScheduleExpander::validateAgainstModuloScheduleExpander | ( | ) |
Runs ModuloScheduleExpander and treats it as a golden input to validate aspects of the code generated by PeelingModuloScheduleExpander.
Definition at line 1827 of file ModuloSchedule.cpp.
References llvm::AnalysisUsage::addRequired(), assert(), llvm::MachineBasicBlock::begin(), llvm::ModuloScheduleExpander::cleanup(), llvm::SmallVectorImpl< T >::emplace_back(), llvm::MachineBasicBlock::end(), llvm::errs(), llvm::ModuloScheduleExpander::expand(), llvm::Failed(), llvm::raw_ostream::flush(), llvm::MachineFunctionPass::getAnalysisUsage(), llvm::MachineBasicBlock::getFirstNonPHI(), llvm::PassRegistry::getPassRegistry(), llvm::ModuloScheduleExpander::getRewrittenKernel(), INITIALIZE_PASS_BEGIN(), INITIALIZE_PASS_DEPENDENCY, llvm::initializeModuloScheduleTestPass(), llvm::SmallPtrSetImpl< PtrType >::insert(), MRI, llvm::MachineBasicBlock::print(), and llvm::report_fatal_error().