Skip to content
  • Timothy Arceri's avatar
    nir: remove restrictions on opt_if_loop_last_continue() · 0c8b394d
    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 extra regisiter pressure
    in some shaders, however that no longer seems to be an issue.
    
    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.
    
    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
    
    shader-db results i965 (SKL):
    
    total instructions in shared programs: 15029076 -> 15029877 (<.01%)
    instructions in affected programs: 493251 -> 494052 (0.16%)
    helped: 3
    HURT: 374
    
    total cycles in shared programs: 263387688 -> 263401720 (<.01%)
    cycles in affected programs: 30658226 -> 30672258 (0.05%)
    helped: 3
    HURT: 374
    
    total spills in shared programs: 9691 -> 9748 (0.59%)
    spills in affected programs: 88 -> 145 (64.77%)
    helped: 0
    HURT: 4
    
    total fills in shared programs: 22076 -> 22133 (0.26%)
    fills in affected programs: 128 -> 185 (44.53%)
    helped: 0
    HURT: 4
    
    LOST:   0
    GAINED: 2
    
    Both the gain and spill hurt are in Doom shaders which is similiar
    to what we see on radeonsi ironically the Doom Vulkan shaders are
    the most helped by this change.
    
    Reviewed-by: default avatarIan Romanick <ian.d.romanick@intel.com>
    0c8b394d