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

2018-02-27 Thread Samuel Iglesias Gonsálvez
Reviewed-by: Samuel Iglesias Gonsálvez 


On 24/02/18 00:56, Ian Romanick wrote:
> From: Ian Romanick 
>
> 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 -

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

2018-02-23 Thread Ian Romanick
From: Ian Romanick 

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