Module: Mesa
Branch: main
Commit: f7226181b408f0087032e3b9dff4c87f89b657aa
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=f7226181b408f0087032e3b9dff4c87f89b657aa

Author: Gert Wollny <[email protected]>
Date:   Mon Aug  7 08:51:23 2023 +0200

r600/sfn: take number of dest values into account

With the write mask removed we have to run the loop correctly.

Fixes: b870988b77f70acd69feb1d4e52343b7c3d4e328
    r600/sfn: Stop referencing legacy functionality

Related: https://gitlab.freedesktop.org/mesa/mesa/-/issues/9490
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24533>

---

 src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp 
b/src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp
index ac050aa05c1..d5e00eaee79 100644
--- a/src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp
+++ b/src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp
@@ -2719,7 +2719,7 @@ emit_alu_comb_with_zero(const nir_alu_instr& alu, EAluOp 
opcode, Shader& shader)
    auto& value_factory = shader.value_factory();
    AluInstr *ir = nullptr;
    auto pin = pin_for_components(alu);
-   for (int i = 0; i < 4; ++i) {
+   for (unsigned i = 0; i < nir_dest_num_components(alu.dest.dest); ++i) {
       ir = new AluInstr(opcode,
                         value_factory.dest(alu.dest, i, pin),
                         value_factory.zero(),
@@ -2961,7 +2961,7 @@ emit_alu_trans_op2_eg(const nir_alu_instr& alu, EAluOp 
opcode, Shader& shader)
    AluInstr *ir = nullptr;
 
    auto pin = pin_for_components(alu);
-   for (int i = 0; i < 4; ++i) {
+   for (unsigned i = 0; i < nir_dest_num_components(alu.dest.dest); ++i) {
       ir = new AluInstr(opcode,
                         value_factory.dest(alu.dest.dest, i, pin),
                         value_factory.src(src0, i),

Reply via email to