_m_test_all_zeros的__m256i版本

Tho*_*ser 1 simd intrinsics avx avx2

我知道如何使用_mm_test_all_zeros固有函数测试_m128i寄存器是否全部为零。

此内在函数的AVX2 / __ m256i版本是什么?如果一个不可用,测试SIMD寄存器中所有256位是否均为零的最快方法是什么?

Soo*_*nts 6

最快的可能是vptest指令。

// Return 1 if `x` is all zeros, otherwise 0
inline int test_all_zeros( __m256i x )
{
    return _mm256_testz_si256( x, x );
}
Run Code Online (Sandbox Code Playgroud)