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);