nir: Only convert SSA values to regs when needed
authorCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Tue, 7 May 2019 08:49:42 +0000 (01:49 -0700)
committerCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Thu, 16 May 2019 19:23:47 +0000 (12:23 -0700)
commitded2c202d5f5da6065d4cef19d8deedae6a8c307
tree97cf64317dbe312ee06b4d71819f2111f1f4aa29
parent4b5e8eb3c8d709bd7c6d1a33a114bf4b002548f8
nir: Only convert SSA values to regs when needed

If the SSA def produced by this instruction is only in the block in
which it is defined and is not used by ifs or phis, then we don't have
a reason to convert it to a register in
nir_lower_ssa_defs_to_regs_block().

The special case for derefs is covered by the general case, so can be
removed: at this point all derefs in the block are
materialized (i.e. the whole deref chain is in the block) and derefs
are not used in phis.

v2: Fix wrong check for if_uses.  If there's such an use, the def is
    not "local_to_block".  (Jason)

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/compiler/nir/nir_from_ssa.c