From 20a7ead8bdf09774c7d58fcbe6a0980d08ed5365 Mon Sep 17 00:00:00 2001 From: Ville Syrjälä Date: Fri, 7 Sep 2018 22:12:26 +0300 Subject: lib: Add roundup_power_of_two() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a helper to round a value to the next power of two size. And since we need fls() to implement that, reuse that elsewhere as well. Signed-off-by: Ville Syrjälä Reviewed-by: Chris Wilson --- lib/igt_aux.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'lib/igt_aux.h') diff --git a/lib/igt_aux.h b/lib/igt_aux.h index ef89faa9..192c3ad8 100644 --- a/lib/igt_aux.h +++ b/lib/igt_aux.h @@ -287,4 +287,10 @@ void igt_lsof(const char *dpath); #define is_power_of_two(x) (((x) & ((x)-1)) == 0) +#define igt_fls(x) ((x) ? __builtin_choose_expr(sizeof(x) == 8, \ + 64 - __builtin_clzll(x), \ + 32 - __builtin_clz(x)) : 0) + +#define roundup_power_of_two(x) ((x) != 0 ? 1 << igt_fls((x) - 1) : 0) + #endif /* IGT_AUX_H */ -- cgit v1.2.3