diff --git a/cmake/flags.cmake b/cmake/flags.cmake index 3989cb71..3aa94ff2 100644 --- a/cmake/flags.cmake +++ b/cmake/flags.cmake @@ -70,4 +70,12 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES Clang) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -maes") 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 8a48eafd..7a21b9b1 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 b6969571..1bcf0a84 100644 --- a/src/crypto/CryptoNight_x86.h +++ b/src/crypto/CryptoNight_x86.h @@ -446,8 +446,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