agx: fix 16-bit mem swaps

don't clobber r1l

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28483>
This commit is contained in:
Alyssa Rosenzweig
2024-02-16 20:59:53 -04:00
committed by Marge Bot
parent 5bfdb20dac
commit 2fc2a45c8f
2 changed files with 3 additions and 1 deletions
+2 -1
View File
@@ -120,7 +120,8 @@ do_swap(agx_builder *b, const struct agx_copy *copy)
assert(x.memory == y.memory);
if (x.memory) {
agx_index temp1 = agx_register(0, copy->src.size);
agx_index temp2 = agx_register(2, copy->src.size);
agx_index temp2 =
agx_register(agx_size_align_16(copy->src.size), copy->src.size);
agx_index scratch_reg2 = agx_register(0, copy->src.size);
agx_index scratch_mem2 = scratch_slot(b->shader, copy->src.size);
@@ -302,6 +302,7 @@ TEST_F(LowerParallelCopy, StackCopies)
scratch_vec2.size = AGX_SIZE_16;
temp1.size = AGX_SIZE_16;
temp2.size = AGX_SIZE_16;
temp2.value = 1;
agx_mov_to(b, scratch_vec2, spilled_gpr_vec2);
agx_mov_to(b, temp1, agx_memory_register(807, AGX_SIZE_16));