From 51194932d3b866e56b0001874c28f862d382dbd3 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Thu, 28 Nov 2013 11:03:14 -0800 Subject: [PATCH] i965/cfg: Add code to dump blocks and cfg. Reviewed-by: Eric Anholt --- 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 e9d2bb81ee7..cfe43d20139 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 ec5a3a02059..e667d2271b6 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. -- 2.30.2