vspline 1.1.0
Generic C++11 Code for Uniform B-Splines
Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Friends | List of all members
vspline::vc_simd_type< _value_type, _vsize > Struct Template Reference

class template vc_simd_type provides a fixed-size SIMD type. This implementation of vspline::vc_simd_type uses Vc::SimdArray The 'acrobatics' may seem futile - why inherit privately from Vc::SimdArray, then code a class template which does essentially the same? There are several reasons: first, the wrapper class results in a common interface shared with the other SIMD implementations, second, there are some added members which can't be 'put into' Vc::SimdArray from the outside. And, third, the template signature is uniform, avoiding Vc::SimdArray's two additional template arguments. More...

#include <vc_simd_type.h>

Inheritance diagram for vspline::vc_simd_type< _value_type, _vsize >:

Classes

struct  masked_type
 

Public Types

typedef Vc::SimdArray< _value_type, _vsize > base_t
 
typedef std::size_t size_type
 
typedef _value_type value_type
 
typedef index_type::value_type index_ele_type
 

Public Member Functions

base_tto_base ()
 
const base_tto_base () const
 
 operator base_t ()
 
 operator base_t () const
 
vc_simd_typeoperator= (const value_type &rhs)
 
vc_simd_typeoperator= (const value_type &&rhs)
 
vc_simd_typeoperator= (const base_t &ini)
 
vc_simd_typeoperator= (const base_t &&ini)
 
vc_simd_typeoperator= (const vc_simd_type &ini)=default
 
vc_simd_typeoperator= (vc_simd_type &&ini)=default
 
 vc_simd_type (const value_type &ini)
 
 vc_simd_type (const value_type &&ini)
 
 vc_simd_type (const base_t &ini)
 
 vc_simd_type (const base_t &&ini)
 
 vc_simd_type ()=default
 
 vc_simd_type (const vc_simd_type &)=default
 
 vc_simd_type (vc_simd_type &&)=default
 
template<typename U >
 vc_simd_type (const vc_simd_type< U, vsize > &ini)
 
template<typename U >
 vc_simd_type (const vc_simd_type< U, vsize > &&ini)
 
template<typename U >
vc_simd_typeoperator= (const vc_simd_type< U, vsize > &ini)
 
template<typename U >
vc_simd_typeoperator= (const vc_simd_type< U, vsize > &&ini)
 
vc_simd_typeoperator= (const simd_type< unsigned char, vsize > &rhs)
 
vc_simd_typeoperator= (const simd_type< unsigned char, vsize > &&rhs)
 
 vc_simd_type (const simd_type< unsigned char, vsize > &ini)
 
 vc_simd_type (const simd_type< unsigned char, vsize > &&ini)
 
void gather (const value_type *const p_src, const index_type &indexes)
 
void scatter (value_type *const p_trg, const index_type &indexes) const
 
template<typename _index_type >
void gather (const value_type *const p_src, const _index_type &_indexes)
 
template<typename _index_type >
void scatter (value_type *const p_trg, const _index_type &_indexes) const
 
template<typename index_type >
 vc_simd_type (const value_type *const p_src, const index_type &indexes)
 
void rgather (const value_type *const p_src, const index_ele_type &step)
 
void rscatter (value_type *p_trg, const index_ele_type &step) const
 
 COMPARE_FUNC (<, operator<)
 
 COMPARE_FUNC (<=, operator<=)
 
 COMPARE_FUNC (>, operator>)
 
 COMPARE_FUNC (>=, operator>=)
 
 COMPARE_FUNC (==, operator==)
 
 COMPARE_FUNC (!=, operator!=)
 
masked_type operator() (const mask_type &mask)
 
value_type sum () const
 

Static Public Member Functions

static constexpr size_type size ()
 
static const vc_simd_type iota ()
 
static const index_type IndexesFrom (const index_ele_type &start, const index_ele_type &step)
 
static const index_type IndexesFrom (const index_ele_type &step)
 

Static Public Attributes

static const size_type vsize = _vsize
 
static const int ivsize = _vsize
 

Friends

std::ostream & operator<< (std::ostream &osr, vc_simd_type it)
 
std::istream & operator>> (std::istream &isr, vc_simd_type it)
 
vc_simd_type tan (const vc_simd_type &arg)
 
vc_simd_type pow (const vc_simd_type &base, const vc_simd_type &exponent)
 

Detailed Description

template<typename _value_type, std::size_t _vsize>
struct vspline::vc_simd_type< _value_type, _vsize >

