mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-09 06:48:06 +02:00
pan/midgard: Compute spill costs
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
This commit is contained in:
parent
eb6352162d
commit
23c83f3f05
1 changed files with 13 additions and 2 deletions
|
|
@ -1195,10 +1195,21 @@ static void mir_spill_register(
|
|||
* spill node. All nodes are equal in spill cost, but we can't spill
|
||||
* nodes written to from an unspill */
|
||||
|
||||
for (unsigned i = 0; i < ctx->temp_count; ++i) {
|
||||
lcra_set_node_spill_cost(l, i, 1);
|
||||
unsigned *cost = calloc(ctx->temp_count, sizeof(cost[0]));
|
||||
|
||||
mir_foreach_instr_global(ctx, ins) {
|
||||
if (ins->dest < ctx->temp_count)
|
||||
cost[ins->dest]++;
|
||||
|
||||
mir_foreach_src(ins, s) {
|
||||
if (ins->src[s] < ctx->temp_count)
|
||||
cost[ins->src[s]]++;
|
||||
}
|
||||
}
|
||||
|
||||
for (unsigned i = 0; i < ctx->temp_count; ++i)
|
||||
lcra_set_node_spill_cost(l, i, cost[i]);
|
||||
|
||||
/* We can't spill any bundles that contain unspills. This could be
|
||||
* optimized to allow use of r27 to spill twice per bundle, but if
|
||||
* you're at the point of optimizing spilling, it's too late.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue