From eaa87b1a4659c1c06b0ac9e5659943c888dff6d3 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Thu, 3 Feb 2022 09:35:07 +0100 Subject: [PATCH] radeonsi: limit loop unrolling for LLVM < 13 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Without this change LLVM 12 hits this error: """ LLVM ERROR: Error while trying to spill SGPR0_SGPR1 from class SReg_64: Cannot scavenge register without an emergency spill slot! """ when running glcts KHR-GL46.arrays_of_arrays_gl.AtomicUsage test. Fixes: 9ff086052ab ("radeonsi: unroll loops of up to 128 iterations") Reviewed-by: Marek Olšák Part-of: --- src/gallium/drivers/radeonsi/si_get.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_get.c b/src/gallium/drivers/radeonsi/si_get.c index 795461a1c90..985daa1c776 100644 --- a/src/gallium/drivers/radeonsi/si_get.c +++ b/src/gallium/drivers/radeonsi/si_get.c @@ -1072,8 +1072,8 @@ void si_init_screen_get_functions(struct si_screen *sscreen) .has_udot_4x8 = sscreen->info.has_accelerated_dot_product, .has_dot_2x16 = sscreen->info.has_accelerated_dot_product, .optimize_sample_mask_in = true, - .max_unroll_iterations = 128, - .max_unroll_iterations_aggressive = 128, + .max_unroll_iterations = LLVM_VERSION_MAJOR >= 13 ? 128 : 32, + .max_unroll_iterations_aggressive = LLVM_VERSION_MAJOR >= 13 ? 128 : 32, .use_interpolated_input_intrinsics = true, .lower_uniforms_to_ubo = true, .support_16bit_alu = sscreen->options.fp16,