diff --git a/blake2.cpp b/blake2.cpp index 0cb858b1..7e86a98f 100644 --- a/blake2.cpp +++ b/blake2.cpp @@ -22,9 +22,14 @@ NAMESPACE_BEGIN(CryptoPP) # undef CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE #endif -// Testing shows Sun CC needs 12.4 for _mm_set_epi64x -#if (__SUNPRO_CC <= 0x5130) +// SunCC needs 12.4 for _mm_set_epi64x, _mm_blend_epi16, _mm_shuffle_epi16, etc +#if defined(__SUNPRO_CC) && (__SUNPRO_CC < 0x5130) # undef CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE +# undef CRYPTOPP_BOOL_SSE4_INTRINSICS_AVAILABLE +#elif (__SUNPRO_CC >= 0x5130) +# include // _mm_set_epi64x +# include // _mm_blend_epi16 +# include // _mm_shuffle_epi16 #endif // Visual Studio needs VS2008 (1500); no dependency on _mm_set_epi64x() diff --git a/crc.cpp b/crc.cpp index ad411a85..3cdcc9a9 100644 --- a/crc.cpp +++ b/crc.cpp @@ -15,7 +15,7 @@ NAMESPACE_BEGIN(CryptoPP) // SunCC 12.4 and above #if defined(CRYPTOPP_BOOL_SSE4_INTRINSICS_AVAILABLE) && (__SUNPRO_CC >= 0x5130) -# include +# include #endif /* Table of CRC-32's of all single byte values (made by makecrc.c) */ diff --git a/rdrand.cpp b/rdrand.cpp index 2cbca4fe..fec720c0 100644 --- a/rdrand.cpp +++ b/rdrand.cpp @@ -100,12 +100,12 @@ # define GCC_RDSEED_ASM_AVAILABLE 1 # endif #elif defined(CRYPTOPP_CPUID_AVAILABLE) && (__SUNPRO_CC >= 0x5100) -# if GCC_INTRIN_COMPILER && defined(__RDRND__) +# if GCC_INTRIN_COMPILER && defined(__RDRND__) && (__SUNPRO_CC >= 0x5130) # define ALL_RDRAND_INTRIN_AVAILABLE 1 # elif CRYPTOPP_BOOL_RDRAND_ASM # define GCC_RDRAND_ASM_AVAILABLE 1 # endif -# if GCC_INTRIN_COMPILER && defined(__RDSEED__) +# if GCC_INTRIN_COMPILER && defined(__RDSEED__) && (__SUNPRO_CC >= 0x5150) # define ALL_RDSEED_INTRIN_AVAILABLE 1 # elif CRYPTOPP_BOOL_RDSEED_ASM # define GCC_RDSEED_ASM_AVAILABLE 1