0

我有一个用于 Cortex A15 的预编译 ARM 工具链。我想检查它是否生成正确的 VFPv4 指令。任何机构有任何想法?

4

1 回答 1

3

我们可以在gcc 发布日志中查找它

...
GCC now supports VFPv4-based FPUs and FPUs with single-precision-only VFP.
...

我们也可以手动验证。根据 ARM 架构手册 VFPv4 至少添加了Vector Fused Multiply Accumulate / Subtract.

void test_vfp4() {
    asm("VFMA.F32 q1, q2, q3");
}

用 switch 编译它-mfpu=neon-vfpv4(否则我的工具链说Error: selected processor does not support ARM mode 'vfma.f32 q1,q2,q3'

gcc -mfpu=neon-vfpv4 -O2 -marm -c vfpv4.c

并转储二进制文件

arm-linux-gnueabihf-objdump -S vfpv4.o 

应该在下面列出

00000000 <test_vfp4>:
   0:   f2042c56    vfma.f32    q1, q2, q3
   4:   e12fff1e    bx  lr

但是我不知道如何在 C 级别使用它,因为我找不到为这些融合指令列出的任何内在函数或想到任何其他方式。

于 2012-10-09T08:41:25.897 回答