i.MX6Q的GCC选项,以便正确使用NEON / FPU

时间:2015-03-16 04:20:05

标签: gcc neon fpu

我希望在C ++函数中使用内联ASM氖指令进行一些NEON手动代码优化,目标是ARM Cortex-A9(i.MX6Q)。

在为编译器制作正确的标志时,我对-mfpu有点困惑。我的目标是使用具有浮点运算的硬FPU,并仅将NEON用于ASM代码。

  1. 通过设置-mfpu = vfpv3可以安全地通过调用ASM氖指令来访问NEON协处理器吗?

  2. 通过设置-mfpu = neon-fp16,FPU核心是否会被闲置?

  3. 在进行非矢量化浮点运算时,FPU会胜过NEON吗?

1 个答案:

答案 0 :(得分:0)

1)不,GCC会将-mfpu值传递给汇编程序,汇编程序将拒绝汇编您的代码,无论您使用的是内联asm还是单独的汇编程序文件:

cat foo.s
    vmov q1, q2
gcc foo.s -c -mfpu=vfpv3
foo.s: Assembler messages:
foo.s:1: Error: selected FPU does not support instruction -- `vmov q1,q2'

2)否,GCC中的-mfpu=neon-fp16也允许使用VFPv3指令集中的指令。

3)我不确定这个问题是什么意思,浮点指令的标量版本在VFP指令集的各种修订版中,矢量版本在NEON(高级SIMD)指令集中。 / p>