[Mesa-dev] [PATCH 1/2] tgsi/scan: count memory instructions

Marek Olšák maraeo at gmail.com
Tue Feb 23 16:45:04 UTC 2016


From: Marek Olšák <marek.olsak at amd.com>

for radeonsi
---
 src/gallium/auxiliary/tgsi/tgsi_scan.c | 19 +++++++++++++++++++
 src/gallium/auxiliary/tgsi/tgsi_scan.h |  1 +
 2 files changed, 20 insertions(+)

diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.c b/src/gallium/auxiliary/tgsi/tgsi_scan.c
index 4f85d2f..8e24cc6 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_scan.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_scan.c
@@ -43,6 +43,15 @@
 #include "tgsi/tgsi_scan.h"
 
 
+static bool
+is_memory_file(unsigned file)
+{
+   return file == TGSI_FILE_SAMPLER ||
+          file == TGSI_FILE_SAMPLER_VIEW ||
+          file == TGSI_FILE_IMAGE ||
+          file == TGSI_FILE_BUFFER;
+}
+
 
 static void
 scan_instruction(struct tgsi_shader_info *info,
@@ -50,6 +59,7 @@ scan_instruction(struct tgsi_shader_info *info,
                  unsigned *current_depth)
 {
    unsigned i;
+   bool is_mem_inst = false;
 
    assert(fullinst->Instruction.Opcode < TGSI_OPCODE_LAST);
    info->opcode_count[fullinst->Instruction.Opcode]++;
@@ -181,6 +191,9 @@ scan_instruction(struct tgsi_shader_info *info,
             info->is_msaa_sampler[src->Register.Index] = TRUE;
          }
       }
+
+      if (is_memory_file(src->Register.File))
+         is_mem_inst = true;
    }
 
    /* check for indirect register writes */
@@ -190,8 +203,14 @@ scan_instruction(struct tgsi_shader_info *info,
          info->indirect_files |= (1 << dst->Register.File);
          info->indirect_files_written |= (1 << dst->Register.File);
       }
+
+      if (is_memory_file(dst->Register.File))
+         is_mem_inst = true;
    }
 
+   if (is_mem_inst)
+      info->num_memory_instructions++;
+
    info->num_instructions++;
 }
      
diff --git a/src/gallium/auxiliary/tgsi/tgsi_scan.h b/src/gallium/auxiliary/tgsi/tgsi_scan.h
index 0541255..d65dec7 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_scan.h
+++ b/src/gallium/auxiliary/tgsi/tgsi_scan.h
@@ -74,6 +74,7 @@ struct tgsi_shader_info
 
    uint immediate_count; /**< number of immediates declared */
    uint num_instructions;
+   uint num_memory_instructions; /**< sampler, buffer, and image instructions */
 
    uint opcode_count[TGSI_OPCODE_LAST];  /**< opcode histogram */
 
-- 
2.5.0



More information about the mesa-dev mailing list