diff --git a/ConflictSet.cpp b/ConflictSet.cpp index ff4c8fa..28318ef 100644 --- a/ConflictSet.cpp +++ b/ConflictSet.cpp @@ -1786,9 +1786,9 @@ compare16_32bit(const InternalVersionT *vs, InternalVersionT rv) { const auto rvVec = _mm_set1_epi32(r); const auto zero = _mm_setzero_si128(); for (int i = 0; i < 4; ++i) { - compared |= - _mm_movemask_ps(_mm_cmpgt_epi32(_mm_sub_epi32(w[i], rvVec), zero)) - << (i * 4); + compared |= _mm_movemask_ps( + __m128(_mm_cmpgt_epi32(_mm_sub_epi32(w[i], rvVec), zero))) + << (i * 4); } return compared; } @@ -1801,7 +1801,7 @@ compare16_32bit(const InternalVersionT *vs, InternalVersionT rv) { uint32_t r; memcpy(&r, &rv, sizeof(r)); return _mm512_cmpgt_epi32_mask(_mm512_sub_epi32(w, _mm512_set1_epi32(r)), - _mm512_setzero()); + _mm512_setzero_epi32()); } #endif #endif @@ -1926,18 +1926,7 @@ inline __attribute((always_inline)) bool scan16(const InternalVersionT *vs, conflict >>= begin << 2; return !conflict; #elif INTERNAL_VERSION_32_BIT && defined(HAS_AVX) - __m128i w4[4]; - memcpy(w4, vs, sizeof(w4)); - uint32_t rv; - memcpy(&rv, &readVersion, sizeof(rv)); - const auto rvVec = _mm_set1_epi32(rv); - const auto zero = _mm_setzero_si128(); - uint32_t conflict = 0; - for (int i = 0; i < 4; ++i) { - conflict |= - _mm_movemask_ps(_mm_cmpgt_epi32(_mm_sub_epi32(w4[i], rvVec), zero)) - << (i * 4); - } + uint32_t conflict = compare16_32bit(vs, readVersion); conflict &= (1 << end) - 1; conflict >>= begin; return !conflict;