与SSE进行128位哈希比较

前端之家收集整理的这篇文章主要介绍了与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&C++相关文章