[Mesa-dev] [PATCH] radv: lower ffma in nir.

Matt Arsenault arsenm2 at gmail.com
Tue Oct 3 21:09:10 UTC 2017


> On Oct 3, 2017, at 13:58, Dave Airlie <airlied at gmail.com> wrote:
> 
> From: Dave Airlie <airlied at redhat.com>
> 
> So it appears the Vulkan SPIR-V fma opcode can be equivalent to a
> mad operation, and the fma hw opcode on AMD hw is issued like a double
> opcode so is slower. Also the radeonsi stack does this.
> 
> This appears to improve performance on a number of games from Feral,
> and thanks to Feral for noticing the problem.
> 
> Signed-off-by: Dave Airlie <airlied at redhat.com>
> ---
> src/amd/vulkan/radv_shader.c | 1 +
> 1 file changed, 1 insertion(+)
> 
> diff --git a/src/amd/vulkan/radv_shader.c b/src/amd/vulkan/radv_shader.c
> index ca0ad2d..a37345b 100644
> --- a/src/amd/vulkan/radv_shader.c
> +++ b/src/amd/vulkan/radv_shader.c
> @@ -64,6 +64,7 @@ static const struct nir_shader_compiler_options nir_options = {
> 	.lower_unpack_unorm_4x8 = true,
> 	.lower_extract_byte = true,
> 	.lower_extract_word = true,
> +	.lower_ffma = true,
> 	.max_unroll_iterations = 32
> };
> 
> -- 
> 2.9.5
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev

If it doesn’t matter this should emit llvm.fmuladd. The backend decides what’s best to do based on the specific target whether it’s an FMA or MAD.



More information about the mesa-dev mailing list