mesa/src/compiler
Pavel Ondračka cb7f201288 nir: remove duplicate alu channels in nir_opt_shrink_vectors
This will clean code like:
   vec3 32 ssa_8 = frcp ssa_7.www
   vec3 32 ssa_9 = fmul ssa_7.xyz, ssa_8
into
   vec1 32 ssa_8 = frcp ssa_7.w
   vec3 32 ssa_9 = fmul ssa_7.xyz, ssa_8.xxx

This helps r300 driver because we can only do single channel for math
ops at a time, so the first version would result in three frcp
instructions. The nir_opt_shrink_vectors comments even claim the pass
should be doing this, however it actually does it only for nir_op_vecx
instructions, so extend this for generic alu instructions.

RV530 shader-db:
total instructions in shared programs: 135032 -> 133707 (-0.98%)
instructions in affected programs: 46121 -> 44796 (-2.87%)
helped: 452
HURT: 26
total temps in shared programs: 17051 -> 17033 (-0.11%)
temps in affected programs: 1509 -> 1491 (-1.19%)
helped: 91
HURT: 30

12.02->12.08 (+0.5%) fps gain in Unigine Sanctuary (n=5) with RV530

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7051
Signed-off-by: Pavel Ondračka <pavel.ondracka@gmail.com>
Reiewed-by: Gert Wollny <gert.wollny@collabora.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20213>
2023-01-03 12:32:33 +01:00
..
clc clc: fetch clang resource dir at runtime 2022-12-02 15:38:44 +00:00
glsl glsl: fixes -Werror,-Wunused-but-set-variable for clang-15 in glcpp-parse.y and glsl_parser.yy 2022-12-16 19:02:17 +00:00
isaspec isaspec: encode: handle special fieldname properties 2022-12-31 13:43:15 +00:00
nir nir: remove duplicate alu channels in nir_opt_shrink_vectors 2023-01-03 12:32:33 +01:00
spirv spirv: add support for AMD_shader_early_and_late_fragment_tests 2022-12-14 08:16:27 +00:00
builtin_type_macros.h glsl: add texture subpass variants 2022-11-10 10:21:34 +00:00
glsl_types.cpp compiler: Handle nested arrays correctly for computing CL size/alignment 2022-12-02 09:52:44 -08:00
glsl_types.h glsl: Remove the need of _MTX_INITIALIZER_NP by using simple_mtx_t/SIMPLE_MTX_INITIALIZER 2022-11-09 04:38:28 +00:00
meson.build spirv: Use a single binary for gtests 2021-10-20 17:55:36 +00:00
nir_gl_types.h mesa: #include "util/glheader.h" instead GL/gl.h in shared code 2022-11-03 16:07:31 +00:00
nir_types.cpp nir/types: Add some asserts to glsl_get_struct_field() 2022-11-01 14:48:41 +00:00
nir_types.h nir: Add a pass to lower mediump temps and shared mem. 2022-09-01 22:39:39 +00:00
shader_enums.c nir+ir3: Rename load_size_ir3 to load_center_rhw_ir3. 2022-07-11 16:56:05 +00:00
shader_enums.h nir: lower image add lower_to_fragment_mask_load_amd option 2022-12-19 09:22:16 +08:00
shader_info.h spirv: add support for AMD_shader_early_and_late_fragment_tests 2022-12-14 08:16:27 +00:00