r600/sfn: Work around dependency issue when splitting op to group

The instruction that is split may still be referenced as extra
dependency in other instructions, so add a handle to the instruction
that it can be set to be scheduled.

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21357>
This commit is contained in:
Gert Wollny 2023-02-10 15:17:11 +01:00 committed by Marge Bot
parent 8b5d41cacb
commit ac6b95d40b
3 changed files with 6 additions and 0 deletions

View file

@ -809,6 +809,7 @@ AluInstr::split(ValueFactory& vf)
r->del_use(this);
}
}
group->set_origin(this);
return group;
}

View file

@ -314,6 +314,8 @@ AluGroup::set_scheduled()
if (m_slots[i])
m_slots[i]->set_scheduled();
}
if (m_origin)
m_origin->set_scheduled();
}
void

View file

@ -91,6 +91,8 @@ public:
bool addr_for_src() const { return m_addr_for_src; }
bool has_kill_op() const { return m_has_kill_op; }
void set_origin(AluInstr *o) { m_origin = o;}
private:
void forward_set_blockid(int id, int index) override;
bool do_ready() const override;
@ -115,6 +117,7 @@ private:
bool m_addr_is_index{false};
bool m_addr_for_src{false};
bool m_has_kill_op{false};
AluInstr *m_origin{nullptr};
};
} // namespace r600