vspline 1.1.0
Generic C++11 Code for Uniform B-Splines
|
class template simd_type provides a fixed-size container type for small sets of fundamentals which are stored in a C vector. The type offers arithmetic capabilities which are implemented by using loops over the elements in the vector, expecting that the compiler will autovectorize these loops into 'proper' SIMD code. The interface of this type is modelled to be compatible with Vc's SimdArray. Unfortunately, Vc::SimdArray requires additional template arguments, so at times it's difficult to use the two types instead of each other. The interface compatibility does not mean that the arithmetic will produce the same results - this is intended but neither tested nor enforced. More...
#include <simd_type.h>
Classes | |
struct | masked_type |
Public Types | |
typedef std::size_t | size_type |
typedef _value_type | value_type |
typedef simd_type< bool, vsize > | mask_type |
typedef simd_type< int, vsize > | index_type |
typedef simd_type< bool, vsize > | MaskType |
typedef simd_type< int, vsize > | IndexType |
typedef std::experimental::simd_abi::fixed_size< _vsize > | abi_t |
typedef std::size_t | size_type |
typedef _value_type | value_type |
typedef std::experimental::simd< value_type, abi_t > | base_t |
typedef std::experimental::simd< int, abi_t > | index_type |
typedef mask_type | MaskType |
typedef index_type | IndexType |
typedef std::experimental::where_expression< mask_type, base_t > | we_t |
Public Member Functions | |
value_type & | operator[] (const size_type &i) |
const value_type & | operator[] (const size_type &i) const |
simd_type & | operator= (const value_type &rhs) |
simd_type (const value_type &ini) | |
simd_type ()=default | |
simd_type (const simd_type &)=default | |
template<typename U , typename V , std::size_t Wt, template< typename, std::size_t, typename, std::size_t > class W> | |
simd_type & | operator= (const W< U, vsize, V, Wt > &rhs) |
template<typename U , typename V , std::size_t Wt, template< typename, std::size_t, typename, std::size_t > class W> | |
simd_type (const W< U, vsize, V, Wt > &ini) | |
void | load (const value_type *const p_src) |
template<typename index_type > | |
void | gather (const value_type *const p_src, const index_type &indexes) |
template<typename index_type > | |
simd_type (const value_type *const p_src, const index_type &indexes) | |
void | store (value_type *const p_trg) const |
template<typename index_type > | |
void | scatter (value_type *const p_trg, const index_type &indexes) const |
void | rgather (const value_type *const p_src, const int &step) |
void | rscatter (value_type *p_trg, const int &step) const |
template<typename index_type > | |
simd_type | shuffle (index_type indexes) |
simd_type | operator[] (index_type indexes) |
COMPARE_FUNC (operator<,<) | |
COMPARE_FUNC (operator<=,<=) | |
COMPARE_FUNC (operator>,>) | |
COMPARE_FUNC (operator>=,>=) | |
COMPARE_FUNC (operator==,==) | |
COMPARE_FUNC (operator!=,!=) | |
masked_type | operator() (mask_type mask) |
value_type | sum () const |
simd_type & | operator= (const value_type &rhs) |
simd_type (const value_type &ini) | |
simd_type (const base_t &ini) | |
simd_type ()=default | |
simd_type (const simd_type &)=default | |
base_t & | to_base () |
const base_t & | to_base () const |
void | load (const value_type *const p_src) |
template<typename index_type > | |
void | gather (const value_type *const p_src, const index_type &indexes) |
template<typename index_type > | |
simd_type (const value_type *const p_src, const index_type &indexes) | |
void | store (value_type *const p_trg) const |
template<typename index_type > | |
void | scatter (value_type *const p_trg, const index_type &indexes) const |
void | rgather (const value_type *const p_src, const std::size_t &step) |
void | rscatter (value_type *p_trg, const std::size_t &step) const |
COMPARE_FUNC (<, operator<) | |
COMPARE_FUNC (<=, operator<=) | |
COMPARE_FUNC (>, operator>) | |
COMPARE_FUNC (>=, operator>=) | |
COMPARE_FUNC (==, operator==) | |
COMPARE_FUNC (!=, operator!=) | |
masked_type | operator() (mask_type mask) |
value_type | sum () const |
Static Public Member Functions | |
static constexpr size_type | size () |
static const simd_type | iota () |
static const index_type | IndexesFromZero () |
static const index_type | IndexesFrom (std::size_t start, std::size_t step=1) |
static const simd_type | Zero () |
static const simd_type | One () |
static mask_type | isnegative (const simd_type &rhs) |
static mask_type | isfinite (const simd_type &rhs) |
static mask_type | isnan (const simd_type &rhs) |
static constexpr size_type | size () |
static const simd_type | iota () |
static const index_type | IndexesFromZero () |
static const index_type | IndexesFrom (std::size_t start, std::size_t step=1) |
static const simd_type | Zero () |
static const simd_type | One () |
Static Public Attributes | |
static const size_type | vsize = _vsize |
static const int | ivsize = _vsize |
Friends | |
std::ostream & | operator<< (std::ostream &osr, simd_type it) |
std::istream & | operator>> (std::istream &isr, simd_type it) |
std::ostream & | operator<< (std::ostream &osr, simd_type it) |
std::istream & | operator>> (std::istream &isr, simd_type it) |
simd_type | abs (simd_type arg) |
class template simd_type provides a fixed-size container type for small sets of fundamentals which are stored in a C vector. The type offers arithmetic capabilities which are implemented by using loops over the elements in the vector, expecting that the compiler will autovectorize these loops into 'proper' SIMD code. The interface of this type is modelled to be compatible with Vc's SimdArray. Unfortunately, Vc::SimdArray requires additional template arguments, so at times it's difficult to use the two types instead of each other. The interface compatibility does not mean that the arithmetic will produce the same results - this is intended but neither tested nor enforced.
class template simd_type provides a fixed-size SIMD type. This implementation of vspline::simd_type uses std::simd as base class. This class is used as a stand-in for Vc::SimdArray
Definition at line 146 of file simd_type.h.
typedef std::experimental::simd_abi::fixed_size< _vsize > vspline::simd_type< _value_type, _vsize >::abi_t |
Definition at line 89 of file std_simd_type.h.
typedef std::experimental::simd< value_type , abi_t > vspline::simd_type< _value_type, _vsize >::base_t |
Definition at line 95 of file std_simd_type.h.
typedef simd_type< int , vsize > vspline::simd_type< _value_type, _vsize >::index_type |
Definition at line 185 of file simd_type.h.
typedef std::experimental::simd< int , abi_t > vspline::simd_type< _value_type, _vsize >::index_type |
Definition at line 96 of file std_simd_type.h.
typedef simd_type< int , vsize > vspline::simd_type< _value_type, _vsize >::IndexType |
Definition at line 188 of file simd_type.h.
typedef index_type vspline::simd_type< _value_type, _vsize >::IndexType |
Definition at line 107 of file std_simd_type.h.
typedef simd_type< bool , vsize > vspline::simd_type< _value_type, _vsize >::mask_type |
Definition at line 184 of file simd_type.h.
typedef simd_type< bool , vsize > vspline::simd_type< _value_type, _vsize >::MaskType |
Definition at line 187 of file simd_type.h.
typedef mask_type vspline::simd_type< _value_type, _vsize >::MaskType |
Definition at line 106 of file std_simd_type.h.
typedef std::size_t vspline::simd_type< _value_type, _vsize >::size_type |
Definition at line 160 of file simd_type.h.
typedef std::size_t vspline::simd_type< _value_type, _vsize >::size_type |
Definition at line 91 of file std_simd_type.h.
typedef _value_type vspline::simd_type< _value_type, _vsize >::value_type |
Definition at line 161 of file simd_type.h.
typedef _value_type vspline::simd_type< _value_type, _vsize >::value_type |
Definition at line 92 of file std_simd_type.h.
typedef std::experimental::where_expression< mask_type , base_t > vspline::simd_type< _value_type, _vsize >::we_t |
Definition at line 670 of file std_simd_type.h.
|
inline |
Definition at line 219 of file simd_type.h.
|
default |
|
default |
|
inline |
Definition at line 296 of file simd_type.h.
|
inline |
Definition at line 399 of file simd_type.h.
|
inline |
Definition at line 127 of file std_simd_type.h.
|
inline |
Definition at line 131 of file std_simd_type.h.
|
default |
|
default |
|
inline |
Definition at line 304 of file std_simd_type.h.
vspline::simd_type< _value_type, _vsize >::COMPARE_FUNC | ( | ! | , |
operator! | |||
) |
vspline::simd_type< _value_type, _vsize >::COMPARE_FUNC | ( | ) |
vspline::simd_type< _value_type, _vsize >::COMPARE_FUNC | ( | <= | , |
operator<= | |||
) |
vspline::simd_type< _value_type, _vsize >::COMPARE_FUNC | ( | operator | = = | ) |
vspline::simd_type< _value_type, _vsize >::COMPARE_FUNC | ( | operator | ) |
vspline::simd_type< _value_type, _vsize >::COMPARE_FUNC | ( | >= | , |
operator>= | |||
) |
vspline::simd_type< _value_type, _vsize >::COMPARE_FUNC | ( | operator! | , |
! | |||
) |
vspline::simd_type< _value_type, _vsize >::COMPARE_FUNC | ( | ) |
vspline::simd_type< _value_type, _vsize >::COMPARE_FUNC | ( | operator<= | , |
<= | |||
) |
vspline::simd_type< _value_type, _vsize >::COMPARE_FUNC | ( | operator | = = | ) |
vspline::simd_type< _value_type, _vsize >::COMPARE_FUNC | ( | operator | ) |
vspline::simd_type< _value_type, _vsize >::COMPARE_FUNC | ( | operator>= | , |
>= | |||
) |
|
inline |
Definition at line 389 of file simd_type.h.
|
inline |
Definition at line 281 of file std_simd_type.h.
|
inlinestatic |
Definition at line 325 of file simd_type.h.
|
inlinestatic |
Definition at line 212 of file std_simd_type.h.
|
inlinestatic |
Definition at line 312 of file simd_type.h.
|
inlinestatic |
Definition at line 197 of file std_simd_type.h.
|
inlinestatic |
Definition at line 301 of file simd_type.h.
|
inlinestatic |
Definition at line 186 of file std_simd_type.h.
|
inlinestatic |
Definition at line 847 of file simd_type.h.
|
inlinestatic |
Definition at line 857 of file simd_type.h.
|
inlinestatic |
Definition at line 842 of file simd_type.h.
|
inline |
Definition at line 376 of file simd_type.h.
|
inline |
Definition at line 263 of file std_simd_type.h.
|
inlinestatic |
Definition at line 343 of file simd_type.h.
|
inlinestatic |
Definition at line 230 of file std_simd_type.h.
|
inline |
Definition at line 834 of file simd_type.h.
|
inline |
Definition at line 725 of file std_simd_type.h.
|
inline |
Definition at line 209 of file simd_type.h.
|
inline |
Definition at line 118 of file std_simd_type.h.
|
inline |
Definition at line 282 of file simd_type.h.
|
inline |
Definition at line 194 of file simd_type.h.
|
inline |
Definition at line 199 of file simd_type.h.
|
inline |
Definition at line 457 of file simd_type.h.
|
inline |
Definition at line 428 of file simd_type.h.
|
inline |
Definition at line 350 of file std_simd_type.h.
|
inline |
Definition at line 435 of file simd_type.h.
|
inline |
Definition at line 357 of file std_simd_type.h.
|
inline |
Definition at line 416 of file simd_type.h.
|
inline |
Definition at line 323 of file std_simd_type.h.
|
inline |
Definition at line 446 of file simd_type.h.
|
inlinestaticconstexpr |
Definition at line 167 of file simd_type.h.
|
inlinestaticconstexpr |
Definition at line 101 of file std_simd_type.h.
|
inline |
Definition at line 407 of file simd_type.h.
|
inline |
Definition at line 312 of file std_simd_type.h.
|
inline |
Definition at line 894 of file simd_type.h.
|
inline |
Definition at line 755 of file std_simd_type.h.
|
inline |
Definition at line 140 of file std_simd_type.h.
|
inline |
Definition at line 145 of file std_simd_type.h.
|
inlinestatic |
Definition at line 338 of file simd_type.h.
|
inlinestatic |
Definition at line 225 of file std_simd_type.h.
|
friend |
Definition at line 384 of file std_simd_type.h.
|
friend |
Definition at line 350 of file simd_type.h.
|
friend |
Definition at line 237 of file std_simd_type.h.
|
friend |
Definition at line 360 of file simd_type.h.
|
friend |
Definition at line 247 of file std_simd_type.h.
|
static |
Definition at line 163 of file simd_type.h.
|
static |
Definition at line 162 of file simd_type.h.