libsimdpp  0.9.3
simdpp::neon Namespace Reference

Functions

int128 mul_lo (basic_int8x16 a, basic_int8x16 b)
 Multiplies the values of two int8x16 vectors and returns the low part of the multiplication. More...
 
int128 mull_lo (int8x16 a, int8x16 b)
 Multiplies the first 8 values of two signed int8x16 vectors and expands the results to 16 bits. More...
 
int128 mull_lo (uint8x16 a, uint8x16 b)
 Multiplies the first 8 values of two unsigned int8x16 vectors and expands the results to 16 bits. More...
 
int128 mull_hi (int8x16 a, int8x16 b)
 Multiplies the last 8 values of two signed int8x16 vectors and expands the results to 16 bits. More...
 
int128 mull_hi (uint8x16 a, uint8x16 b)
 Multiplies the last 8 values of two unsigned int8x16 vectors and expands the results to 16 bits. More...
 
void swap_lo (basic_int64x2 &a, basic_int64x2 &b)
 
void swap_hi (basic_int64x2 &a, basic_int64x2 &b)
 
void transpose2 (basic_int64x2 &a, basic_int64x2 &b)
 
basic_int64x2 zip_lo (basic_int64x2 a, basic_int64x2 b)
 
basic_int64x2 zip_hi (basic_int64x2 a, basic_int64x2 b)
 
template<unsigned pos, unsigned n>
void store_lane (void *p, basic_int8x16 a)
 Stores n elements of a 128-bit vector starting from the pos-th one. More...
 
template<unsigned pos, unsigned n>
void store_lane (void *p, basic_int16x8 a)
 Stores n elements of a 128-bit vector starting from the pos-th one. More...
 
template<unsigned pos, unsigned n>
void store_lane (void *p, basic_int32x4 a)
 Stores n elements of a 128-bit vector starting from the pos-th one. More...
 
template<unsigned pos, unsigned n>
void store_lane (void *p, basic_int64x2 a)
 Stores n elements of a 128-bit vector starting from the pos-th one. More...
 
template<unsigned pos, unsigned n>
void store_lane (float *p, float32x4 a)
 Stores n elements of a 128-bit vector starting from the pos-th one. More...
 

Function Documentation

int128 simdpp::neon::mul_lo ( basic_int8x16  a,
basic_int8x16  b 
)
inline

Multiplies the values of two int8x16 vectors and returns the low part of the multiplication.

r0 = low(a0 * b0)
...
r15 = low(a15 * b15)
int128 simdpp::neon::mull_hi ( int8x16  a,
int8x16  b 
)
inline

Multiplies the last 8 values of two signed int8x16 vectors and expands the results to 16 bits.

r0 = a8 * b8
...
r7 = a15 * b15
int128 simdpp::neon::mull_hi ( uint8x16  a,
uint8x16  b 
)
inline

Multiplies the last 8 values of two unsigned int8x16 vectors and expands the results to 16 bits.

r0 = a8 * b8
...
r7 = a15 * b15
int128 simdpp::neon::mull_lo ( int8x16  a,
int8x16  b 
)
inline

Multiplies the first 8 values of two signed int8x16 vectors and expands the results to 16 bits.

r0 = a0 * b0
...
r7 = a7 * b7
int128 simdpp::neon::mull_lo ( uint8x16  a,
uint8x16  b 
)
inline

Multiplies the first 8 values of two unsigned int8x16 vectors and expands the results to 16 bits.

r0 = a0 * b0
...
r7 = a7 * b7
template<unsigned pos, unsigned n>
void simdpp::neon::store_lane ( void *  p,
basic_int8x16  a 
)

Stores n elements of a 128-bit vector starting from the pos-th one.

p must be aligned to 16 bytes.

n must be a power of 2. pos must be a multiple of n. The behavior is undefined if pos+n exceeds the number of elements in the specified vector.

template<unsigned pos, unsigned n>
void simdpp::neon::store_lane ( void *  p,
basic_int16x8  a 
)

Stores n elements of a 128-bit vector starting from the pos-th one.

p must be aligned to 16 bytes.

n must be a power of 2. pos must be a multiple of n. The behavior is undefined if pos+n exceeds the number of elements in the specified vector.

template<unsigned pos, unsigned n>
void simdpp::neon::store_lane ( void *  p,
basic_int32x4  a 
)

Stores n elements of a 128-bit vector starting from the pos-th one.

p must be aligned to 16 bytes.

n must be a power of 2. pos must be a multiple of n. The behavior is undefined if pos+n exceeds the number of elements in the specified vector.

template<unsigned pos, unsigned n>
void simdpp::neon::store_lane ( void *  p,
basic_int64x2  a 
)

Stores n elements of a 128-bit vector starting from the pos-th one.

p must be aligned to 16 bytes.

n must be a power of 2. pos must be a multiple of n. The behavior is undefined if pos+n exceeds the number of elements in the specified vector.

template<unsigned pos, unsigned n>
void simdpp::neon::store_lane ( float *  p,
float32x4  a 
)

Stores n elements of a 128-bit vector starting from the pos-th one.

p must be aligned to 16 bytes.

n must be a power of 2. pos must be a multiple of n. The behavior is undefined if pos+n exceeds the number of elements in the specified vector.

void simdpp::neon::swap_hi ( basic_int64x2 &  a,
basic_int64x2 &  b 
)
inline
a0 = a0
a1 = b1
b0 = b0
b1 = a1
void simdpp::neon::swap_lo ( basic_int64x2 &  a,
basic_int64x2 &  b 
)
inline
a0 = b0
a1 = a1
b0 = a0
b1 = b1
void simdpp::neon::transpose2 ( basic_int64x2 &  a,
basic_int64x2 &  b 
)
inline
basic_int64x2 simdpp::neon::zip_hi ( basic_int64x2  a,
basic_int64x2  b 
)
inline
basic_int64x2 simdpp::neon::zip_lo ( basic_int64x2  a,
basic_int64x2  b 
)
inline