关于sse的比较指令

XueWang1 2016-06-09 12:39:47
unsigned int i;
想利用sse指令判断
i是不是在[x4,x3,x2,x1]这四个数里面。就是i是否和其中某一个相等。
请问这个用sse指令如何能实现呢~
[x4,x3,x2,x1]又如何定义成unsigned int类型呢
...全文
405 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-06-19
  • 打赏
  • 举报
回复
很多伟大的发明都来自发明人之前的业余爱好。
  • 打赏
  • 举报
回复
[x4,x3,x2,x1]是任意四个数?定义成__m128i就可以,但是需要msvc或者intel c++编译器。 假设比较的四个数已经在xmm2中, movd xmm1,i pshufd xmm1,xmm1,0 pcmpeqd xmm1,xmm2 ptest xmm1,xmm1 jnz @@equal // not equal to one of four numbers @@equal: // equal to one of four numbers
赵4老师 2016-06-12
  • 打赏
  • 举报
回复
《The Intel 64 and IA-32 Architectures Software Developer's Manual》
  • 打赏
  • 举报
回复
只是业余爱好
  • 打赏
  • 举报
回复
只是业务爱好,跟工作毫无关系,我的工作十分枯燥,连研究指令集都变得很有趣,你可想而知。
赵4老师 2016-06-12
  • 打赏
  • 举报
回复
一看就知道DelphiGuy是SSE达人!
  • 打赏
  • 举报
回复
嗯,忘了说了,ptest是sse 4.1指令,较老的处理器可能不支持,其他的都是SSE/SSE2指令,可以看成是基本指令集了,十几年前的Pentium4已经支持SSE2指令集,对于连SSE2都不支持的电脑,可以说是毫无使用价值,不需要考虑了。 限定于SSE2指令集,可以: movd xmm1,i pshufd xmm1,xmm1,0 pcmpeqd xmm1,xmm2 movmskps eax,xmm1 test eax,eax jnz @@equal // not equal to one of four numbers @@equal: // equal to one of four numbers

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