DPC++ Runtime
Runtime libraries for oneAPI DPC++
simd< _Tp, _Abi > Class Template Reference

#include <std/experimental/simd.hpp>

Public Types

using value_type = _Tp
 
using reference = __simd_reference< _Tp, _Tp, _Abi >
 
using mask_type = simd_mask< _Tp, _Abi >
 
using abi_type = _Abi
 
using raw_storage_type = typename __simd_storage< _Tp, _Abi >::_StorageType
 

Public Member Functions

 simd ()=default
 
 simd (const simd &)=default
 
simdoperator= (const simd &)=default
 
 operator raw_storage_type () const
 
 simd (const raw_storage_type &__raw_simd)
 
template<class _Up , class = typename std::enable_if< std::is_same<_Abi, simd_abi::fixed_size<size()>>::value && __is_non_narrowing_arithmetic_convertible<_Up, _Tp>()>::type>
 simd (const simd< _Up, simd_abi::fixed_size< size()>> &__v)
 
template<class _Up , class = typename std::enable_if<__can_broadcast<_Up>()>::type>
 simd (_Up &&__rv)
 
template<class _Generator , int = typename std::enable_if< __can_generate<_Generator>(std::make_index_sequence<size()>()), int>::type()>
 simd (_Generator &&__g)
 
template<class _Up , class _Flags , class = typename std::enable_if<__vectorizable<_Up>()>::type, class = typename std::enable_if<is_simd_flag_type<_Flags>::value>::type>
 simd (const _Up *__buffer, _Flags)
 
template<class _Up , class _Flags >
std::enable_if< __vectorizable< _Up >) &&is_simd_flag_type< _Flags >::value >::type copy_from (const _Up *__buffer, _Flags)
 
template<class _Up , class _Flags >
std::enable_if< __vectorizable< _Up >) &&is_simd_flag_type< _Flags >::value >::type copy_to (_Up *__buffer, _Flags) const
 
reference operator[] (size_t __i)
 
value_type operator[] (size_t __i) const
 
simdoperator++ ()
 
simd operator++ (int)
 
simdoperator-- ()
 
simd operator-- (int)
 
mask_type operator! () const
 
simd operator~ () const
 
simd operator+ () const
 
simd operator- () const
 

Static Public Member Functions

static constexpr size_t size () noexcept
 

Friends

simd operator+ (const simd &, const simd &)
 
simd operator- (const simd &, const simd &)
 
simd operator* (const simd &, const simd &)
 
simd operator/ (const simd &, const simd &)
 
simd operator% (const simd &, const simd &)
 
simd operator& (const simd &, const simd &)
 
simd operator| (const simd &, const simd &)
 
simd operator^ (const simd &, const simd &)
 
simd operator<< (const simd &, const simd &)
 
simd operator>> (const simd &, const simd &)
 
simd operator<< (const simd &, int)
 
simd operator>> (const simd &, int)
 
simdoperator+= (simd &, const simd &)
 
simdoperator-= (simd &, const simd &)
 
simdoperator*= (simd &, const simd &)
 
simdoperator/= (simd &, const simd &)
 
simdoperator%= (simd &, const simd &)
 
simdoperator&= (simd &, const simd &)
 
simdoperator|= (simd &, const simd &)
 
simdoperator^= (simd &, const simd &)
 
simdoperator<<= (simd &, const simd &)
 
simdoperator>>= (simd &, const simd &)
 
simdoperator<<= (simd &, int)
 
simdoperator>>= (simd &, int)
 
mask_type operator== (const simd &, const simd &)
 
mask_type operator!= (const simd &, const simd &)
 
mask_type operator>= (const simd &, const simd &)
 
mask_type operator<= (const simd &, const simd &)
 
mask_type operator> (const simd &, const simd &)
 

Detailed Description

template<class _Tp, class _Abi>
class simd< _Tp, _Abi >

Definition at line 1027 of file simd.hpp.

Member Typedef Documentation

◆ abi_type

template<class _Tp , class _Abi >
using simd< _Tp, _Abi >::abi_type = _Abi

Definition at line 1389 of file simd.hpp.

◆ mask_type

