SSE中的等零指令[重复]

Posted

技术标签:

【中文标题】SSE中的等零指令[重复]【英文标题】:Equal zero instruction in SSE [duplicate] 【发布时间】:2015-01-14 12:09:14 【问题描述】:

假设我有一个 128 位整数向量:

__m128i x;

那么如何知道 x 中的所有位是否都为零?

检查每个压缩整数是一种简单的方法。

但我正在寻找一种更快的方法。

SSE 中是否有任何指令可以完成这项工作?

【问题讨论】:

【参考方案1】:

如果是SSE 4.1,可以使用_mm_testz_si128,例如

_mm_testz_si128(idata, _mm_set1_epi32(0x0000))

可能还会查看Check XMM register for all zeroes 以获得与 SSE2 兼容的解决方案。

【讨论】:

很高兴听到这个消息:) 请注意,您不需要为第二个参数生成零向量,您可以为两者都传递idata 你知道如何对 256 位浮点向量执行此操作,即检查 256 位浮点向量中的所有位是否为零吗?@PaulR @KUN 加油,我相信你可以从 128 位的名称中猜出 256 位的名称... 我说的是_mm256_testz_si256...

以上是关于SSE中的等零指令[重复]的主要内容,如果未能解决你的问题,请参考以下文章

SSE 指令中的 UnsignedSaturate 是啥意思?

等效于 Power PC 中的 SSE

使用 Mono.Simd SSE 指令进行流控制

在 SSE 中组合前缀

SSE 优化(行重新排序、操作整理)中的编译器(例如 g++)有多聪明

进行水平 SSE 向量求和(或其他缩减)的最快方法