gpt4 book ai didi

c++ - 如何截断 XMM 寄存器中的浮点值

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:14:14 25 4
gpt4 key购买 nike

如何只获取 float 的整数部分?所以,我有一个 float 组: x[4] = {5.0, 13.0, 25.0, 41.0};我把它放在 xmm0 中,然后用它做 sqrt。我还需要一个命令来帮助仅获取此 sqrt 的一部分。例如 5 的 sqrt 将是 2.236068,我只需要 2.0 的答案
代码:

__asm 
{
movups xmm0, x
sqrtps xmm0, xmm0
//here need some command
movups x, xmm0
}

最佳答案

使用 roundps是最简单的。舍入模式表在其他地方,但您需要舍入模式 3(接近零)。

只有当输入保证在某个范围内(大约 0 到 4.6e18,因为平方根)时,转换为整数并返回才有效。您可以使用 cvttps2dqcvtdq2ps 执行此操作。那将只需要 SSE2,roundps 需要 SSE4.1。仅当舍入模式设置为截断时才能使用 cvtps2dq,而通常情况下并非如此,因此您必须更改并恢复它。

关于c++ - 如何截断 XMM 寄存器中的浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34085091/

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