我有一个用于Cortex A15的预编译ARM工具链。我想检查它是否生成正确的VFPv4指令。任何机构都有任何想法吗?
答案 0 :(得分:3)
我们可以在gcc release log中查找
...
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");
}
使用-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级使用它,因为我找不到这些融合指令的任何intrinsic listed或者想到任何其他方式。