brw/copy: Allow copy prop into src1 of broadcast

This is the selector, and it must always be a uniform UD, so there's no
reason to not propagate into it.

No shader-db change on any Intel platform.

fossil-db:

All Intel platforms had similar results. (Lunar Lake shown)
Totals:
Instrs: 220507131 -> 220507127 (-0.00%)
Cycle count: 31607052398 -> 31607053364 (+0.00%); split: -0.00%, +0.00%

Totals from 5 (0.00% of 702410) affected shaders:
Instrs: 995 -> 991 (-0.40%)
Cycle count: 86392 -> 87358 (+1.12%); split: -0.07%, +1.19%

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32097>
This commit is contained in:
Ian Romanick 2024-11-20 16:18:55 -08:00 committed by Marge Bot
parent 662339a2ff
commit 0754a18621

View file

@ -1557,7 +1557,12 @@ try_copy_propagate_def(const brw_compiler *compiler,
}
/* Reject cases that would violate register regioning restrictions. */
if ((val.file == UNIFORM || !val.is_contiguous()) &&
if (inst->opcode == SHADER_OPCODE_BROADCAST) {
if (arg == 0)
return false;
assert(inst->src[arg].stride == 0);
} else if ((val.file == UNIFORM || !val.is_contiguous()) &&
(inst->is_send_from_grf() || inst->uses_indirect_addressing())) {
return false;
}