diff --git a/reactos/include/crt/mingw32/intrin_x86.h b/reactos/include/crt/mingw32/intrin_x86.h index 7ac21642230..0824c6dd341 100644 --- a/reactos/include/crt/mingw32/intrin_x86.h +++ b/reactos/include/crt/mingw32/intrin_x86.h @@ -974,6 +974,23 @@ static __inline__ __attribute__((always_inline)) unsigned long long __emulu(cons return retval; } +#ifdef _M_AMD64 + +static __inline__ __attribute__((always_inline)) __int64 __mulh(__int64 a, __int64 b) +{ + __int64 retval; + __asm__("imulq %[b]" : "=d" (retval) : [a] "a" (a), [b] "rm" (b)); + return retval; +} + +static __inline__ __attribute__((always_inline)) unsigned __int64 __umulh(unsigned __int64 a, unsigned __int64 b) +{ + unsigned __int64 retval; + __asm__("mulq %[b]" : "=d" (retval) : [a] "a" (a), [b] "rm" (b)); + return retval; +} + +#endif /*** Port I/O ***/ static __inline__ __attribute__((always_inline)) unsigned char __inbyte(const unsigned short Port)