各位好!
本人总结了在starterware上如何使能VFP/NEON,以及应用当中遇到问题的解决方法,特此分享到这里。谢谢!
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
各位好!
本人总结了在starterware上如何使能VFP/NEON,以及应用当中遇到问题的解决方法,特此分享到这里。谢谢!
对于浮点运算,编译出来的主要是些浮点指令,而另一些NEON指令,一般不会编译出来,除非把代码写的很规整,这样编译器才会识别出并行,从而编译出NEON指令。
谢谢回答。要什么样的代码才能编译出neon语句呢,能帮忙举个例子么?或者哪里有例子可以下载?
用单浮点类型定义变量,然后进运算,就可以编译出NEON 浮点指令。
再问一下,查看汇编代码,除了把bin下到板子里,run起来可以看到,还有什么办法可以不用下板子看到么?
还是不行啊。。。我的编译环境
-mv7A8 --code_state=32 --float_support=VFPv3 --abi=eabi -me -O3 --opt_for_speed=5 -g --include_path="C:/ti/ccsv5/tools/compiler/arm_4.9.8/include" --include_path="C:/ti/am335x_sysbios_ind_sdk_1.0.0.8/sdk/os_drivers/include" --include_path="C:/ti/am335x_sysbios_ind_sdk_1.0.0.8/sdk/platform/am335x/include" --diag_warning=225 --neon
编译出来的汇编里面有FMUL,但是没有VMUL,是哪里配置问题么?
Richard Zhao 说:还是不行啊。。。我的编译环境
-mv7A8 --code_state=32 --float_support=VFPv3 --abi=eabi -me -O3 --opt_for_speed=5 -g --include_path="C:/ti/ccsv5/tools/compiler/arm_4.9.8/include" --include_path="C:/ti/am335x_sysbios_ind_sdk_1.0.0.8/sdk/os_drivers/include" --include_path="C:/ti/am335x_sysbios_ind_sdk_1.0.0.8/sdk/platform/am335x/include" --diag_warning=225 --neon
编译出来的汇编里面有FMUL,但是没有VMUL,是哪里配置问题么?
FMUL 是一对浮点数间的运算,如果你的变量定义为浮点,而且有乘法,编译器就会生成该指令。
VMUL是向量运算,是几对相应的浮点数运算,你需要将多个浮点数乘法放在一起,这样编译器才会识别出来,编译成VMUL。
具体可以查看下面的文档
http://infocenter.arm.com/help/topic/com.arm.doc.dui0204ic/DUI0204IC_rvct_assembler_guide.pdf
Richard Zhao 说:再问一下,查看汇编代码,除了把bin下到板子里,run起来可以看到,还有什么办法可以不用下板子看到么?
可以在C 编译器里加入--asm_listing 看看,应该可以生成汇编指令文件。
您可以参考下面两个文档:
http://www.arm.com/files/pdf/neon_support_in_the_arm_compiler.pdf
http://www.add.ece.ufl.edu/4924/docs/arm/ARM%20NEON%20Development.pdf
总体上讲,用通用的C代码生成NEON指令没什么实际意义,如果您需要NEON的优化,直接写汇编代码比较有效。