1.1.3 比较

SSE内置函数支持的比较操作及其数据类型如表1-3所示。不但有测试向量中元素是否为全0或全1的指令,还有几乎所有可能的比较测试指令。

表1-3 SSE判断指令

比较指令返回的结果是掩码,即如果比较成立的话,则对应位置的值为1,否则为0。

下面给出通用的cmp指令定义,其他的cmp*指令的语义都可归为cmp的某种特殊情况。


__m128 _mm_cmp_ps(__m128 a, __m128 b, const int mask)
r[0] = (a[0] op b[0]) ? oxffffffff:0;
r[1] = (a[1] op b[1]) ? oxffffffff:0;
r[2] = (a[2] op b[2]) ? oxffffffff:0;
r[3] = (a[3] op b[3]) ? oxffffffff:0;

其中mask的数值表示了执行的具体比较操作(op),可查阅Intel指令集手册,本节就不详细列出了。