diff --git a/src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp b/src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp index 25f0663e9a0..e9de6fd66c6 100644 --- a/src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp @@ -537,6 +537,14 @@ bool AluInstr::do_replace_source(PRegister old_src, PVirtualValue new_src) return process; } +void +AluInstr::override_or_clear_dest(PRegister dummy_reg) +{ + m_alu_flags.reset(alu_write); + m_fallback_chan = m_dest->chan(); + m_dest = m_src.size() < 3 ? nullptr : dummy_reg; +} + bool AluInstr::replace_src(int i, PVirtualValue new_src, uint32_t to_set, SourceMod to_clear) { diff --git a/src/gallium/drivers/r600/sfn/sfn_instr_alu.h b/src/gallium/drivers/r600/sfn/sfn_instr_alu.h index 0d103b88956..e98cadddcc3 100644 --- a/src/gallium/drivers/r600/sfn/sfn_instr_alu.h +++ b/src/gallium/drivers/r600/sfn/sfn_instr_alu.h @@ -209,6 +209,8 @@ public: auto output_modifier() const { return m_output_modifier; } auto has_output_modifier() const { return m_output_modifier != omod_none; } + void override_or_clear_dest(PRegister dummy_reg); + private: friend class AluGroup;