summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/freedreno
diff options
context:
space:
mode:
authorRob Clark <robdclark@gmail.com>2018-01-29 15:33:55 -0500
committerRob Clark <robdclark@gmail.com>2018-02-10 14:54:58 -0500
commit930ca0e03862a86b4fe0933661e4220cf114bfb0 (patch)
treeca6a9260d9d091aef092313eb2484c67c60d88c0 /src/gallium/drivers/freedreno
parenta84e32484778fb535d3ad8a266b884e14ad194da (diff)
freedreno/ir3: some more debug prints
Signed-off-by: Rob Clark <robdclark@gmail.com>
Diffstat (limited to 'src/gallium/drivers/freedreno')
-rw-r--r--src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c5
-rw-r--r--src/gallium/drivers/freedreno/ir3/ir3_print.c31
2 files changed, 36 insertions, 0 deletions
diff --git a/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c b/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
index 15a3aa4c802..23888770fbe 100644
--- a/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
+++ b/src/gallium/drivers/freedreno/ir3/ir3_compiler_nir.c
@@ -3352,6 +3352,11 @@ ir3_compile_shader_nir(struct ir3_compiler *compiler,
*/
ir3_group(ir);
+ if (fd_mesa_debug & FD_DBG_OPTMSGS) {
+ printf("AFTER GROUPING:\n");
+ ir3_print(ir);
+ }
+
ir3_depth(ir);
if (fd_mesa_debug & FD_DBG_OPTMSGS) {
diff --git a/src/gallium/drivers/freedreno/ir3/ir3_print.c b/src/gallium/drivers/freedreno/ir3/ir3_print.c
index 8aebf21a1be..c399c69ea2a 100644
--- a/src/gallium/drivers/freedreno/ir3/ir3_print.c
+++ b/src/gallium/drivers/freedreno/ir3/ir3_print.c
@@ -41,6 +41,7 @@ static void print_instr_name(struct ir3_instruction *instr)
printf("%04u:", instr->serialno);
#endif
printf("%04u:", instr->name);
+ printf("%04u:", instr->ip);
printf("%03u: ", instr->depth);
if (instr->flags & IR3_INSTR_SY)
@@ -196,6 +197,17 @@ print_instr(struct ir3_instruction *instr, int lvl)
printf(", target=block%u", block_id(instr->cat0.target));
}
+ if (instr->deps_count) {
+ printf(", false-deps:");
+ for (unsigned i = 0; i < instr->deps_count; i++) {
+ if (i > 0)
+ printf(", ");
+ printf("_[");
+ print_instr_name(instr->deps[i]);
+ printf("]");
+ }
+ }
+
printf("\n");
}
@@ -208,9 +220,28 @@ static void
print_block(struct ir3_block *block, int lvl)
{
tab(lvl); printf("block%u {\n", block_id(block));
+
+ if (block->predecessors_count > 0) {
+ tab(lvl+1);
+ printf("pred: ");
+ for (unsigned i = 0; i < block->predecessors_count; i++) {
+ if (i)
+ printf(", ");
+ printf("block%u", block_id(block->predecessors[i]));
+ }
+ printf("\n");
+ }
+
list_for_each_entry (struct ir3_instruction, instr, &block->instr_list, node) {
print_instr(instr, lvl+1);
}
+
+ tab(lvl+1); printf("/* keeps:\n");
+ for (unsigned i = 0; i < block->keeps_count; i++) {
+ print_instr(block->keeps[i], lvl+2);
+ }
+ tab(lvl+1); printf(" */\n");
+
if (block->successors[1]) {
/* leading into if/else: */
tab(lvl+1);