Fix MSVC break when moving MM_SET_EPI64X

pull/461/head
Jeffrey Walton 2017-08-01 05:48:44 -04:00
parent d41bee1f4e
commit 667d62b3ae
No known key found for this signature in database
GPG Key ID: B36AB348921B1838
1 changed files with 3 additions and 3 deletions

View File

@ -28,21 +28,21 @@
# define EXCEPTION_EXECUTE_HANDLER 1
#endif
NAMESPACE_BEGIN(CryptoPP)
// Sun Studio 12.3 and earlier lack SSE2's _mm_set_epi64x. Win32 lacks _mm_set_epi64x, Win64 supplies it except for VS2008.
// Also see http://stackoverflow.com/a/38547909/608639
#if CRYPTOPP_SSE2_AVAILABLE && ((__SUNPRO_CC >= 0x5100 && __SUNPRO_CC < 0x5130) || (defined(_MSC_VER) && _MSC_VER < 1600) || (defined(_M_IX86) && _MSC_VER >= 1600))
inline __m128i MM_SET_EPI64X(const word64 a, const word64 b)
{
const word64 t[2] = {b,a}; __m128i r;
memcpy(&r, &t, sizeof(t));
::memcpy(&r, &t, sizeof(t));
return r;
}
#else
# define MM_SET_EPI64X(a, b) _mm_set_epi64x(a, b)
#endif
NAMESPACE_BEGIN(CryptoPP)
ANONYMOUS_NAMESPACE_BEGIN
CRYPTOPP_ALIGN_DATA(16)