nv50: release hw TEMPs early

Since we know when we don't use a TEMP or FP ATTR register anymore,
we can release their hw resources early.
This commit is contained in:
Christoph Bumiller 2009-05-23 15:15:20 +02:00 committed by Ben Skeggs
parent 708c711f83
commit 7ab96f4f73

View file

@ -214,6 +214,22 @@ assimilate_temp(struct nv50_pc *pc, struct nv50_reg *dst, struct nv50_reg *src)
FREE(src);
}
/* release the hardware resource held by r */
static void
release_hw(struct nv50_pc *pc, struct nv50_reg *r)
{
assert(r->type == P_TEMP);
if (r->hw == -1)
return;
assert(pc->r_temp[r->hw] == r);
pc->r_temp[r->hw] = NULL;
r->acc = 0;
if (r->index == -1)
FREE(r);
}
static void
free_temp(struct nv50_pc *pc, struct nv50_reg *r)
{
@ -1496,6 +1512,9 @@ nv50_program_tx_insn(struct nv50_pc *pc, const union tgsi_full_token *tok)
continue;
if (src[i][c]->index == -1 && src[i][c]->type == P_IMMD)
FREE(src[i][c]);
else
if (src[i][c]->acc == pc->insn_cur)
release_hw(pc, src[i][c]);
}
}