首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >__m128i变量是零吗?

__m128i变量是零吗?
EN

Stack Overflow用户
提问于 2011-11-03 11:18:10
回答 2查看 4.3K关注 0票数 12

如何测试__m128i变量在SSE-2及更早版本的处理器上是否有非零值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-03 14:37:04

在SSE2中,您可以执行以下操作:

代码语言:javascript
复制
__m128i zero = _mm_setzero_si128();
if(_mm_movemask_epi8(_mm_cmpeq_epi32(x,zero)) == 0xFFFF)
{
    //the code...
}

这将测试四个int对0,然后为每个字节返回一个掩码,因此每个相应int的位偏移量将为0、4、8和12,但上面的测试将捕获是否设置了任何位,如果您保留掩码,则可以在需要时直接处理更细粒度的部分。

票数 12
EN

Stack Overflow用户

发布于 2016-03-09 19:47:38

出于完整性的考虑,对于SSE4,可以使用_mm_testz_si128

代码语言:javascript
复制
const bool isAllZero = _mm_testz_si128(a,a);

请注意,当所有位都为零时,这是真。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7989897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档