On Fri, Feb 6, 2015 at 5:34 PM, Connor Abbott <cwabbo...@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 <ja...@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@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