Mesa (master): nir: fix loop iteration count calculation for floats
Timothy Arceri
tarceri at kemper.freedesktop.org
Wed Jan 4 03:48:45 UTC 2017
Module: Mesa
Branch: master
Commit: 4b7dfd881296a542a0c08a12c27f643dabd7280c
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4b7dfd881296a542a0c08a12c27f643dabd7280c
Author: Timothy Arceri <timothy.arceri at collabora.com>
Date: Tue Jan 3 12:03:54 2017 +1100
nir: fix loop iteration count calculation for floats
Fixes performance regression in SynMark PSPom caused by loops with float
counters not always unrolling.
For example:
for (float i = 0.02; i < 0.9; i += 0.11)
...
Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>
---
src/compiler/nir/nir_loop_analyze.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/compiler/nir/nir_loop_analyze.c b/src/compiler/nir/nir_loop_analyze.c
index 71cbe3c..a5f464a 100644
--- a/src/compiler/nir/nir_loop_analyze.c
+++ b/src/compiler/nir/nir_loop_analyze.c
@@ -384,8 +384,8 @@ get_iteration(nir_op cond_op, nir_const_value *initial, nir_const_value *step,
case nir_op_flt:
case nir_op_feq:
case nir_op_fne: {
- int32_t initial_val = initial->f32[0];
- int32_t span = limit->f32[0] - initial_val;
+ float initial_val = initial->f32[0];
+ float span = limit->f32[0] - initial_val;
iter = span / step->f32[0];
break;
}
More information about the mesa-commit
mailing list