From: Alyssa Rosenzweig Date: Fri, 19 Jul 2019 22:51:51 +0000 (-0700) Subject: panfrost/midgard: Promote to *move*, not rewrite for non-SSA X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=bc741599f24dee49937fe397073dc7c4c8230399;p=mesa.git panfrost/midgard: Promote to *move*, not rewrite for non-SSA Fixes promoted uniform loads to registers. Signed-off-by: Alyssa Rosenzweig --- diff --git a/src/panfrost/midgard/mir_promote_uniforms.c b/src/panfrost/midgard/mir_promote_uniforms.c index 7206cb70165..227b943a8f9 100644 --- a/src/panfrost/midgard/mir_promote_uniforms.c +++ b/src/panfrost/midgard/mir_promote_uniforms.c @@ -67,9 +67,16 @@ midgard_promote_uniforms(compiler_context *ctx, unsigned register_pressure) /* It is, great! Let's promote */ ctx->uniform_cutoff = MAX2(ctx->uniform_cutoff, address + 1); - unsigned promoted = SSA_FIXED_REGISTER(uniform_reg); - mir_rewrite_index_src(ctx, ins->ssa_args.dest, promoted); + + /* We do need the move for safety for a non-SSA dest */ + + if (ins->ssa_args.dest >= ctx->func->impl->ssa_alloc) { + midgard_instruction mov = v_mov(promoted, blank_alu_src, ins->ssa_args.dest); + mir_insert_instruction_before(ins, mov); + } else { + mir_rewrite_index_src(ctx, ins->ssa_args.dest, promoted); + } mir_remove_instruction(ins); }