r600/sfn: Fix splitting of multislot alu ops

The old source must not incorporate the start slot as lookup
index.

Fixes: commit 573448f93c
  r600/sfn: prepare alu split for use of variable length dot

Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/8120

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20826>
This commit is contained in:
Gert Wollny 2023-01-21 11:26:55 +01:00
parent ac30c40211
commit 4f50eba5a5

View file

@ -752,8 +752,9 @@ AluInstr::split(ValueFactory& vf)
}
SrcValues src;
for (int i = 0; i < alu_ops.at(m_opcode).nsrc; ++i) {
auto old_src = m_src[s * alu_ops.at(m_opcode).nsrc + i];
int nsrc = alu_ops.at(m_opcode).nsrc;
for (int i = 0; i < nsrc; ++i) {
auto old_src = m_src[k * nsrc + i];
// Make it easy for the scheduler and pin the register to the
// channel, otherwise scheduler would have to check whether a
// channel switch is possible