template<class _Tp , class _Abi >
using simd< _Tp, _Abi >::mask_type = simd_mask<_Tp, _Abi>

Definition at line 1388 of file simd.hpp.

◆ raw_storage_type

template<class _Tp , class _Abi >
using simd< _Tp, _Abi >::raw_storage_type = typename __simd_storage<_Tp, _Abi>::_StorageType

Definition at line 1408 of file simd.hpp.

◆ reference

template<class _Tp , class _Abi >
using simd< _Tp, _Abi >::reference = __simd_reference<_Tp, _Tp, _Abi>

Definition at line 1387 of file simd.hpp.

◆ value_type

template<class _Tp , class _Abi >
using simd< _Tp, _Abi >::value_type = _Tp

Definition at line 1386 of file simd.hpp.

Constructor & Destructor Documentation

◆ simd() [1/7]

template<class _Tp , class _Abi >
simd< _Tp, _Abi >::simd ( )
default

◆ simd() [2/7]

template<class _Tp , class _Abi >
simd< _Tp, _Abi >::simd ( const simd< _Tp, _Abi > &  )
default

◆ simd() [3/7]

template<class _Tp , class _Abi >
simd< _Tp, _Abi >::simd ( const raw_storage_type __raw_simd)
inline

Definition at line 1414 of file simd.hpp.

◆ simd() [4/7]

template<class _Tp , class _Abi >
template<class _Up , class = typename std::enable_if< std::is_same<_Abi, simd_abi::fixed_size<size()>>::value && __is_non_narrowing_arithmetic_convertible<_Up, _Tp>()>::type>
simd< _Tp, _Abi >::simd ( const simd< _Up, simd_abi::fixed_size< size()>> &  __v)
inline

Definition at line 1461 of file simd.hpp.

◆ simd() [5/7]

template<class _Tp , class _Abi >
template<class _Up , class = typename std::enable_if<__can_broadcast<_Up>()>::type>
simd< _Tp, _Abi >::simd ( _Up &&  __rv)
inline

Definition at line 1470 of file simd.hpp.

◆ simd() [6/7]

template<class _Tp , class _Abi >
template<class _Generator , int = typename std::enable_if< __can_generate<_Generator>(std::make_index_sequence<size()>()), int>::type()>
simd< _Tp, _Abi >::simd ( _Generator &&  __g)
inlineexplicit

Definition at line 1482 of file simd.hpp.

◆ simd() [7/7]

template<class _Tp , class _Abi >
template<class _Up , class _Flags , class = typename std::enable_if<__vectorizable<_Up>()>::type, class = typename std::enable_if<is_simd_flag_type<_Flags>::value>::type>
simd< _Tp, _Abi >::simd ( const _Up *  __buffer,
_Flags   
)
inline

Definition at line 1492 of file simd.hpp.

Member Function Documentation

◆ copy_from()

template<class _Tp , class _Abi >
template<class _Up , class _Flags >
std::enable_if<__vectorizable<_Up>) && is_simd_flag_type<_Flags>::value>::type simd< _Tp, _Abi >::copy_from ( const _Up *  __buffer,
_Flags   
)
inline

Definition at line 1503 of file simd.hpp.

◆ copy_to()

template<class _Tp , class _Abi >
template<class _Up , class _Flags >
std::enable_if<__vectorizable<_Up>) && is_simd_flag_type<_Flags>::value>::type simd< _Tp, _Abi >::copy_to ( _Up *  __buffer,
_Flags   
) const
inline

Definition at line 1511 of file simd.hpp.

◆ operator raw_storage_type()

template<class _Tp , class _Abi >
simd< _Tp, _Abi >::operator raw_storage_type ( ) const
inline

Definition at line 1411 of file simd.hpp.

◆ operator!()

template<class _Tp , class _Abi >
mask_type simd< _Tp, _Abi >::operator! ( ) const

◆ operator+()

template<class _Tp , class _Abi >
simd simd< _Tp, _Abi >::operator+ ( ) const

◆ operator++() [1/2]

template<class _Tp , class _Abi >
simd& simd< _Tp, _Abi >::operator++ ( )

◆ operator++() [2/2]

template<class _Tp , class _Abi >
simd simd< _Tp, _Abi >::operator++ ( int  )

