gpt4 book ai didi

c++ - 获取 __m256 变量中不为零的第一个元素的索引

转载 作者:IT老高 更新时间:2023-10-28 22:40:27 24 4
gpt4 key购买 nike

__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);

关于c++ - 获取 __m256 变量中不为零的第一个元素的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55439622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com