Snapdragon LLVM Compiler
Snapdragon LLVM Compiler Toolchain is now available for the following:
- Android NDK
- Bare metal images
LLVM is a C/C++ compiler that is becoming increasingly popular. It enables use of compilers in a broader range of configurations, providing for better performance and power usage – particularly on Qualcomm Snapdragon micro-architectures. Beginning with the Jellybean MR1 release, Google has included LLVM as an alternative compiler as part of the Android toolchain and the Android NDK. LLVM is suitable wherever you use native code (C/C++) in your Android application.
As a key supporter of LLVM, Qualcomm Technologies, Inc. has been working on optimizing this mobile-friendly compiler for Snapdragon and we are pleased to make it available to you.
We have seen performance gains to a variety of Android applications and libraries when compiling with LLVM. For example, in our tests the C version of the Android jpeg library performs 10% faster on Snapdragon-based devices when built with the Snapdragon LLVM compiler compared to the latest NDK GCC version. We also observe performance improvements in the libpng library when using the Snapdragon LLVM compiler compared to the LLVM or GCC compilers included in the Android NDK.
Bare metal images typically do not run on top of an operating system, instead they directly interact with the hardware. We have seen significant code size improvements over GCC and open source LLVM with the bare metal version of the Snapdragon LLVM toolchain.
View the license agreement.
Work In Progress
The Snapdragon LLVM compiler team is actively working on optimizations targeting typical Android scenarios, focusing on delivering high performance on Snapdragon cores by exploiting capabilities such as the 128-bit Neon engine. The team also works on code size optimizations targeting baremetal images. Additionally, there is ongoing work in the toolchain libraries (runtime, libc, libc++) to support various flavors of ARM microcontrollers.
Please share your results of using the Snapdragon LLVM compiler, and if there are workloads that you are interested in seeing accelerated for Snapdragon, please contact us.