【发布时间】:2015-05-28 12:26:31
【问题描述】:
我正在编写一些 SSE 代码,我想对我的 __m128 中的所有元素进行 OR 运算。我可以单独获取所有值并以这种方式对它们进行 OR,但这似乎效率低下。
基本上我正在寻找的是 SPU 上可用的 orx 指令。这有点奇怪,所以没有直接的替代方案,但是有没有办法使用 SSE2 有效地做到这一点?
在我想做的代码中:
p = _mm_cmpgt_ps(p, r);
x = p[0] | p[1] | p[2] | p[3]; // spu_orx(p)
我可能在这一切都错了,我只需要重新设计代码,这样我就不会遇到这个问题,但我希望比我更有经验的人知道如何做到这一点!
【问题讨论】:
-
你真的想要每个 32 位值的 OR 吗?如果您只想知道 128 位中的一个是否非零,请使用 SSE4.1 中的
!_mm_testz_si128。