From 6cd599abd5af7b6bd7fe59cfd7371566de4d041a Mon Sep 17 00:00:00 2001 From: Dan Carpenter Date: Sat, 17 Nov 2012 16:38:10 +0300 Subject: [PATCH] sval: introduce sval_bits_used() It basically returns fls(sval.uvalued); Signed-off-by: Dan Carpenter --- smatch.h | 1 + smatch_sval.c | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/smatch.h b/smatch.h index ed1eaff0..ba9df4dd 100644 --- a/smatch.h +++ b/smatch.h @@ -521,6 +521,7 @@ int sval_unsigned(sval_t sval); int sval_signed(sval_t sval); int sval_bits(sval_t sval); int sval_positive_bits(sval_t sval); +int sval_bits_used(sval_t sval); int sval_is_min(sval_t sval); int sval_is_max(sval_t sval); int sval_is_a_min(sval_t sval); diff --git a/smatch_sval.c b/smatch_sval.c index 3881a9fa..00774683 100644 --- a/smatch_sval.c +++ b/smatch_sval.c @@ -98,6 +98,17 @@ int sval_positive_bits(sval_t sval) return sval.type->bit_size; } +int sval_bits_used(sval_t sval) +{ + int i; + + for (i = 64; i >= 1; i--) { + if (sval.uvalue & (1ULL << (i - 1))) + return i; + } + return 0; +} + int sval_is_min(sval_t sval) { sval_t min = sval_type_min(sval.type); -- 2.11.4.GIT