You copied the Doc URL to your clipboard.

ARM architectures supported by the toolchain

ARM® Compiler supports a number of different architecture profiles.

ARM Compiler supports the following architectures:

  • ARMv8-A bare metal targets.
  • ARMv8.1-A bare metal targets.
  • ARMv8.2-A bare metal targets.
  • ARMv8.3-A bare metal targets.
  • ARMv8-R targets.
  • ARMv8-M targets.
  • ARMv7-A bare metal targets.
  • ARMv7-R targets.
  • ARMv7-M targets.
  • ARMv6-M targets.

When compiling code, the compiler needs to know which architecture to target in order to take advantage of features specific to that architecture.

To specify a target, you must supply the target execution state (AArch32 or AArch64), together with either a target architecture (for example ARMv8-A) or a target processor (for example Cortex-A53).

To specify a target execution state (AArch64 or AArch32) with armclang, use the mandatory --target command-line option:


Supported targets include:

Generates A64 instructions for AArch64 state. Implies -march=armv8-a unless -march or -mcpu is specified.
Generates A32 and T32 instructions for AArch32 state. Must be used in conjunction with -march (to target an architecture) or -mcpu (to target a processor).

To generate generic code that runs on any processor with a particular architecture, use the -march option. Use the -march=list option to see all supported architectures.

To optimize your code for a particular processor, use the -mcpu option. Use the -mcpu=list option to see all supported processors.


The --target, -march, and -mcpu options are armclang options. For all of the other tools, such as armasm and armlink, use the --cpu option to specify target processors and architectures.