On Wed, Feb 8, 2017 at 2:20 PM, Elie Tournier <tournier.e...@gmail.com> wrote:
> Signed-off-by: Elie Tournier <tournier.e...@gmail.com> > --- > src/compiler/nir/nir_opt_loop_unroll.c | 10 +++++++++- > 1 file changed, 9 insertions(+), 1 deletion(-) > > diff --git a/src/compiler/nir/nir_opt_loop_unroll.c > b/src/compiler/nir/nir_opt_loop_unroll.c > index 37cbced43d..035a030239 100644 > --- a/src/compiler/nir/nir_opt_loop_unroll.c > +++ b/src/compiler/nir/nir_opt_loop_unroll.c > @@ -26,6 +26,14 @@ > #include "nir_control_flow.h" > #include "nir_loop_analyze.h" > > + > +/* This limit is chosen fairly arbitrarily. The GLSL IR limit is 25. > + * However, due to slight differences in the way the two IRs count > + * instructions, some loops that would unroll with GLSL IR fail to unroll > + * if we set this to 25 so we set it to 26. > Ok, I lied in my comment. It's not 25, it's 32. Tim, can you explain the discrepancy? --Jason > + */ > +#define LOOP_UNROLL_LIMIT 26 > + > /* Prepare this loop for unrolling by first converting to lcssa and then > * converting the phis from the loops first block and the block that > follows > * the loop into regs. Partially converting out of SSA allows us to > unroll > @@ -460,7 +468,7 @@ is_loop_small_enough_to_unroll(nir_shader *shader, > nir_loop_info *li) > return true; > > bool loop_not_too_large = > - li->num_instructions * li->trip_count <= max_iter * 26; > + li->num_instructions * li->trip_count <= max_iter * > LOOP_UNROLL_LIMIT; > > return loop_not_too_large; > } > -- > 2.11.0 > >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev