15.56 QN, DN, and SN

The QN, DN, and SN directives define names for NEON and VFP registers.

Syntax

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.

Usage

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

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.

Note:

Avoid conflicting uses of the same register under different names.

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

Examples

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 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,d4[0]
Non-ConfidentialPDF file icon PDF versionARM DUI0473M
Copyright © 2010-2016 ARM Limited or its affiliates. All rights reserved.