[Mesa-dev] [PATCH 22/22] nir: Don't i2b a value that is already Boolean

Samuel Iglesias Gonsálvez siglesias at igalia.com
Tue Feb 27 12:09:56 UTC 2018


Reviewed-by: Samuel Iglesias Gonsálvez <siglesias at igalia.com>


On 24/02/18 00:56, Ian Romanick wrote:
> From: Ian Romanick <ian.d.romanick at intel.com>
>
> A bunch of shaders have sequences like:
>
>     i2b(u2i(floatBitsToUint(intBitsToFloat(x == y ? -1 : 0))))
>
> Other optimizations (and NIR's typeless nature) reduce this to
>
>     i2b(x == y)
>
> which is silly.
>
> Skylake
> total instructions in shared programs: 14498698 -> 14497948 (<.01%)
> instructions in affected programs: 74480 -> 73730 (-1.01%)
> helped: 277
> HURT: 0
> helped stats (abs) min: 1 max: 32 x̄: 2.71 x̃: 2
> helped stats (rel) min: 0.04% max: 13.79% x̄: 1.45% x̃: 0.68%
> 95% mean confidence interval for instructions value: -3.35 -2.06
> 95% mean confidence interval for instructions %-change: -1.74% -1.16%
> Instructions are helped.
>
> total cycles in shared programs: 532015500 -> 531999238 (<.01%)
> cycles in affected programs: 5943878 -> 5927616 (-0.27%)
> helped: 251
> HURT: 74
> helped stats (abs) min: 1 max: 13149 x̄: 127.89 x̃: 14
> helped stats (rel) min: 0.01% max: 17.31% x̄: 1.55% x̃: 0.53%
> HURT stats (abs)   min: 1 max: 4550 x̄: 214.04 x̃: 15
> HURT stats (rel)   min: <.01% max: 44.43% x̄: 2.81% x̃: 0.33%
> 95% mean confidence interval for cycles value: -158.51 58.43
> 95% mean confidence interval for cycles %-change: -1.07% -0.04%
> Inconclusive result (value mean confidence interval includes 0).
>
> total loops in shared programs: 4753 -> 4735 (-0.38%)
> loops in affected programs: 18 -> 0
> helped: 18
> HURT: 0
> helped stats (abs) min: 1 max: 1 x̄: 1.00 x̃: 1
> helped stats (rel) min: 100.00% max: 100.00% x̄: 100.00% x̃: 100.00%
> 95% mean confidence interval for loops value: -1.00 -1.00
> 95% mean confidence interval for loops %-change: -100.00% -100.00%
> Loops are helped.
>
> Haswell and Broadwell had simliar results. (Broadwell shown)
> total instructions in shared programs: 14791877 -> 14791127 (<.01%)
> instructions in affected programs: 77326 -> 76576 (-0.97%)
> helped: 278
> HURT: 1
> helped stats (abs) min: 1 max: 32 x̄: 2.70 x̃: 2
> helped stats (rel) min: 0.04% max: 13.79% x̄: 1.42% x̃: 0.68%
> HURT stats (abs)   min: 1 max: 1 x̄: 1.00 x̃: 1
> HURT stats (rel)   min: 0.49% max: 0.49% x̄: 0.49% x̃: 0.49%
> 95% mean confidence interval for instructions value: -3.33 -2.05
> 95% mean confidence interval for instructions %-change: -1.70% -1.13%
> Instructions are helped.
>
> total cycles in shared programs: 558250067 -> 558252872 (<.01%)
> cycles in affected programs: 5806328 -> 5809133 (0.05%)
> helped: 235
> HURT: 83
> helped stats (abs) min: 1 max: 10630 x̄: 81.73 x̃: 16
> helped stats (rel) min: 0.03% max: 18.58% x̄: 1.60% x̃: 0.51%
> HURT stats (abs)   min: 1 max: 10590 x̄: 265.19 x̃: 20
> HURT stats (rel)   min: <.01% max: 15.28% x̄: 1.89% x̃: 0.54%
> 95% mean confidence interval for cycles value: -89.87 107.51
> 95% mean confidence interval for cycles %-change: -1.06% -0.32%
> Inconclusive result (value mean confidence interval includes 0).
>
> total loops in shared programs: 4735 -> 4717 (-0.38%)
> loops in affected programs: 18 -> 0
> helped: 18
> HURT: 0
> helped stats (abs) min: 1 max: 1 x̄: 1.00 x̃: 1
> helped stats (rel) min: 100.00% max: 100.00% x̄: 100.00% x̃: 100.00%
> 95% mean confidence interval for loops value: -1.00 -1.00
> 95% mean confidence interval for loops %-change: -100.00% -100.00%
> Loops are helped.
>
> total fills in shared programs: 83111 -> 83110 (<.01%)
> fills in affected programs: 28 -> 27 (-3.57%)
> helped: 1
> HURT: 0
>
> Ivy Bridge
> total instructions in shared programs: 11774173 -> 11773436 (<.01%)
> instructions in affected programs: 70819 -> 70082 (-1.04%)
> helped: 267
> HURT: 0
> helped stats (abs) min: 1 max: 48 x̄: 2.76 x̃: 2
> helped stats (rel) min: 0.21% max: 19.51% x̄: 1.57% x̃: 0.63%
> 95% mean confidence interval for instructions value: -3.51 -2.01
> 95% mean confidence interval for instructions %-change: -1.94% -1.21%
> Instructions are helped.
>
> total cycles in shared programs: 257153833 -> 257148932 (<.01%)
> cycles in affected programs: 585341 -> 580440 (-0.84%)
> helped: 167
> HURT: 100
> helped stats (abs) min: 1 max: 1327 x̄: 44.89 x̃: 16
> helped stats (rel) min: 0.04% max: 26.54% x̄: 2.41% x̃: 0.88%
> HURT stats (abs)   min: 1 max: 200 x̄: 25.95 x̃: 16
> HURT stats (rel)   min: 0.04% max: 9.81% x̄: 1.34% x̃: 0.65%
> 95% mean confidence interval for cycles value: -33.25 -3.46
> 95% mean confidence interval for cycles %-change: -1.47% -0.54%
> Cycles are helped.
>
> total loops in shared programs: 3416 -> 3398 (-0.53%)
> loops in affected programs: 18 -> 0
> helped: 18
> HURT: 0
> helped stats (abs) min: 1 max: 1 x̄: 1.00 x̃: 1
> helped stats (rel) min: 100.00% max: 100.00% x̄: 100.00% x̃: 100.00%
> 95% mean confidence interval for loops value: -1.00 -1.00
> 95% mean confidence interval for loops %-change: -100.00% -100.00%
> Loops are helped.
>
> LOST:   2
> GAINED: 0
>
> Sandy Bridge
> total instructions in shared programs: 10499306 -> 10499094 (<.01%)
> instructions in affected programs: 6051 -> 5839 (-3.50%)
> helped: 43
> HURT: 0
> helped stats (abs) min: 1 max: 32 x̄: 4.93 x̃: 2
> helped stats (rel) min: 0.39% max: 12.90% x̄: 4.29% x̃: 2.45%
> 95% mean confidence interval for instructions value: -7.66 -2.20
> 95% mean confidence interval for instructions %-change: -5.47% -3.12%
> Instructions are helped.
>
> total cycles in shared programs: 145862568 -> 145861370 (<.01%)
> cycles in affected programs: 61733 -> 60535 (-1.94%)
> helped: 36
> HURT: 2
> helped stats (abs) min: 16 max: 66 x̄: 36.61 x̃: 35
> helped stats (rel) min: 0.45% max: 17.31% x̄: 4.92% x̃: 2.81%
> HURT stats (abs)   min: 18 max: 102 x̄: 60.00 x̃: 60
> HURT stats (rel)   min: 1.10% max: 1.85% x̄: 1.48% x̃: 1.48%
> 95% mean confidence interval for cycles value: -41.28 -21.77
> 95% mean confidence interval for cycles %-change: -6.16% -3.00%
> Cycles are helped.
>
> total loops in shared programs: 1803 -> 1785 (-1.00%)
> loops in affected programs: 18 -> 0
> helped: 18
> HURT: 0
> helped stats (abs) min: 1 max: 1 x̄: 1.00 x̃: 1
> helped stats (rel) min: 100.00% max: 100.00% x̄: 100.00% x̃: 100.00%
> 95% mean confidence interval for loops value: -1.00 -1.00
> 95% mean confidence interval for loops %-change: -100.00% -100.00%
> Loops are helped.
>
> LOST:   4
> GAINED: 0
>
> No changes on Iron Lake of GM45.
>
> Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
> ---
>  src/compiler/nir/nir_opt_algebraic.py | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py
> index 3366a43..2e27512 100644
> --- a/src/compiler/nir/nir_opt_algebraic.py
> +++ b/src/compiler/nir/nir_opt_algebraic.py
> @@ -409,6 +409,7 @@ optimizations = [
>  
>     # Conversions
>     (('i2b', ('b2i', a)), a),
> +   (('i2b', 'a at bool'), a),
>     (('f2i32', ('ftrunc', a)), ('f2i32', a)),
>     (('f2u32', ('ftrunc', a)), ('f2u32', a)),
>     (('i2b', ('ineg', a)), ('i2b', a)),

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20180227/8eecd311/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/8eecd311/attachment.sig>


More information about the mesa-dev mailing list