Memory Management
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
-
Type Value 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... | |