summaryrefslogtreecommitdiffstats
path: root/src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2013-08-18 18:06:13 -0700
committerKenneth Graunke <kenneth@whitecape.org>2013-08-21 21:05:50 -0700
commit9d08756ac7d27b5a392d17c2a91a55cec6edab5d (patch)
tree25d2d9908c2ef8478dd2569bd37da35d28a2a9ad /src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp
parent63ac68bae398884b3b704eccf58a8a9fe8aac9e6 (diff)
downloadexternal_mesa3d-9d08756ac7d27b5a392d17c2a91a55cec6edab5d.zip
external_mesa3d-9d08756ac7d27b5a392d17c2a91a55cec6edab5d.tar.gz
external_mesa3d-9d08756ac7d27b5a392d17c2a91a55cec6edab5d.tar.bz2
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>
Diffstat (limited to 'src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp')
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp30
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 7464498..2780ab6 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)
{