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.

Show/hideSyntax

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

where:

directive

is QN, DN, or SN.

name

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

expr

Can be:

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

    • 0-15 if you are using DN in VFPv2 or QN in NEON

    • 0-31 otherwise.

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

type

is any NEON or VFP datatype.

[x]

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

type and [x] are Extended notation.

Show/hideUsage

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

Note

Avoid conflicting uses of the same register under different names.

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

Show/hideExamples

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

Show/hideExtended 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]

Show/hideSee also

Copyright © 2010-2012 ARM. All rights reserved.ARM DUI 0489H
Non-ConfidentialID070912