diff --git a/src/asahi/compiler/agx_opcodes.py b/src/asahi/compiler/agx_opcodes.py index 5b6e13f2e39..9e614f00a9f 100644 --- a/src/asahi/compiler/agx_opcodes.py +++ b/src/asahi/compiler/agx_opcodes.py @@ -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. diff --git a/src/asahi/compiler/agx_pack.c b/src/asahi/compiler/agx_pack.c index 9c904b27298..6f1a5948fd1 100644 --- a/src/asahi/compiler/agx_pack.c +++ b/src/asahi/compiler/agx_pack.c @@ -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) |