v3d: Restrict live intervals to the blocks reachable from any def.
authorEric Anholt <eric@anholt.net>
Tue, 5 Mar 2019 06:10:33 +0000 (22:10 -0800)
committerEric Anholt <eric@anholt.net>
Tue, 5 Mar 2019 15:36:24 +0000 (07:36 -0800)
commitc6ae666cf5a731118147bb6e88eb520140445e7a
tree91f16ef05332132cc838768db531cb4cc0d9016e
parentcf79d62f90a857c92e45f3ab6ba363b0688ce0f0
v3d: Restrict live intervals to the blocks reachable from any def.

In the backend, we often have condition codes on writes to variables, such
that there's no screening def anywhere and the previous live ranges
algorithm would conclude that the start of the range extends to the start
of the program.  However, we do know that the live range can only extend
as early as you can reach from all blocks writing to the variable.

The motivation was that, while we have a couple of hacks to try to promote
conditional writes up to being a def within the block, the exec_mask one
was broken and needed a replacement.

Based on c3c1aa5aeb92 ("intel/fs: Restrict live intervals to the subset
possibly reachable from any definition.").
src/broadcom/compiler/v3d_compiler.h
src/broadcom/compiler/vir_live_variables.c