Skip to content
  • Timothy Arceri's avatar
    nir/radv: remove restrictions on opt_if_loop_last_continue() · e30804c6
    Timothy Arceri authored
    
    
    When I implemented opt_if_loop_last_continue() I had restricted
    this pass from moving other if-statements inside the branch opposite
    the continue. At the time it was causing a bunch of spilling in
    shader-db for i965.
    
    However Samuel Pitoiset noticed that making this pass more aggressive
    significantly improved the performance of Doom on RADV. Below are
    the statistics he gathered.
    
    28717 shaders in 14931 tests
    Totals:
    SGPRS: 1267317 -> 1267549 (0.02 %)
    VGPRS: 896876 -> 895920 (-0.11 %)
    Spilled SGPRs: 24701 -> 26367 (6.74 %)
    Code Size: 48379452 -> 48507880 (0.27 %) bytes
    Max Waves: 241159 -> 241190 (0.01 %)
    
    Totals from affected shaders:
    SGPRS: 23584 -> 23816 (0.98 %)
    VGPRS: 25908 -> 24952 (-3.69 %)
    Spilled SGPRs: 503 -> 2169 (331.21 %)
    Code Size: 2471392 -> 2599820 (5.20 %) bytes
    Max Waves: 586 -> 617 (5.29 %)
    
    The codesize increases is related to Wolfenstein II it seems largely
    due to an increase in phis rather than the existing jumps.
    
    This gives +10% FPS with Doom on my Vega56.
    
    Rhys Perry also benchmarked Doom on his VEGA64:
    
    Before: 72.53 FPS
    After:  80.77 FPS
    
    v2: disable pass on non-AMD drivers
    
    Reviewed-by: Ian Romanick <ian.d.romanick@intel.com> (v1)
    Acked-by: default avatarSamuel Pitoiset <samuel.pitoiset@gmail.com>
    e30804c6