radv: enable lowering of fpow to fexp2 and flog2
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Fri, 2 Feb 2018 18:04:57 +0000 (19:04 +0100)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 22 Feb 2018 19:40:47 +0000 (20:40 +0100)
There is no fpow in hardware, so it's always lowered somewhere,
but it appears that lowering at NIR level is better. Figured while
comparing compute shaders between RadeonSI and RADV.

Polaris10:
Totals from affected shaders:
SGPRS: 18936 -> 18904 (-0.17 %)
VGPRS: 12240 -> 12220 (-0.16 %)
Spilled SGPRs: 2809 -> 2809 (0.00 %)
Code Size: 718116 -> 719848 (0.24 %) bytes
Max Waves: 1409 -> 1410 (0.07 %)

Vega10:
Totals from affected shaders:
SGPRS: 18392 -> 18392 (0.00 %)
VGPRS: 12008 -> 11920 (-0.73 %)
Spilled SGPRs: 3001 -> 2981 (-0.67 %)
Code Size: 777444 -> 778788 (0.17 %) bytes
Max Waves: 1503 -> 1504 (0.07 %)

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

index d9b8e209a99758a8f60c56458a44266c4abee4d4..171802eede75ac64b1d72b4c49bb6da8133c9d98 100644 (file)
@@ -67,6 +67,7 @@ static const struct nir_shader_compiler_options nir_options = {
        .lower_extract_byte = true,
        .lower_extract_word = true,
        .lower_ffma = true,
+       .lower_fpow = true,
        .vs_inputs_dual_locations = true,
        .max_unroll_iterations = 32
 };