agx: Add scoreboarding to stack instructions

These are basically device loads/stores and behave similarly.

Signed-off-by: Asahi Lina <lina@asahilina.net>
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26963>
This commit is contained in:
Asahi Lina 2023-11-29 18:34:28 +09:00 committed by Alyssa Rosenzweig
parent f5ea767625
commit caee8a3114
2 changed files with 3 additions and 4 deletions

View file

@ -448,13 +448,13 @@ op("stack_adjust",
# source is offset
op("stack_load",
encoding_32 = (0x35, (1 << 20) - 1, 6, 8),
srcs = 1, imms = [FORMAT, MASK], can_reorder = False,
srcs = 1, imms = [FORMAT, MASK, SCOREBOARD], can_reorder = False,
schedule_class = "load")
# sources are value and offset
op("stack_store",
encoding_32 = (0xb5, (1 << 20) - 1, 6, 8),
dests = 0, srcs = 2, imms = [FORMAT, MASK],
dests = 0, srcs = 2, imms = [FORMAT, MASK, SCOREBOARD],
can_eliminate=False, schedule_class = "store")
# Convenient aliases.

View file

@ -1026,13 +1026,12 @@ agx_pack_instr(struct util_dynarray *emission, struct util_dynarray *fixups,
unsigned i1 = 1; // XXX
unsigned i2 = 0; // XXX
unsigned i5 = 4; // XXX
unsigned i6 = 0; // XXX: scoreboard index?
uint64_t raw =
agx_opcodes_info[I->op].encoding.exact |
((format & BITFIELD_MASK(2)) << 8) | ((R & BITFIELD_MASK(6)) << 10) |
((O & BITFIELD_MASK(4)) << 20) | (Ot ? (1 << 24) : 0) |
((uint64_t)i1 << 26) | ((uint64_t)i6 << 30) |
((uint64_t)i1 << 26) | ((uint64_t)I->scoreboard << 30) |
(((uint64_t)((O >> 4) & BITFIELD_MASK(4))) << 32) |
((uint64_t)i2 << 36) |
(((uint64_t)((R >> 6) & BITFIELD_MASK(2))) << 40) |