### 6.2.2. Vectors

A vector can use up to eight single-precision registers, or four double-precision registers, from the same bank. The number of registers used by a vector is controlled by the `LEN` bits in the `FPSCR` (see FPSCR, the floating-point status and control register).

A vector can start from any register. The first register used by a vector is specified in the register fields in the individual instructions.

#### Vector wrap-around

If the vector extends beyond the end of a bank, it wraps around to the beginning of the same bank, for example:

• a vector of length 6 starting at s5 is {s5, s6, s7, s0, s1, s2}

• a vector of length 3 starting at s15 is {s15, s8, s9}

• a vector of length 4 starting at s22 is {s22, s23, s16, s17}

• a vector of length 2 starting at d7 is {d7, d4}

• a vector of length 3 starting at d10 is {d10, d11, d8}.

A vector cannot contain registers from more than one bank.

#### Vector stride

Vectors can occupy consecutive registers, as in the examples above, or they can occupy alternate registers. This is controlled by the `STRIDE` bits in the `FPSCR` (see FPSCR, the floating-point status and control register). For example:

• a vector of length 3, stride 2, starting at s1, is {s1, s3, s5}

• a vector of length 4, stride 2, starting at s6, is {s6, s0, s2, s4}

• a vector of length 2, stride 2, starting at d1, is {d1, d3}.

#### Restriction on vector length

A vector cannot use the same register twice. Allowing for vector wrap-around, this means that you cannot have:

• a single-precision vector with length > 4 and stride = 2

• a double-precision vector with length > 4 and stride = 1

• a double-precision vector with length > 2 and stride = 2.

 Copyright © 2000, 2001 ARM Limited. All rights reserved. ARM DUI 0068B Non-Confidential PDF version