v3d: Stop treating exec masking specially.
authorEric Anholt <eric@anholt.net>
Tue, 5 Mar 2019 06:11:15 +0000 (22:11 -0800)
committerEric Anholt <eric@anholt.net>
Tue, 5 Mar 2019 15:36:24 +0000 (07:36 -0800)
commitfd1d22b92edbf98e2ec10c880b2703bfdb0f3b62
tree395d27c691ce1e105182ea352f6f09098687cb9a
parentc6ae666cf5a731118147bb6e88eb520140445e7a
v3d: Stop treating exec masking specially.

In our backend, the successor edges from the blocks only point to where
QPU control flow goes, not where the notional control flow goes from a
"break" or "continue" modifying the execution mask to resume writing to
some channels later.  As a result, this attempt at restricting live ranges
ended up missing the live range of a value where a conditional
break/continue was present in a loop before the later def of a variable.
The previous commit ended up fixing the problem that the flag tried to
solve.

Fixes glsl-vs-loop-continue.shader_test and/or
glsl-vs-loop-redundant-condition.shader_test based on register allocation
results.
src/broadcom/compiler/nir_to_vir.c
src/broadcom/compiler/v3d_compiler.h
src/broadcom/compiler/vir_live_variables.c