i965/fs: Allow constant propagation between different types
authorJason Ekstrand <jason.ekstrand@intel.com>
Thu, 16 Oct 2014 18:45:44 +0000 (11:45 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Tue, 13 Jan 2015 21:24:52 +0000 (13:24 -0800)
commit3a5c7e47fdcfb3e322c0756e960cbcf8403e4230
treea81c373f72b12df316e40ce1644394b3c3e01363
parent610c7486c24686429257d63403e275d56d7100b5
i965/fs: Allow constant propagation between different types

This will be needed for NIR because it is typeless and treats all constants
as uint32 values and reinterprets them when they are used later.  This
commit allows those values to be properly propagated.

Also, this helps some synmark shaders because it allows us to copy
propagate a 0x00000000UD into a 0.0F in a load_payload, which then lets us
combine 4 load_payloads.

instructions in affected programs:     2288 -> 2144 (-6.29%)

Reviewed-by: Matt Turner <mattst88@gmail.com>
src/mesa/drivers/dri/i965/brw_fs_copy_propagation.cpp