Namespace for the overloads and specializations that make up a SIMD implementation.
More...
|
template<class T , std::size_t align> |
T & | lane (ADLTag< 5 >, std::size_t l, AlignedNumber< T, align > &v) |
|
template<class T , std::size_t align> |
T | lane (ADLTag< 5 >, std::size_t l, const AlignedNumber< T, align > &v) |
|
template<class T , std::size_t align> |
const AlignedNumber< T, align > & | cond (ADLTag< 5 >, AlignedNumber< bool, align > mask, const AlignedNumber< T, align > &ifTrue, const AlignedNumber< T, align > &ifFalse) |
|
template<std::size_t align> |
bool | anyTrue (ADLTag< 5 >, const AlignedNumber< bool, align > &mask) |
|
template<class T , std::size_t S> |
T && | lane (ADLTag< 5 >, std::size_t l, LoopSIMD< T, S > &&v) |
|
template<class T , std::size_t S> |
const T & | lane (ADLTag< 5 >, std::size_t l, const LoopSIMD< T, S > &v) |
|
template<class T , std::size_t S> |
T & | lane (ADLTag< 5 >, std::size_t l, LoopSIMD< T, S > &v) |
|
template<class T , std::size_t S> |
auto | cond (ADLTag< 5 >, LoopSIMD< bool, S > mask, LoopSIMD< T, S > ifTrue, LoopSIMD< T, S > ifFalse) |
|
template<class M , class T > |
auto | cond (ADLTag< 5, std::is_same< bool, Scalar< M > >::value >, M mask, LoopSIMD< T, Simd::lanes< M >()> ifTrue, LoopSIMD< T, Simd::lanes< M >()> ifFalse) |
|
template<std::size_t S> |
bool | anyTrue (ADLTag< 5 >, LoopSIMD< bool, S > mask) |
|
template<std::size_t S> |
bool | allTrue (ADLTag< 5 >, LoopSIMD< bool, S > mask) |
|
template<std::size_t S> |
bool | anyFalse (ADLTag< 5 >, LoopSIMD< bool, S > mask) |
|
template<std::size_t S> |
bool | allFalse (ADLTag< 5 >, LoopSIMD< bool, S > mask) |
|
|
template<class V > |
V | lane (ADLTag< 2 >, std::size_t l, V v) |
| implements Simd::lane() More...
|
|
template<class V > |
V & | lane (ADLTag< 3 >, std::size_t l, V &v) |
|
bool | anyTrue (ADLTag< 2 >, bool mask) |
| implements Simd::anyTrue() More...
|
|
bool | allTrue (ADLTag< 2 >, bool mask) |
| implements Simd::allTrue() More...
|
|
bool | anyFalse (ADLTag< 2 >, bool mask) |
| implements Simd::anyFalse() More...
|
|
bool | allFalse (ADLTag< 2 >, bool mask) |
| implements Simd::allFalse() More...
|
|
template<class V > |
VcImpl::Proxy< V > | lane (ADLTag< 5, VcImpl::IsVector< V >::value >, std::size_t l, V &v) |
| implements Simd::lane() More...
|
|
template<class V > |
Scalar< V > | lane (ADLTag< 5, VcImpl::IsVector< V >::value >, std::size_t l, const V &v) |
| implements Simd::lane() More...
|
|
template<class V , class = std::enable_if_t<!std::is_reference<V>::value>> |
Scalar< V > | lane (ADLTag< 5, VcImpl::IsVector< V >::value >, std::size_t l, V &&v) |
| implements Simd::lane() More...
|
|
template<class V > |
V | cond (ADLTag< 5, VcImpl::IsVector< V >::value &&!VcImpl::IsMask< V >::value >, const Mask< V > &mask, const V &ifTrue, const V &ifFalse) |
| implements Simd::cond() More...
|
|
template<class V > |
V | cond (ADLTag< 5, VcImpl::IsMask< V >::value >, const V &mask, const V &ifTrue, const V &ifFalse) |
| implements Simd::cond() More...
|
|
template<class V > |
auto | max (ADLTag< 5, VcImpl::IsVector< V >::value &&!VcImpl::IsMask< V >::value >, const V &v1, const V &v2) |
| implements binary Simd::max() More...
|
|
template<class M > |
auto | max (ADLTag< 5, VcImpl::IsMask< M >::value >, const M &m1, const M &m2) |
| implements binary Simd::max() More...
|
|
template<class V > |
auto | min (ADLTag< 5, VcImpl::IsVector< V >::value &&!VcImpl::IsMask< V >::value >, const V &v1, const V &v2) |
| implements binary Simd::min() More...
|
|
template<class M > |
auto | min (ADLTag< 5, VcImpl::IsMask< M >::value >, const M &m1, const M &m2) |
| implements binary Simd::min() More...
|
|
template<class M > |
bool | anyTrue (ADLTag< 5, VcImpl::IsMask< M >::value >, const M &mask) |
| implements Simd::anyTrue() More...
|
|
template<class M > |
bool | allTrue (ADLTag< 5, VcImpl::IsMask< M >::value >, const M &mask) |
| implements Simd::allTrue() More...
|
|
template<class M > |
bool | allFalse (ADLTag< 5, VcImpl::IsMask< M >::value >, const M &mask) |
| implements Simd::allFalse() More...
|
|
template<class V > |
auto | max (ADLTag< 5, VcImpl::IsVector< V >::value &&!VcImpl::IsMask< V >::value >, const V &v) |
| implements Simd::maxValue() More...
|
|
template<class M > |
bool | max (ADLTag< 5, VcImpl::IsMask< M >::value >, const M &mask) |
| implements Simd::maxValue() More...
|
|
template<class V > |
auto | min (ADLTag< 5, VcImpl::IsVector< V >::value &&!VcImpl::IsMask< V >::value >, const V &v) |
| implements Simd::minValue() More...
|
|
template<class M > |
bool | min (ADLTag< 5, VcImpl::IsMask< M >::value >, const M &mask) |
| implements Simd::minValue() More...
|
|
template<class S1 , class V2 > |
auto | maskAnd (ADLTag< 5, std::is_same< Mask< S1 >, bool >::value &&VcImpl::IsVector< V2 >::value >, const S1 &s1, const V2 &v2) |
| implements Simd::maskAnd() More...
|
|
template<class V1 , class S2 > |
auto | maskAnd (ADLTag< 5, VcImpl::IsVector< V1 >::value &&std::is_same< Mask< S2 >, bool >::value >, const V1 &v1, const S2 &s2) |
| implements Simd::maskAnd() More...
|
|
template<class S1 , class V2 > |
auto | maskOr (ADLTag< 5, std::is_same< Mask< S1 >, bool >::value &&VcImpl::IsVector< V2 >::value >, const S1 &s1, const V2 &v2) |
| implements Simd::maskOr() More...
|
|
template<class V1 , class S2 > |
auto | maskOr (ADLTag< 5, VcImpl::IsVector< V1 >::value &&std::is_same< Mask< S2 >, bool >::value >, const V1 &v1, const S2 &s2) |
| implements Simd::maskOr() More...
|
|
Namespace for the overloads and specializations that make up a SIMD implementation.
This namespace contains three sets of things: the struct ADLTag, which is used to look up functions in this namespace using argument-dependet lookup, traits classes that must be specialized by abstraction implementations, and functions that must/can be overloaded by abstraction implementations.
- Note
- Only introduce new names into this namespace to extend the interface. This applies in particular to people in the "abstraction developer" role; they may meddle in this namespace only by providing overloads and/or specializations for existing names (and for
ADLTag
even that is prohibited).