我使用ARM Cortex-A9 (zynq7000),我想让霓虹灯SIMD,但,而不是,使用浮点,除非指定。
当arm-none-eabi-gcc编译时,有以下fpu选项(分别):
二进制文件1和2是不同的。但是2和3是相同的(矢量化未启用),我正在使用-Og进行优化。( -Og不启用Vectorize选项)
当我使用mfpu= NEON 3选项时,如何确保所有浮点都是用VFP而不是neon完成的?
根据ARM体系结构参考手册,the和VFP支持类似的指令,这使得仅仅通过检查拆卸就很难区分这种差异。
此外,我计划使用#实用主义GCC ivdep的循环和函数,我需要矢量化,将适当的编译器标志来实现这一点?
发布于 2021-06-21 11:55:18
编译器将永远不会使用任何neon
指令,除非通过本质启用或强制自动向量化。
尽管neon
和vfp
指令看起来很相似,但它们甚至在不同的模式下操作。
vfp
和neon
在armv7
上共享了一些指令(主要是与内存相关的),但它们不应该引起任何关注。
你为什么不贴出拆解呢?
发布于 2022-04-07 10:48:12
-mfpu=
-mcpu=cortex-a9
或-march=armv7-a
时,mfpu=neon-vfpv3
和mfpu=neon
是相同的。
‘+neon’https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html-mfloat-abi=
霓虹灯(SIMD)上的浮点运算
funsafe-math-optimizations
选项设置为GCC,否则霓虹灯不用于浮点操作。(霓虹灯不遵循IEEE 754 )拆卸中的vfp和neon指令:
如果是vmov,
vmov.f32
和vmov.f64
。vmov.i32
等。环矢量化
-ftree-vectorize
和-O2
或-O3
优化选项。
当使用-Og
优化时,循环可能不会自动被矢量化https://stackoverflow.com/questions/68062253
复制相似问题