[Mesa-dev] [PATCH] nir/remove_phis: handle trivial back-edges

Matt Turner mattst88 at gmail.com
Thu May 21 22:24:17 PDT 2015


On Thu, May 21, 2015 at 5:07 PM, Connor Abbott <cwabbott0 at gmail.com> wrote:
> Some loops may have phi nodes that look like:
>
> foo = ...
> loop {
>     bar = phi(foo, bar)
>     ...
> }
>
> in which case we can remove the phi node and replace all uses of 'bar'
> with 'foo'. In particular, there are some L4D2 vertex shaders with loops
> that, after optimization, look like:
>
>         /* succs: block_1 */
>         loop {
>                 block block_1:
>                 /* preds: block_0 block_4 */
>                 vec1 ssa_2195 = phi block_0: ssa_2136, block_4: ssa_994
>                 vec1 ssa_7321 = phi block_0: ssa_8195, block_4: ssa_7321
>                 vec1 ssa_7324 = phi block_0: ssa_8198, block_4: ssa_7324
>                 vec1 ssa_7327 = phi block_0: ssa_8174, block_4: ssa_7327
>                 vec1 ssa_8139 = intrinsic load_uniform () () (232)
>                 vec1 ssa_588 = ige ssa_2195, ssa_8139
>                 /* succs: block_2 block_3 */
>                 if ssa_588 {
>                         block block_2:
>                         /* preds: block_1 */
>                         break
>                         /* succs: block_5 */
>                 } else {
>                         block block_3:
>                         /* preds: block_1 */
>                         /* succs: block_4 */
>                 }
>                 block block_4:
>                 /* preds: block_3 */
>                 vec1 ssa_994 = iadd ssa_2195, ssa_2150
>                 /* succs: block_1 */
>         }
>
> where after removing the second, third, and fourth phi nodes, the loop
> becomes entirely dead, and this patch combined with my nir-dead-cf-v4
> branch will cause the loop to be deleted entirely.
>
> No piglit regressions.
>
> Signed-off-by: Connor Abbott <cwabbott0 at gmail.com>

On top of the first 13-patches (on BDW):

instructions in affected programs:     5824 -> 5664 (-2.75%)
helped:                                32

(to save Jason from rerunning it tomorrow)


More information about the mesa-dev mailing list