class MachinePipeliner

Declaration

class MachinePipeliner : public MachineFunctionPass { /* full declaration omitted */ };

Description

The main class in the implementation of the target independent software pipeliner pass.

Declared at: llvm/include/llvm/CodeGen/MachinePipeliner.h:64

Inherits from: MachineFunctionPass

Member Variables

public llvm::MachineFunction* MF = nullptr
public llvm::MachineOptimizationRemarkEmitter* ORE = nullptr
public const llvm::MachineLoopInfo* MLI = nullptr
public const llvm::MachineDominatorTree* MDT = nullptr
public const llvm::InstrItineraryData* InstrItins
public const llvm::TargetInstrInfo* TII = nullptr
public llvm::RegisterClassInfo RegClassInfo
public bool disabledByPragma = false
public unsigned int II_setByPragma = 0
public llvm::MachinePipeliner::LoopInfo LI
public static int NumTries
public static char ID

Method Overview

Inherited from MachineFunctionPass:

Inherited from FunctionPass:

Inherited from Pass:

Methods

MachinePipeliner()

Declared at: llvm/include/llvm/CodeGen/MachinePipeliner.h:94

bool canPipelineLoop(llvm::MachineLoop& L)

Description

Return true if the loop can be software pipelined. The algorithm is restricted to loops with a single basic block. Make sure that the branch in the loop can be analyzed.

Declared at: llvm/include/llvm/CodeGen/MachinePipeliner.h:104

Parameters

llvm::MachineLoop& L

void getAnalysisUsage(
    llvm::AnalysisUsage& AU) const

Description

getAnalysisUsage - Subclasses that override getAnalysisUsage must call this. For MachineFunctionPasses, calling AU.preservesCFG() indicates that the pass does not modify the MachineBasicBlock CFG.

Declared at: llvm/include/llvm/CodeGen/MachinePipeliner.h:100

Parameters

llvm::AnalysisUsage& AU

void preprocessPhiNodes(
    llvm::MachineBasicBlock& B)

Declared at: llvm/include/llvm/CodeGen/MachinePipeliner.h:103

Parameters

llvm::MachineBasicBlock& B

bool runOnMachineFunction(
    llvm::MachineFunction& MF)

Description

The "main" function for implementing Swing Modulo Scheduling.

Declared at: llvm/include/llvm/CodeGen/MachinePipeliner.h:98

Parameters

llvm::MachineFunction& MF

bool scheduleLoop(llvm::MachineLoop& L)

Description

Attempt to perform the SMS algorithm on the specified loop. This function is the main entry point for the algorithm. The function identifies candidate loops, calculates the minimum initiation interval, and attempts to schedule the loop.

Declared at: llvm/include/llvm/CodeGen/MachinePipeliner.h:105

Parameters

llvm::MachineLoop& L

void setPragmaPipelineOptions(
    llvm::MachineLoop& L)

Declared at: llvm/include/llvm/CodeGen/MachinePipeliner.h:107

Parameters

llvm::MachineLoop& L

bool swingModuloScheduler(llvm::MachineLoop& L)

Description

The SMS algorithm consists of the following main steps: 1. Computation and analysis of the dependence graph. 2. Ordering of the nodes (instructions). 3. Attempt to Schedule the loop.

Declared at: llvm/include/llvm/CodeGen/MachinePipeliner.h:106

Parameters

llvm::MachineLoop& L