You copied the Doc URL to your clipboard.

QN, DN, and SN

The QN directive defines a name for a specified 128-bit extension register.

The DN directive defines a name for a specified 64-bit extension register.

The SN directive defines a name for a specified single-precision floating-point register.


name directive expr{.type}{[x]}



is QN, DN, or SN.


is the name to be assigned to the extension register. name cannot be the same as any of the predefined names.


Can be:

  • An expression that evaluates to a number in the range:

    • 0-15 if you are using QN in A32/T32 Advanced SIMD code.

    • 0-31 otherwise.

  • A predefined register name, or a register name that has already been defined in a previous directive.


is any Advanced SIMD or floating-point datatype.


is only available for Advanced SIMD code. [x] is a scalar index into a register.

type and [x] are Extended notation.


Use QN, DN, or SN to allocate convenient names to extension registers, to help you to remember what you use each one for.


Avoid conflicting uses of the same register under different names.

You cannot specify a vector length in a DN or SN directive.


energy  DN  6   ; defines energy as a symbol for
                ; floating-point double-precision register 6
mass    SN  16  ; defines mass as a symbol for
                ; floating-point single-precision register 16

Extended notation examples

varA    DN      d1.U16
varB    DN      d2.U16
varC    DN      d3.U16
        VADD    varA,varB,varC       ; VADD.U16 d1,d2,d3
index   DN      d4.U16[0]
result  QN      q5.I32
        VMULL   result,varA,index    ; VMULL.U16 q5,d1,d3[2]