ARM Cortex-A9 NEON 和 VFP

问题描述

我正在使用 ARM Cortex-A9 (zynq7000) 并且我想启用 neon SIMD 但将其用于浮点,除非指定。

由 arm-none-eabi-gcc 编译时使用以下 fpu 选项(单独):

  1. mfpu=vfpv3 -mfloat-abi=softfp,
  2. mfpu=neon-vfpv3 -mfloat-abi=softfp,
  3. mfpu=neon -mfloat-abi=softfp,

二进制文件 1 和 2 是不同的。但是 2&3 是相同的(未启用矢量化), 我正在使用 -Og 进行优化。 ( -Og 不启用矢量化选项)

当我使用选项 mfpu=neon-vfpv3 时,如何确保所有浮点都在 VFP 中完成,而不是在 NEON 中完成?

根据 ARM Architecture Reference Manual,NEON 和 VFP 支持类似的指令,这使得仅通过检查反汇编很难区分差异。

此外,我计划将 #pragma GCC ivdep 用于需要向量化的循环和函数,以及实现此目的的适当编译器标志是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)