mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-24 19:40:10 +01:00
i965/vs: Clear tracked copy propagation values whose source gets overwritten.
This only occurs for GRFs, and hasn't mattered until now because we only copy propagated non-GRFs.
This commit is contained in:
parent
cc9eb936c2
commit
6d0c018776
1 changed files with 12 additions and 3 deletions
|
|
@ -289,9 +289,6 @@ vec4_visitor::opt_copy_propagation()
|
|||
|
||||
/* For any updated channels, clear tracking of them as a source
|
||||
* or destination.
|
||||
*
|
||||
* FINISHME: Sources aren't handled, which will need to be done
|
||||
* for copy propagation.
|
||||
*/
|
||||
if (inst->dst.file == GRF) {
|
||||
if (inst->dst.reladdr)
|
||||
|
|
@ -303,6 +300,18 @@ vec4_visitor::opt_copy_propagation()
|
|||
if (inst->dst.writemask & (1 << i))
|
||||
cur_value[reg][i] = NULL;
|
||||
}
|
||||
|
||||
for (int i = 0; i < virtual_grf_reg_count; i++) {
|
||||
for (int j = 0; j < 4; j++) {
|
||||
if (inst->dst.writemask & (1 << i) &&
|
||||
cur_value[i][j] &&
|
||||
cur_value[i][j]->file == GRF &&
|
||||
cur_value[i][j]->reg == inst->dst.reg &&
|
||||
cur_value[i][j]->reg == inst->dst.reg) {
|
||||
cur_value[i][j] = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue