mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-27 19:10:14 +01:00
vc4: Drop destination register when it's unused.
This slightly reduces instructions on shader-db, but I think it's just perturbing register allocation -- the allocator should have always trivially colored these nodes, before. This commit is just to make QIR code failing more intelligible when register allocation fails.
This commit is contained in:
parent
d4ae5ca823
commit
7c7bcbbc7d
1 changed files with 22 additions and 1 deletions
|
|
@ -102,9 +102,30 @@ qir_opt_dead_code(struct vc4_compile *c)
|
|||
continue;
|
||||
}
|
||||
|
||||
if (qir_has_side_effects(c, inst))
|
||||
continue;
|
||||
|
||||
if (inst->sf ||
|
||||
qir_has_side_effects(c, inst) ||
|
||||
has_nonremovable_reads(c, inst)) {
|
||||
/* If we can't remove the instruction, but we
|
||||
* don't need its destination value, just
|
||||
* remove the destination. The register
|
||||
* allocator would trivially color it and it
|
||||
* wouldn't cause any register pressure, but
|
||||
* it's nicer to read the QIR code without
|
||||
* unused destination regs.
|
||||
*/
|
||||
if (inst->dst.file == QFILE_TEMP) {
|
||||
if (debug) {
|
||||
fprintf(stderr,
|
||||
"Removing dst from: ");
|
||||
qir_dump_inst(c, inst);
|
||||
fprintf(stderr, "\n");
|
||||
}
|
||||
c->defs[inst->dst.index] = NULL;
|
||||
inst->dst.file = QFILE_NULL;
|
||||
progress = true;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue