作为一名程序员,你可以通过多种方式使用Neon技术:
•霓虹灯支持的开源库,如Arm计算库提供了一个最简单的利用Neon的方法。
•编译器中的自动向量化功能可以自动优化您的代码
Neon的优势。
Neon intrinsic是编译器用适当的Neon指令替换的函数调用。
这使您可以直接,低级地访问您想要的确切的Neon指令,所有这些都来自C/ c++
代码。
•对于非常高的性能,手工编码的Neon汇编程序可以是一种替代方法有经验的程序员。
本指南展示了如何使用Arm Compiler 6中的自动向量化功能来自动地生成包含Armv8高级SIMD指令的代码。它包含了一些例子探索Neon代码生成,并重点介绍有助于编译器的编码最佳实践产生最好的结果。
本指南对每个为Arm开发的人都很有用,对那些人尤其有用他们想要使用Neon技术,而不必在汇编中编程。
在本指南结束时,您将实现以下目标:
•您将知道哪个Arm编译器命令行选项启用高级SIMD代码的一代。
•您将能够编写利用Arm各种优化功能的C/ c++代码编译器6。
•您将知道在哪里可以找到不同编译器的文档。
如果你还不熟悉Neon,你应该先阅读Armv8-A的介绍Neon开始本指南。
本指南中的示例使用Arm Compiler 6,专为嵌入式应用程序开发而设计运行在裸金属设备上。如果您还没有访问Arm Compiler 6,它包括在内Arm Development Studio黄金版的30天免费试用。
尽管本指南使用的是Arm Compiler 6,但您可以轻松地将示例改编为其他版本编译器。您需要查阅您的编译器文档来找到等效的在示例中使用的编译器选项。可以生成Neon代码的自动向量化编译器
包括:
•Arm Compiler 6,专为运行在裸机上的嵌入式应用程序开发而设计设备。这是本指南示例中使用的编译器。
•Arm C/ c++编译器,设计用于Linux用户空间应用程序开发,最初用于高性能计算。
•LLVM-clang,开源的基于llvm的工具链