freedreno/ir3/ra: fix target register calculation

Account for the # of regs an instruction writes, and fix an off-by-one.

(We are about to replace this with calculating the register target using
the live-ranges, but in debugging that it was useful to assert() if it
chose a higher target.)

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4272>
This commit is contained in:
Rob Clark 2020-03-21 11:07:35 -07:00 committed by Marge Bot
parent d20a06e401
commit d99d358389

View file

@ -1036,7 +1036,7 @@ account_assignment(struct ir3_ra_ctx *ctx, struct ir3_instruction *instr)
} else if ((id = &ctx->instrd[instr->ip]) && id->defn) {
unsigned name = scalar_name(ctx, id->defn, 0);
unsigned r = ra_get_node_reg(ctx->g, name);
max = ctx->set->ra_reg_to_gpr[r] + id->off;
max = ctx->set->ra_reg_to_gpr[r] + id->off + dest_regs(id->defn);
} else {
return;
}