mesa/src/compiler
Jason Ekstrand 25dcb8d201 nir/from_ssa: Ignore undef sources
Is a phi source is an undef, there's no point in copying it or really
caring about it at all.  We would just end up inserting a mov from an
undef to a register.  Instead, treat phi sources which point to an undef
as if the phi source doesn't exist.

This also prevents them from being included in phi webs which should
reduce the overall interference seen in the shader.  Currently, if two
phis share an undef, their phi webs are consdiered to interfere.  By
ignoring undefs we can get rid of this false interference and reduce the
size of phi webs.  Reducing the number of things being copied by the
parallel copy instructions should also free up the paralle copy
algorithm and reduce the over-all churn of movs.

Shader-db results on Haswell:

    total instructions in shared programs: 8156608 -> 8155406 (-0.01%)
    instructions in affected programs: 164838 -> 163636 (-0.73%)

Shader-db results on Skylake:

    total instructions in shared programs: 18227370 -> 18227359 (<.01%)
    instructions in affected programs: 519 -> 508 (-2.12%)
    helped: 6
    HURT: 0

Shader-db results on Tigerlake:

    total instructions in shared programs: 21167987 -> 21168025 (<.01%)
    instructions in affected programs: 23701 -> 23739 (0.16%)
    helped: 21
    HURT: 27

Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16817>
2022-08-01 22:13:24 +00:00
..
clc clc: add new feature options for intel_clc 2022-06-27 15:31:49 +00:00
glsl glsl: Remove opt_conditional_discard(). 2022-08-01 17:39:30 +00:00
isaspec isaspec: Handle patterns bigger then 64 bit 2022-06-14 12:35:39 +00:00
nir nir/from_ssa: Ignore undef sources 2022-08-01 22:13:24 +00:00
spirv spirv: Fix array length of buffers larger than INT32_MAX. 2022-07-22 17:54:28 +00:00
builtin_type_macros.h glsl: add vec5 glsl types 2022-01-18 16:10:35 +08:00
glsl_types.cpp compiler/types: Don't place members in the previous substruct's end padding 2022-06-09 22:55:37 +00:00
glsl_types.h compiler/types: Add a texture type 2021-10-16 05:49:34 +00:00
meson.build spirv: Use a single binary for gtests 2021-10-20 17:55:36 +00:00
nir_gl_types.h nir: remove gl.h include from nir headers. 2022-01-19 21:54:58 +00:00
nir_types.cpp nir/types: fix glsl_matrix_type_is_row_major() assert 2022-06-30 00:41:46 +00:00
nir_types.h nir/glsl: wrap component_slots_aligned() 2022-05-16 03:33:18 +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+ir3: Rename load_size_ir3 to load_center_rhw_ir3. 2022-07-11 16:56:05 +00:00
shader_info.h shader_info: Move subgroup_size out of cs and make it an enum 2022-07-08 22:47:22 +00:00