nir: add loop unroll support for wrapper loops
authorTimothy Arceri <tarceri@itsqueeze.com>
Sat, 7 Jul 2018 07:56:26 +0000 (17:56 +1000)
committerTimothy Arceri <tarceri@itsqueeze.com>
Wed, 29 Aug 2018 06:02:05 +0000 (16:02 +1000)
commit5db981952ad65010dd140074ca15d4ee3d0686cc
treee7af83c96e4087a670e49a196051d3a22eca3faa
parent0f450b57a1c056043952d24f97348eb2fc8b4ba7
nir: add loop unroll support for wrapper loops

This adds support for unrolling the classic

    do {
        // ...
    } while (false)

that is used to wrap multi-line macros. GLSL IR also wraps switch
statements in a loop like this.

shader-db results IVB:

total loops in shared programs: 2515 -> 2512 (-0.12%)
loops in affected programs: 33 -> 30 (-9.09%)
helped: 3
HURT: 0

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/compiler/nir/nir_opt_loop_unroll.c