radeon/llvm: Use alloca instructions for larger arrays
authorTom Stellard <thomas.stellard@amd.com>
Tue, 17 May 2016 18:10:51 +0000 (18:10 +0000)
committerTom Stellard <thomas.stellard@amd.com>
Wed, 6 Jul 2016 19:47:38 +0000 (19:47 +0000)
commit513fccdfb68e6a71180e21827f071617c93fd09b
tree8534e8e42e1c0fb01c813f087056aef7338417b1
parent02873a7b0c2cef5278f97b85d28fc578eb1de42f
radeon/llvm: Use alloca instructions for larger arrays

We were storing arrays in vectors, which was leading to some really bad
spill code for large arrays.  allocas instructions are a better fit for
arrays and LLVM optimizations are more geared toward dealing with
allocas instead of vectors.

For arrays that have 16 or less 32-bit elements, we will continue to use
vectors, because this will force LLVM to store them in registers and
use indirect registers, which is usually faster for small arrays.

In the future we should use allocas for all arrays and teach LLVM
how to store allocas in registers.

This fixes the piglit test:

spec/glsl-1.50/execution/geometry/max-input-component

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/drivers/radeon/radeon_llvm.h
src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c