SPARC: 启用/禁用 SPARC 的非标准浮点模式。
如果使用 -fns=yes(或 -fns),则会在程序开始执行时启用非标准浮点模式。
该选项提供了一种切换使用非标准浮点模式或标准浮点模式的方法,它接在包括 –fns 的其他某些宏选项(如 –fast)后面。
在某些 SPARC 设备上,非标准浮点模式会禁用“逐渐下溢”,这会导致很小的结果刷新为零而不是生成次正规数,此外,还会导致次正规操作数在无提示的情况下替换为零。
对于那些硬件中不支持逐渐下溢和次正规数的 SPARC 设备,-fns=yes(或 -fns)可以显著提高某些程序的性能。
(x86) 选择 SSE 刷新为零模式以及(如果可用)非正规数为零模式。
此选项导致将次正规结果刷新为零。如果可用的话,此选项还导致将次正规操作数视为零。
此选项对不使用 SSE 或 SSE2 指令集的传统 x86 浮点运算没有影响。
-fns 选项可以有下列值。
表 A–10 -fns 值
值 |
含义 |
---|---|
yes |
选择非标准浮点模式 |
no |
选择标准浮点模式 |
如果未指定 -fns,则不自动启用非标准浮点模式。进行标准 IEEE 754 浮点计算(即逐渐下溢)。
如果仅指定了 –fns,则假定 –fns=yes。
在以下示例中,-fast 扩展为多个选项,其中一个是 -fns=yes,即选择非标准浮点模式。后续 -fns=no 选项覆盖初始设置,并选择浮点模式。
example% CC foo.cc -fast -fns=no |
非标准模式启动时,浮点运算可以产生不符合 IEEE 754 标准要求的结果。
如果使用 -fns 选项编译一个例程,就要使用 –fns 选项编译该程序的所有例程,否则就会产生意外的结果。
该选项仅在 SPARC 设备上有效,并且仅在编译主程序时才能有效使用。在 x86 设备上,此选项被忽略。
使用 –fns=yes(或 -fns)选项时,如果程序中出现通常由 IEEE 浮点陷阱处理程序管理的浮点错误,则可能会生成以下消息:
《数值计算指南》和 ieee_sun(3M)。