class template vc_simd_type provides a fixed-size SIMD type. This implementation of vspline::vc_simd_type uses Vc::SimdArray The 'acrobatics' may seem futile - why inherit privately from Vc::SimdArray, then code a class template which does essentially the same? There are several reasons: first, the wrapper class results in a common interface shared with the other SIMD implementations, second, there are some added members which can't be 'put into' Vc::SimdArray from the outside. And, third, the template signature is uniform, avoiding Vc::SimdArray's two additional template arguments.

Definition at line 75 of file vc_simd_type.h.

Member Typedef Documentation

◆ base_t

template<typename _value_type , std::size_t _vsize>
typedef Vc::SimdArray< _value_type , _vsize > vspline::vc_simd_type< _value_type, _vsize >::base_t

Definition at line 78 of file vc_simd_type.h.

◆ index_ele_type

template<typename _value_type , std::size_t _vsize>
typedef index_type::value_type vspline::vc_simd_type< _value_type, _vsize >::index_ele_type

Definition at line 127 of file vc_simd_type.h.

◆ size_type

template<typename _value_type , std::size_t _vsize>
typedef std::size_t vspline::vc_simd_type< _value_type, _vsize >::size_type

Definition at line 104 of file vc_simd_type.h.

◆ value_type

template<typename _value_type , std::size_t _vsize>
typedef _value_type vspline::vc_simd_type< _value_type, _vsize >::value_type

Definition at line 105 of file vc_simd_type.h.

Constructor & Destructor Documentation

◆ vc_simd_type() [1/12]

template<typename _value_type , std::size_t _vsize>
vspline::vc_simd_type< _value_type, _vsize >::vc_simd_type ( const value_type ini)
inline

Definition at line 163 of file vc_simd_type.h.

◆ vc_simd_type() [2/12]

template<typename _value_type , std::size_t _vsize>
vspline::vc_simd_type< _value_type, _vsize >::vc_simd_type ( const value_type &&  ini)
inline

Definition at line 166 of file vc_simd_type.h.

◆ vc_simd_type() [3/12]

template<typename _value_type , std::size_t _vsize>
vspline::vc_simd_type< _value_type, _vsize >::vc_simd_type ( const base_t ini)
inline

Definition at line 170 of file vc_simd_type.h.

◆ vc_simd_type() [4/12]

template<typename _value_type , std::size_t _vsize>
vspline::vc_simd_type< _value_type, _vsize >::vc_simd_type ( const base_t &&  ini)
inline

Definition at line 174 of file vc_simd_type.h.

◆ vc_simd_type() [5/12]

template<typename _value_type , std::size_t _vsize>
vspline::vc_simd_type< _value_type, _vsize >::vc_simd_type ( )
default

◆ vc_simd_type() [6/12]

template<typename _value_type , std::size_t _vsize>
vspline::vc_simd_type< _value_type, _vsize >::vc_simd_type ( const vc_simd_type< _value_type, _vsize > &  )
default

◆ vc_simd_type() [7/12]

template<typename _value_type , std::size_t _vsize>
vspline::vc_simd_type< _value_type, _vsize >::vc_simd_type ( vc_simd_type< _value_type, _vsize > &&  )
default

◆ vc_simd_type() [8/12]

template<typename _value_type , std::size_t _vsize>
template<typename U >
vspline::vc_simd_type< _value_type, _vsize >::vc_simd_type ( const vc_simd_type< U, vsize > &  ini)
inline

Definition at line 188 of file vc_simd_type.h.

◆ vc_simd_type() [9/12]

template<typename _value_type , std::size_t _vsize>
template<typename U >
vspline::vc_simd_type< _value_type, _vsize >::vc_simd_type ( const vc_simd_type< U, vsize > &&  ini)
inline

Definition at line 192 of file vc_simd_type.h.

◆ vc_simd_type() [10/12]

template<typename _value_type , std::size_t _vsize>
vspline::vc_simd_type< _value_type, _vsize >::vc_simd_type ( const simd_type< unsigned char, vsize > &  ini)
inline

Definition at line 230 of file vc_simd_type.h.

◆ vc_simd_type() [11/12]

template<typename _value_type , std::size_t _vsize>
vspline::vc_simd_type< _value_type, _vsize >::vc_simd_type ( const simd_type< unsigned char, vsize > &&  ini)
inline

Definition at line 235 of file vc_simd_type.h.

◆ vc_simd_type() [12/12]

template<typename _value_type , std::size_t _vsize>
template<typename index_type >
vspline::vc_simd_type< _value_type, _vsize >::vc_simd_type ( const value_type *const  p_src,
const index_type &  indexes 
)
inline

Definition at line 364 of file vc_simd_type.h.

Member Function Documentation

◆ COMPARE_FUNC() [1/6]

template<typename _value_type , std::size_t _vsize>
vspline::vc_simd_type< _value_type, _vsize >::COMPARE_FUNC ( ,
operator!   
)

