class TargetInstrInfo::PipelinerLoopInfo
Declaration
class TargetInstrInfo::PipelinerLoopInfo { /* full declaration omitted */ };
Description
Object returned by analyzeLoopForPipelining. Allows software pipelining implementations to query attributes of the loop being pipelined and to apply target-specific updates to the loop once pipelining is complete.
Declared at: llvm/include/llvm/CodeGen/TargetInstrInfo.h:724
Method Overview
- public virtual void adjustTripCount(int TripCountAdjust)
- public virtual Optional<bool> createTripCountGreaterCondition(int TC, llvm::MachineBasicBlock & MBB, SmallVectorImpl<llvm::MachineOperand> & Cond)
- public virtual void disposed()
- public virtual void setPreheader(llvm::MachineBasicBlock * NewPreheader)
- public virtual bool shouldIgnoreForPipelining(const llvm::MachineInstr * MI) const
- public virtual ~PipelinerLoopInfo()
Methods
¶virtual void adjustTripCount(int TripCountAdjust)
virtual void adjustTripCount(int TripCountAdjust)
Description
Modify the loop such that the trip count is OriginalTC + TripCountAdjust.
Declared at: llvm/include/llvm/CodeGen/TargetInstrInfo.h:749
Parameters
- int TripCountAdjust
¶virtual Optional<bool>
createTripCountGreaterCondition(
int TC,
llvm::MachineBasicBlock& MBB,
SmallVectorImpl<llvm::MachineOperand>& Cond)
virtual Optional<bool>
createTripCountGreaterCondition(
int TC,
llvm::MachineBasicBlock& MBB,
SmallVectorImpl<llvm::MachineOperand>& Cond)
Description
Create a condition to determine if the trip count of the loop is greater than TC, where TC is always one more than for the previous prologue or 0 if this is being called for the outermost prologue. If the trip count is statically known to be greater than TC, return true. If the trip count is statically known to be not greater than TC, return false. Otherwise return nullopt and fill out Cond with the test condition. Note: This hook is guaranteed to be called from the innermost to the outermost prologue of the loop being software pipelined.
Declared at: llvm/include/llvm/CodeGen/TargetInstrInfo.h:744
Parameters
- int TC
- llvm::MachineBasicBlock& MBB
- SmallVectorImpl<llvm::MachineOperand>& Cond
¶virtual void disposed()
virtual void disposed()
Description
Called when the loop is being removed. Any instructions in the preheader should be removed. Once this function is called, no other functions on this object are valid; the loop has been removed.
Declared at: llvm/include/llvm/CodeGen/TargetInstrInfo.h:759
¶virtual void setPreheader(
llvm::MachineBasicBlock* NewPreheader)
virtual void setPreheader(
llvm::MachineBasicBlock* NewPreheader)
Description
Called when the loop's preheader has been modified to NewPreheader.
Declared at: llvm/include/llvm/CodeGen/TargetInstrInfo.h:752
Parameters
- llvm::MachineBasicBlock* NewPreheader
¶virtual bool shouldIgnoreForPipelining(
const llvm::MachineInstr* MI) const
virtual bool shouldIgnoreForPipelining(
const llvm::MachineInstr* MI) const
Description
Return true if the given instruction should not be pipelined and should be ignored. An example could be a loop comparison, or induction variable update with no users being pipelined.
Declared at: llvm/include/llvm/CodeGen/TargetInstrInfo.h:730
Parameters
- const llvm::MachineInstr* MI
¶virtual ~PipelinerLoopInfo()
virtual ~PipelinerLoopInfo()
Declared at: llvm/include/llvm/CodeGen/TargetInstrInfo.h:726