各cpu支持neon的编译选项

时间:2022-03-01 09:13:15
编译配置
S3C2410 200MHz softfloat
采用软浮点库,编译选项
-mcpu=arm920t -mtune=arm920t -O3 -msoft-float -ffast-math

OMAP2420 400MHz softfloat
采用软浮点库,编译选项
-mcpu=arm1136jf-s -mtune=arm1136jf-s -O3 -msoft-float -ffast-math

OMAP2420 400MHz vfp
采用VFP硬件浮点,编译选项
-mcpu=arm1136jf-s -mtune=arm1136jf-s -O3 -mfloat-abi=softfp -mfpu=vfp -ffast-math

OMAP3530 600MHz vfp
采用VFP硬件浮点,编译选项
-mcpu=cortex-a8 -mtune=cortex-a8 -O3 -mfloat-abi=softfp -mfpu=vfp -ffast-math

OMAP3530 600MHz auto vectorized
采用neon向量浮点,gcc-4.3.2自动生成neon向量指令,编译选项
-mcpu=cortex-a8 -mtune=cortex-a8 -O3 -mfloat-abi=softfp -mfpu=neon -ftree-vectorize -ffast-math

OMAP3530 600MHz manual vectorized
采用手工编写的汇编函数,人工调用neon向量浮点指令,编译选项
-mcpu=cortex-a8 -mtune=cortex-a8 -O3 -mfloat-abi=softfp
PentiumD920 3.0GHz scalar fpu
采用FPU硬件浮点,编译选项
-march=nocona -O3
PentiumD920 3.0GHz SSE3 vectorized
采用sse3向量浮点,gcc-4.3.2自动生成sse3向量指令,编译选项
-march=nocona -O3 -ftree-vectorize -ffast-math -mfpmath=sse -mmmx -msse -msse2 -msse3


新版本gcc-4.3已经加入了neon向量指令支持,而对sse的支持在更早版本中就已经加入了。要启用向量指令自动生成功能,需要在编译参数中加入适当的处理器指令集标记和浮点选择标记,在arm架构下为
-mfloat-abi=softfp -mfpu=neon -ftree-vectorize -ffast-math
在x86架构下为
-mfpmath=sse -ftree-vectorize -mmmx -msse -msse2 -msse3 -ffast-math
另外,在arm linux平台下,如果使用的是EABI(embedded application binary interface)配置则允许系统中混合运行softfp,vfp,neon向量浮点等各种浮点实现代码。例如在cortex-a8上运行同时运行优化的向量浮点代码和老式arm920t的软浮点代码,这使得上述测试能够方便的完成。如果用老的oabi环境,切换不同的浮点配置必须把全部的用户代码重新编译。