gpt4 book ai didi

c++ - 使用 SSE 计算无符号整数之间的绝对差

转载 作者:可可西里 更新时间:2023-11-01 15:39:21 67 4
gpt4 key购买 nike

在 C 中是否有一种无分支技术来计算两个无符号整数之间的绝对差?例如给定变量 a 和 b,对于 a=3、b=5 或 b=3、a=5 的情况,我希望值为 2。理想情况下,我还希望能够使用 SSE 寄存器对计算进行矢量化。

最佳答案

有几种方法可以做到,我只提一种:

SSE4

  • 使用 PMINUDPMAXUD 将寄存器 #1 中的较大值与寄存器 #2 中的较小值分开。
  • 减去它们。

MMX/SSE2

  • 翻转两个值的符号位,因为下一条指令只接受有符号整数比较。
  • PCMPGTD。使用此结果作为 mask 。
  • 计算(a-b)(b-a)的结果
  • 使用 POR ( PAND ( mask, a-b ), PANDN ( mask, b-a ) ) 为绝对差选择正确的值。

关于c++ - 使用 SSE 计算无符号整数之间的绝对差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3380785/

67 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com