[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