llvm::VLIWPacketizerList

Simple VLIW packetizer that groups instructions using a DFA resource model.

Synopsis

Declared in <llvm/CodeGen/DFAPacketizer.h>

class VLIWPacketizerList;

Description

The packetizer works on machine basic blocks. For each instruction I in BB, the packetizer consults the DFA to see if machine resources are available to execute I. If so, the packetizer checks if I depends on any instruction in the current packet. If no dependency is found, I is added to current packet and the machine resource is marked as taken. If any dependency is found, a target API call is made to prune the dependence.

Member Functions

NameDescription
VLIWPacketizerList [constructor]Constructors
~VLIWPacketizerList [destructor] [virtual]Destroy the packetizer and its owned scheduler and resource tracker.
operator= [deleted]Assignment is deleted; VLIWPacketizerList is not copyable.
PacketizeMIs Bundle instructions in MBB between BeginItr and EndItr.
addMutation Add a DAG mutation to be done before the packetization begins.
addToPacket [virtual]Add MI to the current packet and reserve its resources.
alias Return true if MI1 and MI2 may alias.
endPacket [virtual]End the current packet and reset the state of the packetizer.
getResourceTracker Return the DFA resource tracker used by this packetizer.
ignorePseudoInstruction [virtual]Return true if I should be ignored by the packetizer.
initPacketizerState [virtual]Perform initialization before packetizing an instruction.
isLegalToPacketizeTogether [virtual]Return true if it is legal to packetize SUI and SUJ together.
isLegalToPruneDependencies [virtual]Return true if it is legal to prune the dependence between SUI and SUJ.
isSoloInstruction [virtual]Return true if MI cannot be packetized with any other instruction.
shouldAddToPacket [virtual]Return true if the packetizer should try to add MI to the current packet.

Protected Data Members

NameDescription
AA Optional alias-analysis results; may be nullptr.
CurrentPacketMIs Instructions currently assigned to the open packet.
MF Machine function being packetized.
MIToSUnit Map from machine instructions to their schedule units.
ResourceTracker DFA resource tracker for the current packet.
TII Target instruction info for the current subtarget.
VLIWScheduler VLIW scheduler that builds the dependence graph for packetizing.