Kai Tietz | 2cbaae9 | 2011-09-12 13:42:57 +0000 | [diff] [blame] | 1 | #include <_mingw.h> |
2 | |||||
3 | #ifdef _WIN64 | ||||
4 | #ifndef __SIZEOF_INT128__ | ||||
5 | typedef signed int __xint128 __attribute__ ((__mode__ (TI))); | ||||
6 | #else | ||||
7 | typedef 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 |