Skip to content
  • Ian Romanick's avatar
    nir: Don't i2b a value that is already Boolean · 6878c9aa
    Ian Romanick authored
    
    
    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: default avatarIan Romanick <ian.d.romanick@intel.com>
    Reviewed-by: default avatarSamuel Iglesias Gonsálvez <siglesias@igalia.com>
    6878c9aa