3.3.8. Instruction width selection

There are many instructions that can generate either a 16-bit encoding or a 32-bit encoding depending on the operands and destination register specified. For some of these instructions, you can force a specific instruction size by using an instruction width suffix. The .W suffix forces a 32-bit instruction encoding. The .N suffix forces a 16-bit instruction encoding.

If you specify an instruction width suffix and the assembler cannot generate an instruction encoding of the requested width, it generates an error.


In some cases it might be necessary to specify the .W suffix, for example if the operand is the label of an instruction or literal data, as in the case of branch instructions. This is because the assembler might not automatically generate the right size encoding.

To use an instruction width suffix, place it immediately after the instruction mnemonic and condition code, if any. Example 3.3 shows instructions with the instruction width suffix.

Example 3.3. Instruction width selection

    BCS.W  label      ; Creates a 32-bit instruction even for a short branch.

    ADDS.W R0, R0, R1 ; Creates a 32-bit instruction even though the same
                      ; operation can be done by a 16-bit instruction.

Copyright © 2015, 2018 Arm. All rights reserved.ARM DUI 0646C