agx: Preload vertex/instance ID only at start
This means we don't reserve the registers, which improves RA considerably. Using a special preload psuedo-op instead of a regular move allows us to constrain semantics and gaurantee coalescing. shader-db on glmark2 subset: total instructions in shared programs: 6448 -> 6442 (-0.09%) instructions in affected programs: 230 -> 224 (-2.61%) helped: 4 HURT: 0 total bytes in shared programs: 42232 -> 42196 (-0.09%) bytes in affected programs: 1530 -> 1494 (-2.35%) helped: 4 HURT: 0 total halfregs in shared programs: 2291 -> 1926 (-15.93%) halfregs in affected programs: 2185 -> 1820 (-16.70%) helped: 75 HURT: 0 Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18804>
This commit is contained in:

committed by
Marge Bot

parent
f665229d77
commit
c9a96d4615
@@ -281,3 +281,7 @@ op("split", _, srcs = 1, dests = VARIABLE)
|
||||
op("phi", _, srcs = VARIABLE)
|
||||
|
||||
op("unit_test", _, dests = 0, srcs = 1, can_eliminate = False)
|
||||
|
||||
# Like mov, but takes a register and can only appear at the start. Gauranteed
|
||||
# to be coalesced during RA, rather than lowered to a real move.
|
||||
op("preload", _, srcs = 1)
|
||||
|
Reference in New Issue
Block a user