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.

References MRI, and Reg.

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().