Revised GetPowerOfTwo32() and GetPowerOfTwo64() to be more efficient.
authorbxing <bxing@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 13 Jul 2006 08:05:35 +0000 (08:05 +0000)
committerbxing <bxing@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 13 Jul 2006 08:05:35 +0000 (08:05 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@963 6f19259b-4bc3-4df7-8a09-765794883524

MdePkg/Library/BaseLib/GetPowerOfTwo32.c
MdePkg/Library/BaseLib/GetPowerOfTwo64.c

index dbf4ca6..a639fd4 100644 (file)
@@ -33,8 +33,9 @@ GetPowerOfTwo32 (
   IN      UINT32                    Operand\r
   )\r
 {\r
-  INTN                              BitPos;\r
-  \r
-  BitPos = HighBitSet32 (Operand);\r
-  return BitPos >= 0 ? 1ul << BitPos : 0;\r
+  if (Operand == 0) {\r
+    return 0;\r
+  }\r
+\r
+  return 1ul << HighBitSet32 (Operand);\r
 }\r
index 8372a7f..52d148c 100644 (file)
@@ -33,8 +33,9 @@ GetPowerOfTwo64 (
   IN      UINT64                    Operand\r
   )\r
 {\r
-  INTN                              BitPos;\r
+  if (Operand == 0) {\r
+    return 0;\r
+  }\r
 \r
-  BitPos = HighBitSet64 (Operand);\r
-  return BitPos >= 0 ? LShiftU64 (1, BitPos) : 0;\r
+  return LShiftU64 (1, HighBitSet64 (Operand));\r
 }\r