与SSE进行128位哈希比较

在我目前的项目中,我必须比较128位值(实际上是md5哈希),我认为可以通过使用SSE指令来加速比较.我的问题是我无法找到关于SSE指令的好文档;我正在寻找一个128位整数比较指令,让我知道一个散列是大于,小于或等于另一个.这样的指令是否存在?

PS:目标计算机是带有SSE2指令的x86_64服务器;我也对同一工作的NEON指令感兴趣.

解决方法

SSE或NEON指令集中没有128位整数比较指令.

SSE4.1添加了向量64位整数比较:PCMPEQQ和PCMPGTQ,但由于它们的实现方式,将它们中的两个组合成128位比较并不是直截了当的.

在x86_64上完成128位比较的首选方法是在高字上使用64位比较,然后仅在高字比较相等时对低字进行额外的64位比较:

cmp {ahi},{bhi}
    jne  0f
    cmp {alo},{blo}
0:  // flags are now set as though a comparison of unsigned 128-bit values
    // was performed; signed comparisons are a bit different.

在ARM上,通常的习惯用法是逐字的条件比较序列,用于根据需要设置标志.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...