gcc - -mfpu=fpv5-sp-d16 和 -mfpu=fpv5-d16 有什么区别?

标签 gcc arm fpu

我正在尝试使用 arm-none-eabi-gcc 编译器让 double FPv5-DP-D16-M FPU 在 ARM Cortex-M7f 上运行。基于documentation ,看来我有两个选项可供选择以启用 FPU:-mfpu=fpv5-d16-mfpu=fpv5-sp-d16。 “fpv5”是不言自明的,而“d16”(如文档和其他 StackOverflow 问题中所述)仅表示有相当于 16 个 double 寄存器而不是名义上的 32 个寄存器。由于缺乏其他任何有意义的东西,我猜测“sp”代表“单精度”,这意味着 fpv5-d16 是我想要的选项。

但是,我找不到任何明确证实这一点的文档。我的推论是否正确?为什么没有 fpv5-dp-d16 选项/别名,就像 clang 中那样? ?

最佳答案

你的推论是正确的,是的。你可以引用Arm Cortex-M7 Processor Technical Reference Manual查看哪些 ISA 配置可用。

说到这里,真不知道原来的ARM工程师是什么意思adding support for it在 gcc 中可能一直在思考(也许有一些硬件恶作剧证明了这一点?)。不管怎样我是under the impression最新 gcc 版本中的“正确做法”只是使用类似 -march=armv7e-m+fpv5+fp.dp 的内容。也许出于这个原因,没有人真正集思广益地查看您可能关心的所有别名(实际上,您已经在我上一个链接的补丁 28 中看到 fpv5-d16 几乎是事后才想到的)。

但我想开发人员会愿意接受任何建议吗?

关于gcc - -mfpu=fpv5-sp-d16 和 -mfpu=fpv5-d16 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54703981/

相关文章:

用 NEON 改进的代码

assembly - fpu 以基于堆栈的方式实现其寄存器的动机是什么?

c - 编译器在布局内存时是否考虑了内核内存空间?

gcc - llvm-gcc 汇编器 : LDR syntax

c++ - OSX - 用通过 Homebrew 安装的 4.9 替换 gcc 版本 4.2.1

C static main return value of 0 在使用 free(someUnrelatedPointer) 之后改变了吗?

windows - 将 x86/64 Windows 程序移植到 Windows 8 ARM

arm - 如何使用 ARM Neon 内在函数对 IF block 进行矢量化?

delphi - 为什么应用程序以不同于 Default8087CW 的 FPU 控制字启动?

assembly - 汇编。如何设置CW的RC位?