The compiler teams at QuIC are pleased to announce the 3.5 release of the Snapdragon LLVM Compiler for Android NDK – available here:
This release includes significant new features and optimizations that should benefit the native code of your Android applications.
Mature ARMv8 Support
Snapdragon LLVM provides full support for the new ARMv8, 64-bit architecture, including the following:
NEON and VFP, along with NEON intrinsics
While 64-bit targets are not yet generally available, Android NDK support is and you can begin porting your applications now. By using Snapdragon LLVM, your code generation will already be tuned for Snapdragon 64bit processors when devices become available.
This release includes a mature auto-vectorizer that can automatically generate code that utilizes the NEON SIMD engine for a wide range of loops. This can provide a significant acceleration depending on your application workload, such as image processing. The vectorizer is enabled by default at –O2
This release also includes an auto-parallelizer that can automatically spread the execution of certain application loops across the idle CPUs on the Snapdragon processor. With the proliferation of multi-core mobile processors, this is a very promising feature, and can provide significant acceleration and often is synergistic with auto-vectorization. We encourage you try auto-parallelization, but note that due to the complex nature of multi-core mobile processors, auto-parallelization may cause regressions in some workloads.
This release includes the Underfined Behavior Sanitize which is useful for detecting common programming errors such as integer overflow.
LLVM has a long tradition of providing understandable and actionable error and warning messages. If you are porting your code to 64-bit, the compiler can help identify common porting issues. For example on 64-bit platforms the size of a long is not the same as an int, nor is the size of an int the same as a pointer. Setting –Wall, or –Wconversion can help you quickly identify and fix porting issues such as this.
Other code quality tools in this release include the Address Sanitizer and the Static Analyzer.
Read the readme on the download page, download snapdragon LLVM, details are available in the included user guide, and build your application. Not only will it provide you the best performance today on Qualcomm’s 32-bit architectures, it is a productive path to enabling your application for the 64-bit mobile architectures on the horizon.
Please let us know your results and share your experiences using this release of the Snapdragon LLVM compiler at:
As you are on this page, you clearly are interested in optimizing your application! We recommend that you use Snapdragon LLVM in conjunction with Snapdragon Mobile Development Platform hardware (MDP). Snapdragon MDPs come preloaded with tools such as Snapdragon Performance Visualizer and a special version of Trepn Profiler™ that provide for viewing your application execution and power profile. For more information visit the Qualcomm Developer Network.