mesa/src
Francisco Jerez 4d1959e693 intel/cfg: Represent divergent control flow paths caused by non-uniform loop execution.
This addresses a long-standing back-end compiler bug that could lead
to cross-channel data corruption in loops executed non-uniformly.  In
some cases live variables extending through a loop divergence point
(e.g. a non-uniform break) into a convergence point (e.g. the end of
the loop) wouldn't be considered live along all physical control flow
paths the SIMD thread could possibly have taken in between due to some
channels remaining in the loop for additional iterations.

This patch fixes the problem by extending the CFG with physical edges
that don't exist in the idealized non-vectorized program, but
represent valid control flow paths the SIMD EU may take due to the
divergence of logical threads.  This makes sense because the i965 IR
is explicitly SIMD, and it's not uncommon for instructions to have an
influence on neighboring channels (e.g. a force_writemask_all header
setup), so the behavior of the SIMD thread as a whole needs to be
considered.

No changes in shader-db.

Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
2017-12-07 18:27:05 -08:00
..
amd radv: use a faster version for nir_op_pack_half_2x16 2017-12-07 17:21:50 +01:00
broadcom meson: add dep_thread to every lib that includes threads.h 2017-12-07 17:29:42 +00:00
compiler mesa/spirv: move and rename nir_spirv_supported_capabilities 2017-12-07 17:15:11 +01:00
egl meson: fix underlinkage without dri3 2017-12-04 13:15:02 -08:00
gallium meson: Add lmsensors to gallium libgl-xlib target. 2017-12-07 10:20:58 -08:00
gbm meson: add dep_thread to every lib that includes threads.h 2017-12-07 17:29:42 +00:00
getopt
glx meson: fix underlinkage without dri3 2017-12-04 13:15:02 -08:00
gtest meson: convert gtest to an internal dependency 2017-10-03 10:02:08 -07:00
hgl glapi/hgl: remove the final user of _glapi_check_table() 2016-10-06 15:03:46 +01:00
intel intel/cfg: Represent divergent control flow paths caused by non-uniform loop execution. 2017-12-07 18:27:05 -08:00
loader meson: add dep_thread to every lib that includes threads.h 2017-12-07 17:29:42 +00:00
mapi meson: fix generated source inclusion on macOS and Windows 2017-11-30 15:09:21 +00:00
mesa mesa/spirv: move and rename nir_spirv_supported_capabilities 2017-12-07 17:15:11 +01:00
util meson: add dep_thread to every lib that includes threads.h 2017-12-07 17:29:42 +00:00
vulkan vulkan/wsi: Initialize individual WSI interfaces in wsi_device_init 2017-12-04 10:04:19 -08:00
git_sha1.h.in meson: Build i965 and dri stack 2017-10-09 13:42:44 -07:00
Makefile.am wayland-drm: static inline wayland_drm_buffer_get 2017-11-08 14:40:12 +00:00
meson.build meson: build r600 driver 2017-11-28 14:06:33 -08:00
SConscript buildsys: move file regeneration logic to the script itself 2017-10-27 13:38:37 +01:00