mesa/src
Jason Ekstrand 316206ee9e i965/vec4_live_variables: Do liveness analysis bottom-to-top
From Muchnick's Advanced Compiler Design and Implementation:

"To determine which variables are live at each point in a flowgraph, we
perform a backward data-flow analysis"

Previously, we were walking the blocks forwards and updating the livein and
then the liveout.  However, the livein calculation depends on the liveout
and the liveout depends on the successor blocks.  The net result is that it
takes one full iteration to go from liveout to livein and then another
full iteration to propagate to the predecessors.  This works out to an
O(n^2) computation where n is the number of blocks.  If we run things in
the other order, it's O(nl) where l is the maximum loop depth which is
practically bounded by 3.

In b2c6ba0c4b, we made this same change in
the FS backend to great effect.  Might as well keep it consistent and make
the same change for vec4.  Also, this took the time to run the test:

ES31-CTS.arrays_of_arrays.InteractionFunctionCalls1

from 6:49.62 to 3:31.40 on Timothy Arceri's machine.

Reviewed-by: Matt Turner <mattst88@gmail.com>
2015-06-25 16:42:20 -07:00
..
egl egl/x11: Remove duplicate call to dri2_x11_add_configs_for_visuals 2015-06-23 18:54:27 +01:00
gallium radeonsi: don't fail in si_shader_io_get_unique_index 2015-06-25 15:05:56 +02:00
gbm gbm: do not (over)link against libglapi.so 2015-06-23 17:08:05 +01:00
getopt
glsl nir: Recognize max(min(a, 1.0), 0.0) as fsat(a). 2015-06-25 02:12:32 -07:00
glx glx: Use loader_open_device() helper 2015-06-23 16:54:53 +01:00
gtest
hgl glapi/hgl: Drop extern "C" as it was added to glapi 2015-05-13 15:26:29 -04:00
loader loader: move loader_open_device out of HAVE_LIBUDEV block 2015-06-24 13:43:44 +01:00
mapi glapi: remap_helper.py: remove unused argument 'es' 2015-06-23 16:57:27 +01:00
mesa i965/vec4_live_variables: Do liveness analysis bottom-to-top 2015-06-25 16:42:20 -07:00
util util/list: add list_first/last_entry 2015-06-21 07:52:36 -04:00
Makefile.am mesa; add a dummy _mesa_error_no_memory() symbol to libglsl_util 2015-06-12 15:32:18 +01:00
SConscript