blob: 13f8f9ce263ddfac30795632bf844484ba411a34 [file] [log] [blame]
#include <_mingw.h>
#ifdef _WIN64
#ifndef __SIZEOF_INT128__
typedef signed int __xint128 __attribute__ ((__mode__ (TI)));
#else
typedef signed __int128 __xint128;
#endif
__int64 _mul128(__int64, __int64, __int64 *);
__int64 _mul128(__int64 a, __int64 b, __int64 *hi)
{
union { __xint128 v; __int64 sv[2]; } var;
var.v = ((__xint128) a) * ((__xint128) b);
if (hi) *hi = var.sv[1];
return var.sv[0];
}
#endif /* _WIN64 */