fix compile with ICC 10

pull/2/head
weidai 2007-09-25 04:08:17 +00:00
parent c9c1fdbcb4
commit 1240b1690b
3 changed files with 7 additions and 5 deletions

View File

@ -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");

2
misc.h
View File

@ -523,7 +523,7 @@ template<> inline word64 rotrMod<word64>(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>(word16 x, unsigned int y)
{

View File

@ -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])