[Mesa-dev] [PATCH 6/6] i965: Use nir_opt_trivial_continues and nir_opt_if

Timothy Arceri timothy.arceri at collabora.com
Thu Dec 22 11:57:12 UTC 2016


On Wed, 2016-12-21 at 21:11 -0800, Jason Ekstrand wrote:
> On Dec 21, 2016 9:17 PM, "Timothy Arceri" <timothy.arceri at collabora.c
> om> wrote:
> On Mon, 2016-12-19 at 20:11 -0800, Jason Ekstrand wrote:
> > ---
> >  src/mesa/drivers/dri/i965/brw_nir.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/src/mesa/drivers/dri/i965/brw_nir.c
> > b/src/mesa/drivers/dri/i965/brw_nir.c
> > index 0c1fb44..a091861 100644
> > --- a/src/mesa/drivers/dri/i965/brw_nir.c
> > +++ b/src/mesa/drivers/dri/i965/brw_nir.c
> > @@ -429,6 +429,8 @@ nir_optimize(nir_shader *nir, const struct
> > brw_compiler *compiler,
> >        OPT(nir_opt_algebraic);
> >        OPT(nir_opt_constant_folding);
> >        OPT(nir_opt_dead_cf);
> > +      OPT(nir_opt_trivial_continues);
> > +      OPT(nir_opt_if);
> 
> I'm seeing regressions in my series for Vulkan (the Vulkan CTS was
> only
> enabled for my branch today).  I wonder if we should be applying your
> series before mine? Either way this or a similar patch is:
> 
> If you're seeing regressions, there's probably a real bug there.  I
> assume you applied the else case fix?

Yes its applied. I haven't checked them all but it seems at least some
are falling over because of a redundant continue at the end of the
loop. So to me it seems we should probably at least land
nir_opt_trivial_continues before my series. Loop analysis will bail out
if we detect a continue in an if branch but we expect no jumps in the
loop body itself. 

> 
> Reviewed-by: Timothy Arceri <timothy.arceri at collabora.com>
> 
> >        if (nir->options->max_unroll_iterations != 0) {
> >           OPT(nir_opt_loop_unroll, indirect_mask);
> >        }
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list