From: Eric Anholt Date: Tue, 14 May 2019 23:24:33 +0000 (-0700) Subject: freedreno: Log the number of loops in the shader for shader-db. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ef88e23d0335c05ebc60a621ee91cd6b22208597;p=mesa.git freedreno: Log the number of loops in the shader for shader-db. shader-db's report.py will use this to see when we've changed loop unrolling behavior on a shader and skip including other stats like instruction count from being considered for that shader, since they won't be useful as a proxy for real world performance in that case. Reviewed-by: Rob Clark Tested-by: Eduardo Lima Mitev --- diff --git a/src/freedreno/ir3/ir3_compiler_nir.c b/src/freedreno/ir3/ir3_compiler_nir.c index c230fbd3b70..4cae442032c 100644 --- a/src/freedreno/ir3/ir3_compiler_nir.c +++ b/src/freedreno/ir3/ir3_compiler_nir.c @@ -2168,6 +2168,7 @@ static void emit_loop(struct ir3_context *ctx, nir_loop *nloop) { emit_cf_list(ctx, &nloop->body); + ctx->so->loops++; } static void diff --git a/src/freedreno/ir3/ir3_shader.h b/src/freedreno/ir3/ir3_shader.h index c2c1a5312bc..06336eda0da 100644 --- a/src/freedreno/ir3/ir3_shader.h +++ b/src/freedreno/ir3/ir3_shader.h @@ -401,6 +401,7 @@ struct ir3_shader_variant { unsigned branchstack; unsigned max_sun; + unsigned loops; /* the instructions length is in units of instruction groups * (4 instructions for a3xx, 16 instructions for a4xx.. each diff --git a/src/gallium/drivers/freedreno/ir3/ir3_gallium.c b/src/gallium/drivers/freedreno/ir3/ir3_gallium.c index c189a90dc16..9fd84899b36 100644 --- a/src/gallium/drivers/freedreno/ir3/ir3_gallium.c +++ b/src/gallium/drivers/freedreno/ir3/ir3_gallium.c @@ -52,7 +52,7 @@ dump_shader_info(struct ir3_shader_variant *v, struct pipe_debug_callback *debug pipe_debug_message(debug, SHADER_INFO, "%s shader: %u inst, %u dwords, " "%u half, %u full, %u const, %u constlen, " - "%u (ss), %u (sy), %d max_sun\n", + "%u (ss), %u (sy), %d max_sun, %d loops\n", ir3_shader_stage(v->shader), v->info.instrs_count, v->info.sizedwords, @@ -61,7 +61,7 @@ dump_shader_info(struct ir3_shader_variant *v, struct pipe_debug_callback *debug v->info.max_const + 1, v->constlen, v->info.ss, v->info.sy, - v->max_sun); + v->max_sun, v->loops); } struct ir3_shader_variant *