template<typename V, typename Parent, int Dimension, typename RowMemory>
class ROOT::Vc::MemoryBase< V, Parent, Dimension, RowMemory >
Common interface to all Memory classes, independent of allocation on the stack or heap.
- Parameters
-
V | The vector type you want to operate on. (e.g. float_v or uint_v) |
Parent | This type is the complete type of the class that derives from MemoryBase. |
Dimension | The number of dimensions the implementation provides. |
RowMemory | Class to be used to work on a single row. |
Definition at line 265 of file memorybase.h.
|
Vc_ALWAYS_INLINE Vc_PURE size_t | entriesCount () const |
|
Vc_ALWAYS_INLINE Vc_PURE size_t | vectorsCount () const |
|
Vc_ALWAYS_INLINE Vc_PURE
VectorPointerHelper< V,
AlignedFlag > | vector (size_t i) |
|
Vc_ALWAYS_INLINE Vc_PURE const
VectorPointerHelperConst< V,
AlignedFlag > | vector (size_t i) const |
| Const overload of the above function. More...
|
|
template<typename A > |
Vc_ALWAYS_INLINE Vc_PURE
VectorPointerHelper< V, A > | vectorAt (size_t i, A) |
|
template<typename A > |
Vc_ALWAYS_INLINE Vc_PURE const
VectorPointerHelperConst< V, A > | vectorAt (size_t i, A) const |
|
Vc_ALWAYS_INLINE Vc_PURE
VectorPointerHelper< V,
AlignedFlag > | vectorAt (size_t i) |
|
Vc_ALWAYS_INLINE Vc_PURE const
VectorPointerHelperConst< V,
AlignedFlag > | vectorAt (size_t i) const |
|
Vc_ALWAYS_INLINE Vc_PURE
VectorPointerHelper< V,
UnalignedFlag > | vector (size_t i, int shift) |
|
Vc_ALWAYS_INLINE Vc_PURE const
VectorPointerHelperConst< V,
UnalignedFlag > | vector (size_t i, int shift) const |
| Const overload of the above function. More...
|
|
Vc_ALWAYS_INLINE Vc_PURE
VectorPointerHelper< V,
AlignedFlag > | firstVector () |
|
Vc_ALWAYS_INLINE Vc_PURE const
VectorPointerHelperConst< V,
AlignedFlag > | firstVector () const |
| Const overload of the above function. More...
|
|
Vc_ALWAYS_INLINE Vc_PURE
VectorPointerHelper< V,
AlignedFlag > | lastVector () |
|
Vc_ALWAYS_INLINE Vc_PURE const
VectorPointerHelperConst< V,
AlignedFlag > | lastVector () const |
| Const overload of the above function. More...
|
|
Vc_ALWAYS_INLINE Vc_PURE V | gather (const unsigned char *indexes) const |
|
Vc_ALWAYS_INLINE Vc_PURE V | gather (const unsigned short *indexes) const |
|
Vc_ALWAYS_INLINE Vc_PURE V | gather (const unsigned int *indexes) const |
|
Vc_ALWAYS_INLINE Vc_PURE V | gather (const unsigned long *indexes) const |
|
Vc_ALWAYS_INLINE void | setZero () |
|
template<typename P2 , typename RM > |
Parent & | operator+= (const MemoryBase< V, P2, Dimension, RM > &rhs) |
|
template<typename P2 , typename RM > |
Parent & | operator-= (const MemoryBase< V, P2, Dimension, RM > &rhs) |
|
template<typename P2 , typename RM > |
Parent & | operator*= (const MemoryBase< V, P2, Dimension, RM > &rhs) |
|
template<typename P2 , typename RM > |
Parent & | operator/= (const MemoryBase< V, P2, Dimension, RM > &rhs) |
|
Parent & | operator+= (EntryType rhs) |
|
Parent & | operator-= (EntryType rhs) |
|
Parent & | operator*= (EntryType rhs) |
|
Parent & | operator/= (EntryType rhs) |
|
template<typename P2 , typename RM > |
bool | operator== (const MemoryBase< V, P2, Dimension, RM > &rhs) const |
|
template<typename P2 , typename RM > |
bool | operator!= (const MemoryBase< V, P2, Dimension, RM > &rhs) const |
|
template<typename P2 , typename RM > |
bool | operator< (const MemoryBase< V, P2, Dimension, RM > &rhs) const |
|
template<typename P2 , typename RM > |
bool | operator<= (const MemoryBase< V, P2, Dimension, RM > &rhs) const |
|
template<typename P2 , typename RM > |
bool | operator> (const MemoryBase< V, P2, Dimension, RM > &rhs) const |
|
template<typename P2 , typename RM > |
bool | operator>= (const MemoryBase< V, P2, Dimension, RM > &rhs) const |
|
template<typename V, typename Parent, int Dimension, typename RowMemory>
- Parameters
-
i | Selects the offset, where the vector should be read. |
- Returns
- a smart object to wrap the
i-th
vector in the memory.
The return value can be used as any other vector object. I.e. you can substitute something like
with
This function ensures that only aligned loads and stores are used. Thus it only allows to access memory at fixed strides. If access to known offsets from the aligned vectors is needed the vector(size_t, int) function can be used.
Definition at line 310 of file memorybase.h.
Referenced by ROOT::Vc::Internal::copyVectors(), ROOT::Vc::MemoryBase< V, Memory< V, 0u, 0u >, 1, void >::operator!=(), ROOT::Vc::MemoryBase< V, Memory< V, 0u, 0u >, 1, void >::operator*=(), ROOT::Vc::MemoryBase< V, Memory< V, 0u, 0u >, 1, void >::operator+=(), ROOT::Vc::MemoryBase< V, Memory< V, 0u, 0u >, 1, void >::operator-=(), ROOT::Vc::MemoryBase< V, Memory< V, 0u, 0u >, 1, void >::operator/=(), ROOT::Vc::MemoryBase< V, Memory< V, 0u, 0u >, 1, void >::operator==(), ROOT::Vc::MemoryBase< V, Memory< V, 0u, 0u >, 1, void >::operator>(), and ROOT::Vc::MemoryBase< V, Memory< V, 0u, 0u >, 1, void >::operator>=().
template<typename V, typename Parent, int Dimension, typename RowMemory>
- Returns
- the number of vector entries that span the array. This function is optimized away if a constant size array is used.
Definition at line 285 of file memorybase.h.
Referenced by ROOT::Vc::Internal::copyVectors(), ROOT::Vc::MemoryBase< V, Memory< V, 0u, 0u >, 1, void >::operator!=(), ROOT::Vc::MemoryBase< V, Memory< V, 0u, 0u >, 1, void >::operator*=(), ROOT::Vc::MemoryBase< V, Memory< V, 0u, 0u >, 1, void >::operator+=(), ROOT::Vc::MemoryBase< V, Memory< V, 0u, 0u >, 1, void >::operator-=(), ROOT::Vc::MemoryBase< V, Memory< V, 0u, 0u >, 1, void >::operator/=(), ROOT::Vc::Memory< V, Size *Size >::operator=(), ROOT::Vc::Memory< V, 0u, 0u >::operator=(), ROOT::Vc::MemoryBase< V, Memory< V, 0u, 0u >, 1, void >::operator==(), ROOT::Vc::MemoryBase< V, Memory< V, 0u, 0u >, 1, void >::operator>(), and ROOT::Vc::MemoryBase< V, Memory< V, 0u, 0u >, 1, void >::operator>=().