◆ operator-()

template<class _Tp , class _Abi >
simd simd< _Tp, _Abi >::operator- ( ) const

◆ operator--() [1/2]

template<class _Tp , class _Abi >
simd& simd< _Tp, _Abi >::operator-- ( )

◆ operator--() [2/2]

template<class _Tp , class _Abi >
simd simd< _Tp, _Abi >::operator-- ( int  )

◆ operator=()

template<class _Tp , class _Abi >
simd& simd< _Tp, _Abi >::operator= ( const simd< _Tp, _Abi > &  )
default

◆ operator[]() [1/2]

template<class _Tp , class _Abi >
reference simd< _Tp, _Abi >::operator[] ( size_t  __i)
inline

Definition at line 1519 of file simd.hpp.

◆ operator[]() [2/2]

template<class _Tp , class _Abi >
value_type simd< _Tp, _Abi >::operator[] ( size_t  __i) const
inline

Definition at line 1521 of file simd.hpp.

◆ operator~()

template<class _Tp , class _Abi >
simd simd< _Tp, _Abi >::operator~ ( ) const

◆ size()

template<class _Tp , class _Abi >
static constexpr size_t simd< _Tp, _Abi >::size ( )
inlinestaticconstexprnoexcept

Definition at line 1395 of file simd.hpp.

Friends And Related Function Documentation

◆ operator!=

template<class _Tp , class _Abi >
mask_type operator!= ( const simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator%

template<class _Tp , class _Abi >
simd operator% ( const simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator%=

template<class _Tp , class _Abi >
simd& operator%= ( simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator&

template<class _Tp , class _Abi >
simd operator& ( const simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator&=

template<class _Tp , class _Abi >
simd& operator&= ( simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator*

template<class _Tp , class _Abi >
simd operator* ( const simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator*=

template<class _Tp , class _Abi >
simd& operator*= ( simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator+

template<class _Tp , class _Abi >
simd operator+ ( const simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator+=

template<class _Tp , class _Abi >
simd& operator+= ( simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator-

template<class _Tp , class _Abi >
simd operator- ( const simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator-=

template<class _Tp , class _Abi >
simd& operator-= ( simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator/

template<class _Tp , class _Abi >
simd operator/ ( const simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator/=

template<class _Tp , class _Abi >
simd& operator/= ( simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator<< [1/2]

template<class _Tp , class _Abi >
simd operator<< ( const simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator<< [2/2]

template<class _Tp , class _Abi >
simd operator<< ( const simd< _Tp, _Abi > &  ,
int   
)
friend

◆ operator<<= [1/2]

template<class _Tp , class _Abi >
simd& operator<<= ( simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator<<= [2/2]

template<class _Tp , class _Abi >
simd& operator<<= ( simd< _Tp, _Abi > &  ,
int   
)
friend

◆ operator<=

template<class _Tp , class _Abi >
mask_type operator<= ( const simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator==

template<class _Tp , class _Abi >
mask_type operator== ( const simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator>

template<class _Tp , class _Abi >
mask_type operator> ( const simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator>=

template<class _Tp , class _Abi >
mask_type operator>= ( const simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator>> [1/2]

template<class _Tp , class _Abi >
simd operator>> ( const simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator>> [2/2]

template<class _Tp , class _Abi >
simd operator>> ( const simd< _Tp, _Abi > &  ,
int   
)
friend

◆ operator>>= [1/2]

template<class _Tp , class _Abi >
simd& operator>>= ( simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator>>= [2/2]

template<class _Tp , class _Abi >
simd& operator>>= ( simd< _Tp, _Abi > &  ,
int   
)
friend

◆ operator^

template<class _Tp , class _Abi >
simd operator^ ( const simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator^=

template<class _Tp , class _Abi >
simd& operator^= ( simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator|

template<class _Tp , class _Abi >
simd operator| ( const simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

◆ operator|=

template<class _Tp , class _Abi >
simd& operator|= ( simd< _Tp, _Abi > &  ,
const simd< _Tp, _Abi > &   
)
friend

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