Skip to content
  • Ian Romanick's avatar
    nir: Rearrange and-compounded float compares · 053be9f0
    Ian Romanick authored
    
    
    If both comparisons are used as sources for instructions other than the
    iand, this transformation is detrimental.  If the non-identical value in
    both compares is constant, the fmin or fmax will be constant-folded
    away, so the transformation is always a win.
    
    It is interesting to me that on Iron Lake only 81 shaders have
    instruction counts changed, but 726 shaders have cycle counts changed.
    
    shader-db results:
    
    Skylake
    total instructions in shared programs: 14525728 -> 14521017 (-0.03%)
    instructions in affected programs: 1164726 -> 1160015 (-0.40%)
    helped: 1692
    HURT: 5
    helped stats (abs) min: 1 max: 637 x̄: 2.79 x̃: 2
    helped stats (rel) min: 0.07% max: 16.36% x̄: 0.81% x̃: 0.33%
    HURT stats (abs)   min: 1 max: 12 x̄: 3.20 x̃: 1
    HURT stats (rel)   min: 0.38% max: 2.86% x̄: 2.36% x̃: 2.86%
    95% mean confidence interval for instructions value: -3.52 -2.03
    95% mean confidence interval for instructions %-change: -0.86% -0.74%
    Instructions are helped.
    
    total cycles in shared programs: 533115449 -> 532991404 (-0.02%)
    cycles in affected programs: 119401803 -> 119277758 (-0.10%)
    helped: 1145
    HURT: 467
    helped stats (abs) min: 1 max: 34644 x̄: 145.92 x̃: 18
    helped stats (rel) min: <.01% max: 45.33% x̄: 1.58% x̃: 0.42%
    HURT stats (abs)   min: 1 max: 1590 x̄: 92.15 x̃: 15
    HURT stats (rel)   min: <.01% max: 13.48% x̄: 1.26% x̃: 0.39%
    95% mean confidence interval for cycles value: -122.16 -31.74
    95% mean confidence interval for cycles %-change: -0.94% -0.57%
    Cycles are helped.
    
    total spills in shared programs: 9597 -> 9534 (-0.66%)
    spills in affected programs: 403 -> 340 (-15.63%)
    helped: 1
    HURT: 1
    
    total fills in shared programs: 13904 -> 13790 (-0.82%)
    fills in affected programs: 1627 -> 1513 (-7.01%)
    helped: 2
    HURT: 1
    
    LOST:   0
    GAINED: 2
    
    Broadwell
    total instructions in shared programs: 14816966 -> 14812590 (-0.03%)
    instructions in affected programs: 1499885 -> 1495509 (-0.29%)
    helped: 1672
    HURT: 15
    helped stats (abs) min: 1 max: 455 x̄: 2.70 x̃: 2
    helped stats (rel) min: 0.05% max: 16.36% x̄: 0.81% x̃: 0.33%
    HURT stats (abs)   min: 1 max: 21 x̄: 9.20 x̃: 8
    HURT stats (rel)   min: 0.08% max: 2.86% x̄: 1.06% x̃: 0.53%
    95% mean confidence interval for instructions value: -3.14 -2.05
    95% mean confidence interval for instructions %-change: -0.85% -0.73%
    Instructions are helped.
    
    total cycles in shared programs: 559353622 -> 559345595 (<.01%)
    cycles in affected programs: 139893703 -> 139885676 (<.01%)
    helped: 921
    HURT: 697
    helped stats (abs) min: 1 max: 42424 x̄: 143.45 x̃: 18
    helped stats (rel) min: <.01% max: 36.23% x̄: 2.02% x̃: 0.87%
    HURT stats (abs)   min: 1 max: 2370 x̄: 178.03 x̃: 38
    HURT stats (rel)   min: <.01% max: 17.35% x̄: 0.71% x̃: 0.14%
    95% mean confidence interval for cycles value: -59.64 49.72
    95% mean confidence interval for cycles %-change: -1.02% -0.66%
    Inconclusive result (value mean confidence interval includes 0).
    
    total spills in shared programs: 78902 -> 78861 (-0.05%)
    spills in affected programs: 2418 -> 2377 (-1.70%)
    helped: 1
    HURT: 11
    
    total fills in shared programs: 83782 -> 83678 (-0.12%)
    fills in affected programs: 3515 -> 3411 (-2.96%)
    helped: 2
    HURT: 11
    
    LOST:   0
    GAINED: 5
    
    Haswell and Ivy Bridge had similar results. Haswell shown.
    total instructions in shared programs: 9033898 -> 9032010 (-0.02%)
    instructions in affected programs: 308064 -> 306176 (-0.61%)
    helped: 921
    HURT: 4
    helped stats (abs) min: 1 max: 20 x̄: 2.05 x̃: 1
    helped stats (rel) min: 0.17% max: 17.54% x̄: 0.80% x̃: 0.35%
    HURT stats (abs)   min: 1 max: 1 x̄: 1.00 x̃: 1
    HURT stats (rel)   min: 3.23% max: 3.23% x̄: 3.23% x̃: 3.23%
    95% mean confidence interval for instructions value: -2.21 -1.87
    95% mean confidence interval for instructions %-change: -0.88% -0.68%
    Instructions are helped.
    
    total cycles in shared programs: 84628949 -> 84620520 (<.01%)
    cycles in affected programs: 2164913 -> 2156484 (-0.39%)
    helped: 518
    HURT: 359
    helped stats (abs) min: 1 max: 440 x̄: 41.52 x̃: 20
    helped stats (rel) min: <.01% max: 17.17% x̄: 1.95% x̃: 1.01%
    HURT stats (abs)   min: 1 max: 586 x̄: 36.43 x̃: 8
    HURT stats (rel)   min: 0.04% max: 18.65% x̄: 1.47% x̃: 0.40%
    95% mean confidence interval for cycles value: -15.17 -4.05
    95% mean confidence interval for cycles %-change: -0.77% -0.32%
    Cycles are helped.
    
    LOST:   0
    GAINED: 4
    
    Sandy Bridge
    total instructions in shared programs: 10544860 -> 10542933 (-0.02%)
    instructions in affected programs: 360019 -> 358092 (-0.54%)
    helped: 931
    HURT: 4
    helped stats (abs) min: 1 max: 20 x̄: 2.07 x̃: 1
    helped stats (rel) min: 0.11% max: 15.52% x̄: 0.68% x̃: 0.30%
    HURT stats (abs)   min: 1 max: 1 x̄: 1.00 x̃: 1
    HURT stats (rel)   min: 3.33% max: 3.33% x̄: 3.33% x̃: 3.33%
    95% mean confidence interval for instructions value: -2.23 -1.89
    95% mean confidence interval for instructions %-change: -0.76% -0.58%
    Instructions are helped.
    
    total cycles in shared programs: 146106820 -> 146098397 (<.01%)
    cycles in affected programs: 3435047 -> 3426624 (-0.25%)
    helped: 572
    HURT: 329
    helped stats (abs) min: 1 max: 1289 x̄: 32.52 x̃: 15
    helped stats (rel) min: <.01% max: 26.29% x̄: 0.97% x̃: 0.33%
    HURT stats (abs)   min: 1 max: 1714 x̄: 30.93 x̃: 6
    HURT stats (rel)   min: 0.02% max: 41.31% x̄: 1.13% x̃: 0.19%
    95% mean confidence interval for cycles value: -16.85 -1.85
    95% mean confidence interval for cycles %-change: -0.39% -0.01%
    Cycles are helped.
    
    LOST:   1
    GAINED: 0
    
    Iron Lake
    total instructions in shared programs: 7886925 -> 7886711 (<.01%)
    instructions in affected programs: 25763 -> 25549 (-0.83%)
    helped: 75
    HURT: 6
    helped stats (abs) min: 1 max: 13 x̄: 3.33 x̃: 1
    helped stats (rel) min: 0.35% max: 17.57% x̄: 1.96% x̃: 0.53%
    HURT stats (abs)   min: 1 max: 16 x̄: 6.00 x̃: 1
    HURT stats (rel)   min: 2.86% max: 4.79% x̄: 3.49% x̃: 2.86%
    95% mean confidence interval for instructions value: -3.69 -1.60
    95% mean confidence interval for instructions %-change: -2.54% -0.57%
    Instructions are helped.
    
    total cycles in shared programs: 178116888 -> 178115324 (<.01%)
    cycles in affected programs: 5858790 -> 5857226 (-0.03%)
    helped: 484
    HURT: 242
    helped stats (abs) min: 2 max: 76 x̄: 5.27 x̃: 6
    helped stats (rel) min: 0.01% max: 10.70% x̄: 0.18% x̃: 0.06%
    HURT stats (abs)   min: 2 max: 76 x̄: 4.07 x̃: 2
    HURT stats (rel)   min: 0.01% max: 3.99% x̄: 0.19% x̃: 0.03%
    95% mean confidence interval for cycles value: -2.76 -1.55
    95% mean confidence interval for cycles %-change: -0.12% 0.01%
    Inconclusive result (%-change mean confidence interval includes 0).
    
    GM45
    total instructions in shared programs: 4857870 -> 4857762 (<.01%)
    instructions in affected programs: 13994 -> 13886 (-0.77%)
    helped: 39
    HURT: 5
    helped stats (abs) min: 1 max: 13 x̄: 3.28 x̃: 2
    helped stats (rel) min: 0.33% max: 17.11% x̄: 1.86% x̃: 0.48%
    HURT stats (abs)   min: 1 max: 16 x̄: 4.00 x̃: 1
    HURT stats (rel)   min: 2.86% max: 4.71% x̄: 3.23% x̃: 2.86%
    95% mean confidence interval for instructions value: -3.86 -1.05
    95% mean confidence interval for instructions %-change: -2.61% 0.04%
    Inconclusive result (%-change mean confidence interval includes 0).
    
    total cycles in shared programs: 122180744 -> 122179674 (<.01%)
    cycles in affected programs: 3686646 -> 3685576 (-0.03%)
    helped: 273
    HURT: 141
    helped stats (abs) min: 2 max: 76 x̄: 5.81 x̃: 6
    helped stats (rel) min: 0.01% max: 10.70% x̄: 0.18% x̃: 0.06%
    HURT stats (abs)   min: 2 max: 76 x̄: 3.66 x̃: 2
    HURT stats (rel)   min: 0.01% max: 3.99% x̄: 0.16% x̃: 0.02%
    95% mean confidence interval for cycles value: -3.42 -1.75
    95% mean confidence interval for cycles %-change: -0.15% 0.03%
    Inconclusive result (%-change mean confidence interval includes 0).
    
    Signed-off-by: default avatarIan Romanick <ian.d.romanick@intel.com>
    Reviewed-by: default avatarSamuel Iglesias Gonsálvez <siglesias@igalia.com>
    Reviewed-by: default avatarElie Tournier <elie.tournier@collabora.com>
    053be9f0