ac/nir: rewrite shared variable handling (v2)
authorConnor Abbott <cwabbott0@gmail.com>
Mon, 26 Jun 2017 22:50:07 +0000 (15:50 -0700)
committerConnor Abbott <cwabbott0@gmail.com>
Mon, 17 Jul 2017 21:16:03 +0000 (14:16 -0700)
commit91dd2ca99fee79e110d22f3a238a70a4af789075
treea8ae1fcf9d17071957a02e7ef112668c8b83a0fa
parent7947d05f840cfbb9b162a279d6eccc9416217e68
ac/nir: rewrite shared variable handling (v2)

Translate the NIR variables directly to LLVM instead of lowering to a
TGSI-style giant array of vec4's and then back to a variable. This
should fix indirect dereferences, make shared variables more tightly
packed, and make LLVM's alias analysis more precise. This should fix an
upcoming Feral title, which has a compute shader that was failing to
compile because the extra padding made us run out of LDS space.

v2: Combine the previous two patches into one, only use this for shared
variables for now until LLVM becomes smarter.

Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Tested-by: Alex Smith <asmith@feralinteractive.com>
src/amd/common/ac_nir_to_llvm.c