尝试在SSE编程中使用和掩码添加__m128

时间:2013-04-04 10:23:36

标签: c++ x86 sse simd

我正在尝试使用比较操作的结果添加到SSE变量。我刚刚意识到当使用_mm_cmplt_ps操作时,如果结果为true,则返回NAN,因为0xffffffff无法表示,这对我没用:

__m128 va;
__m128 vb;
__m128 result =_mm_set1_ps(0.0f);
vb = _mm_cmplt_ps(va,vb);
result = _mm_add_ps(result,vb);  // problem is that I would like to convert vb to 1.0's and 0.0's

1 个答案:

答案 0 :(得分:7)

您可以将比较蒙版应用于1.0值的向量,例如

__m128  va, vb;
__m128  vcmp = _mm_cmplt_ps(va, vb);
__m128  vresult = _mm_and_ps(_mm_set1_ps(1.0f), vcmp);