tgsi/scan: count memory instructions

for radeonsi

Reviewed-by: Brian Paul <brianp@vmware.com>
This commit is contained in:
Marek Olšák 2016-02-22 00:23:10 +01:00
parent 35859d5bbb
commit 09bfbd43a0
2 changed files with 20 additions and 0 deletions

View File

@ -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++;
}

View File

@ -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 */