[Mesa-dev] [PATCH 1/2 v2] intel/compiler: More DCE after lowering

Jason Ekstrand jason at jlekstrand.net
Tue Jul 3 20:49:22 UTC 2018


Rb

On July 3, 2018 15:31:38 "Ian Romanick" <idr at freedesktop.org> wrote:

> From: Ian Romanick <ian.d.romanick at intel.com>
>
> Some of the lowering passes, nir_lower_locals_to_regs for example, can
> cause some previously live code to be dead.  This pass in particular
> leaves a bunch of nir_instr_type_deref instructions floating around.
> This causes shader-db runs on Gen5 through Haswell to spew tons of
> messages like:
>
>    VS instruction not yet implemented by NIR->vec4
>
> UnrealEngine4/EffectsCaveDemo/239.shader_test is one shader that
> generates these messages.  Cleaning up the dead code fixes that.
>
> To verify, I did a shader-db before and after.  Even though all the
> messages are gone, the results make my brain hurt. :(
>
> Haswell
> total cycles in shared programs: 411890163 -> 411891145 (<.01%)
> cycles in affected programs: 57016 -> 57998 (1.72%)
> helped: 3
> HURT: 11
> helped stats (abs) min: 2 max: 154 x̄: 96.67 x̃: 134
> helped stats (rel) min: 0.08% max: 2.23% x̄: 1.42% x̃: 1.96%
> HURT stats (abs)   min: 18 max: 686 x̄: 115.64 x̃: 20
> HURT stats (rel)   min: 0.81% max: 7.12% x̄: 1.87% x̃: 0.93%
> 95% mean confidence interval for cycles value: -51.39 191.67
> 95% mean confidence interval for cycles %-change: -0.14% 2.46%
> Inconclusive result (value mean confidence interval includes 0).
>
> Ivy Bridge
> total cycles in shared programs: 259114802 -> 259115032 (<.01%)
> cycles in affected programs: 24034 -> 24264 (0.96%)
> helped: 1
> HURT: 9
> helped stats (abs) min: 2 max: 2 x̄: 2.00 x̃: 2
> helped stats (rel) min: 0.08% max: 0.08% x̄: 0.08% x̃: 0.08%
> HURT stats (abs)   min: 18 max: 48 x̄: 25.78 x̃: 20
> HURT stats (rel)   min: 0.80% max: 1.94% x̄: 1.08% x̃: 0.80%
> 95% mean confidence interval for cycles value: 12.42 33.58
> 95% mean confidence interval for cycles %-change: 0.54% 1.38%
> Cycles are HURT.
>
> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
> Fixes: 5a02ffb733e nir: Rework lower_locals_to_regs to use deref instructions
> Cc: Jason Ekstrand <jason at jlekstrand.net>
> ---
>
> This patch replaces the previous patch 1.  With this in place, the
> change to vec4_visitor::nir_emit_instr is no longer needed.
>
> src/intel/compiler/brw_nir.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/src/intel/compiler/brw_nir.c b/src/intel/compiler/brw_nir.c
> index f2553519fac..74b39ad80a2 100644
> --- a/src/intel/compiler/brw_nir.c
> +++ b/src/intel/compiler/brw_nir.c
> @@ -793,6 +793,8 @@ brw_postprocess_nir(nir_shader *nir, const struct 
> brw_compiler *compiler,
>       OPT(nir_lower_vec_to_movs);
>    }
>
> +   OPT(nir_opt_dce);
> +
>    /* This is the last pass we run before we start emitting stuff.  It
>     * determines when we need to insert boolean resolves on Gen <= 5.  We
>     * run it last because it stashes data in instr->pass_flags and we don't
> --
> 2.14.4





More information about the mesa-dev mailing list