diff options
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); } } |
