agx: Don't use ssa_to_reg across blocks
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Tue, 1 Aug 2023 13:13:02 +0000 (09:13 -0400)
committerMarge Bot <emma+marge@anholt.net>
Fri, 11 Aug 2023 20:31:28 +0000 (20:31 +0000)
This is a footgun with live range spltiting.

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24635>

src/asahi/compiler/agx_register_allocate.c

index 2b10373..cce2aaf 100644 (file)
@@ -708,7 +708,9 @@ reserve_live_in(struct ra_ctx *rctx)
          set_ssa_to_reg(rctx, i, base);
       } else {
          /* If we don't emit a phi, there is already a unique register */
-         base = rctx->ssa_to_reg[i];
+         agx_foreach_predecessor(rctx->block, pred) {
+            base = (*pred)->ssa_to_reg_out[i];
+         }
       }
 
       for (unsigned j = 0; j < rctx->ncomps[i]; ++j) {