Skip to content
  • Ian Romanick's avatar
    i965/fs: Merge CMP and SEL into CSEL on Gen8+ · 52c7df16
    Ian Romanick authored
    
    
    v2: Fix several problems handling inverted predicates.  Add a much
    bigger comment around the BRW_CONDITIONAL_NZ case.
    
    v3: Allow uniforms and shader inputs as sources for the original SEL and
    CMP instructions.  This enables a LOT more shaders to receive CSEL
    merging (5816 vs 8564 on SKL).
    
    v4: Report progress.
    
    Broadwell and Skylake had similar results. (Broadwell shown)
    helped: 8527
    HURT: 0
    helped stats (abs) min: 1 max: 27 x̄: 2.44 x̃: 1
    helped stats (rel) min: 0.03% max: 17.80% x̄: 1.12% x̃: 0.70%
    95% mean confidence interval for instructions value: -2.51 -2.36
    95% mean confidence interval for instructions %-change: -1.15% -1.10%
    Instructions are helped.
    
    total cycles in shared programs: 559442317 -> 558288357 (-0.21%)
    cycles in affected programs: 372699860 -> 371545900 (-0.31%)
    helped: 6748
    HURT: 1450
    helped stats (abs) min: 1 max: 32000 x̄: 182.41 x̃: 12
    helped stats (rel) min: <.01% max: 66.08% x̄: 3.42% x̃: 0.70%
    HURT stats (abs)   min: 1 max: 2538 x̄: 53.08 x̃: 14
    HURT stats (rel)   min: <.01% max: 96.72% x̄: 3.32% x̃: 0.90%
    95% mean confidence interval for cycles value: -179.01 -102.51
    95% mean confidence interval for cycles %-change: -2.37% -2.08%
    Cycles are helped.
    
    LOST:   0
    GAINED: 6
    
    No changes on earlier platforms.
    
    Signed-off-by: default avatarIan Romanick <ian.d.romanick@intel.com>
    Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com> [v1]
    Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> [v3]
    Reviewed-by: default avatarMatt Turner <mattst88@gmail.com>
    52c7df16