From: Ian Romanick <[email protected]> Instead of lowering as (a + c(b - a)), lower as (a(1 - c) + bc). Since either a or b is 1.0, some of the multiplications drop out.
I am CC'ing people who are responsible for drivers that set lower_flrp32 as this patch will likely affect shader-db results for those drivers. No changes on any Gen6+ platform. Iron Lake total instructions in shared programs: 7745041 -> 7731595 (-0.17%) instructions in affected programs: 1647106 -> 1633660 (-0.82%) helped: 5522 HURT: 281 helped stats (abs) min: 1 max: 12 x̄: 2.53 x̃: 2 helped stats (rel) min: 0.14% max: 12.00% x̄: 1.45% x̃: 0.99% HURT stats (abs) min: 1 max: 5 x̄: 1.94 x̃: 2 HURT stats (rel) min: 0.13% max: 4.17% x̄: 0.74% x̃: 0.68% 95% mean confidence interval for instructions value: -2.35 -2.28 95% mean confidence interval for instructions %-change: -1.38% -1.31% Instructions are helped. total cycles in shared programs: 178004318 -> 177937186 (-0.04%) cycles in affected programs: 31813800 -> 31746668 (-0.21%) helped: 5420 HURT: 631 helped stats (abs) min: 2 max: 168 x̄: 13.15 x̃: 12 helped stats (rel) min: 0.01% max: 6.37% x̄: 0.67% x̃: 0.30% HURT stats (abs) min: 2 max: 328 x̄: 6.57 x̃: 4 HURT stats (rel) min: 0.01% max: 2.78% x̄: 0.16% x̃: 0.11% 95% mean confidence interval for cycles value: -11.35 -10.84 95% mean confidence interval for cycles %-change: -0.60% -0.56% Cycles are helped. GM45 total instructions in shared programs: 4777279 -> 4770160 (-0.15%) instructions in affected programs: 928555 -> 921436 (-0.77%) helped: 2902 HURT: 149 helped stats (abs) min: 1 max: 12 x̄: 2.55 x̃: 2 helped stats (rel) min: 0.14% max: 11.11% x̄: 1.38% x̃: 0.91% HURT stats (abs) min: 1 max: 5 x̄: 1.93 x̃: 2 HURT stats (rel) min: 0.13% max: 4.00% x̄: 0.72% x̃: 0.68% 95% mean confidence interval for instructions value: -2.38 -2.28 95% mean confidence interval for instructions %-change: -1.33% -1.23% Instructions are helped. total cycles in shared programs: 122063992 -> 122021958 (-0.03%) cycles in affected programs: 20838672 -> 20796638 (-0.20%) helped: 2921 HURT: 454 helped stats (abs) min: 2 max: 168 x̄: 15.40 x̃: 14 helped stats (rel) min: 0.01% max: 6.37% x̄: 0.67% x̃: 0.29% HURT stats (abs) min: 2 max: 328 x̄: 6.49 x̃: 4 HURT stats (rel) min: 0.02% max: 2.78% x̄: 0.16% x̃: 0.11% 95% mean confidence interval for cycles value: -12.86 -12.04 95% mean confidence interval for cycles %-change: -0.59% -0.53% Cycles are helped. Signed-off-by: Ian Romanick <[email protected]> Cc: Marek Olšák <[email protected]> Cc: Rob Clark <[email protected]> Cc: Eric Anholt <[email protected]> --- src/compiler/nir/nir_opt_algebraic.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py index e770a61d9ff..f11a987c462 100644 --- a/src/compiler/nir/nir_opt_algebraic.py +++ b/src/compiler/nir/nir_opt_algebraic.py @@ -116,6 +116,10 @@ optimizations = [ (('~flrp', 0.0, a, b), ('fmul', a, b)), (('~flrp', a, b, ('b2f', c)), ('bcsel', c, b, a), 'options->lower_flrp32'), (('~flrp', a, 0.0, c), ('fadd', ('fmul', ('fneg', a), c), a)), + (('flrp@32', 1.0, b, c), ('fadd', ('fsub', 1.0, c), ('fmul', b, c)), 'options->lower_flrp32'), + (('flrp@64', 1.0, b, c), ('fadd', ('fsub', 1.0, c), ('fmul', b, c)), 'options->lower_flrp64'), + (('flrp@32', a, 1.0, c), ('fadd', a, ('fmul', c, ('fsub', 1.0, a))), 'options->lower_flrp32'), + (('flrp@64', a, 1.0, c), ('fadd', a, ('fmul', c, ('fsub', 1.0, a))), 'options->lower_flrp64'), (('flrp@32', a, b, c), ('fadd', ('fmul', c, ('fsub', b, a)), a), 'options->lower_flrp32'), (('flrp@64', a, b, c), ('fadd', ('fmul', c, ('fsub', b, a)), a), 'options->lower_flrp64'), (('ffract', a), ('fsub', a, ('ffloor', a)), 'options->lower_ffract'), @@ -125,6 +129,8 @@ optimizations = [ (('~fadd', a, ('fmul', ('b2f', c), ('fadd', b, ('fneg', a)))), ('bcsel', c, b, a), 'options->lower_flrp32'), (('~fadd@32', a, ('fmul', c , ('fadd', b, ('fneg', a)))), ('flrp', a, b, c), '!options->lower_flrp32'), (('~fadd@64', a, ('fmul', c , ('fadd', b, ('fneg', a)))), ('flrp', a, b, c), '!options->lower_flrp64'), + (('~fadd@32', 1.0, ('fmul', c , ('fadd', b, -1.0 ))), ('fadd', ('fsub', 1.0, c), ('fmul', b, c)), 'options->lower_flrp32'), + (('~fadd@64', 1.0, ('fmul', c , ('fadd', b, -1.0 ))), ('fadd', ('fsub', 1.0, c), ('fmul', b, c)), 'options->lower_flrp64'), (('ffma', a, b, c), ('fadd', ('fmul', a, b), c), 'options->lower_ffma'), (('~fadd', ('fmul', a, b), c), ('ffma', a, b, c), 'options->fuse_ffma'), -- 2.14.4 _______________________________________________ mesa-dev mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-dev
