blob: 13f8f9ce263ddfac30795632bf844484ba411a34 [file] [log] [blame]
Kai Tietz2cbaae92011-09-12 13:42:57 +00001#include <_mingw.h>
2
3#ifdef _WIN64
4#ifndef __SIZEOF_INT128__
5typedef signed int __xint128 __attribute__ ((__mode__ (TI)));
6#else
7typedef signed __int128 __xint128;
8#endif
9
10__int64 _mul128(__int64, __int64, __int64 *);
11
12__int64 _mul128(__int64 a, __int64 b, __int64 *hi)
13{
14 union { __xint128 v; __int64 sv[2]; } var;
15 var.v = ((__xint128) a) * ((__xint128) b);
16 if (hi) *hi = var.sv[1];
17 return var.sv[0];
18}
19
20#endif /* _WIN64 */
21
22