diff --git a/cmake/flags.cmake b/cmake/flags.cmake index d50b5c84..3cf24f0b 100644 --- a/cmake/flags.cmake +++ b/cmake/flags.cmake @@ -80,4 +80,12 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES Clang) endif() endif() +elseif (CMAKE_CXX_COMPILER_ID MATCHES Intel) + + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -funroll-loops") + + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fno-exceptions -fno-rtti") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -funroll-loops") + endif() diff --git a/src/crypto/CryptoNight.h b/src/crypto/CryptoNight.h index b1ec2371..e9285853 100644 --- a/src/crypto/CryptoNight.h +++ b/src/crypto/CryptoNight.h @@ -29,7 +29,7 @@ #include #include -#if defined _MSC_VER || defined XMRIG_ARM +#if defined _MSC_VER || defined XMRIG_ARM || defined __INTEL_COMPILER #define ABI_ATTRIBUTE #else #define ABI_ATTRIBUTE __attribute__((ms_abi)) diff --git a/src/crypto/CryptoNight_x86.h b/src/crypto/CryptoNight_x86.h index 202b662a..c4eca53b 100644 --- a/src/crypto/CryptoNight_x86.h +++ b/src/crypto/CryptoNight_x86.h @@ -517,8 +517,10 @@ static inline __m128i int_sqrt_v2(const uint64_t n0) r >>= 19; uint64_t x2 = (s - (1022ULL << 32)) * (r - s - (1022ULL << 32) + 1); -# if (defined(_MSC_VER) || __GNUC__ > 7 || (__GNUC__ == 7 && __GNUC_MINOR__ > 1)) && (defined(__x86_64__) || defined(_M_AMD64)) +# if (defined(_MSC_VER) || __GNUC__ > 7 || (__GNUC__ == 7 && __GNUC_MINOR__ > 1)) && (defined(__x86_64__) || defined(_M_AMD64)) && !defined(__INTEL_COMPILER) _addcarry_u64(_subborrow_u64(0, x2, n0, (unsigned long long int*)&x2), r, 0, (unsigned long long int*)&r); +# elif defined(__INTEL_COMPILER) + _addcarry_u64(_subborrow_u64(0, x2, n0, (unsigned long int*)&x2), r, 0, (unsigned long int*)&r); # else if (x2 < n0) ++r; # endif