i965/fs: Show register pressure in dump_instructions() output.

Dumping the number of live registers at each IP allows us to see
register pressure and identify any local maxima.  This should
aid in debugging passes designed to reduce register pressure, as
well as optimizations that suddenly trigger spilling.

Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
Kenneth Graunke 2013-08-04 23:34:01 -07:00 committed by Matt Turner
parent 3b74f4b233
commit 391eaa59bd
3 changed files with 16 additions and 1 deletions

View file

@ -2941,6 +2941,20 @@ fs_visitor::lower_uniform_pull_constant_loads()
}
}
void
fs_visitor::dump_instructions()
{
calculate_register_pressure();
int ip = 0;
foreach_list(node, &this->instructions) {
backend_instruction *inst = (backend_instruction *)node;
printf("{%3d} %4d: ", regs_live_at_ip[ip], ip);
dump_instruction(inst);
++ip;
}
}
void
fs_visitor::dump_instruction(backend_instruction *be_inst)
{

View file

@ -432,6 +432,7 @@ public:
void setup_builtin_uniform_values(ir_variable *ir);
int implied_mrf_writes(fs_inst *inst);
virtual void dump_instructions();
void dump_instruction(backend_instruction *inst);
void visit_atomic_counter_intrinsic(ir_call *ir);

View file

@ -86,7 +86,7 @@ public:
exec_list instructions;
virtual void dump_instruction(backend_instruction *inst) = 0;
void dump_instructions();
virtual void dump_instructions();
void assign_common_binding_table_offsets(uint32_t next_binding_table_offset);