mirror of
https://github.com/RPCSX/llvm.git
synced 2025-03-01 17:35:38 +00:00
Add debugging code to the packetizer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@275455 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
fa907d312a
commit
8bd1db4d74
@ -23,6 +23,8 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#define DEBUG_TYPE "packets"
|
||||
|
||||
#include "llvm/CodeGen/DFAPacketizer.h"
|
||||
#include "llvm/CodeGen/MachineInstr.h"
|
||||
#include "llvm/CodeGen/MachineInstrBundle.h"
|
||||
@ -222,6 +224,7 @@ void VLIWPacketizerList::endPacket(MachineBasicBlock *MBB,
|
||||
}
|
||||
CurrentPacketMIs.clear();
|
||||
ResourceTracker->clearResources();
|
||||
DEBUG(dbgs() << "End packet\n");
|
||||
}
|
||||
|
||||
|
||||
@ -235,6 +238,12 @@ void VLIWPacketizerList::PacketizeMIs(MachineBasicBlock *MBB,
|
||||
std::distance(BeginItr, EndItr));
|
||||
VLIWScheduler->schedule();
|
||||
|
||||
DEBUG({
|
||||
dbgs() << "Scheduling DAG of the packetize region\n";
|
||||
for (SUnit &SU : VLIWScheduler->SUnits)
|
||||
SU.dumpAll(VLIWScheduler);
|
||||
});
|
||||
|
||||
// Generate MI -> SU map.
|
||||
MIToSUnit.clear();
|
||||
for (SUnit &SU : VLIWScheduler->SUnits)
|
||||
@ -259,30 +268,46 @@ void VLIWPacketizerList::PacketizeMIs(MachineBasicBlock *MBB,
|
||||
assert(SUI && "Missing SUnit Info!");
|
||||
|
||||
// Ask DFA if machine resource is available for MI.
|
||||
DEBUG(dbgs() << "Checking resources for adding MI to packet " << MI);
|
||||
|
||||
bool ResourceAvail = ResourceTracker->canReserveResources(MI);
|
||||
DEBUG({
|
||||
if (ResourceAvail)
|
||||
dbgs() << " Resources are available for adding MI to packet\n";
|
||||
else
|
||||
dbgs() << " Resources NOT available\n";
|
||||
});
|
||||
if (ResourceAvail && shouldAddToPacket(MI)) {
|
||||
// Dependency check for MI with instructions in CurrentPacketMIs.
|
||||
for (auto MJ : CurrentPacketMIs) {
|
||||
SUnit *SUJ = MIToSUnit[MJ];
|
||||
assert(SUJ && "Missing SUnit Info!");
|
||||
|
||||
DEBUG(dbgs() << " Checking against MJ " << *MJ);
|
||||
// Is it legal to packetize SUI and SUJ together.
|
||||
if (!isLegalToPacketizeTogether(SUI, SUJ)) {
|
||||
DEBUG(dbgs() << " Not legal to add MI, try to prune\n");
|
||||
// Allow packetization if dependency can be pruned.
|
||||
if (!isLegalToPruneDependencies(SUI, SUJ)) {
|
||||
// End the packet if dependency cannot be pruned.
|
||||
DEBUG(dbgs() << " Could not prune dependencies for adding MI\n");
|
||||
endPacket(MBB, MI);
|
||||
break;
|
||||
}
|
||||
DEBUG(dbgs() << " Pruned dependence for adding MI\n");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
DEBUG(if (ResourceAvail)
|
||||
dbgs() << "Resources are available, but instruction should not be "
|
||||
"added to packet\n " << MI);
|
||||
// End the packet if resource is not available, or if the instruction
|
||||
// shoud not be added to the current packet.
|
||||
endPacket(MBB, MI);
|
||||
}
|
||||
|
||||
// Add MI to the current packet.
|
||||
DEBUG(dbgs() << "* Adding MI to packet " << MI << '\n');
|
||||
BeginItr = addToPacket(MI);
|
||||
} // For all instructions in the packetization range.
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user