Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
Arm Community blogs
Arm Community blogs
Tools, Software and IDEs blog Which toolchain should I use for Helium?
  • Blogs
  • Mentions
  • Sub-Groups
  • Tags
  • Jump...
  • Cancel
More blogs in Arm Community blogs
  • AI blog

  • Announcements

  • Architectures and Processors blog

  • Automotive blog

  • Embedded and Microcontrollers blog

  • Internet of Things (IoT) blog

  • Laptops and Desktops blog

  • Mobile, Graphics, and Gaming blog

  • Operating Systems blog

  • Servers and Cloud Computing blog

  • SoC Design and Simulation blog

  • Tools, Software and IDEs blog

Tags
  • Arm Compiler 6
  • Helium
  • LLVM
  • M-Profile Vector Extension (MVE)
  • GCC
Actions
  • RSS
  • More
  • Cancel
Related blog posts
Related forum threads

Which toolchain should I use for Helium?

Christopher Seidl
Christopher Seidl
February 19, 2024
3 minute read time.

Arm Helium technology is the M-profile Vector Extension (MVE) for the Arm Cortex-M processor series. It delivers a significant performance uplift for Machine Learning (ML) and Digital Signal Processing (DSP) applications for small, embedded devices. Helium helps to overcome compute challenges in many applications, such as audio devices, sensor hubs, keyword spotting and voice command control, power electronics, communications, and till image processing. At the time of writing, three Arm processors support Helium: Cortex-M52, Cortex-M55, and Cortex-M85.

My colleagues have written many blogs about Helium and how it works in practice. If you want to learn more, I can recommend this series: Making Helium and the comprehensive overview over the available material: Getting started with Armv8.1-M based processor.

One thing is the power that a new architecture feature brings to the market, the other thing is how to make use of this power. For many years, software developers in the Cortex-M space had a couple of toolchain choices. They could use Arm’s compiler and other commercial toolchains or use the open-source GNU toolchain (GCC). Often, Arm’s silicon partners ship their IDEs with GCC. Therefore, partners implementing Helium in their next generation devices were asking: “And what about Helium support in GCC?”

A complex story

As our own Arm Compiler for Embedded (ACfE) is based on the LLVM toolchain, we have focused on adding excellent auto-vectorization features and general Helium support to LLVM first. We have not kept this secret but have upstreamed our work to the LLVM project. Thus, partners and customers looking for a free toolchain should take a look at LLVM when working with Helium-enabled devices (or use our toolchain of course). We are working on enhancing the Helium support in GCC as well, but this takes time. It is also likely that GCC will never reach the same maturity for Helium that LLVM has.

Some numbers

We have built and run different benchmarking applications and example projects using different compilers. For example, the AudioMark benchmark shows the following result on an Arm Cortex-M55:

Audio Mark Relative Performance

The AudioMark score shows a 15% better performance on ACfE 6.21 compared to GCC13. LLVM17’s score is only 6% lower than ACfE 6.21.

Real-life examples such as a keyword spotting example show a similar result:

Keyword Spotting Example Relative Performance

In this chart, smaller bars are better, as the inference consumes less cycles. GCC13 takes almost 16% more cycles than ACfE 6.21. LLVM17 is 5% slower.

Finally, a similar result for object detection:

Object Detection Example Relative Performance

GCC13 is 22% slower than ACfE 6.21, while LLVM17 is quite close with only 3% more cycles.

Summary

When we introduced Helium, we concentrated optimizing toolchains based on LLVM as this is the technical foundation for our own compiler toolchain. Therefore, in summary, if you are interested in getting the best performance from an Arm core with Helium, use Arm Compiler for Embedded or the free LLVM toolchain.

We will work on improving the numbers for GCC, but it will take time and maybe never get as good as LLVM. For microcontrollers, LLVM is a viable and future-proof alternative to GCC.

Download the LLVM toolchain
Anonymous
Tools, Software and IDEs blog
  • What is new in LLVM 21?

    Volodymyr Turanskyy
    Volodymyr Turanskyy
    LLVM 21.1.0 was released on August 26, 2025 with contributions from Arm engineers to improve performance. This post provides the key highlights.
    • October 24, 2025
  • CPython Core Dev Sprint 2025 at Arm Cambridge: The biggest one yet

    Diego Russo
    Diego Russo
    For one week, Arm’s Cambridge HQ became the heart of Python development. Contributors globally came together for the CPython Core Developer Sprint.
    • October 9, 2025
  • Python on Arm: 2025 Update

    Diego Russo
    Diego Russo
    Python powers applications across Machine Learning (ML), automation, data science, DevOps, web development, and developer tooling.
    • August 21, 2025