nir/gcm: Delete dead instructions
authorJason Ekstrand <jason@jlekstrand.net>
Wed, 18 Jan 2017 02:38:40 +0000 (18:38 -0800)
committerMarge Bot <eric+marge@anholt.net>
Mon, 20 Apr 2020 03:46:29 +0000 (03:46 +0000)
commitd4cf2df01a1f7b77660ea849ba552fd5b2d751d6
tree755397e11d2238e0a3a49ba87cbb0871cd03e8f9
parentdca3f351e5b70afd1a0088b829f9b45617c2e538
nir/gcm: Delete dead instructions

Classically, global code motion is also a dead code pass.  However, in
the initial implementation, the decision was made to place every
instruction and let conventional DCE clean up the dead ones.  Because
any uses of a dead instruction are unreachable, we have no late block
and the dead instructions are always scheduled early.  The problem is
that, because we place the dead instruction early, it  pushes the
placement of any dependencies of the dead instruction earlier than they
may need to be placed.  In order prevent dead instructions from
affecting the placement of live ones, we need to delete them.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4636>
src/compiler/nir/nir_opt_gcm.c