一呼百應, "one call, a hundred responses"
Loading...
Searching...
No Matches
simd.hpp File Reference
#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"
Include dependency graph for simd.hpp:
This graph shows which files directly or indirectly include this file:

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
 

Detailed Description

SPDX-FileType: Source
SPDX-FileCopyrightText: 2024 Edward Kmett <ekmett@gmail.com>
SPDX-License-Identifier: BSD-2-Clause OR Apache-2.0

Definition in file simd.hpp.