当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何截断XMM寄存器中的浮点值》经验,为你挑选了1个好方法。

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

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

harold.. 5

使用roundps是最简单的.舍入模式表位于其他位置,但您需要舍入模式3(朝向零).

转换为整数并返回仅在输入保证在某个范围内时才起作用(由于平方根,大约为0到4.6e18).你可以用cvttps2dq和做cvtdq2ps.这只需要SSE2,roundps需要SSE4.1.cvtps2dq仅当舍入模式设置为截断时才可以使用,通常不是,因此您必须更改+恢复它.



1> harold..:

使用roundps是最简单的.舍入模式表位于其他位置,但您需要舍入模式3(朝向零).

转换为整数并返回仅在输入保证在某个范围内时才起作用(由于平方根,大约为0到4.6e18).你可以用cvttps2dq和做cvtdq2ps.这只需要SSE2,roundps需要SSE4.1.cvtps2dq仅当舍入模式设置为截断时才可以使用,通常不是,因此您必须更改+恢复它.

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有