__m256 dst = _mm256_cmp_ps(value1, value2, _CMP_LE_OQ);
如果dst
是[0,0,0,-nan, 0,0,0,-nan];
我希望能够知道第一个-nan
指数,在这种情况下3
没有做8
迭代的for循环。这可能吗?
我会movmskps
比较的结果,然后做一个bitscan forward。
使用内在函数(这适用于gcc / clang,请参阅here for alternatives):
int pos = __builtin_ctz(_mm256_movemask_ps(dst));
请注意,如果未设置任何位,则未指定bsf
的结果。要解决这个问题,你可以写一下这个来获取8
,如果没有设置其他位:
int pos = __builtin_ctz(_mm256_movemask_ps(dst) | 0x100);