Я знаю, как проверить, является ли регистр _m128i нулевым с помощью встроенной функции _mm_test_all_zeros
.
Что такое версия AVX2 / __m256i этой встроенной? Если он недоступен, как быстрее всего проверить, равны ли нулю все 256 бит в регистре SIMD?
Самая быстрая, наверное, vptest
инструкция.
// Return 1 if `x` is all zeros, otherwise 0
inline int test_all_zeros( __m256i x )
{
return _mm256_testz_si256( x, x );
}