r600/sfn: chain group barrier and predicate instructions

It seems they can not be emitted in the same ALU group

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37096>
This commit is contained in:
Gert Wollny 2025-08-28 23:55:48 +02:00 committed by Marge Bot
parent f9ae43bf04
commit 6cc25b15a1
2 changed files with 8 additions and 2 deletions

View file

@ -1439,7 +1439,6 @@ void Shader::InstructionChain::visit(AluInstr *instr)
if (last_ssbo_instr)
instr->add_required_instr(last_ssbo_instr);
}
}
void
@ -1448,6 +1447,13 @@ Shader::InstructionChain::visit(ScratchIOInstr *instr)
apply(instr, &last_scratch_instr);
}
void
Shader::InstructionChain::visit(IfInstr *instr)
{
if (last_group_barrier)
instr->predicate()->add_required_instr(last_group_barrier);
}
void
Shader::InstructionChain::visit(GDSInstr *instr)
{

View file

@ -380,7 +380,6 @@ private:
void visit(FetchInstr *instr) override { (void)instr; }
void visit(Block *instr) override { (void)instr; }
void visit(ControlFlowInstr *instr) override { (void)instr; }
void visit(IfInstr *instr) override { (void)instr; }
void visit(StreamOutInstr *instr) override { (void)instr; }
void visit(MemRingOutInstr *instr) override { (void)instr; }
void visit(EmitVertexInstr *instr) override { (void)instr; }
@ -388,6 +387,7 @@ private:
void visit(LDSAtomicInstr *instr) override { (void)instr; }
void visit(LDSReadInstr *instr) override { (void)instr; }
void visit(IfInstr *instr) override;
void visit(AluInstr *instr) override;
void visit(ScratchIOInstr *instr) override;
void visit(GDSInstr *instr) override;