V2: Bunch of tidy ups from feedback and things I noticed after sending the RFC.
This series does the equivalent of the simple unroll in GLSL IR. The main difference is that currently it unrolls everything with an iteration count < 32, the GLSL IR pass also tries to limit unrolling based on the number of nodes it contains but this seemed a little simplistic so I have left this out for now. I'm still working on the complex unroll equivalent but hacking the cf in NIR is not much fun so I thought I'd send the series as is for now to get some feedback. I guess it also my be useful for Vulkan as is. This series works on ssa defs so for now it's only enabled for Gen8+. Shader-db results for BDW: total instructions in shared programs: 8527200 -> 8526827 (-0.00%) instructions in affected programs: 50339 -> 49966 (-0.74%) helped: 103 HURT: 89 total cycles in shared programs: 70789034 -> 70756662 (-0.05%) cycles in affected programs: 3273418 -> 3241046 (-0.99%) helped: 1027 HURT: 864 total loops in shared programs: 2069 -> 1819 (-12.08%) loops in affected programs: 568 -> 318 (-44.01%) helped: 522 HURT: 280 total spills in shared programs: 2212 -> 2212 (0.00%) spills in affected programs: 0 -> 0 helped: 0 HURT: 0 total fills in shared programs: 1894 -> 1894 (0.00%) fills in affected programs: 0 -> 0 helped: 0 HURT: 0 LOST: 9 GAINED: 0 Almost all of the HURT programs with increased loop counts are from planeshift and basically contain an if () break; a equivalent of complex unroll should fix this up. As for the helped loop counts I'm not entirely sure (haven't checked) why the GLSL IR pass is not unrolling them as the ones I've looked at do not seem like they should be skipped and seem to produce acceptable output in NIR. I'm seeing a single regression from this series on hardware I don't own I suspect this may be cause by patch 1 but need to confirm. Test: piglit.spec.!opengl 2_0.max-samplers Status: fail Platform/arch: snb/m64, g965/m64, ilk/m64, g45/m64 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev