From 335193107aea7f4ddaa2d91678eaf1d4bfd607d3 Mon Sep 17 00:00:00 2001 From: Kenneth Graunke Date: Fri, 29 Apr 2016 21:12:15 -0700 Subject: [PATCH] i965: Copy propagate before doing variable index lowering. The scalar backend currently doesn't support variable indexing on temporary arrays, but it does support it on uniform arrays, and some stages support it for input arrays. Make sure these are propagated through before exploding indirects into piles of if-ladders unnecessarily. On Broadwell, no instruction count change in shader-db. total cycles in shared programs: 80675652 -> 80674928 (-0.00%) cycles in affected programs: 649972 -> 649248 (-0.11%) helped: 386 HURT: 165 This will help avoid code quality regressions in a future commit. Cc: mesa-stable@lists.freedesktop.org Signed-off-by: Kenneth Graunke Reviewed-by: Timothy Arceri (cherry picked from commit f7741c521119ce147215d94a4c238e84fc8b1130) --- src/mesa/drivers/dri/i965/brw_link.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mesa/drivers/dri/i965/brw_link.cpp b/src/mesa/drivers/dri/i965/brw_link.cpp index 16bfbaa8d7e..8329f992fb9 100644 --- a/src/mesa/drivers/dri/i965/brw_link.cpp +++ b/src/mesa/drivers/dri/i965/brw_link.cpp @@ -130,6 +130,8 @@ process_glsl_ir(gl_shader_stage stage, lower_noise(shader->ir); lower_quadop_vector(shader->ir, false); + do_copy_propagation(shader->ir); + bool lowered_variable_indexing = lower_variable_index_to_cond_assign((gl_shader_stage)stage, shader->ir,