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

Author: Samuel Pitoiset <[email protected]>
Date:   Wed Nov 16 10:35:19 2022 +0000

aco: fix FS inputs loads in WQM with 16-bit

p_wqm needs to use the same size.

Fixes: 16d2c7ad557 ("aco/gfx11: perform FS input loads in WQM")
Signed-off-by: Samuel Pitoiset <[email protected]>
Reviewed-by: Rhys Perry <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19788>

---

 src/amd/compiler/aco_instruction_selection.cpp | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/amd/compiler/aco_instruction_selection.cpp 
b/src/amd/compiler/aco_instruction_selection.cpp
index 60b006539f1..86fe1585787 100644
--- a/src/amd/compiler/aco_instruction_selection.cpp
+++ b/src/amd/compiler/aco_instruction_selection.cpp
@@ -5347,7 +5347,10 @@ emit_interp_instr_gfx11(isel_context* ctx, unsigned idx, 
unsigned component, Tem
       res = bld.vinterp_inreg(aco_opcode::v_interp_p2_f32_inreg, bld.def(v1), 
p, coord2, p10);
    }
    /* lds_param_load must be done in WQM, and the result kept valid for helper 
lanes. */
-   emit_wqm(bld, res, dst, true);
+   if (dst.regClass() != v2b)
+      emit_wqm(bld, res, dst, true);
+   else
+      emit_extract_vector(ctx, emit_wqm(bld, res, Temp(0, s1), true), 0, dst);
 }
 
 void
@@ -5417,7 +5420,10 @@ emit_interp_mov_instr(isel_context* ctx, unsigned idx, 
unsigned component, unsig
          Temp res = bld.vop1_dpp(aco_opcode::v_mov_b32, bld.def(v1), p, 
dpp_ctrl);
 
          /* lds_param_load must be done in WQM, and the result kept valid for 
helper lanes. */
-         emit_wqm(bld, res, dst, true);
+         if (dst.regClass() != v2b)
+            emit_wqm(bld, res, dst, true);
+         else
+            emit_extract_vector(ctx, emit_wqm(bld, res, Temp(0, s1), true), 0, 
dst);
       }
    } else {
       bld.vintrp(aco_opcode::v_interp_mov_f32, Definition(dst), 
Operand::c32(vertex_id),

Reply via email to