| |||
| Home > NEON and VFP Programming > NEON load and store element and structure instructions > VLDn and VSTn (single n-element structure to one lane) | |||
Vector Load single n-element structure
to one lane. It loads one n-element structure
from memory into one or more NEON registers. Elements of the register
that are not loaded are unaltered.
Vector Store single n-element structure
to one lane. It stores one n-element
structure into memory from one or more NEON registers.
Vopn{cond}.datatypelist, [Rn{@align}]{!}
Vopn{cond}.datatypelist, [Rn{@align}],Rm
where:
opmust be either LD or ST.
nmust be one of 1, 2, 3, or 4.
condis an optional condition code.
datatypesee Table 26.
listspecifies the NEON register list. See Table 26 for options.
Rnis the ARM register containing the base address. cannot
be PC.Rn
alignspecifies an optional alignment. See Table 26 for options.
!if
! is present, is
updated to (Rn + the
number of bytes transferred by the instruction). The update occurs
after all the loads or stores have taken place.Rn
Rmis an ARM register containing an offset from the
base address. If is
present, Rm is updated
to (Rn + Rn) after the
address is used to access memory. Rm cannot
be SP or PC.Rm
Table 26. Permitted combinations of parameters
n | datatype | list [a] | align [b] | alignment |
|---|---|---|---|---|
| 1 | 8 | {Dd[x]} | - | Standard only |
16 | {Dd[x]} | @16 | 2-byte | |
32 | {Dd[x]} | @32 | 4-byte | |
| 2 | 8 | {Dd[x], D(d+1)[x]} | @16 | 2-byte |
16 | {Dd[x], D(d+1)[x]} | @32 | 4-byte | |
{Dd[x], D(d+2)[x]} | @32 | 4-byte | ||
32 | {Dd[x], D(d+1)[x]} | @64 | 8-byte | |
{Dd[x], D(d+2)[x]} | @64 | 8-byte | ||
| 3 | 8 | {Dd[x], D(d+1)[x], D(d+2)[x]} | - | Standard only |
16 or 32 | {Dd[x], D(d+1)[x], D(d+2)[x]} | - | Standard only | |
{Dd[x], D(d+2)[x], D(d+4)[x]} | - | Standard only | ||
| 4 | 8 | {Dd[x], D(d+1)[x], D(d+2)[x], D(d+3)[x]} | @32 | 4-byte |
| 16 | {Dd[x], D(d+1)[x], D(d+2)[x], D(d+3)[x]} | @64 | 8-byte | |
{Dd[x], D(d+2)[x], D(d+4)[x], D(d+6)[x]} | @64 | 8-byte | ||
| 32 | {Dd[x], D(d+1)[x], D(d+2)[x], D(d+3)[x]} | @64 or @128 | 8-byte or 16-byte | |
{Dd[x], D(d+2)[x], D(d+4)[x], D(d+6)[x]} | @64 or @128 | 8-byte or 16-byte | ||
[a] Every register in the list must be in the range D0-D31. [b] | ||||