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

Name

Description

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

Name

Description

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.

Created with MrDocs