intel/fs: Don't let undefined values prevent copy propagation.
authorFrancisco Jerez <currojerez@riseup.net>
Mon, 23 Oct 2017 20:47:10 +0000 (13:47 -0700)
committerFrancisco Jerez <currojerez@riseup.net>
Fri, 8 Dec 2017 02:27:04 +0000 (18:27 -0800)
commit9355116bdad6ee9914554de8e48ba271bd36a8eb
treecee4ff9bf7eb7df5fb7ea5a430280871cb4e686b
parentc3c1aa5aeb921caa2ec18c2320ceb94854e0f47c
intel/fs: Don't let undefined values prevent copy propagation.

This makes the dataflow propagation logic of the copy propagation pass
more intelligent in cases where the destination of a copy is known to
be undefined for some incoming CFG edges, building upon the
definedness information provided by the last patch.  Helps a few
programs, and avoids a handful shader-db regressions from the next
patch.

shader-db results on ILK:

  total instructions in shared programs: 6541547 -> 6541523 (-0.00%)
  instructions in affected programs: 360 -> 336 (-6.67%)
  helped: 8
  HURT: 0

  LOST:   0
  GAINED: 10

shader-db results on BDW:

  total instructions in shared programs: 8174323 -> 8173882 (-0.01%)
  instructions in affected programs: 7730 -> 7289 (-5.71%)
  helped: 5
  HURT: 2

  LOST:   0
  GAINED: 4

shader-db results on SKL:

  total instructions in shared programs: 8185669 -> 8184598 (-0.01%)
  instructions in affected programs: 10364 -> 9293 (-10.33%)
  helped: 5
  HURT: 2

  LOST:   0
  GAINED: 2

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