比较xmmX向量

时间:2015-03-10 18:53:50

标签: assembly cmp sse eflags

所以说你加载了一个xmm1向量,它有4个单精度浮点{1.5,1.5,1.5,1.5}和xmm2,它们具有相同的点,所以xmm1 == xmm2。 现在你要比较它们,以便你在汇编中写:

movaps  %xmm1, %xmm2
cmpeqps %xmm0, %xmm2

由于 cmpeqps 没有设置eflags,怎么能说:

jne somewhere

是否真的需要使用 ucomiss 来比较矢量的最右边部分,然后右移并重复3次?

由于

2 个答案:

答案 0 :(得分:3)

你可以使用cmpeqps,你只需要提取四个标志。例如(未测试)

cmpeqps xmm2, xmm1
movmskps eax, xmm2
cmp eax, 15
je somewhere

答案 1 :(得分:1)

矢量化算术的算法应设计成避免条件分支。相反,每个通道执行相同的指令。通常通过评估所有可能的结果并使用掩模选择正确来执行条件。