aco/ra: Don't clear fixed operand sources if they were blocked

That would undo the blocking and allow for conflicting assignments.

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37381>
This commit is contained in:
Natalie Vock 2025-10-19 17:14:03 +02:00 committed by Marge Bot
parent d4013e7432
commit 75b89f233f

View file

@ -2367,8 +2367,11 @@ handle_fixed_operands(ra_ctx& ctx, RegisterFile& register_file,
assert(std::none_of(parallelcopy.begin(), parallelcopy.end(),
[&](auto copy) { return copy.def.physReg() == op.physReg(); }));
/* clear from register_file so fixed operands are not collected by collect_vars() */
tmp_file.clear(src, op.regClass());
/* clear from register_file so fixed operands are not collected by collect_vars(), but if src
* has been blocked by a previous operand, don't undo the blocking
*/
if (!tmp_file.is_blocked(src))
tmp_file.clear(src, op.regClass());
BITSET_SET(mask, i);