<div dir="auto"><div><div class="gmail_extra"><div class="gmail_quote">On Jan 4, 2017 4:39 AM, "Eero Tamminen" <<a href="mailto:eero.t.tamminen@intel.com">eero.t.tamminen@intel.com</a>> wrote:<br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
Tested-by: Eero Tamminen <<a href="mailto:eero.t.tamminen@intel.com" target="_blank">eero.t.tamminen@intel.com</a>><br>
<br>
May also impact other programs having float indexed loops:<br>
- Invisible Inc<br>
- Talos Principle<br></blockquote></div></div></div><div dir="auto"><br></div><div dir="auto">I think I saw most Talos loops get unrolled.  There was one or two that didn't but I think that was because they had a *lot* of instructions inside the loop.</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
- Steam Big Picture<br>
- Serious Sam 3<font color="#888888"><br>
<br>
<br>
        - Eero</font><div class="quoted-text"><br>
<br>
On 04.01.2017 02:59, Timothy Arceri wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Fixes performance regression in SynMark PSPom caused by loops with float<br>
counters not always unrolling.<br>
<br>
For example:<br>
<br>
   for (float i = 0.02; i < 0.9; i += 0.11)<br>
      ...<br>
---<br>
 src/compiler/nir/nir_loop_ana<wbr>lyze.c | 4 ++--<br>
 1 file changed, 2 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/src/compiler/nir/nir_loop_an<wbr>alyze.c b/src/compiler/nir/nir_loop_an<wbr>alyze.c<br>
index 71cbe3c..a5f464a 100644<br>
--- a/src/compiler/nir/nir_loop_an<wbr>alyze.c<br>
+++ b/src/compiler/nir/nir_loop_an<wbr>alyze.c<br>
@@ -384,8 +384,8 @@ get_iteration(nir_op cond_op, nir_const_value *initial, nir_const_value *step,<br>
    case nir_op_flt:<br>
    case nir_op_feq:<br>
    case nir_op_fne: {<br>
-      int32_t initial_val = initial->f32[0];<br>
-      int32_t span = limit->f32[0] - initial_val;<br>
+      float initial_val = initial->f32[0];<br>
+      float span = limit->f32[0] - initial_val;<br>
       iter = span / step->f32[0];<br>
       break;<br>
    }<br>
<br>
</blockquote>
<br></div><div class="elided-text">
______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org" target="_blank">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/mesa-dev</a><br>
</div></blockquote></div><br></div></div></div>