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);