From 8b24fa5b0a1d056e34be6dfe315bcef07dc40508 Mon Sep 17 00:00:00 2001 From: Dhruv Maroo Date: Sat, 14 May 2022 16:21:04 +0530 Subject: [PATCH] Make `nvLogBase2` more efficient --- src/nvidia/src/lib/base_utils.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/nvidia/src/lib/base_utils.c b/src/nvidia/src/lib/base_utils.c index 9a02e3db9..225043914 100644 --- a/src/nvidia/src/lib/base_utils.c +++ b/src/nvidia/src/lib/base_utils.c @@ -35,20 +35,17 @@ // NvU32 nvLogBase2(NvU64 val) { - NvU32 i; + NvU32 i = 0; - NV_ASSERT(((val)&(val-1)) == 0); + // Use two NV_ASSERTs for better error identification + NV_ASSERT(val != 0); + NV_ASSERT(((val) & (val - 1)) == 0); - for (i = 0; i < 64; i++) + while ((val >>= 1)) { - if ((1ull << i) == val) - { - break; - } + i++; } - NV_ASSERT(i < 64); - return i; } @@ -355,4 +352,3 @@ NvU32 nvStringLen(const char * str) ; return i - 1; } -