mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-22 20:00:10 +01:00
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:
parent
8b5d41cacb
commit
ac6b95d40b
3 changed files with 6 additions and 0 deletions
|
|
@ -809,6 +809,7 @@ AluInstr::split(ValueFactory& vf)
|
|||
r->del_use(this);
|
||||
}
|
||||
}
|
||||
group->set_origin(this);
|
||||
|
||||
return group;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -314,6 +314,8 @@ AluGroup::set_scheduled()
|
|||
if (m_slots[i])
|
||||
m_slots[i]->set_scheduled();
|
||||
}
|
||||
if (m_origin)
|
||||
m_origin->set_scheduled();
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue