#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.