mesa/src
Jason Ekstrand 88a2a2e053 nir/gcm: Add global value numbering support
Unlike the current CSE pass, global value numbering is capable of detecting
common values even if one does not dominate the other.  For instance, in
you have

if (...) {
   ssa_1 = ssa_0 + 7;
   /* use ssa_1 */
} else {
   ssa_2 = ssa_0 + 7;
   /* use ssa_2 */
}

Global value numbering doesn't care about dominance relationships so it
figures out that ssa_1 and ssa_2 are the same and converts this to

if (...) {
   ssa_1 = ssa_0 + 7;
   /* use ssa_1 */
} else {
   /* use ssa_1 */
}

Obviously, we just broke SSA form which is bad.  Global code motion,
however, will repair this for us by turning this into

ssa_1 = ssa_0 + 7;
if (...) {
   /* use ssa_1 */
} else {
   /* use ssa_1 */
}

This intended to eventually mostly replace CSE.  However, conventional CSE
may still be useful because it's less of a scorched-earth approach and
doesn't require GCM.  This makes it a bit more appropriate for use as a
clean-up in a late optimization run.

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2016-09-08 20:53:01 -07:00
..
amd amd/addrlib: move addrlib from amdgpu winsys to common code 2016-09-06 10:06:33 +10:00
compiler nir/gcm: Add global value numbering support 2016-09-08 20:53:01 -07:00
egl egl: Fix up indentation on previous commit 2016-09-08 13:21:27 -04:00
gallium r300g: Set R300_VAP_CNTL on RSxxx to avoid triangle flickering 2016-09-09 13:30:47 +10:00
gbm gbm: wire up fence extension 2016-09-07 11:54:00 -04:00
getopt Introduce .editorconfig 2016-08-31 17:06:54 -07:00
glx glx/glvnd: list the strcmp arguments in correct order 2016-09-05 11:59:07 +01:00
gtest Introduce .editorconfig 2016-08-31 17:06:54 -07:00
hgl Introduce .editorconfig 2016-08-31 17:06:54 -07:00
intel aubinator: only use program_invocation_short_name with glibc/cygwin 2016-09-08 18:37:02 +01:00
loader loader/dri3: Always use at least two back buffers 2016-09-06 13:04:48 +09:00
mapi mapi: add gl32.h to the list of GLES3 headers for installation 2016-09-06 22:45:44 -04:00
mesa gallium: remove PIPE_BIND_TRANSFER_READ/WRITE 2016-09-08 22:51:33 +02:00
util util: (trivial) add <stdint.h> include to slab.c 2016-09-06 19:47:14 +02:00
Makefile.am radeonsi: move sid.h/r600d_common.h to a common place. 2016-09-06 10:05:13 +10:00
SConscript scons: put the generated git_sha1.h file in top-level src/ directory 2016-06-17 10:33:00 -06:00