鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

选项 -fp-model

说明

-fp-model选项是一组用来控制浮点数计算精度的选项,各个选项描述如下:

  • -fp-model=normal

    默认值,等同于不开任何fp-model选项,对其他选项无任何影响。

  • -fp-model=fast

    等同于打开-ffast-math,会开启各种损精度的优化,如交换结合律、强度折减等

  • -fp-model=precise

    关闭所有损害精度的优化,保证浮点结果的正确性。包括关闭交换结合律、强度折减、向零舍入、fma指令生成等优化。

  • -fp-model=except

    开启浮点计算异常机制,编译器在此做的主要工作是考虑浮点异常的存在,阻碍不考虑浮点异常的优化。鲲鹏芯片暂时不支持浮点异常中断功能。

  • -fp-model=strict

    等同于打开以上-fp-model=precise -fp-model=except

使用方法

根据浮点计算精度的需求加入相应的选项即可。

由于此选项是在gcc的基础上开发的,所以遵循gcc开源原有选项优先级行为不去干扰的原则。因此-fp-model的选项优先级为:

-fp-model=precise/strict/normal/fast/except = -ffast-math > -Ofast/-O3

自研的选项优先级遵循以下规则:
  1. 多个-fp-model在命令行被指定时,只有最后一个-fp-model起效。如果有不同-fp-model选项被覆写,会在屏幕输出报出warning。
  2. 最终起效的-fp-model为precise或strict时, 命令行排在此选项之前的-Ofast选项被改为-O3-ffast-math选项被删除。同时报出warning。
  3. -fp-model选项与开源-ffast-math的优先级保持一致,这意味着-fp-model-fmath-errno/-funsafe-math-optimization等选项的优先级是一样的,仅由命令行的先后和不同前端的代码决定哪个起效。