# Data-parallel vector library

From cppreference.com
< cpp‎ | experimental

Defined in header `<experimental/simd>`

### Main classes

simd (parallelism TS v2) | data-parallel vector type (class template)
simd_mask (parallelism TS v2) | data-parallel type with the element type bool (class template)

### ABI tags

Defined in namespace `std::experimental::simd_abi`
scalar (parallelism TS v2) | tag type for storing a single element (class)
fixed_size (parallelism TS v2) | tag type for storing specified number of elements (class template)
compatible (parallelism TS v2) | tag type that ensures ABI compatibility (alias template)
native (parallelism TS v2) | tag type that is most efficient (alias template)
max_fixed_size (parallelism TS v2) | the maximum number of elements guaranteed to be supported by fixed (constant)
deduce deduce_t (parallelism TS v2) | obtains an ABI type for given element type and number of elements (class template)

### Alignment tags

element_aligned_tag element_aligned (parallelism TS v2) | tag type that indicates the alignment of the elements (class)
vector_aligned_tag vector_aligned (parallelism TS v2) | tag type that indicates the alignment of the vector type (class)
overaligned_tag overaligned (parallelism TS v2) | tag type that indicates the specified alignment (class template)

### Where expression

const_where_expression (parallelism TS v2) | selected elements with non-mutating operations (class template)
where_expression (parallelism TS v2) | selected elements with mutating operations (class template)
where (parallelism TS v2) | produces const_where_expression and where_expression (function template)

### Casts

simd_cast static_simd_cast (parallelism TS v2) | element-wise static_cast (function template)
to_fixed_size to_compatible to_native (parallelism TS v2) | element-wise ABI cast (function template)
split (parallelism TS v2) | splits single simd object to multiple ones (function template)
concat (parallelism TS v2) | concatenates multiple simd objects to a single one (function template)

### Algorithms

min (parallelism TS v2) | element-wise min operation (function template)
max (parallelism TS v2) | element-wise max operation (function template)
minmax (parallelism TS v2) | element-wise minmax operation (function template)
clamp (parallelism TS v2) | element-wise clamp operation (function template)

### Reduction

reduce (parallelism TS v2) | reduces the vector to a single element (function template)
hmin (parallelism TS v2) | returns the minimum element (function template)
hmax (parallelism TS v2) | returns the maximum element (function template)

### Mask reduction

all_of any_of none_of some_of (parallelism TS v2) | predicates on the number of true values (function template)
popcount (parallelism TS v2) | returns the number of true values (function template)
find_first_set find_last_set (parallelism TS v2) | returns the position of the first or last true value (function template)

### Traits

is_abi_tag is_abi_tag_v (parallelism TS v2) | checks if a type is an ABI tag type (class template)
is_simd is_simd_v (parallelism TS v2) | checks if a type is a simd type (class template)
is_simd_mask is_simd_mask_v (parallelism TS v2) | checks if a type is a simd_mask type (class template)
is_simd_flag_type is_simd_flag_type_v (parallelism TS v2) | checks if a type is a simd flag type (class template)
simd_size simd_size_v (parallelism TS v2) | obtains the number of elements of a given element type and ABI (class template)
memory_alignment memory_alignment_v (parallelism TS v2) | obtains an appropriate alignment for vector_aligned (class template)

### Math functions

### Example

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/experimental/simd&oldid=111139"