E.V.E  0.1-beta

SIMD-aware container for product types. More...

Detailed Description

SIMD-aware container for product types.

EVE provides various element to simplify the management of SIMD-compatible memory like functions and allocators for requesting SIMD-compatible block of memory, pointer wrapper to discriminate aligned memory from regular one, and alignment computation functions.

Convenience header:

#include <eve/memory.hpp>

Required header: #include <eve/memory/soa_vector.hpp>

soa_vector is a container similar to std::vector but optimized to store [product types](eve::product_type) using a Structure Of Array layout compatible with SIMD processing.

Template Parameters
TypeValue type stored inside eve::soa_vector

Classes

struct  eve::aligned_allocator< T, Lanes >
 Standard-compliant allocator handling the allocation and deallocation of segment of aligned memory. More...
 
struct  eve::aligned_ptr< Type, Lanes >
 Wrapper for non-owning aligned pointers. More...
 

Enumerations

enum class  eve::over : std::size_t
 
enum class  eve::under : std::size_t
 

Functions

template<std::integral T>
constexpr auto eve::align (T v, over alignment) noexcept
 Realigns integral value over a given power-of-2 alignment constraint. More...
 
template<std::integral T>
constexpr auto eve::align (T v, under alignment) noexcept
 Realigns integral value under a given power-of-2 alignment constraint. More...
 
template<typename T >
constexpr auto eve::align (T *ptr, over alignment) noexcept
 Realigns a pointer over a given power-of-2 alignment constraint. More...
 
template<typename T >
constexpr auto eve::align (T *ptr, under alignment) noexcept
 Realigns a pointer under a given power-of-2 alignment constraint. More...
 
template<std::size_t A, typename T , typename Other >
constexpr bool eve::is_aligned (aligned_ptr< T, Other > const &ptr) noexcept
 Checks if an aligned_ptr is aligned on a given alignment. More...
 
template<std::size_t Alignment, std::integral T>
constexpr bool eve::is_aligned (T v) noexcept
 Checks if a pointer satisfy an alignment constraint. More...
 
template<std::size_t Alignment, typename T >
constexpr bool eve::is_aligned (T *ptr) noexcept
 Checks if a pointer satisfy an alignment constraint. More...
 
template<typename T , typename Lanes >
constexpr bool eve::is_aligned (T *ptr, Lanes lanes) noexcept
 Checks if a pointer satisfy an alignment constraint. More...
 

Variables

constexpr callable_gather_ eve::gather = {}
 Callable object computing TODO: FILL THIS BLANK. More...
 
constexpr callable_read_ eve::read = {}
 Callable object reading single value from memory. More...
 
constexpr callable_store_ eve::store = {}
 Callable object computing //! description NOT FOUND. More...
 
constexpr callable_write_ eve::write = {}
 Callable object writing single value from memory. More...