diff options
author | Kenneth Graunke <[email protected]> | 2014-12-31 16:47:25 -0800 |
---|---|---|
committer | Kenneth Graunke <[email protected]> | 2015-01-03 01:45:15 -0800 |
commit | 9b8bd67768769b685c25e1276e053505aede5f93 (patch) | |
tree | f2a737aee363ebb296a78c9f88bd2cac308900e2 /src/mesa/drivers/dri | |
parent | 61711316f50294959e48156229f1383002e1cdb8 (diff) |
i965: Show opt_vector_float() and later passes in INTEL_DEBUG=optimizer.
In order to support calling opt_vector_float() inside a condition, this
patch makes OPT() a statement expression:
https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html
We've used that elsewhere already.
Signed-off-by: Kenneth Graunke <[email protected]>
Reviewed-by: Matt Turner <[email protected]>
Diffstat (limited to 'src/mesa/drivers/dri')
-rw-r--r-- | src/mesa/drivers/dri/i965/brw_vec4.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp index f389392636f..79368a75593 100644 --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp @@ -1758,7 +1758,7 @@ vec4_visitor::run() const char *stage_name = stage == MESA_SHADER_GEOMETRY ? "gs" : "vs"; -#define OPT(pass, args...) do { \ +#define OPT(pass, args...) ({ \ pass_num++; \ bool this_progress = pass(args); \ \ @@ -1771,7 +1771,8 @@ vec4_visitor::run() } \ \ progress = progress || this_progress; \ - } while (false) + this_progress; \ + }) if (unlikely(INTEL_DEBUG & DEBUG_OPTIMIZER)) { @@ -1784,10 +1785,11 @@ vec4_visitor::run() bool progress; int iteration = 0; + int pass_num = 0; do { progress = false; + pass_num = 0; iteration++; - int pass_num = 0; OPT(opt_reduce_swizzle); OPT(dead_code_eliminate); @@ -1798,11 +1800,13 @@ vec4_visitor::run() OPT(opt_register_coalesce); } while (progress); - if (opt_vector_float()) { - opt_cse(); - opt_copy_propagation(false); - opt_copy_propagation(true); - dead_code_eliminate(); + pass_num = 0; + + if (OPT(opt_vector_float)) { + OPT(opt_cse); + OPT(opt_copy_propagation, false); + OPT(opt_copy_propagation, true); + OPT(dead_code_eliminate); } if (failed) |