From: Jason Ekstrand Date: Tue, 31 Jul 2018 13:16:34 +0000 (-0700) Subject: intel/nir: Call nir_lower_io_to_scalar_early X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4434591bf56a6b0c193ef209ea9d7b9e3c95a522;p=mesa.git intel/nir: Call nir_lower_io_to_scalar_early Shader-db results on Kaby Lake: total instructions in shared programs: 15166953 -> 15073611 (-0.62%) instructions in affected programs: 2390284 -> 2296942 (-3.91%) helped: 16469 HURT: 505 total loops in shared programs: 4954 -> 4951 (-0.06%) loops in affected programs: 3 -> 0 helped: 3 HURT: 0 Reviewed-by: Timothy Arceri Reviewed-by: Kenneth Graunke --- diff --git a/src/intel/compiler/brw_nir.c b/src/intel/compiler/brw_nir.c index 29ad68fdb2a..31ffbe613ec 100644 --- a/src/intel/compiler/brw_nir.c +++ b/src/intel/compiler/brw_nir.c @@ -713,6 +713,18 @@ brw_nir_link_shaders(const struct brw_compiler *compiler, nir_validate_shader(*producer); nir_validate_shader(*consumer); + const bool p_is_scalar = + compiler->scalar_stage[(*producer)->info.stage]; + const bool c_is_scalar = + compiler->scalar_stage[(*consumer)->info.stage]; + + if (p_is_scalar && c_is_scalar) { + NIR_PASS_V(*producer, nir_lower_io_to_scalar_early, nir_var_shader_out); + NIR_PASS_V(*consumer, nir_lower_io_to_scalar_early, nir_var_shader_in); + *producer = brw_nir_optimize(*producer, compiler, p_is_scalar); + *consumer = brw_nir_optimize(*consumer, compiler, c_is_scalar); + } + NIR_PASS_V(*producer, nir_remove_dead_variables, nir_var_shader_out); NIR_PASS_V(*consumer, nir_remove_dead_variables, nir_var_shader_in); @@ -729,12 +741,7 @@ brw_nir_link_shaders(const struct brw_compiler *compiler, NIR_PASS_V(*consumer, nir_lower_indirect_derefs, brw_nir_no_indirect_mask(compiler, (*consumer)->info.stage)); - const bool p_is_scalar = - compiler->scalar_stage[(*producer)->info.stage]; *producer = brw_nir_optimize(*producer, compiler, p_is_scalar); - - const bool c_is_scalar = - compiler->scalar_stage[(*consumer)->info.stage]; *consumer = brw_nir_optimize(*consumer, compiler, c_is_scalar); } }