From 7ef3df4e3b1dec55cf393063f671498d629d26ef Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Wed, 18 Mar 2009 16:17:53 +0000 Subject: [PATCH] implement __mulh and __umulh svn path=/branches/ros-amd64-bringup/; revision=40088 --- reactos/include/crt/mingw32/intrin_x86.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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)