hid*_*yat 14 c c++ sse simd avx
__m256  dst = _mm256_cmp_ps(value1, value2, _CMP_LE_OQ);
如果dst是,[0,0,0,-nan, 0,0,0,-nan];
我希望能够知道第一个-nan索引,在这种情况下,3无需进行for循环8迭代。这可能吗?
使用内在函数(与gcc / clang一起使用,请参见此处的替代方法):
int pos = __builtin_ctz(_mm256_movemask_ps(dst));
请注意,bsf如果未设置任何位,则未指定的结果。要解决此问题,例如8,如果未设置其他位,则可以将其编写为get :
int pos = __builtin_ctz(_mm256_movemask_ps(dst) | 0x100);