LLVM: lib/CodeGen/ModuloSchedule.cpp File Reference (original) (raw)
Go to the source code of this file.
| Macros | |
|---|---|
| #define | DEBUG_TYPE "pipeliner" |
| Functions | |
|---|---|
| static void | getPhiRegs (MachineInstr &Phi, MachineBasicBlock *Loop, Register &InitVal, Register &LoopVal) |
| Return the register values for the operands of a Phi instruction. | |
| static Register | getInitPhiReg (MachineInstr &Phi, MachineBasicBlock *LoopBB) |
| Return the Phi register value that comes from the incoming block. | |
| static Register | getLoopPhiReg (MachineInstr &Phi, MachineBasicBlock *LoopBB) |
| Return the Phi register value that comes the loop block. | |
| static void | replaceRegUsesAfterLoop (Register FromReg, Register ToReg, MachineBasicBlock *MBB, MachineRegisterInfo &MRI) |
| Replace all uses of FromReg that appear outside the specified basic block with ToReg. | |
| static bool | hasUseAfterLoop (Register Reg, MachineBasicBlock *BB, MachineRegisterInfo &MRI) |
| Return true if the register has a use that occurs outside the specified loop. | |
| static MachineBasicBlock * | createDedicatedExit (MachineBasicBlock *Loop, MachineBasicBlock *Exit, LiveIntervals &LIS) |
| 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 2125 of file ModuloSchedule.cpp.
References llvm::MachineBasicBlock::addSuccessor(), Cond, llvm::MachineFunction::CreateMachineBasicBlock(), llvm::dwarf_linker::DebugLoc, llvm::TargetSubtargetInfo::getInstrInfo(), llvm::MachineFunction::getSubtarget(), llvm::MachineFunction::insert(), llvm::LiveIntervals::insertMBBInMaps(), llvm_unreachable, TBB, and TII.
◆ getInitPhiReg()
◆ getLoopPhiReg()
◆ getLoopPhiUser()
Return a phi if Reg is referenced by the phi.
canApply() guarantees that at most only one such phi exists.
Definition at line 2378 of file ModuloSchedule.cpp.
References getPhiRegs(), and Reg.
◆ getPhiRegs()
Return the register values for the operands of a Phi instruction.
This function assume the instruction is a Phi.
Definition at line 41 of file ModuloSchedule.cpp.
References assert(), and Register.
◆ hasUseAfterLoop()
Return true if the register has a use that occurs outside the specified loop.
Definition at line 360 of file ModuloSchedule.cpp.
◆ INITIALIZE_PASS_BEGIN()
| INITIALIZE_PASS_BEGIN | ( | ModuloScheduleTest | , |
|---|---|---|---|
| "modulo-schedule-test" | , | ||
| "Modulo Schedule test pass" | , | ||
| false | , | ||
| false | ) |
◆ parseSymbolString()
| void parseSymbolString ( StringRef S, int & Cycle, int & Stage ) | static |
|---|
◆ 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 2804 of file ModuloSchedule.cpp.
Referenced by llvm::SmallBitVector::anyCommon(), llvm::PPCRegisterInfo::isCallerPreservedPhysReg(), matchAliasCondition(), llvm::SmallBitVector::operator&=(), llvm::Bitset< AEK_NUM_EXTENSIONS >::operator<(), llvm::FeatureBitset::operator<(), llvm::detail::zip_longest_iterator< decltype(adl_begin(std::declval< Args >()))... >::operator==(), llvm::SmallBitVector::operator^=(), llvm::SmallBitVector::operator|=(), llvm::CoalescingBitVector< IndexT >::set(), llvm::SmallBitVector::test(), llvm::CoalescingBitVector< IndexT >::test_and_set(), llvm::SparseBitVector< 128 >::test_and_set(), and llvm::SparseBitVectorElement< ElementSize >::test_and_set().