r600/sfn: Fix opcode and result dest slot mask for variable size dot
authorGert Wollny <gert.wollny@collabora.com>
Sat, 21 Jan 2023 10:17:58 +0000 (11:17 +0100)
committerGert Wollny <gert.wollny@collabora.com>
Sat, 21 Jan 2023 10:27:57 +0000 (11:27 +0100)
Fixes: commit 2df023a1f1990aad6c20eca85af19c7d21a43203
    r600/sfn: pre-evaluate allowed dest mask in Alu instructions

Related: 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>

src/gallium/drivers/r600/sfn/sfn_instr_alu.cpp

index ceeb90e..d778a34 100644 (file)
@@ -71,7 +71,8 @@ AluInstr::AluInstr(EAluOp opcode,
 
    if (dest && slots > 1) {
       switch (m_opcode) {
-      case op2_dot: m_allowed_desk_mask = (1 << (4 - slots)) - 1; break;
+      case op2_dot_ieee: m_allowed_desk_mask = (1 << (5 - slots)) - 1;
+         break;
       default:
          if (has_alu_flag(alu_is_cayman_trans)) {
             m_allowed_desk_mask = (1 << slots) - 1;