◆ COMPARE_FUNC() [2/6]

template<typename _value_type , std::size_t _vsize>
vspline::vc_simd_type< _value_type, _vsize >::COMPARE_FUNC ( )

◆ COMPARE_FUNC() [3/6]

template<typename _value_type , std::size_t _vsize>
vspline::vc_simd_type< _value_type, _vsize >::COMPARE_FUNC ( <=  ,
operator<=   
)

◆ COMPARE_FUNC() [4/6]

template<typename _value_type , std::size_t _vsize>
vspline::vc_simd_type< _value_type, _vsize >::COMPARE_FUNC ( operator  = =)

◆ COMPARE_FUNC() [5/6]

template<typename _value_type , std::size_t _vsize>
vspline::vc_simd_type< _value_type, _vsize >::COMPARE_FUNC ( operator  )

◆ COMPARE_FUNC() [6/6]

template<typename _value_type , std::size_t _vsize>
vspline::vc_simd_type< _value_type, _vsize >::COMPARE_FUNC ( >=  ,
operator>=   
)

◆ gather() [1/2]

template<typename _value_type , std::size_t _vsize>
template<typename _index_type >
void vspline::vc_simd_type< _value_type, _vsize >::gather ( const value_type *const  p_src,
const _index_type &  _indexes 
)
inline

Definition at line 348 of file vc_simd_type.h.

◆ gather() [2/2]

template<typename _value_type , std::size_t _vsize>
void vspline::vc_simd_type< _value_type, _vsize >::gather ( const value_type *const  p_src,
const index_type &  indexes 
)
inline

Definition at line 335 of file vc_simd_type.h.

◆ IndexesFrom() [1/2]

template<typename _value_type , std::size_t _vsize>
static const index_type vspline::vc_simd_type< _value_type, _vsize >::IndexesFrom ( const index_ele_type start,
const index_ele_type step 
)
inlinestatic

Definition at line 294 of file vc_simd_type.h.

◆ IndexesFrom() [2/2]

template<typename _value_type , std::size_t _vsize>
static const index_type vspline::vc_simd_type< _value_type, _vsize >::IndexesFrom ( const index_ele_type step)
inlinestatic

Definition at line 302 of file vc_simd_type.h.

◆ iota()

template<typename _value_type , std::size_t _vsize>
static const vc_simd_type vspline::vc_simd_type< _value_type, _vsize >::iota ( )
inlinestatic

Definition at line 286 of file vc_simd_type.h.

◆ operator base_t() [1/2]

template<typename _value_type , std::size_t _vsize>
vspline::vc_simd_type< _value_type, _vsize >::operator base_t ( )
inline

Definition at line 94 of file vc_simd_type.h.

◆ operator base_t() [2/2]

template<typename _value_type , std::size_t _vsize>
vspline::vc_simd_type< _value_type, _vsize >::operator base_t ( ) const
inline

Definition at line 99 of file vc_simd_type.h.

◆ operator()()

template<typename _value_type , std::size_t _vsize>
masked_type vspline::vc_simd_type< _value_type, _vsize >::operator() ( const mask_type &  mask)
inline

Definition at line 696 of file vc_simd_type.h.

◆ operator=() [1/10]

template<typename _value_type , std::size_t _vsize>
vc_simd_type & vspline::vc_simd_type< _value_type, _vsize >::operator= ( const base_t &&  ini)
inline

Definition at line 151 of file vc_simd_type.h.

◆ operator=() [2/10]

template<typename _value_type , std::size_t _vsize>
vc_simd_type & vspline::vc_simd_type< _value_type, _vsize >::operator= ( const base_t ini)
inline

Definition at line 146 of file vc_simd_type.h.

◆ operator=() [3/10]

template<typename _value_type , std::size_t _vsize>
vc_simd_type & vspline::vc_simd_type< _value_type, _vsize >::operator= ( const simd_type< unsigned char, vsize > &&  rhs)
inline

Definition at line 221 of file vc_simd_type.h.

◆ operator=() [4/10]

template<typename _value_type , std::size_t _vsize>
vc_simd_type & vspline::vc_simd_type< _value_type, _vsize >::operator= ( const simd_type< unsigned char, vsize > &  rhs)
inline

Definition at line 212 of file vc_simd_type.h.

◆ operator=() [5/10]

template<typename _value_type , std::size_t _vsize>
vc_simd_type & vspline::vc_simd_type< _value_type, _vsize >::operator= ( const value_type &&  rhs)
inline

Definition at line 140 of file vc_simd_type.h.

◆ operator=() [6/10]

template<typename _value_type , std::size_t _vsize>
vc_simd_type & vspline::vc_simd_type< _value_type, _vsize >::operator= ( const value_type rhs)
inline

