LLVM
17.0.0git
|
#include "llvm/CodeGen/ModuloSchedule.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Analysis/MemoryLocation.h"
#include "llvm/CodeGen/LiveIntervals.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineLoopInfo.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/InitializePasses.h"
#include "llvm/MC/MCContext.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "pipeliner" |
Functions | |
static void | getPhiRegs (MachineInstr &Phi, MachineBasicBlock *Loop, unsigned &InitVal, unsigned &LoopVal) |
Return the register values for the operands of a Phi instruction. More... | |
static unsigned | getInitPhiReg (MachineInstr &Phi, MachineBasicBlock *LoopBB) |
Return the Phi register value that comes from the incoming block. More... | |
static unsigned | getLoopPhiReg (MachineInstr &Phi, MachineBasicBlock *LoopBB) |
Return the Phi register value that comes the loop block. More... | |
static void | replaceRegUsesAfterLoop (unsigned FromReg, unsigned ToReg, MachineBasicBlock *MBB, MachineRegisterInfo &MRI, LiveIntervals &LIS) |
Replace all uses of FromReg that appear outside the specified basic block with ToReg. More... | |
static bool | hasUseAfterLoop (unsigned Reg, MachineBasicBlock *BB, MachineRegisterInfo &MRI) |
Return true if the register has a use that occurs outside the specified loop. More... | |
static void | removePhis (MachineBasicBlock *BB, MachineBasicBlock *Incoming) |
Remove the incoming block from the Phis in a basic block. More... | |
INITIALIZE_PASS_BEGIN (ModuloScheduleTest, "modulo-schedule-test", "Modulo Schedule test pass", false, false) INITIALIZE_PASS_END(ModuloScheduleTest | |
static void | parseSymbolString (StringRef S, int &Cycle, int &Stage) |
Variables | |
modulo schedule | test |
modulo schedule Modulo Schedule test | pass |
modulo schedule Modulo Schedule test | false |
#define DEBUG_TYPE "pipeliner" |
Definition at line 22 of file ModuloSchedule.cpp.
|
static |
Return the Phi register value that comes from the incoming block.
Definition at line 52 of file ModuloSchedule.cpp.
References llvm::numbers::e, llvm::MachineOperand::getMBB(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), and i.
|
static |
Return the Phi register value that comes the loop block.
Definition at line 60 of file ModuloSchedule.cpp.
References llvm::numbers::e, llvm::MachineOperand::getMBB(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), and i.
|
static |
Return the register values for the operands of a Phi instruction.
This function assume the instruction is a Phi.
Definition at line 36 of file ModuloSchedule.cpp.
References assert(), llvm::numbers::e, llvm::MachineOperand::getMBB(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), i, and llvm::MachineInstr::isPHI().
|
static |
Return true if the register has a use that occurs outside the specified loop.
Definition at line 354 of file ModuloSchedule.cpp.
References BB, MRI, and llvm::MachineRegisterInfo::use_operands().
INITIALIZE_PASS_BEGIN | ( | ModuloScheduleTest | , |
"modulo-schedule-test" | , | ||
"Modulo Schedule test pass" | , | ||
false | , | ||
false | |||
) |
Definition at line 2157 of file ModuloSchedule.cpp.
References llvm::dbgs(), llvm_unreachable, and S.
|
static |
Remove the incoming block from the Phis in a basic block.
Definition at line 846 of file ModuloSchedule.cpp.
References BB, llvm::numbers::e, i, and MI.
|
static |
Replace all uses of FromReg that appear outside the specified basic block with ToReg.
Definition at line 340 of file ModuloSchedule.cpp.
References llvm::LiveIntervals::createEmptyInterval(), llvm::LiveIntervals::hasInterval(), llvm::make_early_inc_range(), MBB, MRI, llvm::RISCVFenceField::O, and llvm::MachineRegisterInfo::use_operands().
modulo schedule Modulo Schedule test false |
Definition at line 2144 of file ModuloSchedule.cpp.
modulo schedule Modulo Schedule test pass |
Definition at line 2144 of file ModuloSchedule.cpp.
Referenced by LLVMTargetMachineEmit(), and llvm::verifySafepointIR().
modulo schedule test |
Definition at line 2143 of file ModuloSchedule.cpp.
Referenced by llvm::GCNSubtarget::initializeSubtargetDependencies(), llvm::detail::zip_shortest< Iters >::operator==(), llvm::detail::zip_longest_iterator< Iters >::operator==(), and llvm::Bitfield::test().