Description

The Boost.SIMD User API includes all the types, meta-functions, algorithms, functions and callable objects allowing the design and implementation of SIMD code.

Modules

 Configuration
 Configuration options.
 
 Types and helpers
 Boost.SIMD provides a set of types to handle SIMD operations in a portable way.
 
 Functions and Constants
 Boost.SIMD functions and constants are designed to work seamlessly on both scalar and SIMD parameters.
 
 Algorithms and Ranges
 SIMD-aware Range adaptors and implementation of standard algorithms to simplify interactions with code written using the Standard Template Library.
 

Classes

class  boost::simd::pack< T, N, ABI >
 High-level interface for manipulating SIMD data. More...
 
struct  boost::simd::preferred_alignment< T, Cardinal >
 Computes the preferred alignment for any type T vectorized with a given cardinal Cardinal. More...
 
struct  boost::simd::abi_of< Type, N >
 Type/Size to ABI mapping. More...
 
struct  boost::simd::as_logical< T >
 Convert type to its logical type counterpart. More...
 
struct  boost::simd::as_pack< T, N >
 Extension point for pack-liek type generation. More...
 
struct  boost::simd::cardinal_of< T >
 Computes the register width required to store an instance of any type T. More...
 
struct  boost::simd::downgrade< T, Sign >
 For any fundamental type T, provides a member typedef type which is a type of the same category but with a halved size if possible. More...
 
struct  boost::simd::expected_cardinal< Type, Extension >
 Expected cardinal of register. More...
 
struct  boost::simd::has_native_storage< T, N >
 Checks if a type is Vectorizable with native storage. More...
 
struct  boost::simd::is_bitwise_logical< T >
 Checks if type is not scalar. More...
 
struct  boost::simd::is_iterator< T >
 Checks if type is iterator. More...
 
struct  boost::simd::is_not_scalar< T >
 Checks if type is not scalar. More...
 
struct  boost::simd::is_pack< T >
 Checks if type is a pack. More...
 
struct  boost::simd::is_not_pack< T >
 Checks if type is not a pack. More...
 
struct  boost::simd::is_scalar< T >
 Checks if type is scalar. More...
 
struct  boost::simd::native_cardinal< T >
 Expected cardinal of current architecture register. More...
 
struct  boost::simd::real_of< T >
 Compute the underlying real type of a given type. More...
 

Macros

#define BOOST_SIMD_ALIGNED_OBJECT(Type)
 Copyright 2017 NumScale SAS. More...
 

Typedefs

template<typename T , std::size_t Cardinal = 0ULL>
using boost::simd::allocator = boost::alignment::aligned_allocator< T, preferred_alignment< T, Cardinal >::value >
 Convenience alias defining a standard compliant allocator returning memory which alignment is compatible with the storage of boot::simd::pack<T,Cardinal> or the actual alignment of T if T is not an arithmetic type. More...
 
template<typename T >
using boost::simd::as_logical_t = typename as_logical< T >::type
 Eager short-cut to the as_logical meta-function. More...
 
template<typename T >
using boost::simd::cardinal_of_t = typename cardinal_of< T >::type
 Eager short-cut for cardinal_of.
 
template<typename T , typename Sign = dispatch::sign_of_t<T>>
using boost::simd::downgrade_t = typename simd::downgrade< T, Sign >::type
 Eager short-cut to simd::downgrade. More...
 
template<typename T >
using boost::simd::is_bitwise_logical_t = typename is_bitwise_logical< T >::type
 Eager short-cut to is_bitwise_logical meta-function.
 
template<typename T >
using boost::simd::is_pack_t = typename is_pack< T >::type
 Eager short-cut for is_pack_t.
 
template<typename T >
using boost::simd::is_not_pack_t = typename is_not_pack< T >::type
 Eager short-cut for is_not_pack_t.
 
template<typename T >
using boost::simd::real_of_t = typename real_of< T >::type
 Eager short-cut to real_of meta-function.
 

Functions

template<typename T , typename U , typename Mask >
detail::masked_pointer< T, Mask > boost::simd::mask (T *ptr, Mask const &status, U const &def)
 Marks a pointer as being masked. More...
 
template<typename T >
T * boost::simd::allocate (std::size_t size)
 Allocates space for a memory block of size elements of type T with an alignment compatible with the current SIMD instructions set. More...
 
template<typename T , typename Arch >
T * boost::simd::allocate (std::size_t size, Arch const &arch)
 Allocates space for a memory block of size elements of type T with an alignment compatible with the selected SIMD instructions set arch. More...
 
template<typename T >
void boost::simd::deallocate (T *ptr)
 Deallocates space from a memory block of allocated by boost::simd::allocate. More...
 
template<typename T >
bool boost::simd::is_aligned (T const *ptr) noexcept
 Checks if a pointer is aligned within current architecture's constraints. More...
 
template<typename T , typename Arch >
bool boost::simd::is_aligned (T const *ptr, Arch const &arch) noexcept
 Checks if a pointer is aligned withing a given architecture's constraints. More...
 
template<typename T >
cardinal_of_t< T > boost::simd::cardinal (T &&v) noexcept
 Computes the register size of any given value v. More...