7.2.9. 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 VFP 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 listed in Predefined register and coprocessor names.


Can be:

  • an expression that evaluates to a number in the range 0-15 for a double-precision VFPv2 register or a NEON 128-bit register, or 0-31 otherwise.

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


is any datatype described in NEON and VFP data types.


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

type and [x] are Extended notation. See Extended notation for more information, and Extended notation example for an example of usage.


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 (see VFP directives and vector notation).


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

Extended notation example

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]
Copyright © 2002-2010 ARM. All rights reserved.ARM DUI 0204J