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:688

Method Overview

Methods

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:709

Parameters

int TripCountAdjust

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

Declared at: llvm/include/llvm/CodeGen/TargetInstrInfo.h:704

Parameters

int TC
llvm::MachineBasicBlock& MBB
SmallVectorImpl<llvm::MachineOperand>& Cond

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:719

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:712

Parameters

llvm::MachineBasicBlock* NewPreheader

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:694

Parameters

const llvm::MachineInstr* MI

virtual ~PipelinerLoopInfo()

Declared at: llvm/include/llvm/CodeGen/TargetInstrInfo.h:690