radv: call constant folding before opt algebraic
authorTimothy Arceri <tarceri@itsqueeze.com>
Thu, 2 May 2019 03:38:52 +0000 (13:38 +1000)
committerTimothy Arceri <tarceri@itsqueeze.com>
Wed, 8 May 2019 09:45:01 +0000 (19:45 +1000)
commite19a8fe033fd4c60b00b6824c83697df712a9e95
treead17549c32dfbe0bdfee11cb112321c6a60d8e24
parentecdab0dfea52d2c2c26f90330fda8c43089a6ae9
radv: call constant folding before opt algebraic

The pattern of calling opt algebraic first seems to have originated
in i965. The order in OpenGL drivers generally doesn't matter
because the GLSL IR optimisations do constant folding before
opt algebraic.

However in Vulkan drivers calling opt algebraic first can result
in missed constant folding opportunities.

vkpipeline-db results (VEGA64):

Totals from affected shaders:
SGPRS: 3160 -> 3176 (0.51 %)
VGPRS: 3588 -> 3580 (-0.22 %)
Spilled SGPRs: 52 -> 44 (-15.38 %)
Spilled VGPRs: 0 -> 0 (0.00 %)
Private memory VGPRs: 0 -> 0 (0.00 %)
Scratch size: 12 -> 12 (0.00 %) dwords per thread
Code Size: 261812 -> 261036 (-0.30 %) bytes
LDS: 7 -> 7 (0.00 %) blocks
Max Waves: 346 -> 348 (0.58 %)
Wait states: 0 -> 0 (0.00 %)

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/vulkan/radv_shader.c