gpt4 book ai didi

assembly - 添加具有饱和度的 32 位字

转载 作者:行者123 更新时间:2023-12-05 04:18:56 25 4
gpt4 key购买 nike

您知道使用 MMX/SSE 汇编程序指令添加饱和 32 位有符号字的方法吗?我可以找到 8/16 位版本,但找不到 32 位版本。

最佳答案

您可以通过执行以下步骤来模拟饱和签名添加:

int saturated_add(int a, int b)
{
int sum = a + (unsigned)b; // avoid signed-overflow UB
if (a >= 0 && b >= 0)
return sum > 0 ? sum : INT32_MAX; // catch positive wraparound
else if (a < 0 && b < 0)
return sum > 0 ? INT32_MIN : sum; // catch negative wraparound
else
return sum; // sum of pos + neg always fits
}

Unsigned,更简单,见this stackoverflow posting

在 SSE2 中,以上内容映射到一系列并行比较和 AND/ANDN 操作。不幸的是,硬件中没有可用的单一操作。

关于assembly - 添加具有饱和度的 32 位字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7133149/

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