Nektar++
Loading...
Searching...
No Matches
Classes | Namespaces | Macros | Typedefs | Functions | Variables
tinysimd.hpp File Reference
#include "avx2.hpp"
#include "avx512.hpp"
#include "scalar.hpp"
#include "sse2.hpp"
#include "sve.hpp"
#include <array>
#include <cstdint>
#include <vector>

Go to the source code of this file.

Classes

struct  tinysimd::first_not_void_of<... >
 
struct  tinysimd::first_not_void_of< void, Rest... >
 
struct  tinysimd::first_not_void_of< T, Rest... >
 
struct  tinysimd::width_tag< Width >
 
struct  tinysimd::width_or_zero< T, typename >
 
struct  tinysimd::width_or_zero< T, std::void_t< decltype(T::width)> >
 
struct  tinysimd::abi::default_abi< T, width >
 
struct  tinysimd::abi::default_longsimd_width< T >
 
struct  tinysimd::details::scalar_index_type< T, typename >
 
struct  tinysimd::details::scalar_index_type< T, std::enable_if_t< has_scalarIndexType< T >::value > >
 
struct  tinysimd::details::long_simd< SimdType, Width >
 
struct  tinysimd::details::longsimd_selector< ScalarType, width, abi_policy >
 

Namespaces

namespace  tinysimd
 
namespace  tinysimd::abi
 
namespace  tinysimd::details
 

Macros

#define TINYSIMD_PRAGMA_UNROLL
 

Typedefs

template<typename ScalarType , int width = 0, template< typename, int > class abi = abi::default_abi>
using tinysimd::simd = typename abi< ScalarType, width >::type
 
template<typename T >
using tinysimd::details::scalar_index_type_t = typename scalar_index_type< T >::type
 
template<typename ScalarType , int width = 0, template< typename, int > class abi = abi::default_abi>
using tinysimd::longsimd = typename details::longsimd_selector< ScalarType, width, abi >::type
 

Functions

template<typename SimdType , unsigned int Width>
details::long_simd< SimdType, Width > tinysimd::operator+ (details::long_simd< SimdType, Width > lhs, const details::long_simd< SimdType, Width > &rhs)
 
template<typename SimdType , unsigned int Width>
details::long_simd< SimdType, Width > tinysimd::operator+ (details::long_simd< SimdType, Width > lhs, const typename details::long_simd< SimdType, Width >::chunkType &rhs)
 
template<typename SimdType , unsigned int Width>
details::long_simd< SimdType, Width > tinysimd::operator+ (const typename details::long_simd< SimdType, Width >::chunkType &lhs, details::long_simd< SimdType, Width > rhs)
 
template<typename SimdType , unsigned int Width, typename U , typename std::enable_if< std::is_arithmetic_v< U >, bool >::type = 0>
details::long_simd< SimdType, Width > tinysimd::operator+ (details::long_simd< SimdType, Width > lhs, U rhs)
 
template<typename SimdType , unsigned int Width, typename U , typename std::enable_if< std::is_arithmetic_v< U >, bool >::type = 0>
details::long_simd< SimdType, Width > tinysimd::operator+ (U lhs, details::long_simd< SimdType, Width > rhs)
 
template<typename SimdType , unsigned int Width>
details::long_simd< SimdType, Width > tinysimd::operator- (details::long_simd< SimdType, Width > lhs, const details::long_simd< SimdType, Width > &rhs)
 
template<typename SimdType , unsigned int Width>
details::long_simd< SimdType, Width > tinysimd::operator- (details::long_simd< SimdType, Width > lhs, const typename details::long_simd< SimdType, Width >::chunkType &rhs)
 
template<typename SimdType , unsigned int Width>
details::long_simd< SimdType, Width > tinysimd::operator- (const typename details::long_simd< SimdType, Width >::chunkType &lhs, details::long_simd< SimdType, Width > rhs)
 
template<typename SimdType , unsigned int Width, typename U , typename std::enable_if< std::is_arithmetic_v< U >, bool >::type = 0>
details::long_simd< SimdType, Width > tinysimd::operator- (details::long_simd< SimdType, Width > lhs, U rhs)
 
template<typename SimdType , unsigned int Width, typename U , typename std::enable_if< std::is_arithmetic_v< U >, bool >::type = 0>
details::long_simd< SimdType, Width > tinysimd::operator- (U lhs, details::long_simd< SimdType, Width > rhs)
 
template<typename SimdType , unsigned int Width>
details::long_simd< SimdType, Width > tinysimd::operator- (details::long_simd< SimdType, Width > in)
 
template<typename SimdType , unsigned int Width>
details::long_simd< SimdType, Width > tinysimd::operator* (details::long_simd< SimdType, Width > lhs, const details::long_simd< SimdType, Width > &rhs)
 
template<typename SimdType , unsigned int Width>
details::long_simd< SimdType, Width > tinysimd::operator* (details::long_simd< SimdType, Width > lhs, const typename details::long_simd< SimdType, Width >::chunkType &rhs)
 
