diff --git a/src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp b/src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp index 1746a71b985..0508df1bd0b 100644 --- a/src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp @@ -809,6 +809,7 @@ AluInstr::split(ValueFactory& vf) r->del_use(this); } } + group->set_origin(this); return group; } diff --git a/src/gallium/drivers/r600/sfn/sfn_instr_alugroup.cpp b/src/gallium/drivers/r600/sfn/sfn_instr_alugroup.cpp index 60af23739a9..f19b0e28f93 100644 --- a/src/gallium/drivers/r600/sfn/sfn_instr_alugroup.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_instr_alugroup.cpp @@ -314,6 +314,8 @@ AluGroup::set_scheduled() if (m_slots[i]) m_slots[i]->set_scheduled(); } + if (m_origin) + m_origin->set_scheduled(); } void diff --git a/src/gallium/drivers/r600/sfn/sfn_instr_alugroup.h b/src/gallium/drivers/r600/sfn/sfn_instr_alugroup.h index 4a2abc154e1..b3906e4a585 100644 --- a/src/gallium/drivers/r600/sfn/sfn_instr_alugroup.h +++ b/src/gallium/drivers/r600/sfn/sfn_instr_alugroup.h @@ -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