<p dir="ltr">Hey Timothy,</p>
<p dir="ltr">Thanks for working on this!  Looks like you're making pretty good progress.  I'm going to try and give the series a hard look some time next week.</p>
<div class="gmail_extra"><br><div class="gmail_quote">On Aug 26, 2016 11:03 PM, "Timothy Arceri" <<a href="mailto:timothy.arceri@collabora.com">timothy.arceri@collabora.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This series does the equivalent of the simple unroll in GLSL IR. The<br>
main difference is that currently it unrolls everything with an<br>
iteration count < 32, the GLSL IR pass also tries to limit unrolling<br>
based on the number of nodes it contains but this seemed a little simplistic<br>
so I have left this out for now.<br>
<br>
I'm still working on the complex unroll equivalent but hacking the cf in<br>
NIR is not much fun so I thought I'd send the series as is for now to get<br>
some feedback. I guess it also my be useful for Vulkan as is.<br>
<br>
This series works on ssa defs so for now it's only enabled for Gen8+.<br>
<br>
Shader-db results for BDW:<br>
<br>
total instructions in shared programs: 8527200 -> 8526827 (-0.00%)<br>
instructions in affected programs: 50339 -> 49966 (-0.74%)<br>
helped: 103<br>
HURT: 89<br>
<br>
total cycles in shared programs: 70789034 -> 70756662 (-0.05%)<br>
cycles in affected programs: 3273418 -> 3241046 (-0.99%)<br>
helped: 1027<br>
HURT: 864<br>
<br>
total loops in shared programs: 2069 -> 1819 (-12.08%)<br>
loops in affected programs: 568 -> 318 (-44.01%)<br>
helped: 522<br>
HURT: 280<br>
<br>
total spills in shared programs: 2212 -> 2212 (0.00%)<br>
spills in affected programs: 0 -> 0<br>
helped: 0<br>
HURT: 0<br>
<br>
total fills in shared programs: 1894 -> 1894 (0.00%)<br>
fills in affected programs: 0 -> 0<br>
helped: 0<br>
HURT: 0<br>
<br>
LOST:   9<br>
GAINED: 0<br>
<br>
<br>
Almost all of the HURT programs with increased loop counts are from<br>
planeshift and basically contain an if () break; a equivalent of complex<br>
unroll should fix this up.<br>
<br>
As for the helped loop counts I'm not entirely sure (haven't checked) why<br>
the GLSL IR pass is not unrolling them as the ones I've looked at do not<br>
seem like they should be skipped and seem to produce acceptable output in<br>
NIR.<br>
<br>
______________________________<wbr>_________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">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>
</blockquote></div></div>