| |||
| Home > Using NEON Support > Vector data types | |||
The following types are defined to represent vectors. 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. Table 43 lists the vector
data types.
Table 43. 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 Table 43.
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. See Table 44.