Simple VLIW packetizer that groups instructions using a DFA resource model.
Declared in <llvm/CodeGen/DFAPacketizer.h>
class VLIWPacketizerList;
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.
| 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. |
| 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. |