i965: Lower min/max after optimization on Gen4/5.
authorMatt Turner <mattst88@gmail.com>
Thu, 11 Feb 2016 20:27:02 +0000 (12:27 -0800)
committerMatt Turner <mattst88@gmail.com>
Wed, 17 Feb 2016 20:35:27 +0000 (12:35 -0800)
commit2f2c00c7279e7c43e520e21de1781f8cec263e92
treed2a1d95b593bce622ba2a2f8c9c6d57196fa120e
parent378d98f87e8048664309a66cb93ecf582e40d837
i965: Lower min/max after optimization on Gen4/5.

Gen4/5's SEL instruction cannot use conditional modifiers, so min/max
are implemented as CMP + SEL. Handling that after optimization lets us
CSE more.

On Ironlake:

   total instructions in shared programs: 6426035 -> 6422753 (-0.05%)
   instructions in affected programs: 326604 -> 323322 (-1.00%)
   helped: 1411

   total cycles in shared programs: 129184700 -> 129101586 (-0.06%)
   cycles in affected programs: 18950290 -> 18867176 (-0.44%)
   helped: 2419
   HURT: 328

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
src/mesa/drivers/dri/i965/brw_fs.cpp
src/mesa/drivers/dri/i965/brw_fs.h
src/mesa/drivers/dri/i965/brw_fs_builder.h
src/mesa/drivers/dri/i965/brw_fs_nir.cpp
src/mesa/drivers/dri/i965/brw_vec4.cpp
src/mesa/drivers/dri/i965/brw_vec4.h
src/mesa/drivers/dri/i965/brw_vec4_builder.h
src/mesa/drivers/dri/i965/brw_vec4_visitor.cpp