The clause local registers can't be used if a new CF is started, but
the assembler still may introduce a CFs to work around some hardware bug,
so make sure RA doesn't assume that the predicate ALU op is in the same ALU
CF like the ALU ops before.
This is a hotfix, the scheduler should handle this better.
Fixes:
cfbd1fd41300740154f89b4382e4790e61c1bf0b
r600/sfn: Use clause local registers in RA
Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24611>
void
LiveRangeInstrVisitor::visit(IfInstr *instr)
{
+ int b = m_block;
+ m_block = -1;
instr->predicate()->accept(*this);
scope_if();
+ m_block = b;
}
void