From 77aa86a5217662e5dfe3886a7ada04ec01d42f41 Mon Sep 17 00:00:00 2001 From: Caio Marcelo de Oliveira Filho Date: Thu, 25 Jun 2020 13:58:36 -0700 Subject: [PATCH] intel/fs: Separate SLM size calculation from encoding Reviewed-by: Jordan Justen Part-of: --- src/intel/compiler/brw_compiler.h | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/src/intel/compiler/brw_compiler.h b/src/intel/compiler/brw_compiler.h index bfec4e8..0721a24 100644 --- a/src/intel/compiler/brw_compiler.h +++ b/src/intel/compiler/brw_compiler.h @@ -1581,6 +1581,19 @@ void brw_debug_key_recompile(const struct brw_compiler *c, void *log, const struct brw_base_prog_key *old_key, const struct brw_base_prog_key *key); +/* Shared Local Memory Size is specified as powers of two, + * and also have a Gen-dependent minimum value if not zero. + */ +static inline uint32_t +calculate_gen_slm_size(unsigned gen, uint32_t bytes) +{ + assert(bytes <= 64 * 1024); + if (bytes > 0) + return MAX2(util_next_power_of_two(bytes), gen >= 9 ? 1024 : 4096); + else + return 0; +} + static inline uint32_t encode_slm_size(unsigned gen, uint32_t bytes) { @@ -1595,18 +1608,19 @@ encode_slm_size(unsigned gen, uint32_t bytes) * ------------------------------------------------------------------- * Gen9+ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | */ - assert(bytes <= 64 * 1024); if (bytes > 0) { - /* Shared Local Memory Size is specified as powers of two. */ - slm_size = util_next_power_of_two(bytes); + slm_size = calculate_gen_slm_size(gen, bytes); + assert(util_is_power_of_two_nonzero(slm_size)); if (gen >= 9) { - /* Use a minimum of 1kB; turn an exponent of 10 (1024 kB) into 1. */ - slm_size = ffs(MAX2(slm_size, 1024)) - 10; + /* Turn an exponent of 10 (1024 kB) into 1. */ + assert(slm_size >= 1024); + slm_size = ffs(slm_size) - 10; } else { - /* Use a minimum of 4kB; convert to the pre-Gen9 representation. */ - slm_size = MAX2(slm_size, 4096) / 4096; + assert(slm_size >= 4096); + /* Convert to the pre-Gen9 representation. */ + slm_size = slm_size / 4096; } } -- 2.7.4