Unlike older ASICs GFX10+ have a lot of VGPRs. Therefore, it is possible
to achieve high occupancy even with all or almost all addressable VGPRs
used. Our scheduler was never tuned for this scenario. The VGPR Critical
Limit threshold always comes very high, even if maximum occupancy is
targeted. For example on gfx1100 it is set to 192 registers even with
the requested occupancy 16. As a result scheduler starts prioritizing
register pressure reduction very late and we easily end up spilling.
This patch makes scheduling on new targets much closer to GFX9. The
value of VGPR critical limit is based on the number of addressable
registers and not on a total VGPR budget.
The intent of the patch is to have no impact on GFX9 and older targets,
a massive lit tests update shows no changes on these.