diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp index 74644985c70..2780ab6fd6d 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp @@ -83,6 +83,8 @@ public: void setup_initial_values(); void run(); + void dump_block_data() const; + void *mem_ctx; cfg_t *cfg; @@ -243,6 +245,34 @@ fs_copy_prop_dataflow::run() } while (progress); } +void +fs_copy_prop_dataflow::dump_block_data() const +{ + for (int b = 0; b < cfg->num_blocks; b++) { + bblock_t *block = cfg->blocks[b]; + printf("Block %d [%d, %d] (parents ", block->block_num, + block->start_ip, block->end_ip); + foreach_list(block_node, &block->parents) { + bblock_t *parent = ((bblock_link *) block_node)->block; + printf("%d ", parent->block_num); + } + printf("):\n"); + printf(" livein = 0x"); + for (int i = 0; i < bitset_words; i++) + printf("%08x", bd[b].livein[i]); + printf(", liveout = 0x"); + for (int i = 0; i < bitset_words; i++) + printf("%08x", bd[b].liveout[i]); + printf(",\n copy = 0x"); + for (int i = 0; i < bitset_words; i++) + printf("%08x", bd[b].copy[i]); + printf(", kill = 0x"); + for (int i = 0; i < bitset_words; i++) + printf("%08x", bd[b].kill[i]); + printf("\n"); + } +} + bool fs_visitor::try_copy_propagate(fs_inst *inst, int arg, acp_entry *entry) { |