template<typename SimdType , unsigned int Width>
details::long_simd< SimdType, Width > tinysimd::operator* (const typename details::long_simd< SimdType, Width >::chunkType &lhs, details::long_simd< SimdType, Width > rhs)
 
template<typename SimdType , unsigned int Width, typename U , typename std::enable_if< std::is_arithmetic_v< U >, bool >::type = 0>
details::long_simd< SimdType, Width > tinysimd::operator* (details::long_simd< SimdType, Width > lhs, U rhs)
 
template<typename SimdType , unsigned int Width, typename U , typename std::enable_if< std::is_arithmetic_v< U >, bool >::type = 0>
details::long_simd< SimdType, Width > tinysimd::operator* (U lhs, details::long_simd< SimdType, Width > rhs)
 
template<typename SimdType , unsigned int Width>
details::long_simd< SimdType, Width > tinysimd::operator/ (details::long_simd< SimdType, Width > lhs, const details::long_simd< SimdType, Width > &rhs)
 
template<typename SimdType , unsigned int Width>
details::long_simd< SimdType, Width > tinysimd::operator/ (details::long_simd< SimdType, Width > lhs, const typename details::long_simd< SimdType, Width >::chunkType &rhs)
 
template<typename SimdType , unsigned int Width>
details::long_simd< SimdType, Width > tinysimd::operator/ (const typename details::long_simd< SimdType, Width >::chunkType &lhs, details::long_simd< SimdType, Width > rhs)
 
template<typename SimdType , unsigned int Width, typename U , typename std::enable_if< std::is_arithmetic_v< U >, bool >::type = 0>
details::long_simd< SimdType, Width > tinysimd::operator/ (details::long_simd< SimdType, Width > lhs, U rhs)
 
template<typename SimdType , unsigned int Width, typename U , typename std::enable_if< std::is_arithmetic_v< U >, bool >::type = 0>
details::long_simd< SimdType, Width > tinysimd::operator/ (U lhs, details::long_simd< SimdType, Width > rhs)
 
template<typename SimdType , unsigned int Width>
details::long_simd< SimdType, Width > tinysimd::sqrt (details::long_simd< SimdType, Width > in)
 
template<typename SimdType , unsigned int Width>
details::long_simd< SimdType, Width > tinysimd::abs (details::long_simd< SimdType, Width > in)
 
template<typename SimdType , unsigned int Width>
details::long_simd< SimdType, Width > tinysimd::min (details::long_simd< SimdType, Width > lhs, const details::long_simd< SimdType, Width > &rhs)
 
template<typename SimdType , unsigned int Width>
details::long_simd< SimdType, Width > tinysimd::max (details::long_simd< SimdType, Width > lhs, const details::long_simd< SimdType, Width > &rhs)
 
template<typename SimdType , unsigned int Width>
details::long_simd< SimdType, Width > tinysimd::log (details::long_simd< SimdType, Width > in)
 
template<typename SimdType , unsigned int Width>
void tinysimd::load_unalign_interleave (const typename details::long_simd< SimdType, Width >::scalarType *in, const std::uint32_t dataLen, std::vector< details::long_simd< SimdType, Width >, allocator< details::long_simd< SimdType, Width > > > &out)
 
template<typename SimdType , unsigned int Width>
void tinysimd::load_unalign_interleave_skipPads (const typename details::long_simd< SimdType, Width >::scalarType *in, const std::uint32_t dataLen, const std::uint32_t skipPads, std::vector< details::long_simd< SimdType, Width >, allocator< details::long_simd< SimdType, Width > > > &out)
 
template<typename SimdType , unsigned int Width>
void tinysimd::load_interleave (const typename details::long_simd< SimdType, Width >::scalarType *in, std::uint32_t dataLen, std::vector< details::long_simd< SimdType, Width >, allocator< details::long_simd< SimdType, Width > > > &out)
 
template<typename SimdType , unsigned int Width>
void tinysimd::deinterleave_unalign_store (const std::vector< details::long_simd< SimdType, Width >, allocator< details::long_simd< SimdType, Width > > > &in, const std::uint32_t dataLen, typename details::long_simd< SimdType, Width >::scalarType *out)
 
template<typename SimdType , unsigned int Width>
void tinysimd::deinterleave_unalign_store_skipPads (const std::vector< details::long_simd< SimdType, Width >, allocator< details::long_simd< SimdType, Width > > > &in, const std::uint32_t dataLen, const std::uint32_t skipPads, typename details::long_simd< SimdType, Width >::scalarType *out)
 
template<typename SimdType , unsigned int Width>
void tinysimd::deinterleave_store (const std::vector< details::long_simd< SimdType, Width >, allocator< details::long_simd< SimdType, Width > > > &in, std::uint32_t dataLen, typename details::long_simd< SimdType, Width >::scalarType *out)
 

Variables

static constexpr unsigned int tinysimd::PACKMULTIPLIER = 1
 
static constexpr unsigned int tinysimd::PACKSIZE
 

Macro Definition Documentation

◆ TINYSIMD_PRAGMA_UNROLL

#define TINYSIMD_PRAGMA_UNROLL

Definition at line 126 of file tinysimd.hpp.