aco/ra: special-case get_reg_for_create_vector_copy()
authorDaniel Schürmann <daniel@schuermann.dev>
Fri, 18 Jun 2021 14:43:18 +0000 (16:43 +0200)
committerMarge Bot <emma+marge@anholt.net>
Mon, 14 Mar 2022 08:32:10 +0000 (08:32 +0000)
commit9476986e6f6fe49ef8bc511f4ebeca4232263888
treeeaba81a9c2ab8515c6d2f53833c67210312968bb
parent9181e8ceba3c9a1a6a4d060fa30ef7825cf9d404
aco/ra: special-case get_reg_for_create_vector_copy()

This function implements separate handling for
p_create_vector during get_regs_for_copies().
This simplifies some code and lets more precisely select
swap instructions if possible.

Totals from 876 (0.65% of 134913) affected shaders: (GFX10.3)
VGPRs: 53312 -> 53336 (+0.05%)
CodeSize: 3792936 -> 3788160 (-0.13%); split: -0.15%, +0.03%
MaxWaves: 16084 -> 16078 (-0.04%)
Instrs: 707449 -> 706385 (-0.15%); split: -0.19%, +0.04%
Latency: 6288293 -> 6286677 (-0.03%); split: -0.03%, +0.01%
InvThroughput: 4264450 -> 4263671 (-0.02%); split: -0.02%, +0.00%
VClause: 18655 -> 18679 (+0.13%); split: -0.20%, +0.33%
Copies: 55397 -> 54353 (-1.88%); split: -2.45%, +0.57%
Branches: 12426 -> 12415 (-0.09%)

Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11526>
src/amd/compiler/aco_register_allocation.cpp