Skip to content
  • Ian Romanick's avatar
    i965/vec4: Propagate conditional modifiers from more compares to other compares · 4cd1a0be
    Ian Romanick authored
    
    
    If there is a CMP.NZ that compares a single component (via a .zzzz
    swizzle, for example) with 0, it can propagate its conditional modifier
    back to a previous CMP that writes only that component.  The specific
    case that I saw was:
    
        cmp.l.f0(8)     g42<1>.xF       g61<4>.xF       (abs)g18<4>.zF
        ...
        cmp.nz.f0(8)    null<1>D        g42<4>.xD       0D
    
    In this case we can just delete the second CMP.
    
    No changes on Broadwell or Skylake because they do not use the vec4
    backend.  Also no changes on GM45 or Iron Lake.
    
    Sandy Bridge, Ivy Bridge, and Haswell had similar results. (Sandy Bridge shown)
    total instructions in shared programs: 10856676 -> 10852569 (-0.04%)
    instructions in affected programs: 228322 -> 224215 (-1.80%)
    helped: 1331
    HURT: 0
    helped stats (abs) min: 1 max: 7 x̄: 3.09 x̃: 4
    helped stats (rel) min: 0.11% max: 6.67% x̄: 1.88% x̃: 1.83%
    95% mean confidence interval for instructions value: -3.19 -2.99
    95% mean confidence interval for instructions %-change: -1.93% -1.83%
    Instructions are helped.
    
    total cycles in shared programs: 154788865 -> 154732047 (-0.04%)
    cycles in affected programs: 2485892 -> 2429074 (-2.29%)
    helped: 1097
    HURT: 59
    helped stats (abs) min: 2 max: 168 x̄: 51.96 x̃: 64
    helped stats (rel) min: 0.12% max: 12.70% x̄: 3.44% x̃: 2.22%
    HURT stats (abs)   min: 2 max: 16 x̄: 3.02 x̃: 2
    HURT stats (rel)   min: 0.18% max: 0.83% x̄: 0.64% x̃: 0.71%
    95% mean confidence interval for cycles value: -51.04 -47.26
    95% mean confidence interval for cycles %-change: -3.40% -3.07%
    Cycles are helped.
    
    Signed-off-by: default avatarIan Romanick <ian.d.romanick@intel.com>
    Reviewed-by: default avatarLionel Landwerlin <lionel.g.landwerlin@intel.com>
    4cd1a0be