|
dune-common 2.8.0
|
Loading...
Searching...
No Matches
Dune::Simd::VcImpl::Proxy< V > Class Template Reference
A reference-like proxy for elements of random-access vectors. More...
#include <dune/common/simd/vc.hh>
Public Types | |
| using | value_type = typename V::value_type |
Public Member Functions | |
| Proxy (std::size_t idx, V &vec) | |
| Proxy (const Proxy &)=delete | |
| Proxy (Proxy &&)=default | |
| operator value_type () const | |
| DUNE_SIMD_VC_ASSIGNMENT (=) | |
| DUNE_SIMD_VC_ASSIGNMENT * | DUNE_SIMD_VC_ASSIGNMENT (/=);DUNE_SIMD_VC_ASSIGNMENT(%= |
| DUNE_SIMD_VC_ASSIGNMENT (+=) | |
| DUNE_SIMD_VC_ASSIGNMENT (-=) | |
| DUNE_SIMD_VC_ASSIGNMENT (<<=) | |
| DUNE_SIMD_VC_ASSIGNMENT (> >=) | |
| DUNE_SIMD_VC_ASSIGNMENT & | DUNE_SIMD_VC_ASSIGNMENT (^=);DUNE_SIMD_VC_ASSIGNMENT(|= |
| template<class T = value_type, class = std::enable_if_t<!std::is_same<T, bool>::value>> | |
| Proxy | operator++ () |
| template<class T = value_type, class = std::enable_if_t<!std::is_same<T, bool>::value>> | |
| Proxy | operator-- () |
| template<class T = value_type, class = std::enable_if_t<!std::is_same<T, bool>::value>> | |
| value_type | operator++ (int) |
| template<class T = value_type, class = std::enable_if_t<!std::is_same<T, bool>::value>> | |
| value_type | operator-- (int) |
| DUNE_SIMD_VC_BINARY * | DUNE_SIMD_VC_BINARY (/);DUNE_SIMD_VC_BINARY(% |
| DUNE_SIMD_VC_BINARY (+) | |
| DUNE_SIMD_VC_BINARY (-) | |
| DUNE_SIMD_VC_BINARY (<<) | |
| DUNE_SIMD_VC_BINARY (> >) | |
| DUNE_SIMD_VC_BINARY & | DUNE_SIMD_VC_BINARY (^);DUNE_SIMD_VC_BINARY(| |
| DUNE_SIMD_VC_BINARY (<) | |
| DUNE_SIMD_VC_BINARY (>) | |
| DUNE_SIMD_VC_BINARY (<=) | |
| DUNE_SIMD_VC_BINARY (>=) | |
| DUNE_SIMD_VC_BINARY (==) | |
| DUNE_SIMD_VC_BINARY (!=) | |
| template<class T , class Abi , class = std::enable_if_t<std::is_convertible<value_type, T>::value>> | |
| operator Vc::Vector< T, Abi > () && | |
| template<class T , std::size_t n, class Vec , std::size_t m, class = std::enable_if_t<std::is_convertible<value_type, T>::value>> | |
| operator Vc::SimdArray< T, n, Vec, m > () && | |
| DUNE_SIMD_VC_ASSIGN * | DUNE_SIMD_VC_ASSIGN (/=);DUNE_SIMD_VC_ASSIGN(%= |
| DUNE_SIMD_VC_ASSIGN (+=) | |
| DUNE_SIMD_VC_ASSIGN (-=) | |
| DUNE_SIMD_VC_ASSIGN & | DUNE_SIMD_VC_ASSIGN (^=);DUNE_SIMD_VC_ASSIGN(|= |
| DUNE_SIMD_VC_ASSIGN (<<=) | |
| DUNE_SIMD_VC_ASSIGN (> >=) | |
Detailed Description
template<class V>
class Dune::Simd::VcImpl::Proxy< V >
class Dune::Simd::VcImpl::Proxy< V >
A reference-like proxy for elements of random-access vectors.
This is necessary because Vc's lane-access operation return a proxy that cannot constructed by non-Vc code (i.e. code that isn't explicitly declared friend). This means in particular that there is no copy/move constructor, meaning we cannot return such proxies from our own functions, such as lane(). To work around this, we define our own proxy class which internally holds a reference to the vector and a lane index.
Note: this should be unnecessary with C++17, as just returning a temporary object should not involve copying it.
Member Typedef Documentation
◆ value_type
template<class V >
| using Dune::Simd::VcImpl::Proxy< V >::value_type = typename V::value_type |
Constructor & Destructor Documentation
◆ Proxy() [1/3]
template<class V >
|
inline |
◆ Proxy() [2/3]
template<class V >
|
delete |
◆ Proxy() [3/3]
template<class V >
|
default |
Member Function Documentation
◆ DUNE_SIMD_VC_ASSIGN() [1/6]
template<class V >
| Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGN | ( | + | ) |
◆ DUNE_SIMD_VC_ASSIGN() [2/6]
template<class V >
| Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGN | ( | - | ) |
◆ DUNE_SIMD_VC_ASSIGN() [3/6]
template<class V >
| DUNE_SIMD_VC_ASSIGN * Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGN | ( | / | ) |
◆ DUNE_SIMD_VC_ASSIGN() [4/6]
template<class V >
| Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGN | ( | << | ) |
◆ DUNE_SIMD_VC_ASSIGN() [5/6]
template<class V >
| Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGN | ( | >= | ) |
◆ DUNE_SIMD_VC_ASSIGN() [6/6]
template<class V >
| DUNE_SIMD_VC_ASSIGN & Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGN | ( | ^ | ) |
◆ DUNE_SIMD_VC_ASSIGNMENT() [1/7]
template<class V >
| Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGNMENT | ( | + | ) |
◆ DUNE_SIMD_VC_ASSIGNMENT() [2/7]
template<class V >
| Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGNMENT | ( | - | ) |
◆ DUNE_SIMD_VC_ASSIGNMENT() [3/7]
template<class V >
| DUNE_SIMD_VC_ASSIGNMENT * Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGNMENT | ( | / | ) |
◆ DUNE_SIMD_VC_ASSIGNMENT() [4/7]
template<class V >
| Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGNMENT | ( | << | ) |
◆ DUNE_SIMD_VC_ASSIGNMENT() [5/7]
template<class V >
| Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGNMENT | ( | ) |
◆ DUNE_SIMD_VC_ASSIGNMENT() [6/7]
template<class V >
| Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGNMENT | ( | >= | ) |
◆ DUNE_SIMD_VC_ASSIGNMENT() [7/7]
template<class V >
| DUNE_SIMD_VC_ASSIGNMENT & Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_ASSIGNMENT | ( | ^ | ) |
◆ DUNE_SIMD_VC_BINARY() [1/12]
template<class V >
| Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( | ! | ) |
◆ DUNE_SIMD_VC_BINARY() [2/12]
template<class V >
| Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( | + | ) |
◆ DUNE_SIMD_VC_BINARY() [3/12]
template<class V >
| Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( | - | ) |
◆ DUNE_SIMD_VC_BINARY() [4/12]
template<class V >
| DUNE_SIMD_VC_BINARY * Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( | / | ) |
◆ DUNE_SIMD_VC_BINARY() [5/12]
template<class V >
| Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( | ) |
◆ DUNE_SIMD_VC_BINARY() [6/12]
template<class V >
| Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( | << | ) |
◆ DUNE_SIMD_VC_BINARY() [7/12]
template<class V >
| Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( | <= | ) |
◆ DUNE_SIMD_VC_BINARY() [8/12]
template<class V >
| Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( | ) |
◆ DUNE_SIMD_VC_BINARY() [9/12]
template<class V >
| Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( | ) |
◆ DUNE_SIMD_VC_BINARY() [10/12]
template<class V >
| Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( | ) |
◆ DUNE_SIMD_VC_BINARY() [11/12]
template<class V >
| Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( | >= | ) |
◆ DUNE_SIMD_VC_BINARY() [12/12]
template<class V >
| DUNE_SIMD_VC_BINARY & Dune::Simd::VcImpl::Proxy< V >::DUNE_SIMD_VC_BINARY | ( | ^ | ) |
◆ operator value_type()
template<class V >
|
inline |
◆ operator Vc::SimdArray< T, n, Vec, m >()
template<class V >
template<class T , std::size_t n, class Vec , std::size_t m, class = std::enable_if_t<std::is_convertible<value_type, T>::value>>
|
inline |
◆ operator Vc::Vector< T, Abi >()
template<class V >
template<class T , class Abi , class = std::enable_if_t<std::is_convertible<value_type, T>::value>>
|
inline |
◆ operator++() [1/2]
template<class V >
template<class T = value_type, class = std::enable_if_t<!std::is_same<T, bool>::value>>
|
inline |
◆ operator++() [2/2]
template<class V >
template<class T = value_type, class = std::enable_if_t<!std::is_same<T, bool>::value>>
|
inline |
◆ operator--() [1/2]
template<class V >
template<class T = value_type, class = std::enable_if_t<!std::is_same<T, bool>::value>>
|
inline |
◆ operator--() [2/2]
template<class V >
template<class T = value_type, class = std::enable_if_t<!std::is_same<T, bool>::value>>
|
inline |
The documentation for this class was generated from the following file:
Legal Statements / Impressum | Hosted by TU Dresden & Uni Heidelberg | Generated by
1.9.8