Mesa (master): radeonsi/nir: call nir_lower_flrp only once per shader

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Nov 15 19:35:43 UTC 2019


Module: Mesa
Branch: master
Commit: dec34e880d0ce2792ecdac18d28e3e3be4dec72f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=dec34e880d0ce2792ecdac18d28e3e3be4dec72f

Author: Marek Olšák <marek.olsak at amd.com>
Date:   Tue Nov 12 23:41:23 2019 -0500

radeonsi/nir: call nir_lower_flrp only once per shader

Reviewed-by: Timothy Arceri <tarceri at itsqueeze.com>

---

 src/gallium/drivers/radeonsi/si_shader_nir.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/gallium/drivers/radeonsi/si_shader_nir.c b/src/gallium/drivers/radeonsi/si_shader_nir.c
index c11032ba800..9a7bc54cad0 100644
--- a/src/gallium/drivers/radeonsi/si_shader_nir.c
+++ b/src/gallium/drivers/radeonsi/si_shader_nir.c
@@ -805,10 +805,6 @@ static void
 si_nir_opts(struct nir_shader *nir)
 {
 	bool progress;
-        unsigned lower_flrp =
-                (nir->options->lower_flrp16 ? 16 : 0) |
-                (nir->options->lower_flrp32 ? 32 : 0) |
-                (nir->options->lower_flrp64 ? 64 : 0);
 
 	do {
 		progress = false;
@@ -839,7 +835,12 @@ si_nir_opts(struct nir_shader *nir)
 		NIR_PASS(progress, nir, nir_opt_algebraic);
 		NIR_PASS(progress, nir, nir_opt_constant_folding);
 
-		if (lower_flrp != 0) {
+		if (!nir->info.flrp_lowered) {
+			unsigned lower_flrp =
+				(nir->options->lower_flrp16 ? 16 : 0) |
+				(nir->options->lower_flrp32 ? 32 : 0) |
+				(nir->options->lower_flrp64 ? 64 : 0);
+			assert(lower_flrp);
 			bool lower_flrp_progress = false;
 
 			NIR_PASS(lower_flrp_progress, nir, nir_lower_flrp,
@@ -855,7 +856,7 @@ si_nir_opts(struct nir_shader *nir)
 			/* Nothing should rematerialize any flrps, so we only
 			 * need to do this lowering once.
 			 */
-			lower_flrp = 0;
+			nir->info.flrp_lowered = true;
 		}
 
 		NIR_PASS(progress, nir, nir_opt_undef);




More information about the mesa-commit mailing list