i.MX6Q 的 GCC 选项以便正确使用 NEON/FPU
GCC options for i.MX6Q in order to properly use NEON/FPU
我希望在 C++ 函数中使用内联 ASM neon 指令进行一些 NEON 手动代码优化,目标是 ARM Cortex-A9 (i.MX6Q)。
在为编译器制作正确的标志时,我对 -mfpu 有点困惑。我的目标是将硬 FPU 与浮点运算一起使用,并将 NEON 仅与 ASM 代码一起使用。
假设通过设置 -mfpu=vfpv3,仍然可以通过调用 ASM neon 指令访问 NEON 协处理器是否安全?
通过设置-mfpu=neon-fp16,FPU核心会不会被闲置?
在进行非矢量化浮点运算时,FPU 是否会优于 NEON?
1) 不,GCC 会将 -mfpu
值传递给 assembler,而 assembler 将拒绝 assemble 你的代码,无论你是使用内联 asm 或单独的 assembler 文件:
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)指令集中.
我希望在 C++ 函数中使用内联 ASM neon 指令进行一些 NEON 手动代码优化,目标是 ARM Cortex-A9 (i.MX6Q)。
在为编译器制作正确的标志时,我对 -mfpu 有点困惑。我的目标是将硬 FPU 与浮点运算一起使用,并将 NEON 仅与 ASM 代码一起使用。
假设通过设置 -mfpu=vfpv3,仍然可以通过调用 ASM neon 指令访问 NEON 协处理器是否安全?
通过设置-mfpu=neon-fp16,FPU核心会不会被闲置?
在进行非矢量化浮点运算时,FPU 是否会优于 NEON?
1) 不,GCC 会将 -mfpu
值传递给 assembler,而 assembler 将拒绝 assemble 你的代码,无论你是使用内联 asm 或单独的 assembler 文件:
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)指令集中.