From fd27b18631bff77ce864968238c4e6dbe37606a6 Mon Sep 17 00:00:00 2001 From: Gert Wollny Date: Sun, 13 Nov 2022 12:09:20 +0100 Subject: [PATCH] r600/sfn: Fix source modifiers for ffract64 Fixes: 79ca456b4837b3bc21cf9ef3c03c505c4b4909f6 r600/sfn: rewrite NIR backend Signed-off-by: Gert Wollny Part-of: --- src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp b/src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp index 997348f24ec..49958879d8f 100644 --- a/src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp @@ -1725,17 +1725,21 @@ emit_alu_op1_64bit(const nir_alu_instr& alu, } for (unsigned i = 0; i < nir_dest_num_components(alu.dest.dest); ++i) { - for (unsigned c = 0; c < 2; ++c) { - ir = new AluInstr(opcode, - value_factory.dest(alu.dest, 2 * i + c, pin_chan), - value_factory.src64(alu.src[0], i, swz[c]), - {alu_write}); - group->add_instruction(ir); - } + ir = new AluInstr(opcode, + value_factory.dest(alu.dest, 2 * i, pin_chan), + value_factory.src64(alu.src[0], i, swz[0]), + {alu_write}); + group->add_instruction(ir); if (alu.src[0].abs) ir->set_alu_flag(alu_src0_abs); if (alu.src[0].negate) ir->set_alu_flag(alu_src0_neg); + + ir = new AluInstr(opcode, + value_factory.dest(alu.dest, 2 * i + 1, pin_chan), + value_factory.src64(alu.src[0], i, swz[1]), + {alu_write}); + group->add_instruction(ir); } if (ir) ir->set_alu_flag(alu_last_instr);