|
dune-common 2.12-git
|
Loading...
Searching...
No Matches
vc.hh File Reference
SIMD abstractions for Vc. More...
#include <Vc/Vc>#include <cstddef>#include <type_traits>#include <utility>#include <dune/common/indices.hh>#include <dune/common/simd/base.hh>#include <dune/common/simd/defaults.hh>#include <dune/common/simd/loop.hh>#include <dune/common/simd/valueproxy.hh>#include <dune/common/typetraits.hh>Go to the source code of this file.
Namespaces | |
| namespace | Dune |
| Dune namespace | |
| namespace | Dune::Simd |
| Namespace for vectorization interface functions used by library developers. | |
| namespace | Dune::Simd::VcImpl |
| namespace | Dune::Simd::Overloads |
| Namespace for the overloads and specializations that make up a SIMD implementation. | |
| namespace | Vc |
Macros | |
| #define | DUNE_SIMD_VC_BINARY(OP) |
| #define | DUNE_SIMD_VC_ASSIGN(OP) |
Typedefs | |
| template<class V > | |
| using | Dune::Simd::VcImpl::Proxy = Impl::ValueProxy< V, ProxyOperations > |
| A reference-like proxy for elements of Vc vectors and masks. | |
Functions | |
| template<class T , int N> | |
| fixed_size_simd< T, N > | Vc::max (const fixed_size_simd< T, N > &a, const fixed_size_simd< T, N > &b) |
Binary maximum of two Vc::fixed_size_simd, found by ADL. | |
| template<class T , int N> | |
| fixed_size_simd< T, N > | Vc::min (const fixed_size_simd< T, N > &a, const fixed_size_simd< T, N > &b) |
Binary minimum of two Vc::fixed_size_simd, found by ADL. | |
Specialized classes and overloaded functions | |
| template<class V > | |
| VcImpl::Proxy< V > | Dune::Simd::Overloads::lane (ADLTag< 5, VcImpl::IsVector< V >::value >, std::size_t l, V &v) |
| implements Simd::lane() | |
| template<class V > | |
| Scalar< V > | Dune::Simd::Overloads::lane (ADLTag< 5, VcImpl::IsVector< V >::value >, std::size_t l, const V &v) |
| implements Simd::lane() | |
| template<class V , class = std::enable_if_t<!std::is_reference<V>::value>> | |
| Scalar< V > | Dune::Simd::Overloads::lane (ADLTag< 5, VcImpl::IsVector< V >::value >, std::size_t l, V &&v) |
| implements Simd::lane() | |
| template<class V > | |
| V | Dune::Simd::Overloads::cond (ADLTag< 5, VcImpl::IsVector< V >::value &&!VcImpl::IsMask< V >::value >, const Mask< V > &mask, const V &ifTrue, const V &ifFalse) |
| implements Simd::cond() | |
| template<class V > | |
| V | Dune::Simd::Overloads::cond (ADLTag< 5, VcImpl::IsMask< V >::value >, const V &mask, const V &ifTrue, const V &ifFalse) |
| implements Simd::cond() | |
| template<class V > | |
| auto | Dune::Simd::Overloads::max (ADLTag< 5, VcImpl::IsVector< V >::value &&!VcImpl::IsMask< V >::value >, const V &v1, const V &v2) |
| implements binary Simd::max() | |
| template<class M > | |
| M | Dune::Simd::Overloads::max (ADLTag< 5, VcImpl::IsMask< M >::value >, const M &m1, const M &m2) |
| implements binary Simd::max() | |
| template<class V > | |
| auto | Dune::Simd::Overloads::min (ADLTag< 5, VcImpl::IsVector< V >::value &&!VcImpl::IsMask< V >::value >, const V &v1, const V &v2) |
| implements binary Simd::min() | |
| template<class M > | |
| M | Dune::Simd::Overloads::min (ADLTag< 5, VcImpl::IsMask< M >::value >, const M &m1, const M &m2) |
| implements binary Simd::min() | |
| template<class M > | |
| bool | Dune::Simd::Overloads::anyTrue (ADLTag< 5, VcImpl::IsMask< M >::value >, const M &mask) |
| implements Simd::anyTrue() | |
| template<class M > | |
| bool | Dune::Simd::Overloads::allTrue (ADLTag< 5, VcImpl::IsMask< M >::value >, const M &mask) |
| implements Simd::allTrue() | |
| template<class M > | |
| bool | Dune::Simd::Overloads::allFalse (ADLTag< 5, VcImpl::IsMask< M >::value >, const M &mask) |
| implements Simd::allFalse() | |
| template<class V > | |
| auto | Dune::Simd::Overloads::max (ADLTag< 5, VcImpl::IsVector< V >::value &&!VcImpl::IsMask< V >::value >, const V &v) |
| implements Simd::maxValue() | |
| template<class M > | |
| bool | Dune::Simd::Overloads::max (ADLTag< 5, VcImpl::IsMask< M >::value >, const M &mask) |
| implements Simd::maxValue() | |
| template<class V > | |
| auto | Dune::Simd::Overloads::min (ADLTag< 5, VcImpl::IsVector< V >::value &&!VcImpl::IsMask< V >::value >, const V &v) |
| implements Simd::minValue() | |
| template<class M > | |
| bool | Dune::Simd::Overloads::min (ADLTag< 5, VcImpl::IsMask< M >::value >, const M &mask) |
| implements Simd::minValue() | |
| template<class S1 , class V2 > | |
| auto | Dune::Simd::Overloads::maskAnd (ADLTag< 5, std::is_same< Mask< S1 >, bool >::value &&VcImpl::IsVector< V2 >::value >, const S1 &s1, const V2 &v2) |
| implements Simd::maskAnd() | |
| template<class V1 , class S2 > | |
| auto | Dune::Simd::Overloads::maskAnd (ADLTag< 5, VcImpl::IsVector< V1 >::value &&std::is_same< Mask< S2 >, bool >::value >, const V1 &v1, const S2 &s2) |
| implements Simd::maskAnd() | |
| template<class S1 , class V2 > | |
| auto | Dune::Simd::Overloads::maskOr (ADLTag< 5, std::is_same< Mask< S1 >, bool >::value &&VcImpl::IsVector< V2 >::value >, const S1 &s1, const V2 &v2) |
| implements Simd::maskOr() | |
| template<class V1 , class S2 > | |
| auto | Dune::Simd::Overloads::maskOr (ADLTag< 5, VcImpl::IsVector< V1 >::value &&std::is_same< Mask< S2 >, bool >::value >, const V1 &v1, const S2 &s2) |
| implements Simd::maskOr() | |
Detailed Description
SIMD abstractions for Vc.
Macro Definition Documentation
◆ DUNE_SIMD_VC_ASSIGN
| #define DUNE_SIMD_VC_ASSIGN | ( | OP | ) |
Value:
template<class T, class Abi> \
friend auto operator OP(Vc::Vector<T, Abi> &l, Proxy&& r) \
-> decltype(l OP std::declval<value_type>()) \
{ \
return l OP value_type(r); \
}
◆ DUNE_SIMD_VC_BINARY
| #define DUNE_SIMD_VC_BINARY | ( | OP | ) |
Value:
template<class T, class Abi> \
friend auto operator OP(const Vc::Vector<T, Abi> &l, Proxy&& r) \
-> decltype(l OP std::declval<value_type>()) \
{ \
return l OP value_type(r); \
} \
template<class T, class Abi> \
friend auto operator OP(Proxy&& l, const Vc::Vector<T, Abi> &r) \
-> decltype(std::declval<value_type>() OP r) \
{ \
return value_type(l) OP r; \
} \
template<class T, std::size_t n, class Vec, std::size_t m> \
friend auto \
operator OP(const Vc::SimdArray<T, n, Vec, m> &l, Proxy&& r) \
-> decltype(l OP std::declval<value_type>()) \
{ \
return l OP value_type(r); \
} \
template<class T, std::size_t n, class Vec, std::size_t m> \
friend auto \
operator OP(Proxy&& l, const Vc::SimdArray<T, n, Vec, m> &r) \
-> decltype(std::declval<value_type>() OP r) \
{ \
return value_type(l) OP r; \
}
Legal Statements / Impressum | Hosted by TU Dresden & Uni Heidelberg | Generated by
1.9.8