From 1346d9830aee4834d7409f0c9f94928a5da51edb Mon Sep 17 00:00:00 2001 From: Steffen Jaeckel Date: Tue, 3 Oct 2017 09:19:50 +0200 Subject: [PATCH] there's no __int128 on MSVC, fall back to 32bit MPI's --- tommath.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/tommath.h b/tommath.h index 591076e..5523ad0 100644 --- a/tommath.h +++ b/tommath.h @@ -26,6 +26,11 @@ extern "C" { #endif +/* MS Visual C++ doesn't have a 128bit type for words, so fall back to 32bit MPI's (where words are 64bit) */ +#if defined(_MSC_VER) +# define MP_32BIT +#endif + /* detect 64-bit mode if possible */ #if defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64) || \ defined(__powerpc64__) || defined(__ppc64__) || defined(__PPC64__) || \ @@ -63,9 +68,7 @@ typedef uint32_t mp_word; #elif defined(MP_64BIT) /* for GCC only on supported platforms */ typedef uint64_t mp_digit; -# if defined(_WIN32) -typedef unsigned __int128 mp_word; -# elif defined(__GNUC__) +# if defined(__GNUC__) typedef unsigned long mp_word __attribute__((mode(TI))); # else /* it seems you have a problem