| |||
| Home > Directives Reference > Symbol definition directives > 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.
namedirectiveexpr{.type}{[x]}
where:
directiveis QN, DN, or SN.
nameis the name to be assigned to the extension register. cannot
be the same as any of the predefined names.name
exprCan 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.
typeis any NEON or VFP datatype.
[x]is only available for NEON code. [ is
a scalar index into a register.x]
and type[ are Extended
notation.x]
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
; VFP double-precision register 6
mass SN 16 ; defines mass as a symbol for
; VFP single-precision register 16
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]