Open easyaspi314 opened 5 years ago
@easyaspi314
These look like reasonable workarounds, we could rely on #if
inside the same file, but generally we are targeting SSE4.1 as a minimum baseline (Penryn was launched in 2008). Can you help me understand if/why SSSE3 support is required?
simdhwyhash, which is an implementation of the HighwayHash algorithm that uses the Google Highway library, supports some additional SIMD targets such as SSE2, SSSE3, AVX3 (AVX512F+AVX512CD+AVX512VL+AVX512BW+AVX512DQ), RVV, SVE, and Z14.
The simdhwyhash implementation can be found at https://github.com/johnplatts/simdhwyhash.
I warmly endorse @johnplatts's simdhwyhash implementation :)
HighwayHash can easily be adapted to SSSE3 with only a few changes:
V128<uint64_t>::operator==
to this:_mm_insert_epi32
inHHStateSSE41::UpdateRemainder
to this:_mm_insert_epi32
inHHStateSSE41::XorByShift128Left12
to this:Done.
If we add it, the only issue I see is what do we name it, and what do we do with the SSE41 target?