mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-31 20:51:52 +01:00
[Packetizer] Add a check whether an instruction should be packetized now
Add a function VLIWPacketizerList::shouldAddToPacket, which will allow specific implementations to decide if it is profitable to add given instruction to the current packet. llvm-svn: 255780
This commit is contained in:
parent
110b342ed8
commit
063469eb6a
@ -186,6 +186,16 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check if the packetizer should try to add the given instruction to
|
||||
// the current packet. One reasons for which it may not be desirable
|
||||
// to include an instruction in the current packet could be that it
|
||||
// would cause a stall.
|
||||
// If this function returns "false", the current packet will be ended,
|
||||
// and the instruction will be added to the next packet.
|
||||
virtual bool shouldAddToPacket(const MachineInstr *MI) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// isLegalToPacketizeTogether - Is it legal to packetize SUI and SUJ
|
||||
// together.
|
||||
virtual bool isLegalToPacketizeTogether(SUnit *SUI, SUnit *SUJ) {
|
||||
|
@ -239,7 +239,7 @@ void VLIWPacketizerList::PacketizeMIs(MachineBasicBlock *MBB,
|
||||
|
||||
// Ask DFA if machine resource is available for MI.
|
||||
bool ResourceAvail = ResourceTracker->canReserveResources(MI);
|
||||
if (ResourceAvail) {
|
||||
if (ResourceAvail && shouldAddToPacket(MI)) {
|
||||
// Dependency check for MI with instructions in CurrentPacketMIs.
|
||||
for (std::vector<MachineInstr*>::iterator VI = CurrentPacketMIs.begin(),
|
||||
VE = CurrentPacketMIs.end(); VI != VE; ++VI) {
|
||||
@ -258,7 +258,8 @@ void VLIWPacketizerList::PacketizeMIs(MachineBasicBlock *MBB,
|
||||
} // !isLegalToPacketizeTogether.
|
||||
} // For all instructions in CurrentPacketMIs.
|
||||
} else {
|
||||
// End the packet if resource is not available.
|
||||
// End the packet if resource is not available, or if the instruction
|
||||
// shoud not be added to the current packet.
|
||||
endPacket(MBB, MI);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user