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