19、X86-SSE 标量浮点编程详解

X86-SSE 标量浮点编程详解

1. 标量浮点算术运算

1.1 单精度浮点运算

x86 - SSE 标量单精度浮点算术指令仅修改目标 XMM 寄存器的低 32 位,高位不变。例如,使用 andps 指令时需注意它是打包指令,会修改目标操作数的高位。每个算术指令的结果使用 movss 指令保存到调用者提供的数组中。虽然 movss 操作数在内存中的正确对齐不是必需的,但为了性能考虑,建议进行对齐。

1.2 双精度浮点运算

x86 - SSE 标量双精度浮点算术指令在 SseSfpArithmeticDouble_ 函数中展示。该函数的逻辑结构与单精度版本类似。使用 XMM 寄存器中的标量双精度浮点值时,仅使用低 64 位,高位不变。同样,标量双精度浮点操作数在内存中的正确对齐不是必需的,但强烈建议进行对齐。

以下是单精度和双精度浮点运算的示例结果:
| 运算类型 | a | b | add | sub | mul | div | min | max | fabs(b) | sqrt(fabs(b)) |
| — | — | — | — | — | — | — | — | — | — | — |
| 单精度 | 2.500000 | -7.625000 | -5.125000 | 10.125000 | -19.062500 | -0.327869 | -7.625000 | 2.500000 | 7.625000 | 2.761340 |
| 双精度 | 3.14159265

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值