其他分享
首页 > 其他分享> > c – Intel SIMD – 如何检查__m256 *是否包含任何非零值

c – Intel SIMD – 如何检查__m256 *是否包含任何非零值

作者:互联网

我正在使用Microsoft Visual Studio编译器.我试图找出256位向量是否包含任何非零值.我试过res_simd =! _mm256_testz_ps(* pSrc1,* pSrc1);但它不起作用.

解决方法:

_mm256_testz_ps只测试符号位 – 为了测试你需要与0进行比较的值,然后提取结果掩码,例如

__m256 vcmp = _mm256_cmp_ps(*pSrc1, _mm256_set1_ps(0.0f), _CMP_EQ_OQ);
int mask = _mm256_movemask_ps(vcmp);
bool any_nz = mask != 0xff;

标签:c,intrinsics,avx,simd
来源: https://codeday.me/bug/20190830/1765313.html