ARM Cortex-A8:如何使用NEON和vfpv3

Hag*_*ble 8 arm compiler-flags neon cortex-a8

我正在使用Cortex-A8处理器而我不了解如何使用该-mfpu标志.

在Cortex-A8上有vfpv3霓虹灯协处理器.以前我不知道如何使用霓虹灯,所以我只使用

gcc -marm -mfloat-abi=softfp -mfpu=vfpv3

现在我已经了解了SIMD处理器的运行方式,并且我使用NEON内在函数编写了某些代码.要使用霓虹灯协处理器,我的-mfpu标志必须更改为-mfpu=neon,所以我的编译器命令行看起来像这样

gcc -marm -mfloat-abi=softfp -mfpu=neon

现在,这是否意味着我vfpv3不再使用了?我有很多代码没有使用NEON,这些部分没有使用vfpv3.

如果仍然使用neon和vfpv3,那么我没有问题,但如果只使用其中一个,我怎么能同时使用它们?

Igo*_*sky 10

NEON意味着拥有传统的VFP支持.VFP可用于"正常"(非向量)浮点计算.此外,NEON不支持双精度FP,因此只能使用VFP指令.
你可以做的是添加-S到gcc的命令行并检查程序集.以V开头的指令(例如vld1.32,vmla.f32)是NEON指令,而以F(fldd,fmacd)开头的指令是VFP.(尽管ARM文档现在更喜欢使用V前缀,即使对于VFP指令,GCC也不会这样做.)