You copied the Doc URL to your clipboard.

Architectures supported by Arm® Compiler

Arm® Compiler supports a number of different architecture profiles.

Arm Compiler supports the following architectures:

  • Armv8‑A and all update releases, for bare-metal targets.
  • Armv8‑R.
  • Armv8‑M.
  • Armv7‑A for bare-metal targets.
  • Armv7‑R.
  • Armv7‑M.
  • Armv6‑M.

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, the Cortex®‑A53 processor).

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.