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

Elie Tournier tournier.elie at gmail.com
Wed Feb 8 22:20:41 UTC 2017


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.
+ */
+#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



More information about the mesa-dev mailing list