LLVM: lib/CodeGen/ModuloSchedule.cpp File Reference (original) (raw)
Go to the source code of this file.
Functions | |
---|---|
static void | getPhiRegs (MachineInstr &Phi, MachineBasicBlock *Loop, unsigned &InitVal, unsigned &LoopVal) |
Return the register values for the operands of a Phi instruction. | |
static unsigned | getInitPhiReg (MachineInstr &Phi, MachineBasicBlock *LoopBB) |
Return the Phi register value that comes from the incoming block. | |
static unsigned | getLoopPhiReg (MachineInstr &Phi, MachineBasicBlock *LoopBB) |
Return the Phi register value that comes the loop block. | |
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. | |
static bool | hasUseAfterLoop (unsigned Reg, MachineBasicBlock *BB, MachineRegisterInfo &MRI) |
Return true if the register has a use that occurs outside the specified loop. | |
static void | removePhis (MachineBasicBlock *BB, MachineBasicBlock *Incoming) |
Remove the incoming block from the Phis in a basic block. | |
static MachineBasicBlock * | createDedicatedExit (MachineBasicBlock *Loop, MachineBasicBlock *Exit) |
Create a dedicated exit for Loop. | |
static MachineInstr * | getLoopPhiUser (Register Reg, MachineBasicBlock *Loop) |
Return a phi if Reg is referenced by the phi. | |
static void | replacePhiSrc (MachineInstr &Phi, Register OrigReg, Register NewReg, MachineBasicBlock *NewMBB) |
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 | |
---|---|
static cl::opt< bool > | SwapBranchTargetsMVE ("pipeliner-swap-branch-targets-mve", cl::Hidden, cl::init(false), cl::desc("Swap target blocks of a conditional branch for MVE expander")) |
modulo schedule | test |
modulo schedule Modulo Schedule test | pass |
modulo schedule Modulo Schedule test | false |
◆ DEBUG_TYPE
#define DEBUG_TYPE "pipeliner"
◆ createDedicatedExit()
Create a dedicated exit for Loop.
Exit is the original exit for Loop. If it is already dedicated exit, return it. Otherwise, insert a new block between them and return the new block.
Definition at line 2119 of file ModuloSchedule.cpp.
References llvm::MachineBasicBlock::addSuccessor(), llvm::HexagonInstrInfo::analyzeBranch(), Cond, llvm::MachineFunction::CreateMachineBasicBlock(), llvm::TargetSubtargetInfo::getInstrInfo(), llvm::MachineFunction::getSubtarget(), llvm::MachineFunction::insert(), llvm::HexagonInstrInfo::insertBranch(), llvm_unreachable, llvm::HexagonInstrInfo::removeBranch(), TBB, and TII.
◆ getInitPhiReg()
Return the Phi register value that comes from the incoming block.
Definition at line 56 of file ModuloSchedule.cpp.
◆ getLoopPhiReg()
Return the Phi register value that comes the loop block.
Definition at line 64 of file ModuloSchedule.cpp.
◆ getLoopPhiUser()
Return a phi if Reg is referenced by the phi.
canApply() guarantees that at most only one such phi exists.
Definition at line 2364 of file ModuloSchedule.cpp.
References getPhiRegs().
◆ getPhiRegs()
Return the register values for the operands of a Phi instruction.
This function assume the instruction is a Phi.
Definition at line 40 of file ModuloSchedule.cpp.
References assert().
◆ hasUseAfterLoop()
Return true if the register has a use that occurs outside the specified loop.
Definition at line 358 of file ModuloSchedule.cpp.
References MRI.
◆ INITIALIZE_PASS_BEGIN()
INITIALIZE_PASS_BEGIN | ( | ModuloScheduleTest | , |
---|---|---|---|
"modulo-schedule-test" | , | ||
"Modulo Schedule test pass" | , | ||
false | , | ||
false | |||
) |
◆ parseSymbolString()
static void parseSymbolString ( StringRef S, int & Cycle, int & Stage ) | static |
---|
◆ removePhis()
Remove the incoming block from the Phis in a basic block.
Definition at line 848 of file ModuloSchedule.cpp.
References MI.
◆ replacePhiSrc()
◆ replaceRegUsesAfterLoop()
◆ false
modulo schedule Modulo Schedule test false
◆ pass
modulo schedule Modulo Schedule test pass
◆ SwapBranchTargetsMVE
cl::opt< bool > SwapBranchTargetsMVE("pipeliner-swap-branch-targets-mve", cl::Hidden, cl::init(false), cl::desc("Swap target blocks of a conditional branch for MVE expander")) ( "pipeliner-swap-branch-targets-mve" , cl::Hidden , cl::init(false) , cl::desc("Swap target blocks of a conditional branch for MVE expander") ) | static |
---|
◆ test
Definition at line 2780 of file ModuloSchedule.cpp.
Referenced by llvm::SmallBitVector::anyCommon(), llvm::GCNSubtarget::initializeSubtargetDependencies(), llvm::SmallBitVector::operator&=(), llvm::Bitset< NumBits >::operator<(), llvm::FeatureBitset::operator<(), llvm::detail::zip_longest_iterator< Iters >::operator==(), llvm::SmallBitVector::operator^=(), llvm::SmallBitVector::operator|=(), llvm::CoalescingBitVector< IndexT >::set(), llvm::SmallBitVector::test(), llvm::CoalescingBitVector< IndexT >::test_and_set(), llvm::SparseBitVectorElement< ElementSize >::test_and_set(), and llvm::SparseBitVector< ElementSize >::test_and_set().