On Sat, Nov 14, 2015 at 6:59 PM, Connor Abbott <cwabbo...@gmail.com> wrote:
> Shader-db results on bdw with INTEL_DEBUG=vec4:
>
> total instructions in shared programs: 1634044 -> 1612936 (-1.29%)
> instructions in affected programs: 802502 -> 781394 (-2.63%)
> helped: 5036
> HURT: 1442
>
> total cycles in shared programs: 9397790 -> 9355382 (-0.45%)
> cycles in affected programs: 5078600 -> 5036192 (-0.84%)
> helped: 3875
> HURT: 2554
>
> LOST:   0
> GAINED: 0
>
> Most of the hurt programs seem to be because we generate extra MOV's due
> to vectorizing things. For example, in
> shaders/non-free/steam/anomaly-2/158.shader_test, this:
>
> add(8)          g116<1>.xyF     g12<4,4,1>.xyyyF g1.4<0,4,1>.xyyyF { align16 
> NoDDClr 1Q };
> add(8)          g117<1>.xyF     g12<4,4,1>.xyyyF g1.4<0,4,1>.zwwwF { align16 
> NoDDClr 1Q };
> add(8)          g116<1>.zwF     g12<4,4,1>.xxxyF -g1.4<0,4,1>.xxxyF { align16 
> NoDDChk 1Q };
> add(8)          g117<1>.zwF     g12<4,4,1>.xxxyF -g1.4<0,4,1>.zzzwF { align16 
> NoDDChk 1Q };
>
> Turns into this:
>
> add(8)          g13<1>F         g12<4,4,1>.xyxyF g1.4<0,4,1>F   { align16 1Q 
> };
> add(8)          g14<1>F         g12<4,4,1>.xyxyF -g1.4<0,4,1>F  { align16 1Q 
> };
> mov(8)          g116<1>.xyD     g13<4,4,1>.xyyyD                { align16 
> NoDDClr 1Q };
> mov(8)          g117<1>.xyD     g13<4,4,1>.zwwwD                { align16 
> NoDDClr 1Q };
> mov(8)          g116<1>.zwD     g14<4,4,1>.xxxyD                { align16 
> NoDDChk 1Q };
> mov(8)          g117<1>.zwD     g14<4,4,1>.zzzwD                { align16 
> NoDDChk 1Q };
>
> So we eliminated two add's, but then had to introduce four mov's to
> transpose the result. I don't think there's much we can do about this at
> the NIR level, unfortunately.

Given the shader-db numbers above, I think we can probably eat the
hurt programs.  Would you mind cherry-picking back onto a time when we
had GLSL IR and doing a GLSL IR vs. NIR comparison with this series?
This is one of the places we were still hurting so it would be good to
know how it changes the picture.  Not that it *really* matters at this
point...

> Signed-off-by: Connor Abbott <cwabbo...@gmail.com>
> ---
>  src/mesa/drivers/dri/i965/brw_nir.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_nir.c 
> b/src/mesa/drivers/dri/i965/brw_nir.c
> index fe5cad4..29cafe6 100644
> --- a/src/mesa/drivers/dri/i965/brw_nir.c
> +++ b/src/mesa/drivers/dri/i965/brw_nir.c
> @@ -198,6 +198,14 @@ nir_optimize(nir_shader *nir, bool is_scalar)
>        nir_validate_shader(nir);
>        progress |= nir_opt_cse(nir);
>        nir_validate_shader(nir);
> +
> +      if (!is_scalar) {
> +         progress |= nir_opt_vectorize(nir);
> +         nir_validate_shader(nir);
> +         progress |= nir_copy_prop(nir);
> +         nir_validate_shader(nir);
> +      }
> +
>        progress |= nir_opt_peephole_select(nir);
>        nir_validate_shader(nir);
>        progress |= nir_opt_algebraic(nir);
> --
> 2.4.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to