diff options
author | Marek Olšák <marek.olsak@amd.com> | 2020-09-16 21:48:18 -0400 |
---|---|---|
committer | Marge Bot <eric+marge@anholt.net> | 2020-09-24 12:29:11 +0000 |
commit | 771aad30276397d6388c147b93c9e298fe30b72b (patch) | |
tree | 6969ec76bf633e7b7d3b346b3281fa098d8a0e86 /src/gallium/drivers | |
parent | 21174dedec43df155309653764d76b4acd4d5f86 (diff) | |
download | external_mesa3d-771aad30276397d6388c147b93c9e298fe30b72b.tar.gz external_mesa3d-771aad30276397d6388c147b93c9e298fe30b72b.tar.bz2 external_mesa3d-771aad30276397d6388c147b93c9e298fe30b72b.zip |
nir: split lower_ffma into lower_ffma16/32/64
AMD wants different behavior for each bit size
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6756>
Diffstat (limited to 'src/gallium/drivers')
-rw-r--r-- | src/gallium/drivers/lima/lima_program.c | 8 | ||||
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_screen.c | 4 | ||||
-rw-r--r-- | src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp | 4 | ||||
-rw-r--r-- | src/gallium/drivers/radeonsi/si_get.c | 4 | ||||
-rw-r--r-- | src/gallium/drivers/vc4/vc4_program.c | 4 | ||||
-rw-r--r-- | src/gallium/drivers/zink/zink_compiler.c | 4 |
6 files changed, 21 insertions, 7 deletions
diff --git a/src/gallium/drivers/lima/lima_program.c b/src/gallium/drivers/lima/lima_program.c index 87029d3140a..30a3f527181 100644 --- a/src/gallium/drivers/lima/lima_program.c +++ b/src/gallium/drivers/lima/lima_program.c @@ -42,7 +42,9 @@ #include "ir/lima_ir.h" static const nir_shader_compiler_options vs_nir_options = { - .lower_ffma = true, + .lower_ffma16 = true, + .lower_ffma32 = true, + .lower_ffma64 = true, .lower_fpow = true, .lower_ffract = true, .lower_fdiv = true, @@ -60,7 +62,9 @@ static const nir_shader_compiler_options vs_nir_options = { }; static const nir_shader_compiler_options fs_nir_options = { - .lower_ffma = true, + .lower_ffma16 = true, + .lower_ffma32 = true, + .lower_ffma64 = true, .lower_fpow = true, .lower_fdiv = true, .lower_fmod = true, diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c index 5f05a468e3f..218d80e5c48 100644 --- a/src/gallium/drivers/llvmpipe/lp_screen.c +++ b/src/gallium/drivers/llvmpipe/lp_screen.c @@ -549,7 +549,9 @@ static const struct nir_shader_compiler_options gallivm_nir_options = { .lower_bitfield_insert_to_shifts = true, .lower_bitfield_extract_to_shifts = true, .lower_sub = true, - .lower_ffma = true, + .lower_ffma16 = true, + .lower_ffma32 = true, + .lower_ffma64 = true, .lower_fmod = true, .lower_hadd = true, .lower_add_sat = true, diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp index c5e54779ad7..64453edf19b 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp @@ -3206,7 +3206,9 @@ nvir_nir_shader_compiler_options(int chipset) { nir_shader_compiler_options op = {}; op.lower_fdiv = (chipset >= NVISA_GV100_CHIPSET); - op.lower_ffma = false; + op.lower_ffma16 = false; + op.lower_ffma32 = false; + op.lower_ffma64 = false; op.fuse_ffma16 = false; /* nir doesn't track mad vs fma */ op.fuse_ffma32 = false; /* nir doesn't track mad vs fma */ op.fuse_ffma64 = false; /* nir doesn't track mad vs fma */ diff --git a/src/gallium/drivers/radeonsi/si_get.c b/src/gallium/drivers/radeonsi/si_get.c index 1f19fdd8817..51a839056e7 100644 --- a/src/gallium/drivers/radeonsi/si_get.c +++ b/src/gallium/drivers/radeonsi/si_get.c @@ -945,7 +945,9 @@ void si_init_screen_get_functions(struct si_screen *sscreen) * Keep FMA enabled on gfx10 to test it, which helps us validate correctness * for gfx10.3 on gfx10. */ - .lower_ffma = sscreen->info.chip_class <= GFX9, + .lower_ffma16 = sscreen->info.chip_class <= GFX9, + .lower_ffma32 = sscreen->info.chip_class <= GFX9, + .lower_ffma64 = sscreen->info.chip_class <= GFX9, .fuse_ffma16 = sscreen->info.chip_class >= GFX10, .fuse_ffma32 = sscreen->info.chip_class >= GFX10, .fuse_ffma64 = sscreen->info.chip_class >= GFX10, diff --git a/src/gallium/drivers/vc4/vc4_program.c b/src/gallium/drivers/vc4/vc4_program.c index 4f2956bb735..8bffb1d3840 100644 --- a/src/gallium/drivers/vc4/vc4_program.c +++ b/src/gallium/drivers/vc4/vc4_program.c @@ -2179,7 +2179,9 @@ static const nir_shader_compiler_options nir_options = { .lower_extract_byte = true, .lower_extract_word = true, .lower_fdiv = true, - .lower_ffma = true, + .lower_ffma16 = true, + .lower_ffma32 = true, + .lower_ffma64 = true, .lower_flrp32 = true, .lower_fmod = true, .lower_fpow = true, diff --git a/src/gallium/drivers/zink/zink_compiler.c b/src/gallium/drivers/zink/zink_compiler.c index b9d1b666b14..8f0c16cb13b 100644 --- a/src/gallium/drivers/zink/zink_compiler.c +++ b/src/gallium/drivers/zink/zink_compiler.c @@ -126,7 +126,9 @@ lower_discard_if(nir_shader *shader) static const struct nir_shader_compiler_options nir_options = { .lower_all_io_to_temps = true, - .lower_ffma = true, + .lower_ffma16 = true, + .lower_ffma32 = true, + .lower_ffma64 = true, .lower_fdph = true, .lower_flrp32 = true, .lower_fpow = true, |