On 08/22/2017 09:52 AM, Nicolai Hähnle wrote:
On 22.08.2017 17:42, Marek Olšák wrote:
From: Marek Olšák <marek.ol...@amd.com>

---
  src/gallium/auxiliary/tgsi/tgsi_scan.c | 10 ++++++++--
  1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.c
b/src/gallium/auxiliary/tgsi/tgsi_scan.c
index 2fd7d7c..db87ce3 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_scan.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_scan.c
@@ -450,22 +450,28 @@ scan_instruction(struct tgsi_shader_info *info,
              info->uses_linear_opcode_interp_offset = TRUE;
              break;
           case TGSI_OPCODE_INTERP_SAMPLE:
              info->uses_linear_opcode_interp_sample = TRUE;
              break;
           }
           break;
        }
     }
-   if (fullinst->Instruction.Opcode >= TGSI_OPCODE_F2D &&
-       fullinst->Instruction.Opcode <= TGSI_OPCODE_DSSG)
+   if ((fullinst->Instruction.Opcode >= TGSI_OPCODE_F2D &&
+        fullinst->Instruction.Opcode <= TGSI_OPCODE_DSSG) ||
+       fullinst->Instruction.Opcode == TGSI_OPCODE_DFMA ||
+       fullinst->Instruction.Opcode == TGSI_OPCODE_DDIV ||
+       fullinst->Instruction.Opcode == TGSI_OPCODE_D2U64 ||
+       fullinst->Instruction.Opcode == TGSI_OPCODE_D2I64 ||
+       fullinst->Instruction.Opcode == TGSI_OPCODE_U642D ||
+       fullinst->Instruction.Opcode == TGSI_OPCODE_I642D)
        info->uses_doubles = TRUE;


I'd suggest creating a tgsi_uses_double(opcode) helper function. And use explicit switch cases instead of range checks just in case we ever renumber the opcodes. The compiler should optimize the switch cases accordingly.

-Brian



Nice.

In a neat coincidence, this is precisely the kind of thing that can be
done more cleanly on top of the tgsi_info series that I just sent out :)

I suggest using that, but for now this approach is also

Reviewed-by: Nicolai Hähnle <nicolai.haeh...@amd.com>


     for (i = 0; i < fullinst->Instruction.NumSrcRegs; i++) {
        scan_src_operand(info, fullinst, &fullinst->Src[i], i,
                         tgsi_util_get_inst_usage_mask(fullinst, i),
                         is_interp_instruction, &is_mem_inst);
     }
     if (fullinst->Instruction.Texture) {
        for (i = 0; i < fullinst->Texture.NumOffsets; i++) {




_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to