From efeed6a6fcbef34754075617d9851e4c61caeff4 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Sun, 24 Dec 2023 13:56:44 -0400 Subject: [PATCH] agx: prepare for immediates in phis Signed-off-by: Alyssa Rosenzweig Part-of: --- src/asahi/compiler/agx_optimizer.c | 2 +- src/asahi/compiler/agx_register_allocate.c | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/asahi/compiler/agx_optimizer.c b/src/asahi/compiler/agx_optimizer.c index 9a1bb176f06..63bffd86882 100644 --- a/src/asahi/compiler/agx_optimizer.c +++ b/src/asahi/compiler/agx_optimizer.c @@ -140,7 +140,7 @@ agx_optimizer_inline_imm(agx_instr **defs, agx_instr *I, unsigned srcs, continue; agx_instr *def = defs[src.value]; - if (def->op != AGX_OPCODE_MOV_IMM) + if (!def || def->op != AGX_OPCODE_MOV_IMM) continue; uint8_t value = def->imm; diff --git a/src/asahi/compiler/agx_register_allocate.c b/src/asahi/compiler/agx_register_allocate.c index 14be2eb7d2d..3f8944fcf29 100644 --- a/src/asahi/compiler/agx_register_allocate.c +++ b/src/asahi/compiler/agx_register_allocate.c @@ -935,6 +935,9 @@ agx_insert_parallel_copies(agx_context *ctx, agx_block *block) agx_index dest = phi->dest[0]; agx_index src = phi->src[pred_index]; + if (src.type == AGX_INDEX_IMMEDIATE) + src.size = dest.size; + assert(dest.type == AGX_INDEX_REGISTER); assert(dest.size == src.size);