是否包含任何非零值

是否包含任何非零值

我正在使用Microsoft Visual Studio编译器。我试图找出256位 vector 是否包含任何非零值。我已经尝试过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++ - 英特尔SIMD-如何检查__m256 *是否包含任何非零值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28923766/

10-08 22:40