lima/ppir: split ppir_op_undef into undef and dummy again
authorErico Nunes <nunes.erico@gmail.com>
Tue, 21 Jan 2020 23:42:14 +0000 (00:42 +0100)
committerErico Nunes <nunes.erico@gmail.com>
Sat, 25 Jan 2020 13:48:55 +0000 (14:48 +0100)
commitab36523ae7c4abe3fa55c43e9c5e63b157aa7981
tree8a9c74cd1b5bd2ab0bd7127ee7321df21e0d1d72
parent4ca3de06ec35e5f72827b0cc61a4119e53500681
lima/ppir: split ppir_op_undef into undef and dummy again

Those were renamed/merged some time ago but it turns out that
ppir_op_undef can't be shared.
It was being used for undefined ssa operations and for read-before-write
operations that may happen to e.g. uninitialized registers (non-ssa)
inside a loop.
We really don't want to reserve a register for the undef ssa case, but
we must reserve and allocate register for the unitialized register case
because when it happens inside a loop it may need to hold its value
across iterations.

This dummy node might be eliminated with a code refactor in ppir in case
we are able to emit the write and allocate the ppir_reg before we emit
the read. But a major refactor we need this to keep this code to avoid
apparent regressions with the new liveness analysis implementation.

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/3502>
src/gallium/drivers/lima/ir/pp/nir.c
src/gallium/drivers/lima/ir/pp/node.c
src/gallium/drivers/lima/ir/pp/ppir.h