mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 07:18:17 +02:00
nir: allow to fine tune unrolling for loops with soft fp64 ops
Lowered fp64 ops can blow up the loop bodies while still being suitable for unrolling. Allow for using different parameters to unroll loops with soft fp64. Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18863>
This commit is contained in:
parent
121f30005f
commit
1e8e785a07
3 changed files with 7 additions and 1 deletions
|
|
@ -111,7 +111,9 @@ gl_nir_opts(nir_shader *nir)
|
|||
|
||||
NIR_PASS(progress, nir, nir_opt_undef);
|
||||
NIR_PASS(progress, nir, nir_opt_conditional_discard);
|
||||
if (nir->options->max_unroll_iterations) {
|
||||
if (nir->options->max_unroll_iterations ||
|
||||
(nir->options->max_unroll_iterations_fp64 &&
|
||||
(nir->options->lower_doubles_options & nir_lower_fp64_full_software))) {
|
||||
NIR_PASS(progress, nir, nir_opt_loop_unroll);
|
||||
}
|
||||
} while (progress);
|
||||
|
|
|
|||
|
|
@ -3622,6 +3622,7 @@ typedef struct nir_shader_compiler_options {
|
|||
|
||||
unsigned max_unroll_iterations;
|
||||
unsigned max_unroll_iterations_aggressive;
|
||||
unsigned max_unroll_iterations_fp64;
|
||||
|
||||
bool lower_uniforms_to_ubo;
|
||||
|
||||
|
|
|
|||
|
|
@ -875,6 +875,9 @@ check_unrolling_restrictions(nir_shader *shader, nir_loop *loop)
|
|||
/* Unroll much more aggressively if it can hide load latency. */
|
||||
if (shader->options->max_unroll_iterations_aggressive && can_pipeline_loads(loop))
|
||||
max_iter = shader->options->max_unroll_iterations_aggressive;
|
||||
/* Tune differently if the loop has double ops and soft fp64 is in use */
|
||||
else if (shader->options->max_unroll_iterations_fp64 && loop->info->has_soft_fp64)
|
||||
max_iter = shader->options->max_unroll_iterations_fp64;
|
||||
unsigned trip_count =
|
||||
li->max_trip_count ? li->max_trip_count : li->guessed_trip_count;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue