各cpu支持neon的编译选项

编译配置
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环境,切换不同的浮点配置必须把全部的用户代码重新编译。

### 回答1: 如果要在鲲鹏CPU编译C代码,需要使用Huawei Kunpeng Compiler (HCC)作为编译器,并添加适用于鲲鹏CPU编译选项和参数。 以下是一些可能有用的编译选项和参数: - `-march=armv8-a`:指定生成适用于armv8-a架构的代码。 - `-mcpu=kunpeng920`:指定使用鲲鹏920 CPU 的优化。 - `-mabi=lp64`:指定使用 LP64 数据模型。 - `-mfloat-abi=hard`:指定使用硬件浮点运算。 - `-mfpu=neon-fp-armv8`:指定使用 NEON 浮点单元。 - `-O2`:开启优化,提高代码性能。 使用这些参数,可以通过编译器生成针对鲲鹏CPU优化的代码。例如,在使用HCC编译器时,可以使用以下命令编译C源代码文件: ``` hcc -march=armv8-a -mcpu=kunpeng920 -mabi=lp64 -mfloat-abi=hard -mfpu=neon-fp-armv8 -O2 -c myfile.c -o myfile.o ``` 这将生成一个名为 `myfile.o` 的目标文件,该文件包含针对鲲鹏CPU优化的代码。 ### 回答2: 在使用CC编译C源码文件时,如果需要添加与鲲鹏CPU指令及相关的参数,可以采取以下方法: 1. 使用指令优化选项:使用"-march=kunpeng"参数可以指定使用鲲鹏CPU架构的指令集进行编译。 2. 使用优化级别选项:可以使用"-O"参数指定优化级别,例如"-O3"表示最高级别的优化,可使得编译器更加充分地使用鲲鹏CPU的指令集。 3. 使用特定的调试选项:使用"-g"参数可以生成用于调试的符号表,方便调试C程序。 4. 使用链接选项:在链接阶段可以使用"-static"参数指定静态链接,以减少运行时的动态链接库依赖。 5. 使用其他相关参数:根据编译需求,还可以根据具体情况添加其他相关参数,例如"-fomit-frame-pointer"可以优化函数调用过程。 总之,通过添加与鲲鹏CPU指令及相关的参数,可以使得CC编译器更加充分地利用鲲鹏CPU的特性和指令集,从而提高C程序的执行效率和性能。 ### 回答3: 使用cc编译C源码文件时,如果要针对鲲鹏CPU指令进行优化,需要添加与其相关的编译选项和参数。以下是可能需要添加的选项和参数: 1. -march=鲲鹏:指定使用的CPU架构为鲲鹏。这可以确保编译器使用鲲鹏指令集进行编译优化。 2. -mtune=鲲鹏:指定编译器为鲲鹏进行代码调整,以达到更好的性能。 3. -mabi=lp64:指定使用的数据模型为LP64(64位鲲鹏架构)。这会影响类型的大小和内存对齐方式。 4. -fomit-frame-pointer:编译时省略函数调用链中的帧指针,以减少栈空间的使用。 5. -O2 或 -O3:开启编译优化级别为2或3。这些级别会进行更多的优化,以提高生成的目标代码的性能。 6. -funroll-loops:循环展开优化。这将事先展开循环,减少循环控制逻辑的开销。 7. -mvectorize-with-neon-quad:利用鲲鹏的NEON指令集,对循环进行矢量化优化。 请注意,具体的编译选项和参数可能会根据编译器的版本和具体要编译的代码而有所不同。在使用时请参考编译器的文档和鲲鹏架构的技术文档,以获取准确的编译选项和参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值