intel/nir: Combine store_derefs after vectorizing IO
authorCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Fri, 8 Mar 2019 19:50:47 +0000 (11:50 -0800)
committerCaio Marcelo de Oliveira Filho <caio.oliveira@intel.com>
Wed, 13 Mar 2019 15:39:16 +0000 (08:39 -0700)
Shader-db results for skl:

    total instructions in shared programs: 15232903 -> 15224781 (-0.05%)
    instructions in affected programs: 61246 -> 53124 (-13.26%)
    helped: 221
    HURT: 0

    total cycles in shared programs: 371440470 -> 371398018 (-0.01%)
    cycles in affected programs: 281363 -> 238911 (-15.09%)
    helped: 221
    HURT: 0

Results for bdw are very similar.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/intel/compiler/brw_nir.c

index 23005b003747ee2f39e9fab6f6533fd10b5bd632..1b99a3b23168deb150905e6cc3a444cdd1580810 100644 (file)
@@ -791,6 +791,7 @@ brw_nir_link_shaders(const struct brw_compiler *compiler,
    }
 
    NIR_PASS_V(*producer, nir_lower_io_to_vector, nir_var_shader_out);
+   NIR_PASS_V(*producer, nir_opt_combine_stores, nir_var_shader_out);
    NIR_PASS_V(*consumer, nir_lower_io_to_vector, nir_var_shader_in);
 
    if ((*producer)->info.stage != MESA_SHADER_TESS_CTRL) {