Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Microsoft Specific
Return the high 64 bits of the product of two 64-bit unsigned integers.
unsigned __int64 __UMULH(
unsigned __int64 a,
unsigned __int64 b
);
unsigned __int64 __umulh(
unsigned __int64 a,
unsigned __int64 b
);
Parameters
[in] a
The first number to multiply.[in] b
The second number to multiply.
Return Value
The high 64 bits of the 128-bit result of the multiplication.
Requirements
Intrinsic |
Architecture |
---|---|
__UMULH |
IPF |
__umulh |
x64 |
Header file <intrin.h>
Remarks
These routines are only available as intrinsics.
Example
// umulh.cpp
// processor: IPF
#include <cstdio>
#include <intrin.h>
#pragma intrinsic (__UMULH)
int main()
{
unsigned __int64 i = 0x10;
unsigned __int64 j = 0xFEDCBA9876543210;
unsigned __int64 k = i * j; // k has the low 64 bits
// of the product.
unsigned __int64 result;
result = __UMULH(i, j); // result has the high 64 bits
// of the product.
printf_s("0x%I64x * 0x%I64x = 0x%I64x%I64x \n", i, j, result, k);
return 0;
}
0x10 * 0xfedcba9876543210 = 0xfedcba98765432100