fix compile with Intel C++ Compiler 11.1

pull/2/head
weidai 2010-08-04 23:42:11 +00:00
parent 79ed03344b
commit d43f0c7321
2 changed files with 8 additions and 4 deletions

View File

@ -26,6 +26,7 @@ ifeq ($(ISX86),1)
GCC42_OR_LATER = $(shell $(CXX) -v 2>&1 | $(EGREP) -c "^gcc version (4.[2-9]|[5-9])") GCC42_OR_LATER = $(shell $(CXX) -v 2>&1 | $(EGREP) -c "^gcc version (4.[2-9]|[5-9])")
INTEL_COMPILER = $(shell $(CXX) --version 2>&1 | $(EGREP) -c "\(ICC\)") INTEL_COMPILER = $(shell $(CXX) --version 2>&1 | $(EGREP) -c "\(ICC\)")
ICC111_OR_LATER = $(shell $(CXX) --version 2>&1 | $(EGREP) -c "\(ICC\) ([2-9][0-9]|1[2-9]|11\.[1-9])")
GAS210_OR_LATER = $(shell echo "" | $(AS) -v 2>&1 | $(EGREP) -c "GNU assembler version (2\.[1-9][0-9]|[3-9])") GAS210_OR_LATER = $(shell echo "" | $(AS) -v 2>&1 | $(EGREP) -c "GNU assembler version (2\.[1-9][0-9]|[3-9])")
GAS217_OR_LATER = $(shell echo "" | $(AS) -v 2>&1 | $(EGREP) -c "GNU assembler version (2\.1[7-9]|2\.[2-9]|[3-9])") GAS217_OR_LATER = $(shell echo "" | $(AS) -v 2>&1 | $(EGREP) -c "GNU assembler version (2\.1[7-9]|2\.[2-9]|[3-9])")
ISMINGW = $(shell $(CXX) --version 2>&1 | $(EGREP) -c "mingw") ISMINGW = $(shell $(CXX) --version 2>&1 | $(EGREP) -c "mingw")
@ -39,10 +40,13 @@ endif
endif endif
ifneq ($(INTEL_COMPILER),0) ifneq ($(INTEL_COMPILER),0)
# "internal error: backend signals" occurs on some x86 inline assembly with ICC 9 and some x64 inline assembly with ICC 11 CXXFLAGS += -wd68 -wd186 -wd279 -wd327
ifeq ($(ICC111_OR_LATER),0)
# "internal error: backend signals" occurs on some x86 inline assembly with ICC 9 and some x64 inline assembly with ICC 11.0
# if you want to use Crypto++'s assembly code with ICC, try enabling it on individual files # if you want to use Crypto++'s assembly code with ICC, try enabling it on individual files
CXXFLAGS += -DCRYPTOPP_DISABLE_ASM CXXFLAGS += -DCRYPTOPP_DISABLE_ASM
endif endif
endif
ifeq ($(GAS210_OR_LATER),0) # .intel_syntax wasn't supported until GNU assembler 2.10 ifeq ($(GAS210_OR_LATER),0) # .intel_syntax wasn't supported until GNU assembler 2.10
CXXFLAGS += -DCRYPTOPP_DISABLE_ASM CXXFLAGS += -DCRYPTOPP_DISABLE_ASM

6
cpu.h
View File

@ -17,7 +17,7 @@
#endif #endif
#if CRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLE #if CRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLE
#if !defined(__GNUC__) || defined(__SSSE3__) #if !defined(__GNUC__) || defined(__SSSE3__) || defined(__INTEL_COMPILER)
#include <tmmintrin.h> #include <tmmintrin.h>
#else #else
__inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
@ -27,7 +27,7 @@ _mm_shuffle_epi8 (__m128i a, __m128i b)
return a; return a;
} }
#endif #endif
#if !defined(__GNUC__) || defined(__SSE4_1__) #if !defined(__GNUC__) || defined(__SSE4_1__) || defined(__INTEL_COMPILER)
#include <smmintrin.h> #include <smmintrin.h>
#else #else
__inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
@ -44,7 +44,7 @@ _mm_insert_epi32 (__m128i a, int b, const int i)
return a; return a;
} }
#endif #endif
#if !defined(__GNUC__) || (defined(__AES__) && defined(__PCLMUL__)) #if !defined(__GNUC__) || (defined(__AES__) && defined(__PCLMUL__)) || defined(__INTEL_COMPILER)
#include <wmmintrin.h> #include <wmmintrin.h>
#else #else
__inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__)) __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))