i965/fs: Add code to print out global copy propagation sets.

This was invaluable when debugging the global copy propagation
algorithm.  We may as well commit it in case someone needs to print
out the sets in the future.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Paul Berry <stereotype441@gmail.com>
This commit is contained in:
Kenneth Graunke
2013-08-18 18:06:13 -07:00
parent 63ac68bae3
commit 9d08756ac7

View File

@@ -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)
{