【问题标题】:Intel SIMD - How can I check if an __m256* contains any non-zero values英特尔 SIMD - 如何检查 __m256* 是否包含任何非零值
【发布时间】:2015-05-09 12:46:54
【问题描述】:

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

【问题讨论】:

    标签: c++ simd intrinsics avx


    【解决方案1】:

    _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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-13
      • 2016-07-04
      • 2020-05-24
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 1970-01-01
      相关资源
      最近更新 更多