Definition at line 135 of file vc_simd_type.h.

◆ operator=() [7/10]

template<typename _value_type , std::size_t _vsize>
vc_simd_type & vspline::vc_simd_type< _value_type, _vsize >::operator= ( const vc_simd_type< _value_type, _vsize > &  ini)
default

◆ operator=() [8/10]

template<typename _value_type , std::size_t _vsize>
template<typename U >
vc_simd_type & vspline::vc_simd_type< _value_type, _vsize >::operator= ( const vc_simd_type< U, vsize > &&  ini)
inline

Definition at line 204 of file vc_simd_type.h.

◆ operator=() [9/10]

template<typename _value_type , std::size_t _vsize>
template<typename U >
vc_simd_type & vspline::vc_simd_type< _value_type, _vsize >::operator= ( const vc_simd_type< U, vsize > &  ini)
inline

Definition at line 197 of file vc_simd_type.h.

◆ operator=() [10/10]

template<typename _value_type , std::size_t _vsize>
vc_simd_type & vspline::vc_simd_type< _value_type, _vsize >::operator= ( vc_simd_type< _value_type, _vsize > &&  ini)
default

◆ rgather()

template<typename _value_type , std::size_t _vsize>
void vspline::vc_simd_type< _value_type, _vsize >::rgather ( const value_type *const  p_src,
const index_ele_type step 
)
inline

Definition at line 375 of file vc_simd_type.h.

◆ rscatter()

template<typename _value_type , std::size_t _vsize>
void vspline::vc_simd_type< _value_type, _vsize >::rscatter ( value_type p_trg,
const index_ele_type step 
) const
inline

Definition at line 381 of file vc_simd_type.h.

◆ scatter() [1/2]

template<typename _value_type , std::size_t _vsize>
template<typename _index_type >
void vspline::vc_simd_type< _value_type, _vsize >::scatter ( value_type *const  p_trg,
const _index_type &  _indexes 
) const
inline

Definition at line 355 of file vc_simd_type.h.

◆ scatter() [2/2]

template<typename _value_type , std::size_t _vsize>
void vspline::vc_simd_type< _value_type, _vsize >::scatter ( value_type *const  p_trg,
const index_type &  indexes 
) const
inline

Definition at line 341 of file vc_simd_type.h.

◆ size()

template<typename _value_type , std::size_t _vsize>
static constexpr size_type vspline::vc_simd_type< _value_type, _vsize >::size ( )
inlinestaticconstexpr

Definition at line 111 of file vc_simd_type.h.

◆ sum()

template<typename _value_type , std::size_t _vsize>
value_type vspline::vc_simd_type< _value_type, _vsize >::sum ( ) const
inline

Definition at line 726 of file vc_simd_type.h.

◆ to_base() [1/2]

template<typename _value_type , std::size_t _vsize>
base_t & vspline::vc_simd_type< _value_type, _vsize >::to_base ( )
inline

Definition at line 82 of file vc_simd_type.h.

◆ to_base() [2/2]

template<typename _value_type , std::size_t _vsize>
const base_t & vspline::vc_simd_type< _value_type, _vsize >::to_base ( ) const
inline

Definition at line 87 of file vc_simd_type.h.

Friends And Related Function Documentation

◆ operator<<

template<typename _value_type , std::size_t _vsize>
std::ostream & operator<< ( std::ostream &  osr,
vc_simd_type< _value_type, _vsize >  it 
)
friend

Definition at line 309 of file vc_simd_type.h.

◆ operator>>

template<typename _value_type , std::size_t _vsize>
std::istream & operator>> ( std::istream &  isr,
vc_simd_type< _value_type, _vsize >  it 
)
friend

Definition at line 316 of file vc_simd_type.h.

◆ pow

template<typename _value_type , std::size_t _vsize>
vc_simd_type pow ( const vc_simd_type< _value_type, _vsize > &  base,
const vc_simd_type< _value_type, _vsize > &  exponent 
)
friend

Definition at line 440 of file vc_simd_type.h.

◆ tan

template<typename _value_type , std::size_t _vsize>
vc_simd_type tan ( const vc_simd_type< _value_type, _vsize > &  arg)
friend

Definition at line 418 of file vc_simd_type.h.

Member Data Documentation

◆ ivsize

template<typename _value_type , std::size_t _vsize>
const int vspline::vc_simd_type< _value_type, _vsize >::ivsize = _vsize
static

Definition at line 107 of file vc_simd_type.h.

◆ vsize

template<typename _value_type , std::size_t _vsize>
const size_type vspline::vc_simd_type< _value_type, _vsize >::vsize = _vsize
static

Definition at line 106 of file vc_simd_type.h.


The documentation for this struct was generated from the following file: