[Mesa-dev] [PATCH 1/3] nir/dominance: Simplify and expose the dominance intersection function

Jason Ekstrand jason at jlekstrand.net
Fri Feb 6 16:15:50 PST 2015


On Fri, Feb 6, 2015 at 5:34 PM, Connor Abbott <cwabbott0 at gmail.com> wrote:

> I'd rather keep it the way it was, since that's how it's presented as
> pseudocode in the paper and someone reading this is more likely to be
> confused by a function with the exact same name as in the paper but a
> different implementation.
>

Sure.  I don't care that much.  It's a simple enough function that I doubt
that'll be a problem but it doesn't matter much.  I'll drop the hunk.
--Jason

On Fri, Feb 6, 2015 at 5:12 PM, Jason Ekstrand <jason at jlekstrand.net> wrote:
> > Before the function involved three loops and three different branching
> > conditions.  Now it involves one loop and one if statement.  This is a
> > little simpler.
> > ---
> >  src/glsl/nir/nir.h           |  2 ++
> >  src/glsl/nir/nir_dominance.c | 16 ++++++++++++++--
> >  2 files changed, 16 insertions(+), 2 deletions(-)
> >
> > diff --git a/src/glsl/nir/nir.h b/src/glsl/nir/nir.h
> > index 4cb2e92..886dcd2 100644
> > --- a/src/glsl/nir/nir.h
> > +++ b/src/glsl/nir/nir.h
> > @@ -1500,6 +1500,8 @@ static inline void nir_validate_shader(nir_shader
> *shader) { }
> >  void nir_calc_dominance_impl(nir_function_impl *impl);
> >  void nir_calc_dominance(nir_shader *shader);
> >
> > +nir_block *nir_dominance_lca(nir_block *b1, nir_block *b2);
> > +
> >  void nir_dump_dom_tree_impl(nir_function_impl *impl, FILE *fp);
> >  void nir_dump_dom_tree(nir_shader *shader, FILE *fp);
> >
> > diff --git a/src/glsl/nir/nir_dominance.c b/src/glsl/nir/nir_dominance.c
> > index 67fdcc6..1022692 100644
> > --- a/src/glsl/nir/nir_dominance.c
> > +++ b/src/glsl/nir/nir_dominance.c
> > @@ -65,9 +65,9 @@ intersect(nir_block *b1, nir_block *b2)
> >         * because we index blocks from beginning -> end (i.e. reverse
> >         * post-order) instead of post-order like they assume.
> >         */
> > -      while (b1->index > b2->index)
> > +      if (b1->index > b2->index)
> >           b1 = b1->imm_dom;
> > -      while (b2->index > b1->index)
> > +      else
> >           b2 = b2->imm_dom;
> >     }
> >
> > @@ -212,6 +212,18 @@ nir_calc_dominance(nir_shader *shader)
> >     }
> >  }
> >
> > +nir_block *
> > +nir_dominance_lca(nir_block *b1, nir_block *b2)
> > +{
> > +   assert(nir_cf_node_get_function(&b1->cf_node) ==
> > +          nir_cf_node_get_function(&b2->cf_node));
> > +
> > +   assert(nir_cf_node_get_function(&b1->cf_node)->valid_metadata &
> > +          nir_metadata_dominance);
> > +
> > +   return intersect(b1, b2);
> > +}
> > +
> >  static bool
> >  dump_block_dom(nir_block *block, void *state)
> >  {
> > --
> > 2.2.2
> >
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150206/0ad7def1/attachment.html>


More information about the mesa-dev mailing list