“-mfpu=fpv5-sp-d16”和“-mfpu=fpv5-d16”的区别是什么?

3
我正在尝试在使用arm-none-eabi-gcc编译器的ARM Cortex-M7f上启用双精度FPv5-DP-D16-M FPU。根据文档,似乎有两个选项可供选择以启用FPU:-mfpu=fpv5-d16-mfpu=fpv5-sp-d16。 "fpv5"相当明显,“d16”(如文档和其他StackOverflow问题中所述)仅表示存在16个双精度寄存器的等效项,而不是名义上的32个寄存器。由于没有其他合理的选择,我猜测“sp”代表“单精度”,这意味着fpv5-d16是我想要的选项。
然而,我找不到任何明确确认这一点的文档。我的推断是正确的吗?为什么没有像在clang中出现的fpv5-dp-d16选项/别名?
1个回答

3
你的推断是正确的。您可以参考Arm Cortex-M7处理器技术参考手册,了解最初可用的ISA配置。
话虽如此,我不确定原始的ARM工程师在gcc中添加支持时在想什么(也许有一些硬件诡计可以证明这一点?)。无论如何,我认为在最新的gcc版本中,“正确的做法”就是使用类似于-march=armv7e-m+fpv5+fp.dp的东西。也许因为这个原因,没有人真正想过要查看您可能关心的所有别名(实际上,您可以在我的最后一个链接的第28个补丁中看到 fpv5-d16 几乎是一个事后想法)。
但我想开发人员会接受任何建议吧?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接