i965/cfg: Add code to dump blocks and cfg.
authorMatt Turner <mattst88@gmail.com>
Thu, 28 Nov 2013 19:03:14 +0000 (11:03 -0800)
committerMatt Turner <mattst88@gmail.com>
Thu, 5 Dec 2013 04:05:41 +0000 (20:05 -0800)
Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/brw_cfg.cpp
src/mesa/drivers/dri/i965/brw_cfg.h

index e9d2bb81ee79ec2a750b05b356f397fcfc07cf45..cfe43d20139072716615eb9341ac6a1c82f32001 100644 (file)
@@ -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");
+   }
+}
index ec5a3a02059223bb8a7cb30389580659e5d9ba67..e667d2271b6ac773e43b4c5be1ca186ff5f82672 100644 (file)
@@ -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.