lima/ppir: improve handling for successors in other blocks
authorErico Nunes <nunes.erico@gmail.com>
Sun, 10 May 2020 14:08:13 +0000 (16:08 +0200)
committerErico Nunes <nunes.erico@gmail.com>
Sat, 16 May 2020 15:23:58 +0000 (17:23 +0200)
commit92611e21c19b35d1e5c9091614b2659d789558e2
treefb0d0ac9655ef2cbe1511300afa18537e4715caa
parent96c1d5f629b3e45958e5ee41d7d8b34e52ae247d
lima/ppir: improve handling for successors in other blocks

ppir doesn't register successors in other blocks, and causes
ppir_node_has_single_succ to be unreliable as it might return true for
nodes with successors in other blocks.
This is bad for optimization passes that try to pipeline registers or
avoid insertion of movs, as that can generally only be done for nodes
with a single user.
As of now, ppir can't just start adding successors in other blocks as
that breaks the scheduling code.
So this patch is a little hacky but enables pipelining optimizations
during lowering. It can hopefully be removed during future scheduler
rework.

Signed-off-by: Erico Nunes <nunes.erico@gmail.com>
Reviewed-by: Vasily Khoruzhick <anarsoul@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4975>
src/gallium/drivers/lima/ir/pp/lower.c
src/gallium/drivers/lima/ir/pp/node.c
src/gallium/drivers/lima/ir/pp/ppir.h