summaryrefslogtreecommitdiffstats
path: root/contrib/src/boost/uuid/detail/uuid_x86.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/src/boost/uuid/detail/uuid_x86.hpp')
-rw-r--r--contrib/src/boost/uuid/detail/uuid_x86.hpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/contrib/src/boost/uuid/detail/uuid_x86.hpp b/contrib/src/boost/uuid/detail/uuid_x86.hpp
index 5c73670..120b8d6 100644
--- a/contrib/src/boost/uuid/detail/uuid_x86.hpp
+++ b/contrib/src/boost/uuid/detail/uuid_x86.hpp
@@ -49,7 +49,7 @@ BOOST_FORCEINLINE __m128i load_unaligned_si128(const uint8_t* p) BOOST_NOEXCEPT
return _mm_lddqu_si128(reinterpret_cast< const __m128i* >(p));
#elif !defined(BOOST_UUID_DETAIL_MSVC_BUG981648)
return _mm_loadu_si128(reinterpret_cast< const __m128i* >(p));
-#elif BOOST_MSVC >= 1600
+#elif defined(BOOST_MSVC) && BOOST_MSVC >= 1600
__m128i mm = _mm_loadu_si128(reinterpret_cast< const __m128i* >(p));
// Make sure this load doesn't get merged with the subsequent instructions
_ReadWriteBarrier();
@@ -68,7 +68,7 @@ inline bool uuid::is_nil() const BOOST_NOEXCEPT
#if defined(BOOST_UUID_USE_SSE41)
return _mm_test_all_zeros(mm, mm) != 0;
#else
- mm = _mm_cmpeq_epi8(mm, _mm_setzero_si128());
+ mm = _mm_cmpeq_epi32(mm, _mm_setzero_si128());
return _mm_movemask_epi8(mm) == 0xFFFF;
#endif
}
@@ -86,11 +86,11 @@ inline bool operator== (uuid const& lhs, uuid const& rhs) BOOST_NOEXCEPT
__m128i mm_left = uuids::detail::load_unaligned_si128(lhs.data);
__m128i mm_right = uuids::detail::load_unaligned_si128(rhs.data);
- __m128i mm_cmp = _mm_cmpeq_epi32(mm_left, mm_right);
-
#if defined(BOOST_UUID_USE_SSE41)
- return _mm_test_all_ones(mm_cmp) != 0;
+ __m128i mm = _mm_xor_si128(mm_left, mm_right);
+ return _mm_test_all_zeros(mm, mm) != 0;
#else
+ __m128i mm_cmp = _mm_cmpeq_epi32(mm_left, mm_right);
return _mm_movemask_epi8(mm_cmp) == 0xFFFF;
#endif
}