intel/fs: Use a pair of 1-wide MOVs instead of SEL for any/all
authorJason Ekstrand <jason.ekstrand@intel.com>
Thu, 12 Oct 2017 23:17:03 +0000 (16:17 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Tue, 7 Nov 2017 18:37:52 +0000 (10:37 -0800)
commit1b8ef49f48ae3634e4903422a9d9c11864c03cb1
treebdf4089a8b67e1bf6de11093c6ccf39232f6da28
parent1f416630079f38110910ba796f70e2b81e9ddbf4
intel/fs: Use a pair of 1-wide MOVs instead of SEL for any/all

For some reason, the any/all predicates don't work properly with SIMD32.
In particular, it appears that a SEL with a QtrCtrl of 2H doesn't read
the correct subset of the flag register and you end up getting garbage
in the second half.  Work around this by using a pair of 1-wide MOVs and
scattering the result.  This fixes the any/all instructions for SIMD32.

Reviewed-by: Matt Turner <mattst88@gmail.com>
Cc: mesa-stable@lists.freedesktop.org
src/intel/compiler/brw_fs_nir.cpp