git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1689
6f19259b-4bc3-4df7-8a09-
765794883524
- for (BitIndex = -1; Operand != 0; BitIndex++, Operand >>= 1);\r
+ if (Operand == 0) {\r
+ return - 1;\r
+ }\r
+ for (BitIndex = 31; (INT32)Operand > 0; BitIndex--, Operand <<= 1);\r
IN UINT64 Operand\r
)\r
{\r
IN UINT64 Operand\r
)\r
{\r
- INTN BitIndex;\r
-\r
- for (BitIndex = -1;\r
- Operand != 0;\r
- BitIndex++, Operand = RShiftU64 (Operand, 1));\r
- return BitIndex;\r
+ if (Operand == (UINT32)Operand) {\r
+ //\r
+ // Operand is just a 32-bit integer\r
+ //\r
+ return HighBitSet32 ((UINT32)Operand);\r
+ }\r
+\r
+ //\r
+ // Operand is really a 64-bit integer\r
+ //\r
+ if (sizeof (UINTN) == sizeof (UINT32)) {\r
+ return HighBitSet32 (((UINT32*)&Operand)[1]) + 32;\r
+ } else {\r
+ return HighBitSet32 ((UINT32)RShiftU64 (Operand, 32)) + 32;\r
+ }\r