i965/fs: Print the scheduler mode.

Line wrap some awfully long lines while we are here.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
Matt Turner
2016-10-17 14:12:28 -07:00
committed by Ian Romanick
parent dabb5d4bee
commit 46a3ea06be
4 changed files with 28 additions and 8 deletions

View File

@@ -7213,6 +7213,12 @@ fs_visitor::allocate_registers(unsigned min_dispatch_width, bool allow_spilling)
SCHEDULE_PRE_LIFO, SCHEDULE_PRE_LIFO,
}; };
static const char *scheduler_mode_name[] = {
"top-down",
"non-lifo",
"lifo"
};
bool spill_all = allow_spilling && (INTEL_DEBUG & DEBUG_SPILL_FS); bool spill_all = allow_spilling && (INTEL_DEBUG & DEBUG_SPILL_FS);
/* Try each scheduling heuristic to see if it can successfully register /* Try each scheduling heuristic to see if it can successfully register
@@ -7221,6 +7227,7 @@ fs_visitor::allocate_registers(unsigned min_dispatch_width, bool allow_spilling)
*/ */
for (unsigned i = 0; i < ARRAY_SIZE(pre_modes); i++) { for (unsigned i = 0; i < ARRAY_SIZE(pre_modes); i++) {
schedule_instructions(pre_modes[i]); schedule_instructions(pre_modes[i]);
this->shader_stats.scheduler_mode = scheduler_mode_name[i];
if (0) { if (0) {
assign_regs_trivial(); assign_regs_trivial();

View File

@@ -53,6 +53,7 @@ offset(const fs_reg &reg, const brw::fs_builder &bld, unsigned delta)
#define UBO_START ((1 << 16) - 4) #define UBO_START ((1 << 16) - 4)
struct shader_stats { struct shader_stats {
const char *scheduler_mode;
unsigned promoted_constants; unsigned promoted_constants;
}; };

View File

@@ -2250,10 +2250,17 @@ fs_generator::generate_code(const cfg_t *cfg, int dispatch_width)
if (unlikely(debug_flag)) { if (unlikely(debug_flag)) {
fprintf(stderr, "Native code for %s\n" fprintf(stderr, "Native code for %s\n"
"SIMD%d shader: %d instructions. %d loops. %u cycles. %d:%d spills:fills. Promoted %u constants. Compacted %d to %d" "SIMD%d shader: %d instructions. %d loops. %u cycles. "
" bytes (%.0f%%)\n", "%d:%d spills:fills. "
shader_name, dispatch_width, before_size / 16, loop_count, cfg->cycle_count, "scheduled with mode %s. "
spill_count, fill_count, shader_stats.promoted_constants, before_size, after_size, "Promoted %u constants. "
"Compacted %d to %d bytes (%.0f%%)\n",
shader_name, dispatch_width, before_size / 16,
loop_count, cfg->cycle_count,
spill_count, fill_count,
shader_stats.scheduler_mode,
shader_stats.promoted_constants,
before_size, after_size,
100.0f * (before_size - after_size) / before_size); 100.0f * (before_size - after_size) / before_size);
dump_assembly(p->store, disasm_info); dump_assembly(p->store, disasm_info);
@@ -2263,13 +2270,17 @@ fs_generator::generate_code(const cfg_t *cfg, int dispatch_width)
compiler->shader_debug_log(log_data, compiler->shader_debug_log(log_data,
"%s SIMD%d shader: %d inst, %d loops, %u cycles, " "%s SIMD%d shader: %d inst, %d loops, %u cycles, "
"%d:%d spills:fills, Promoted %u constants, " "%d:%d spills:fills, "
"scheduled with mode %s, "
"Promoted %u constants, "
"compacted %d to %d bytes.", "compacted %d to %d bytes.",
_mesa_shader_stage_to_abbrev(stage), _mesa_shader_stage_to_abbrev(stage),
dispatch_width, before_size / 16, dispatch_width, before_size / 16,
loop_count, cfg->cycle_count, spill_count, loop_count, cfg->cycle_count,
fill_count, shader_stats.promoted_constants, before_size, spill_count, fill_count,
after_size); shader_stats.scheduler_mode,
shader_stats.promoted_constants,
before_size, after_size);
return start_offset; return start_offset;
} }

View File

@@ -952,6 +952,7 @@ fs_visitor::init()
this->pull_constant_loc = NULL; this->pull_constant_loc = NULL;
this->push_constant_loc = NULL; this->push_constant_loc = NULL;
this->shader_stats.scheduler_mode = NULL;
this->shader_stats.promoted_constants = 0, this->shader_stats.promoted_constants = 0,
this->grf_used = 0; this->grf_used = 0;