| 358 | } |
| 359 | |
| 360 | inline __m512i HashLen16Batch(__m512i u, __m512i v, __m512i mul) { |
| 361 | __m512i a = _mm512_xor_si512(u, v); |
| 362 | a = _mm512_mullo_epi64_hand(a, mul); |
| 363 | __m512i tmp = _mm512_srli_epi64(a, 47); |
| 364 | a = _mm512_xor_si512(a, tmp); |
| 365 | __m512i b = _mm512_xor_si512(v, a); |
| 366 | b = _mm512_mullo_epi64_hand(b, mul); |
| 367 | tmp = _mm512_srli_epi64(b, 47); |
| 368 | b = _mm512_xor_si512(b, tmp); |
| 369 | b = _mm512_mullo_epi64_hand(b, mul); |
| 370 | return b; |
| 371 | } |
| 372 | |
| 373 | inline void HashLen0to16Batch(const char** data, uint64_t* h_out, size_t len) { |
| 374 | __m512i k0_batch = _mm512_set1_epi64(k0); |
no test coverage detected