#include <concepts>#include <cstdint>#include <initializer_list>#include <type_traits>#include <algorithm>#include <immintrin.h>#include "attributes/common.hpp"#include "numerics.hpp"#include "types.hpp"#include "simd_data.hpp"Go to the source code of this file.
Classes | |
| struct | ein::simd< T, N > |
| simd primitive definition More... | |
| struct | ein::detail::simd_type_impl< T > |
| struct | ein::detail::simd_type_impl< simd< T, N > > |
| struct | std::tuple_size< ein::simd< T, N > > |
| struct | std::tuple_element< I, ein::simd< T, N > > |
needed to support for std::apply More... | |
Namespaces | |
| namespace | ein |
| namespace | ein::detail |
| namespace | std |
Concepts | |
| concept | ein::simd_type |
| recognizes any valid simd type | |
Functions | |
argument deduction | |
| template<typename T , size_t N> requires ( has_simd_type<T,N> && (N % sizeof(T) == 0) ) | |
| ein::simd (T __attribute((__vector_size__(N)))) -> simd< T, N/sizeof(T)> | |
| guidance when loading data from clang/gcc vector extensions | |
| template<typename ... Args> requires has_simd_type<std::common_type<Args...>, sizeof...(Args)> | |
| ein::simd (Args &&...) -> simd< std::common_type< Args... >, sizeof...(Args)> | |
| guidance for loading from arguments | |
| template<typename T > requires has_simd_type<T,max_simd_size/sizeof(T)> | |
| ein::simd (T) -> simd< T, has_simd_type< T, max_simd_size/sizeof(T)> > | |
| default to max simd size for broadcast | |
shuffles | |
| template<size_t ... is> | |
| auto | ein::shuffle (simd_type auto x) |
| create a new simd register with contents drawn from this one | |
| template<size_t ... is> | |
| auto | ein::shuffle (simd_type auto x, simd_type auto y) |
| create a new simd register with contents drawn from these two | |
Definition in file simd.hpp.