vir-simd 0.4.189
Parallelism TS 2 extensions and simd fallback implementation
Loading...
Searching...
No Matches
simdize.h File Reference

Provides a type transformation for turning scalar user-defined types into a simd types. More...

#include "struct_reflect.h"
#include "constexpr_wrapper.h"
#include <tuple>
#include <iterator>
#include "simd.h"
#include "detail.h"
#include "simd_concepts.h"
#include "simd_permute.h"

Go to the source code of this file.

Classes

struct  vir::simdize_size< T >
 
class  vir::simd_tuple< T, N >
 simd-like interface for tuples of vectorized data members of T. More...
 
class  vir::vectorized_struct< T, N >
 
struct  std::tuple_size< vir::simd_tuple< T, N > >
 
struct  std::tuple_element< I, vir::simd_tuple< T, N > >
 
struct  std::tuple_size< vir::vectorized_struct< T, N > >
 

Namespaces

namespace  vir
 This namespace collects libraries and tools authored by Matthias Kretz.
 

Concepts

concept  vir::vectorizable_struct_template
 A type T is a vectorizable struct template if all of its data members can be vectorized via template argument simdization.
 
concept  vir::vectorizable_struct
 

Typedefs

template<typename T, int N = 0>
using vir::simdize = typename detail::simdize_impl<T, N>::type
 Apply a type transformation to a scalar type to produce a data-parallel type.
 

Functions

template<std::size_t I, reflectable_struct T, int N>
requires (not vectorizable_struct_template<T>)
constexpr decltype(auto) vir::get (const simd_tuple< T, N > &tup)
 
template<std::size_t I, vectorizable_struct_template T, int N>
constexpr decltype(auto) vir::get (const vectorized_struct< T, N > &tup)
 

Variables

template<typename T>
vir::simdize_size vir::constexpr_wrapper int constexpr int vir::simdize_size_v = simdize_size<T>::value
 Inline variable for the simdize_size trait.
 

Detailed Description

Provides a type transformation for turning scalar user-defined types into a simd types.