You copied the Doc URL to your clipboard.

Vector data types

Vector data types represent vectors of varying type and size.

NEON vector data types are named according to the following pattern:

<type><size>x<number of lanes>_t

For example, int16x4_t is a vector containing four lanes each containing a signed 16-bit integer.

The following table lists the vector data types.

Table 18-1 Vector data types

int8x8_t int8x16_t
int16x4_t int16x8_t
int32x2_t int32x4_t
int64x1_t int64x2_t
uint8x8_t uint8x16_t
uint16x4_t uint16x8_t
uint32x2_t uint32x4_t
uint64x1_t uint64x2_t
float16x4_t float16x8_t
float32x2_t float32x4_t
poly8x8_t poly8x16_t
poly16x4_t poly16x8_t

Some intrinsics use an array of vector types of the form:

<type><size>x<number of lanes>x<length of array>_t

These types are treated as ordinary C structures containing a single element named val.

An example structure definition is:

struct int16x4x2_t
    int16x4_t val[2];

There are array types defined for array lengths between 2 and 4, with any of the vector types listed in the following table.


The vector data types and arrays of the vector data types cannot be initialized by direct literal assignment. You must initialize them using one of the load intrinsics.