Module: Mesa
Branch: main
Commit: 23bbf3932bbaaec1af4f253c7e0f96ad5f1875d8
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=23bbf3932bbaaec1af4f253c7e0f96ad5f1875d8

Author: Ian Romanick <[email protected]>
Date:   Wed Aug 19 13:35:14 2020 -0700

nir/algebraic: Mark some more comparison reductions exact

Reviewed-by: Rhys Perry <[email protected]>

All Haswell and later Intel platforms had similar results. (Tiger Lake shown)
total instructions in shared programs: 21049056 -> 21048939 (<.01%)
instructions in affected programs: 4716 -> 4599 (-2.48%)
helped: 39
HURT: 0
helped stats (abs) min: 1 max: 6 x̄: 3.00 x̃: 3
helped stats (rel) min: 0.99% max: 5.43% x̄: 2.80% x̃: 2.51%
95% mean confidence interval for instructions value: -3.46 -2.54
95% mean confidence interval for instructions %-change: -3.22% -2.38%
Instructions are helped.

total cycles in shared programs: 855141411 -> 855141159 (<.01%)
cycles in affected programs: 54491 -> 54239 (-0.46%)
helped: 28
HURT: 5
helped stats (abs) min: 2 max: 34 x̄: 12.82 x̃: 12
helped stats (rel) min: 0.06% max: 2.73% x̄: 0.94% x̃: 0.75%
HURT stats (abs)   min: 2 max: 52 x̄: 21.40 x̃: 6
HURT stats (rel)   min: 0.11% max: 2.46% x̄: 0.90% x̃: 0.56%
95% mean confidence interval for cycles value: -13.72 -1.55
95% mean confidence interval for cycles %-change: -1.01% -0.31%
Cycles are helped.

Tiger Lake
Instructions in all programs: 160902191 -> 160899554 (-0.0%)
SENDs in all programs: 6812435 -> 6812435 (+0.0%)
Loops in all programs: 38225 -> 38225 (+0.0%)
Cycles in all programs: 7428581420 -> 7428555881 (-0.0%)
Spills in all programs: 192582 -> 192582 (+0.0%)
Fills in all programs: 304539 -> 304539 (+0.0%)

A lot of fragment shaders in Shadow of the Tomb Raider were helped, and
a bunch of vertex shaders in Octopath Traveler were hurt.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10012>

---

 src/compiler/nir/nir_opt_algebraic.py | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/compiler/nir/nir_opt_algebraic.py 
b/src/compiler/nir/nir_opt_algebraic.py
index 01379706b5d..639e44509f1 100644
--- a/src/compiler/nir/nir_opt_algebraic.py
+++ b/src/compiler/nir/nir_opt_algebraic.py
@@ -846,12 +846,17 @@ optimizations.extend([
 
    # These patterns can result when (a < b || a < c) => (a < min(b, c))
    # transformations occur before constant propagation and loop-unrolling.
-   (('~flt', a, ('fmax', b, a)), ('flt', a, b)),
-   (('~flt', ('fmin', a, b), a), ('flt', b, a)),
+   #
+   # The flt versions are exact.  If isnan(a), the original pattern is
+   # trivially false, and the replacements are false too.  If isnan(b):
+   #
+   #    a < fmax(NaN, a) => a < a => false vs a < NaN => false
+   (('flt', a, ('fmax', b, a)), ('flt', a, b)),
+   (('flt', ('fmin', a, b), a), ('flt', b, a)),
    (('~fge', a, ('fmin', b, a)), True),
    (('~fge', ('fmax', a, b), a), True),
-   (('~flt', a, ('fmin', b, a)), False),
-   (('~flt', ('fmax', a, b), a), False),
+   (('flt', a, ('fmin', b, a)), False),
+   (('flt', ('fmax', a, b), a), False),
    (('~fge', a, ('fmax', b, a)), ('fge', a, b)),
    (('~fge', ('fmin', a, b), a), ('fge', b, a)),
 

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to