You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Apr 22, 2025. It is now read-only.
HighwayHash can easily be adapted to SSSE3 with only a few changes:
Remove the min, max, and stream functions in vector128.h. We don't use them.
Change V128<uint64_t>::operator== to this:
// There are no greater-than comparison instructions for unsigned T.
HH_INLINE V128 operator==(const V128& other) const {
#ifdef __SSE4_1__
returnV128(_mm_cmpeq_epi64(v_, other.v_));
#else// Do a 32-bit equality comparison, then AND the high bits and the low bits. If the// vectors are equal, the result will be// 0xFFFFFFFFFFFFFFFF & 0xFFFFFFFFFFFFFFFF == 0xFFFFFFFFFFFFFFFF// and if not, it will be// 0xFFFFFFFF00000000 & 0x00000000FFFFFFFF = 0x0000000000000000
__m128i cmp = _mm_cmpeq_epi32(v_, other.v_);
returnV128(_mm_and_si128(cmp, _mm_shuffle_epi32(cmp, _MM_SHUFFLE(2, 3, 0, 1))));
#endif
}
Change the _mm_insert_epi32 in HHStateSSE41::UpdateRemainder to this: