Vector types

From libsimdpp-docs

This page outlines the available vector types in the library. Several higher-level descriptions are available in the following pages:

Regular vector types[edit]

Regular vector types are any vector type with void Expr template parameter. Vector types correspond to one or more physical SIMD registers.

vector containing unsigned 8-bit integers
(class template)
vector containing signed 8-bit integers
(class template)
vector containing masks for 8-bit integers
(class template)
vector containing unsigned 16-bit integers
(class template)
vector containing signed 16-bit integers
(class template)
vector containing masks for 16-bit integers
(class template)
vector containing unsigned 32-bit integers
(class template)
vector containing signed 32-bit integers
(class template)
vector containing masks for 32-bit integers
(class template)
vector containing unsigned 64-bit integers
(class template)
vector containing signed 64-bit integers
(class template)
vector containing masks for 64-bit integers
(class template)
vector containing 32-bit floating-point numbers
(class template)
vector containing masks for 32-bit floating-point numbers
(class template)
vector containing 64-bit floating-point numbers
(class template)
vector containing masks for 64-bit floating-point numbers
(class template)

Vector expressions[edit]

Vector expressions are any vector type with non-void Expr template parameter. Vector expression stores information needed to evaluate a certain expression.

Vector expressions are not meant to be created by the library user. The user may only evaluate them to a regular vector type.

vector containing unsigned 8-bit integers
(class template)
vector containing signed 8-bit integers
(class template)
vector containing masks for 8-bit integers
(class template)
vector containing unsigned 16-bit integers
(class template)
vector containing signed 16-bit integers
(class template)
vector containing masks for 16-bit integers
(class template)
vector containing unsigned 32-bit integers
(class template)
vector containing signed 32-bit integers
(class template)
vector containing masks for 32-bit integers
(class template)
vector containing unsigned 64-bit integers
(class template)
vector containing signed 64-bit integers
(class template)
vector containing masks for 64-bit integers
(class template)
vector containing 32-bit floating-point numbers
(class template)
vector containing masks for 32-bit floating-point numbers
(class template)
vector containing 64-bit floating-point numbers
(class template)
vector containing masks for 64-bit floating-point numbers
(class template)

Categorization types[edit]

represents either of int8, uint8 or mask_int8
(class template)
represents either of int16, uint16 or mask_int16
(class template)
represents either of int32, uint32 or mask_int32
(class template)
represents either of int64, uint64 or mask_int64
(class template)
represents either of float32 or mask_float32
(class template)
represents either of float64 or mask_float64
(class template)
represents any_int8
(class template)
represents any_int16
(class template)
represents either any_int32 or any_float32
(class template)
represents either any_int64 or any_float64
(class template)
represents any vector
(class template)

Helper typedefs[edit]

The following helper typedefs are provided:

Type Definition
int8x16 int8<16>
int8x32 int8<32>
uint8x16 uint8<16>
uint8x32 uint8<32>
mask_int8x16 mask_int8<16>
mask_int8x32 mask_int8<32>


int16x8 int16<8>
int16x16 int16<16>
uint16x8 uint16<8>
uint16x16 uint16<16>
mask_int16x8 mask_int16<8>
mask_int16x16 mask_int16<16>


int32x4 int32<4>
int32x8 int32<8>
uint32x4 uint32<4>
uint32x8 uint32<8>
mask_int32x4 mask_int32<4>
mask_int32x8 mask_int32<8>


int64x2 int64<2>
int64x4 int64<4>
uint64x2 uint64<2>
uint64x4 uint64<4>
mask_int64x2 mask_int64<2>
mask_int64x4 mask_int64<4>


float32v float32<SIMDPP_FAST_FLOAT32_SIZE>
mask_float32v mask_float32<SIMDPP_FAST_FLOAT32_SIZE>
float64v float64<SIMDPP_FAST_FLOAT64_SIZE>
mask_float64v mask_float64<SIMDPP_FAST_FLOAT64_SIZE>


int8v int8<SIMDPP_FAST_INT8_SIZE>
uint8v uint8<SIMDPP_FAST_INT8_SIZE>
mask_int8v mask_int8<SIMDPP_FAST_INT8_SIZE>


int16v int16<SIMDPP_FAST_INT16_SIZE>
uint16v uint16<SIMDPP_FAST_INT16_SIZE>
mask_int16v mask_int16<SIMDPP_FAST_INT16_SIZE>


int32v int32<SIMDPP_FAST_INT32_SIZE>
uint32v uint32<SIMDPP_FAST_INT32_SIZE>
mask_int32v mask_int32<SIMDPP_FAST_INT32_SIZE>


int64v int64<SIMDPP_FAST_INT64_SIZE>
uint64v uint64<SIMDPP_FAST_INT64_SIZE>
mask_int64v mask_int64<SIMDPP_FAST_INT64_SIZE>


mask_float32v2 mask_float32<SIMDPP_FAST_FLOAT32_SIZE*2>
float64v2 float64<SIMDPP_FAST_FLOAT64_SIZE*2>
mask_float64v2 mask_float64<SIMDPP_FAST_FLOAT64_SIZE*2>


int8v2 int8<SIMDPP_FAST_INT8_SIZE*2>
uint8v2 uint8<SIMDPP_FAST_INT8_SIZE*2>
mask_int8v2 mask_int8<SIMDPP_FAST_INT8_SIZE*2>


int16v2 int16<SIMDPP_FAST_INT16_SIZE*2>
uint16v2 uint16<SIMDPP_FAST_INT16_SIZE*2>
mask_int16v2 mask_int16<SIMDPP_FAST_INT16_SIZE*2>


int32v2 int32<SIMDPP_FAST_INT32_SIZE*2>
uint32v2 uint32<SIMDPP_FAST_INT32_SIZE*2>
mask_int32v2 mask_int32<SIMDPP_FAST_INT32_SIZE*2>


int64v2 int64<SIMDPP_FAST_INT64_SIZE*2>
uint64v2 uint64<SIMDPP_FAST_INT64_SIZE*2>
mask_int64v2 mask_int64<SIMDPP_FAST_INT64_SIZE*2>


float32v4 float32<SIMDPP_FAST_FLOAT32_SIZE*4>
mask_float32v4 mask_float32<SIMDPP_FAST_FLOAT32_SIZE*4>
float64v4 float64<SIMDPP_FAST_FLOAT64_SIZE*4>
mask_float64v4 mask_float64<SIMDPP_FAST_FLOAT64_SIZE*4>


int8v4 int8<SIMDPP_FAST_INT8_SIZE*4>
uint8v4 uint8<SIMDPP_FAST_INT8_SIZE*4>
mask_int8v4 mask_int8<SIMDPP_FAST_INT8_SIZE*4>


int16v4 int16<SIMDPP_FAST_INT16_SIZE*4>
uint16v4 uint16<SIMDPP_FAST_INT16_SIZE*4>
mask_int16v4 mask_int16<SIMDPP_FAST_INT16_SIZE*4>


int32v4 int32<SIMDPP_FAST_INT32_SIZE*4>
uint32v4 uint32<SIMDPP_FAST_INT32_SIZE*4>
mask_int32v4 mask_int32<SIMDPP_FAST_INT32_SIZE*4>


int64v4 int64<SIMDPP_FAST_INT64_SIZE*4>
uint64v4 uint64<SIMDPP_FAST_INT64_SIZE*4>
mask_int64v4 mask_int64<SIMDPP_FAST_INT64_SIZE*4>