diff options
| author | Bond_009 <bond.009@outlook.com> | 2021-01-05 16:00:08 +0100 |
|---|---|---|
| committer | Bond_009 <bond.009@outlook.com> | 2021-01-05 16:00:08 +0100 |
| commit | c6d4b175c275602cb5b1d0be6123b656dc0bbb27 (patch) | |
| tree | 0930421f0c2600cf02c6aee0582c13926576dda7 /1/part2_fast.c | |
| parent | a50c55c1e4e9d1f981f0563ab72471de1ddf2501 (diff) | |
Optimize repair_avx_inner some more
Diffstat (limited to '1/part2_fast.c')
| -rw-r--r-- | 1/part2_fast.c | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/1/part2_fast.c b/1/part2_fast.c index 67cd6c5..f4f6f3a 100644 --- a/1/part2_fast.c +++ b/1/part2_fast.c @@ -16,14 +16,8 @@ int repair_avx_inner(int i, const int *arr, __m256i search) for (int k = 0; k < INPUT_LEN; k += 8) { __m256i new = _mm256_loadu_si256((__m256i *)(&arr[k])); int mask = _mm256_movemask_epi8(_mm256_cmpeq_epi32(new, cmp)); - if (mask == 0) { - continue; - } - - for (int l = 0; l < 8; l++) { - if (mask & (0xf << (l * 4))) { - return arr[k + l]; - } + if (mask != 0) { + return _mm256_extract_epi32(cmp, 0); } } |
