Extension register bank mapping in NEON
The NEON extension register bank is a collection of registers that can be accessed as either 64-bit or 128-bit registers.
The NEON extension register bank is distinct from the ARM register bank.
The following figure shows the three views of the extension register bank,
and the overlap between the different size registers. For example, the 128-bit register
Q8 is an alias for 2 consecutive 64-bit registers
Figure 8-1 NEON extension register bank
The aliased views enable half-precision, single-precision, double-precision values, and NEON vectors to coexist in different non-overlapped registers at the same time.
You can also use the same overlapped registers to store half-precision, single-precision, and double-precision values, and NEON vectors at different times.
Do not attempt to use overlapped 64-bit and 128-bit registers at the same time because it creates meaningless results.
The mapping between the registers is as follows:
D<2n>maps to the least significant half of
D<2n+1>maps to the most significant half of
For example, you can access the least significant half
of the elements of a vector in
Q6 by referring to
D12, and the most significant half of the elements by referring