[Beignet] [PATCH V2] GBE: Implement liveness dump.
Ruiling Song
ruiling.song at intel.com
Thu Sep 24 00:47:30 PDT 2015
v2:
remove old printf debug code.
Signed-off-by: Ruiling Song <ruiling.song at intel.com>
---
backend/src/ir/liveness.cpp | 58 ++++++++++++++++-----------------------------
1 file changed, 20 insertions(+), 38 deletions(-)
diff --git a/backend/src/ir/liveness.cpp b/backend/src/ir/liveness.cpp
index c5a6374..9f456a3 100644
--- a/backend/src/ir/liveness.cpp
+++ b/backend/src/ir/liveness.cpp
@@ -190,25 +190,6 @@ namespace ir {
workSet.insert(prevInfo);
}
};
-#if 0
- fn.foreachBlock([this](const BasicBlock &bb){
- printf("label %d:\n", bb.getLabelIndex());
- BlockInfo *info = liveness[&bb];
- auto &outVarSet = info->liveOut;
- auto &inVarSet = info->upwardUsed;
- printf("\n\tin Lives: ");
- for (auto inVar : inVarSet) {
- printf("%d ", inVar);
- }
- printf("\n");
- printf("\tout Lives: ");
- for (auto outVar : outVarSet) {
- printf("%d ", outVar);
- }
- printf("\n");
-
- });
-#endif
}
/*
As we run in SIMD mode with prediction mask to indicate active lanes.
@@ -252,27 +233,28 @@ namespace ir {
}
}
}
-#if 0
- fn.foreachBlock([this](const BasicBlock &bb){
- printf("label %d:\n", bb.getLabelIndex());
- BlockInfo *info = liveness[&bb];
- auto &outVarSet = info->liveOut;
- auto &inVarSet = info->upwardUsed;
- printf("\n\tLive Ins: ");
- for (auto inVar : inVarSet) {
- printf("%d ", inVar);
- }
- printf("\n");
- printf("\tLive outs: ");
- for (auto outVar : outVarSet) {
- printf("%d ", outVar);
- }
- printf("\n");
-
- });
-#endif
}
+ std::ostream &operator<< (std::ostream &out, const Liveness &live) {
+ const Function &fn = live.getFunction();
+ fn.foreachBlock([&] (const BasicBlock &bb) {
+ out << std::endl;
+ out << "Label $" << bb.getLabelIndex() << std::endl;
+ const Liveness::BlockInfo &bbInfo = live.getBlockInfo(&bb);
+ out << "liveIn:" << std::endl;
+ for (auto &x: bbInfo.upwardUsed) {
+ out << x << " ";
+ }
+ out << std::endl << "liveOut:" << std::endl;
+ for (auto &x : bbInfo.liveOut)
+ out << x << " ";
+ out << std::endl << "varKill:" << std::endl;
+ for (auto &x : bbInfo.varKill)
+ out << x << " ";
+ out << std::endl;
+ });
+ return out;
+ }
/*! To pretty print the livfeness info */
static const uint32_t prettyInsnStrSize = 48;
--
2.3.1
More information about the Beignet
mailing list