From: Kenneth Graunke Date: Tue, 22 Jul 2014 03:06:23 +0000 (-0700) Subject: i965: Port INTEL_DEBUG=optimizer to the vec4 backend. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=36a4a6bbdca0c30e16d56e6b406ea7c94831048f;p=mesa.git i965: Port INTEL_DEBUG=optimizer to the vec4 backend. Largely via copy and paste. Signed-off-by: Kenneth Graunke Reviewed-by: Matt Turner --- diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp index 045e1c5d413..9a73f8fa1a6 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp @@ -1668,15 +1668,45 @@ vec4_visitor::run() move_push_constants_to_pull_constants(); split_virtual_grfs(); + const char *stage_name = stage == MESA_SHADER_GEOMETRY ? "gs" : "vs"; + +#define OPT(pass, args...) do { \ + pass_num++; \ + bool this_progress = pass(args); \ + \ + if (unlikely(INTEL_DEBUG & DEBUG_OPTIMIZER) && this_progress) { \ + char filename[64]; \ + snprintf(filename, 64, "%s-%04d-%02d-%02d-" #pass, \ + stage_name, shader_prog->Name, iteration, pass_num); \ + \ + backend_visitor::dump_instructions(filename); \ + } \ + \ + progress = progress || this_progress; \ + } while (false) + + + if (unlikely(INTEL_DEBUG & DEBUG_OPTIMIZER)) { + char filename[64]; + snprintf(filename, 64, "%s-%04d-00-start", + stage_name, shader_prog->Name); + + backend_visitor::dump_instructions(filename); + } + bool progress; + int iteration = 0; do { progress = false; - progress = dead_code_eliminate() || progress; - progress = dead_control_flow_eliminate(this) || progress; - progress = opt_copy_propagation() || progress; - progress = opt_algebraic() || progress; - progress = opt_cse() || progress; - progress = opt_register_coalesce() || progress; + iteration++; + int pass_num = 0; + + OPT(dead_code_eliminate); + OPT(dead_control_flow_eliminate, this); + OPT(opt_copy_propagation); + OPT(opt_algebraic); + OPT(opt_cse); + OPT(opt_register_coalesce); } while (progress);