From 1240b1690bd2ab29126c46705f776841d7e910a8 Mon Sep 17 00:00:00 2001 From: weidai Date: Tue, 25 Sep 2007 04:08:17 +0000 Subject: [PATCH] fix compile with ICC 10 --- integer.cpp | 8 +++++--- misc.h | 2 +- vmac.cpp | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/integer.cpp b/integer.cpp index be5f4164..56dab61a 100644 --- a/integer.cpp +++ b/integer.cpp @@ -101,7 +101,7 @@ static word AtomicInverseModPower2(word A) // ******************************************************** -#if !defined(CRYPTOPP_NATIVE_DWORD_AVAILABLE) || CRYPTOPP_BOOL_X64 +#if !defined(CRYPTOPP_NATIVE_DWORD_AVAILABLE) || defined(__x86_64__) #define Declare2Words(x) word x##0, x##1; #define AssignWord(a, b) a##0 = b; a##1 = 0; #define Add2WordsBy1(a, b, c) a##0 = b##0 + c; a##1 = b##1 + (a##0 < c); @@ -109,10 +109,12 @@ static word AtomicInverseModPower2(word A) #define HighWord(a) a##1 #ifdef _MSC_VER #define MultiplyWords(p, a, b) p##0 = _umul128(a, b, &p##1); - #define Double3Words(c, d) d##1 = __shiftleft128(d##0, d##1, 1); d##0 = __shiftleft128(c, d##0, 1); c *= 2; + #ifndef __INTEL_COMPILER + #define Double3Words(c, d) d##1 = __shiftleft128(d##0, d##1, 1); d##0 = __shiftleft128(c, d##0, 1); c *= 2; + #endif #elif defined(__DECCXX) #define MultiplyWords(p, a, b) p##0 = a*b; p##1 = asm("umulh %a0, %a1, %v0", a, b); - #elif CRYPTOPP_BOOL_X64 + #elif defined(__x86_64__) #define MultiplyWords(p, a, b) asm ("mulq %3" : "=a"(p##0), "=d"(p##1) : "a"(a), "g"(b) : "cc"); #define MulAcc(c, d, a, b) asm ("mulq %6; addq %3, %0; adcq %4, %1; adcq $0, %2;" : "+r"(c), "+r"(d##0), "+r"(d##1), "=a"(p0), "=d"(p1) : "a"(a), "g"(b) : "cc"); #define Double3Words(c, d) asm ("addq %0, %0; adcq %1, %1; adcq %2, %2;" : "+r"(c), "+r"(d##0), "+r"(d##1) : : "cc"); diff --git a/misc.h b/misc.h index e97e1841..089308c3 100644 --- a/misc.h +++ b/misc.h @@ -523,7 +523,7 @@ template<> inline word64 rotrMod(word64 x, unsigned int y) #endif // #if _MSC_VER >= 1310 -#if _MSC_VER >= 1400 && (!defined(__INTEL_COMPILER) || __INTEL_COMPILER >= 1000) +#if _MSC_VER >= 1400 && !defined(__INTEL_COMPILER) template<> inline word16 rotlFixed(word16 x, unsigned int y) { diff --git a/vmac.cpp b/vmac.cpp index c503d987..f252d02e 100755 --- a/vmac.cpp +++ b/vmac.cpp @@ -141,7 +141,7 @@ VMAC_Base::VHASH_Update_SSE2(const word64 *data, size_t blocksRemainingInWord64, AS2( mov %1, %%ebx) ".intel_syntax noprefix;" #else - #if _MSC_VER < 1300 + #if _MSC_VER < 1300 || defined(__INTEL_COMPILER) word32 L1KeyLength = m_L1KeyLength; char isFirstBlock = m_isFirstBlock; AS2( mov ebx, [L1KeyLength])