Thanks for picking this up! I don't know that much about statement expressions, so I'm giving this one an ACK only. 2 and 3 are Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com>. I left some comments on 4 but nothing functional.
On Jan 16, 2015 5:29 AM, "Kenneth Graunke" <kenn...@whitecape.org> wrote: > > In order to support calling lower_load_payload() inside a condition, > this patch makes OPT() a statement expression: > > https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html > > We recently did the equivalent change in the vec4 backend (commit > 9b8bd67768769b685c25e1276e053505aede5f93). > > Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> > --- > src/mesa/drivers/dri/i965/brw_fs.cpp | 18 +++++++++++------- > 1 file changed, 11 insertions(+), 7 deletions(-) > > This was useful when debugging some stuff. > > diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp > index 5d129fe..35639de 100644 > --- a/src/mesa/drivers/dri/i965/brw_fs.cpp > +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp > @@ -3543,7 +3543,7 @@ fs_visitor::optimize() > assign_constant_locations(); > demote_pull_constants(); > > -#define OPT(pass, args...) do { \ > +#define OPT(pass, args...) ({ \ > pass_num++; \ > bool this_progress = pass(args); \ > \ > @@ -3556,7 +3556,8 @@ fs_visitor::optimize() > } \ > \ > progress = progress || this_progress; \ > - } while (false) > + this_progress; \ > + }) > > if (unlikely(INTEL_DEBUG & DEBUG_OPTIMIZER)) { > char filename[64]; > @@ -3568,10 +3569,11 @@ fs_visitor::optimize() > > bool progress; > int iteration = 0; > + int pass_num = 0; > do { > progress = false; > + pass_num = 0; > iteration++; > - int pass_num = 0; > > OPT(remove_duplicate_mrf_writes); > > @@ -3590,11 +3592,13 @@ fs_visitor::optimize() > OPT(compact_virtual_grfs); > } while (progress); > > - if (lower_load_payload()) { > + pass_num = 0; > + > + if (OPT(lower_load_payload)) { > split_virtual_grfs(); > - register_coalesce(); > - compute_to_mrf(); > - dead_code_eliminate(); > + OPT(register_coalesce); > + OPT(compute_to_mrf); > + OPT(dead_code_eliminate); > } > > lower_uniform_pull_constant_loads(); > -- > 2.2.2 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev