[Mesa-dev] [PATCH 01/15] i965/cfg: Add code to dump blocks and cfg.

Matt Turner mattst88 at gmail.com
Mon Dec 2 10:40:23 PST 2013


---
 src/mesa/drivers/dri/i965/brw_cfg.cpp | 34 ++++++++++++++++++++++++++++++++++
 src/mesa/drivers/dri/i965/brw_cfg.h   |  3 +++
 2 files changed, 37 insertions(+)

diff --git a/src/mesa/drivers/dri/i965/brw_cfg.cpp b/src/mesa/drivers/dri/i965/brw_cfg.cpp
index e9d2bb8..cfe43d2 100644
--- a/src/mesa/drivers/dri/i965/brw_cfg.cpp
+++ b/src/mesa/drivers/dri/i965/brw_cfg.cpp
@@ -67,6 +67,19 @@ bblock_t::make_list(void *mem_ctx)
    return new(mem_ctx) bblock_link(this);
 }
 
+void
+bblock_t::dump(backend_visitor *v)
+{
+   int ip = this->start_ip;
+   for (backend_instruction *inst = (backend_instruction *)this->start;
+	inst != this->end->next;
+	inst = (backend_instruction *) inst->next) {
+      printf("%5d: ", ip);
+      v->dump_instruction(inst);
+      ip++;
+   }
+}
+
 cfg_t::cfg_t(backend_visitor *v)
 {
    create(v->mem_ctx, &v->instructions);
@@ -261,3 +274,24 @@ cfg_t::make_block_array()
    }
    assert(i == num_blocks);
 }
+
+void
+cfg_t::dump(backend_visitor *v)
+{
+   for (int b = 0; b < this->num_blocks; b++) {
+        bblock_t *block = this->blocks[b];
+      printf("START B%d", b);
+      foreach_list(node, &block->parents) {
+         bblock_link *link = (bblock_link *)node;
+         printf(" <-B%d", link->block->block_num);
+      }
+      printf("\n");
+      block->dump(v);
+      printf("END B%d", b);
+      foreach_list(node, &block->children) {
+         bblock_link *link = (bblock_link *)node;
+         printf(" ->B%d", link->block->block_num);
+      }
+      printf("\n");
+   }
+}
diff --git a/src/mesa/drivers/dri/i965/brw_cfg.h b/src/mesa/drivers/dri/i965/brw_cfg.h
index ec5a3a0..e667d22 100644
--- a/src/mesa/drivers/dri/i965/brw_cfg.h
+++ b/src/mesa/drivers/dri/i965/brw_cfg.h
@@ -46,6 +46,7 @@ public:
    bblock_t();
 
    void add_successor(void *mem_ctx, bblock_t *successor);
+   void dump(backend_visitor *v);
 
    backend_instruction *start;
    backend_instruction *end;
@@ -72,6 +73,8 @@ public:
    void set_next_block(bblock_t *block);
    void make_block_array();
 
+   void dump(backend_visitor *v);
+
    /** @{
     *
     * Used while generating the block list.
-- 
1.8.3.2



More information about the mesa-dev mailing list