4 * Matchfinding routines optimized for Intel AVX2 (Advanced Vector Extensions).
10 matchfinder_init_avx2(pos_t *data, size_t size)
15 if (size % sizeof(__m256i) * 4)
18 if (sizeof(pos_t) == 2)
19 v = _mm256_set1_epi16(MATCHFINDER_INITVAL);
20 else if (sizeof(pos_t) == 4)
21 v = _mm256_set1_epi32(MATCHFINDER_INITVAL);
26 n = size / (sizeof(__m256i) * 4);
38 matchfinder_rebase_avx2(pos_t *data, size_t size)
43 if ((size % sizeof(__m256i) * 4 != 0))
46 if (sizeof(pos_t) == 2)
47 v = _mm256_set1_epi16((pos_t)-MATCHFINDER_WINDOW_SIZE);
48 else if (sizeof(pos_t) == 4)
49 v = _mm256_set1_epi32((pos_t)-MATCHFINDER_WINDOW_SIZE);
54 n = size / (sizeof(__m256i) * 4);
56 /* PADDSW: Add Packed Signed Integers With Signed Saturation */
57 p[0] = _mm256_adds_epi16(p[0], v);
58 p[1] = _mm256_adds_epi16(p[1], v);
59 p[2] = _mm256_adds_epi16(p[2], v);
60 p[3] = _mm256_adds_epi16(p[3], v);