i965/fs: Add some optional debug printfs to scheduling.
authorEric Anholt <eric@anholt.net>
Tue, 4 Dec 2012 21:52:19 +0000 (13:52 -0800)
committerEric Anholt <eric@anholt.net>
Fri, 14 Dec 2012 23:17:55 +0000 (15:17 -0800)
Seeing when instructions become available to schedule is really useful.

Acked-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_fs_schedule_instructions.cpp

index 24612625e308cc7fbedfd4b1352b1b3b49528adb..14de5f804a327be8be959c38e844492b600d671b 100644 (file)
@@ -52,6 +52,8 @@
  * from in picking among those.
  */
 
+static bool debug = false;
+
 class schedule_node : public exec_node
 {
 public:
@@ -513,6 +515,11 @@ instruction_scheduler::schedule_instructions(fs_inst *next_block_header)
        */
       time = MAX2(time + 1, chosen_time);
 
+      if (debug) {
+         printf("clock %4d, scheduled: ", time);
+         v->dump_instruction(chosen->inst);
+      }
+
       /* Now that we've scheduled a new instruction, some of its
        * children can be promoted to the list of instructions ready to
        * be scheduled.  Update the children's unblocked time for this
@@ -526,6 +533,10 @@ instruction_scheduler::schedule_instructions(fs_inst *next_block_header)
 
         child->parent_count--;
         if (child->parent_count == 0) {
+            if (debug) {
+               printf("now available: ");
+               v->dump_instruction(child->inst);
+            }
            instructions.push_tail(child);
         }
       }
@@ -560,6 +571,11 @@ fs_visitor::schedule_instructions(bool post_reg_alloc)
    else
       grf_count = virtual_grf_count;
 
+   if (debug) {
+      printf("\nInstructions before scheduling (reg_alloc %d)\n", post_reg_alloc);
+      dump_instructions();
+   }
+
    instruction_scheduler sched(this, mem_ctx, grf_count, post_reg_alloc);
 
    while (!next_block_header->is_tail_sentinel()) {
@@ -583,5 +599,10 @@ fs_visitor::schedule_instructions(bool post_reg_alloc)
       sched.schedule_instructions(next_block_header);
    }
 
+   if (debug) {
+      printf("\nInstructions after scheduling (reg_alloc %d)\n", post_reg_alloc);
+      dump_instructions();
+   }
+
    this->live_intervals_valid = false;
 }