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:
parent
f5ea767625
commit
caee8a3114
2 changed files with 3 additions and 4 deletions
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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) |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue