radeonsi: reload PS inputs with direct indexing at each use (v2)
authorMarek Olšák <marek.olsak@amd.com>
Tue, 13 Sep 2016 15:33:23 +0000 (17:33 +0200)
committerMarek Olšák <marek.olsak@amd.com>
Wed, 14 Sep 2016 10:33:00 +0000 (12:33 +0200)
commitab29788250a705eb0dd517cb3d38f37f944eb8ad
tree5b14ecf4f70cc117e4c8e6b47c8c0209a7f4559d
parent007b512f9d05875b0dda956230fd3882dfea30af
radeonsi: reload PS inputs with direct indexing at each use (v2)

The LLVM compiler can CSE interp intrinsics thanks to
LLVMReadNoneAttribute.

26011 shaders in 14651 tests
Totals:
SGPRS: 1146340 -> 1132676 (-1.19 %)
VGPRS: 727371 -> 711730 (-2.15 %)
Spilled SGPRs: 2218 -> 2078 (-6.31 %)
Spilled VGPRs: 369 -> 369 (0.00 %)
Scratch VGPRs: 1344 -> 1344 (0.00 %) dwords per thread
Code Size: 35841268 -> 36009732 (0.47 %) bytes
LDS: 767 -> 767 (0.00 %) blocks
Max Waves: 222559 -> 224779 (1.00 %)
Wait states: 0 -> 0 (0.00 %)

v2: don't call load_input for fragment shaders in emit_declaration

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
src/gallium/drivers/radeon/radeon_llvm.h
src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
src/gallium/drivers/radeonsi/si_shader.c