比较 xmmX 向量

comparing a xmmX vector

假设您加载了一个 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 次?

谢谢

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

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

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