[Mesa-dev] [PATCH v2] nir: delete magic number

Jason Ekstrand jason at jlekstrand.net
Wed Feb 8 23:54:46 UTC 2017


On Wed, Feb 8, 2017 at 2:20 PM, Elie Tournier <tournier.elie at gmail.com>
wrote:

> Signed-off-by: Elie Tournier <tournier.elie at 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
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20170208/c51f33cb/attachment-0001.html>


More information about the mesa-dev mailing list