[Mesa-dev] [PATCH 14/22] nir: Replace fmin(b2f(a), b) with a bcsel
Samuel Iglesias Gonsálvez
siglesias at igalia.com
Tue Feb 27 11:25:21 UTC 2018
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>
On 24/02/18 00:55, Ian Romanick wrote:
> From: Ian Romanick <ian.d.romanick at intel.com>
>
> All of the affected shaders are HDR mappers from Serious Sam 3.
>
> All Gen7+ platforms had similar results. (Skylake shown)
> total instructions in shared programs: 14516285 -> 14516273 (<.01%)
> instructions in affected programs: 348 -> 336 (-3.45%)
> helped: 12
> HURT: 0
> helped stats (abs) min: 1 max: 1 x̄: 1.00 x̃: 1
> helped stats (rel) min: 2.08% max: 6.67% x̄: 4.31% x̃: 4.17%
> 95% mean confidence interval for instructions value: -1.00 -1.00
> 95% mean confidence interval for instructions %-change: -5.55% -3.06%
> Instructions are helped.
>
> total cycles in shared programs: 533163876 -> 533163808 (<.01%)
> cycles in affected programs: 1144 -> 1076 (-5.94%)
> helped: 4
> HURT: 0
> helped stats (abs) min: 16 max: 18 x̄: 17.00 x̃: 17
> helped stats (rel) min: 5.80% max: 6.08% x̄: 5.94% x̃: 5.94%
> 95% mean confidence interval for cycles value: -18.84 -15.16
> 95% mean confidence interval for cycles %-change: -6.20% -5.68%
> Cycles are helped.
>
> Sandy Bridge
> total instructions in shared programs: 10533321 -> 10533309 (<.01%)
> instructions in affected programs: 372 -> 360 (-3.23%)
> helped: 12
> HURT: 0
> helped stats (abs) min: 1 max: 1 x̄: 1.00 x̃: 1
> helped stats (rel) min: 2.00% max: 5.88% x̄: 3.91% x̃: 3.85%
> 95% mean confidence interval for instructions value: -1.00 -1.00
> 95% mean confidence interval for instructions %-change: -4.96% -2.86%
> Instructions are helped.
>
> total cycles in shared programs: 146136632 -> 146136428 (<.01%)
> cycles in affected programs: 11668 -> 11464 (-1.75%)
> helped: 12
> HURT: 0
> helped stats (abs) min: 16 max: 18 x̄: 17.00 x̃: 17
> helped stats (rel) min: 0.99% max: 3.44% x̄: 2.20% x̃: 2.29%
> 95% mean confidence interval for cycles value: -17.66 -16.34
> 95% mean confidence interval for cycles %-change: -2.82% -1.58%
> Cycles are helped.
>
> Iron Lake
> total instructions in shared programs: 7886301 -> 7886277 (<.01%)
> instructions in affected programs: 576 -> 552 (-4.17%)
> helped: 12
> HURT: 0
> helped stats (abs) min: 2 max: 2 x̄: 2.00 x̃: 2
> helped stats (rel) min: 2.94% max: 6.06% x̄: 4.51% x̃: 4.65%
> 95% mean confidence interval for instructions value: -2.00 -2.00
> 95% mean confidence interval for instructions %-change: -5.30% -3.72%
> Instructions are helped.
>
> total cycles in shared programs: 178113176 -> 178113176 (0.00%)
> cycles in affected programs: 2116 -> 2116 (0.00%)
> helped: 2
> HURT: 4
> helped stats (abs) min: 4 max: 4 x̄: 4.00 x̃: 4
> helped stats (rel) min: 1.14% max: 1.14% x̄: 1.14% x̃: 1.14%
> HURT stats (abs) min: 2 max: 2 x̄: 2.00 x̃: 2
> HURT stats (rel) min: 0.50% max: 0.65% x̄: 0.58% x̃: 0.58%
> 95% mean confidence interval for cycles value: -3.25 3.25
> 95% mean confidence interval for cycles %-change: -0.93% 0.94%
> Inconclusive result (value mean confidence interval includes 0).
>
> GM45
> total instructions in shared programs: 4857756 -> 4857744 (<.01%)
> instructions in affected programs: 294 -> 282 (-4.08%)
> helped: 6
> HURT: 0
> helped stats (abs) min: 2 max: 2 x̄: 2.00 x̃: 2
> helped stats (rel) min: 2.94% max: 5.71% x̄: 4.40% x̃: 4.55%
> 95% mean confidence interval for instructions value: -2.00 -2.00
> 95% mean confidence interval for instructions %-change: -5.71% -3.09%
> Instructions are helped.
>
> total cycles in shared programs: 122178730 -> 122178722 (<.01%)
> cycles in affected programs: 700 -> 692 (-1.14%)
> helped: 2
> HURT: 0
>
> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
> ---
> src/compiler/nir/nir_opt_algebraic.py | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py
> index 65211e6..314b064 100644
> --- a/src/compiler/nir/nir_opt_algebraic.py
> +++ b/src/compiler/nir/nir_opt_algebraic.py
> @@ -176,6 +176,15 @@ optimizations = [
> (('fmin', ('b2f(is_used_once)', a), ('b2f', b)), ('b2f', ('iand', a, b))),
> (('fmin', ('fneg(is_used_once)', ('b2f(is_used_once)', a)), ('fneg', ('b2f', b))), ('fneg', ('b2f', ('iand', a, b)))),
>
> + # fmin(b2f(a), b)
> + # bcsel(a, fmin(b2f(a), b), fmin(b2f(a), b))
> + # bcsel(a, fmin(b2f(True), b), fmin(b2f(False), b))
> + # bcsel(a, fmin(1.0, b), fmin(0.0, b))
> + #
> + # Since b is a constant, constant folding will eliminate the fmin and the
> + # fmax. If b is > 1.0, the bcsel will be replaced with a b2f.
> + (('fmin', ('b2f', a), '#b'), ('bcsel', a, ('fmin', b, 1.0), ('fmin', b, 0.0))),
> +
> # ignore this opt when the result is used by a bcsel or if so we can make
> # use of conditional modifiers on supported hardware.
> (('flt(is_not_used_by_conditional)', ('fadd(is_used_once)', a, ('fneg', b)), 0.0), ('flt', a, b)),
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180227/006a092e/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180227/006a092e/attachment.sig>
More information about the mesa-dev
mailing list