Mesa (master): nir/lower_goto_if: Add some debug prints
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Aug 14 20:55:37 UTC 2020
Module: Mesa
Branch: master
Commit: 4638de8b1b3e362b356587622b1178f2d83bc619
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4638de8b1b3e362b356587622b1178f2d83bc619
Author: Jason Ekstrand <jason at jlekstrand.net>
Date: Wed Aug 12 23:01:03 2020 -0500
nir/lower_goto_if: Add some debug prints
Reviewed-by: Karol Herbst <kherbst at redhat.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/2401>
---
src/compiler/nir/nir_lower_goto_ifs.c | 74 +++++++++++++++++++++++++++++++++++
1 file changed, 74 insertions(+)
diff --git a/src/compiler/nir/nir_lower_goto_ifs.c b/src/compiler/nir/nir_lower_goto_ifs.c
index b00b2cd8bec..de8c33a7332 100644
--- a/src/compiler/nir/nir_lower_goto_ifs.c
+++ b/src/compiler/nir/nir_lower_goto_ifs.c
@@ -25,6 +25,8 @@
#include "nir_builder.h"
#include "nir_vla.h"
+#define NIR_LOWER_GOTO_IFS_DEBUG 0
+
struct path {
/** Set of blocks which this path represents
*
@@ -88,6 +90,21 @@ nir_block_ptr_cmp(const void *_a, const void *_b)
return (int)(*a)->index - (int)(*b)->index;
}
+static void
+print_block_set(const struct set *set)
+{
+ printf("{ ");
+ if (set != NULL) {
+ unsigned count = 0;
+ set_foreach(set, entry) {
+ if (count++)
+ printf(", ");
+ printf("%u", ((nir_block *)entry->key)->index);
+ }
+ }
+ printf(" }\n");
+}
+
/** Return a sorted array of blocks for a set
*
* Hash set ordering is non-deterministic. We hash based on pointers and so,
@@ -276,6 +293,25 @@ loop_routing_start(struct routes *routing, nir_builder *b,
struct path loop_path, struct set *reach,
struct set *outside, void *mem_ctx)
{
+ if (NIR_LOWER_GOTO_IFS_DEBUG) {
+ printf("loop_routing_start:\n");
+ printf(" reach = ");
+ print_block_set(reach);
+ printf(" outside = ");
+ print_block_set(outside);
+ printf(" loop_path.reachable = ");
+ print_block_set(loop_path.reachable);
+ printf(" routing->outside = ");
+ print_block_set(routing->outside);
+ printf(" routing->regular.reachable = ");
+ print_block_set(routing->regular.reachable);
+ printf(" routing->brk.reachable = ");
+ print_block_set(routing->brk.reachable);
+ printf(" routing->cont.reachable = ");
+ print_block_set(routing->cont.reachable);
+ printf("\n");
+ }
+
struct routes *routing_backup = ralloc(mem_ctx, struct routes);
*routing_backup = *routing;
bool break_needed = false;
@@ -411,6 +447,20 @@ inside_outside(nir_block *block, struct set *loop_heads, struct set *outside,
_mesa_set_add(remaining, block->dom_children[i]);
}
+
+ if (NIR_LOWER_GOTO_IFS_DEBUG) {
+ printf("inside_outside(%u):\n", block->index);
+ printf(" loop_heads = ");
+ print_block_set(loop_heads);
+ printf(" reach = ");
+ print_block_set(reach);
+ printf(" brk_reach = ");
+ print_block_set(brk_reachable);
+ printf(" remaining = ");
+ print_block_set(remaining);
+ printf("\n");
+ }
+
bool progress = true;
while (remaining->entries && progress) {
progress = false;
@@ -456,6 +506,13 @@ inside_outside(nir_block *block, struct set *loop_heads, struct set *outside,
_mesa_set_add(reach, block->successors[i]);
}
}
+
+ if (NIR_LOWER_GOTO_IFS_DEBUG) {
+ printf("outside(%u) = ", block->index);
+ print_block_set(outside);
+ printf("reach(%u) = ", block->index);
+ print_block_set(reach);
+ }
}
static struct path_fork *
@@ -615,6 +672,14 @@ organize_levels(struct list_head *levels, struct set *children,
struct set *reach, struct routes *routing,
nir_function_impl *impl, bool is_domminated, void *mem_ctx)
{
+ if (NIR_LOWER_GOTO_IFS_DEBUG) {
+ printf("organize_levels:\n");
+ printf(" children = ");
+ print_block_set(children);
+ printf(" reach = ");
+ print_block_set(reach);
+ }
+
/* Duplicate remaining because we're going to destroy it */
struct set *remaining = _mesa_set_clone(children, mem_ctx);
@@ -711,6 +776,15 @@ organize_levels(struct list_head *levels, struct set *children,
list_addtail(&curr_level->link, levels);
}
+ if (NIR_LOWER_GOTO_IFS_DEBUG) {
+ printf(" levels:\n");
+ list_for_each_entry(struct strct_lvl, level, levels, link) {
+ printf(" ");
+ print_block_set(level->blocks);
+ }
+ printf("\n");
+ }
+
if (skip_targets->entries)
list_last_entry(levels, struct strct_lvl, link)->skip_end = 1;
More information about the mesa-commit
mailing list