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
}\r