i965/fs: Unrestrict constant propagation into integer multiply.
authorMatt Turner <mattst88@gmail.com>
Fri, 15 May 2015 05:23:22 +0000 (22:23 -0700)
committerMatt Turner <mattst88@gmail.com>
Mon, 18 May 2015 17:11:36 +0000 (10:11 -0700)
commit81deefc45ba7b7d3b2b5e7ccf9e1680df6e31e3a
tree7c09baa4660f8379d6084a03d7cac6c2accaff3b
parent1e4e17fbd9296cc5064aabdb351a894d10190cb6
i965/fs: Unrestrict constant propagation into integer multiply.

Gen8+'s MUL instruction doesn't ignore the high 16-bits of one source
like on earlier platforms, so we can constant propagate into it without
worry. Integer multiplies (not into the accumulator, which is done for
imul_high) are lowered in lower_integer_multiplication(), so it's safe
there as well.

On Broadwell, fragment shaders only:
total instructions in shared programs: 4377769 -> 4377451 (-0.01%)
instructions in affected programs:     48064 -> 47746 (-0.66%)
helped:                                156

On Broadwell, vertex shaders only:
total instructions in shared programs: 2858885 -> 2856313 (-0.09%)
instructions in affected programs:     26380 -> 23808 (-9.75%)
helped:                                134

On Broadwell, vertex shaders only (with INTEL_USE_NIR=1):
total instructions in shared programs: 2911688 -> 2865984 (-1.57%)
instructions in affected programs:     1421715 -> 1376011 (-3.21%)
helped:                                6186

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp