AVX内在_mm256_cmp_ps是否应在为true时返回NaN
Is AVX intrinsic _mm256_cmp_ps supposed to return NaN when true?
当我尝试时:
__m256 a = _mm256_set_ps(1, 1, 1, 1, 1, 1, 1, 1);
__m256 b = _mm256_set_ps(0, 0, 0, 0, 0, 0, 0, 0);
__m256 c = _mm256_cmp_ps(a, b, _CMP_LT_OQ);
这是<b我得到输出:
[0, 0, 0, 0, 0, 0, 0, 0]
但尝试时:
__m256 a = _mm256_set_ps(1, 1, 1, 1, 1, 1, 1, 1);
__m256 b = _mm256_set_ps(0, 0, 0, 0, 0, 0, 0, 0);
__m256 c = _mm256_cmp_ps(b, a, _CMP_LT_OQ);
或
__m256 a = _mm256_set_ps(1, 1, 1, 1, 1, 1, 1, 1);
__m256 b = _mm256_set_ps(0, 0, 0, 0, 0, 0, 0, 0);
__m256 c = _mm256_cmp_ps(a, b, _CMP_GT_OQ);
我得到
[NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN]
这是意料之中的行为吗?文档位于https://software.intel.com/en-us/node/524077只是说它返回结果而没有指定。
是的,返回的值是一个位掩码:它被设置为全零表示false,或者全一表示true。当被解释为32位浮点时,1中的32位恰好是NaN的编码。
位掩码很有用,因为您可以使用它们来屏蔽某些结果,例如,当掩码M
为true(全为1)时,(A & M) | (B & ~M)
将选择A
的值,而当掩码为false(全为0)时,则选择B
的值。
相关文章:
- flutter:即使shouldRepaint()返回true,自定义画家也不会重新绘制
- C++如果使用 lambda 表达式的语句返回 true,但输出来自 false,为什么
- 测试用例状态为失败,但返回的值为 true
- MFC 的 OnInit() 函数中的返回 true 和返回 false 有什么区别
- 我正在尝试创建一个布尔函数,该函数计算字符并在字符为"()*-+"时返回 true
- 创建一个函数,如果元素在unordered_set中,则返回 true,如何处理模板
- QTimer isActive 返回 true,但 remainingTime 返回 -1
- 为什么在 IsValid(Object) 返回 true 后不能安全地使用 Object?
- 计算 <Classtype*> 向量中所有项的布尔值的最有效方法,如果全部为真则返回 true
- QDir mkpath 返回 true,但未创建目录
- std::is_array 当它应该返回 false 时返回 true
- 尝试创建一个评估字符的bool函数,如果字母数字为字母,则返回true
- 我想返回 True/False 关于值是否在一组值中
- 为什么我的布尔函数返回 true 会导致读取访问冲突?
- ifstream::is_open 返回 true,即使该位置不存在文件也是如此
- 是否有内置函数返回" the number of true value in a boolean vector "?
- 为什么包含指针的条件总是返回 true?
- 对于 ((无符号整数)0-1)返回 true>0
- 为什么#ifndef __func__返回true
- 我的bool函数一直返回true,我不知道为什么