diff options
author | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2016-07-14 19:04:26 +0000 |
---|---|---|
committer | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2016-07-14 19:04:26 +0000 |
commit | 31ceba7c447d21661650bb4f44a21f9da574add2 (patch) | |
tree | 47249d7438968bd496459f9cecc08b6a98b065b2 /llvm/lib/CodeGen/DFAPacketizer.cpp | |
parent | 6aed6b4f01398b4cfee26df5ddb8bc22034f69e4 (diff) | |
download | bcm5719-llvm-31ceba7c447d21661650bb4f44a21f9da574add2.tar.gz bcm5719-llvm-31ceba7c447d21661650bb4f44a21f9da574add2.zip |
Add debugging code to the packetizer
llvm-svn: 275455
Diffstat (limited to 'llvm/lib/CodeGen/DFAPacketizer.cpp')
-rw-r--r-- | llvm/lib/CodeGen/DFAPacketizer.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/DFAPacketizer.cpp b/llvm/lib/CodeGen/DFAPacketizer.cpp index a92d17cb38f..2386af9e687 100644 --- a/llvm/lib/CodeGen/DFAPacketizer.cpp +++ b/llvm/lib/CodeGen/DFAPacketizer.cpp @@ -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. |