如何仅获取float的整数部分?因此,我有一个浮点数组:x [4] = {5.0,13.0,25.0,41.0};我将其放入xmm0中,然后对其进行sqrt处理。我还需要一个命令,这将仅有助于获取此sqrt的int部分。例如,sqrt为5将为2.236068,而我只需要2.0就可以了
代码:
__asm
{
movups xmm0, x
sqrtps xmm0, xmm0
//here need some command
movups x, xmm0
}
最佳答案
使用 roundps
是最简单的。舍入模式表在其他位置,但是您需要舍入模式3(接近零)。
仅当保证输入在某个范围内(由于平方根大约为0到4.6e18)时,才能转换为整数并返回。您可以使用cvttps2dq
和cvtdq2ps
做到这一点。那将只需要SSE2,roundps
需要SSE4.1。仅当舍入模式设置为truncate时才可以使用cvtps2dq
,通常它不是这样,因此您必须对其进行更改+恢复。
关于c++ - 如何截断XMM寄存器中的浮点值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34085091/