![]() |
Vc
0.7.4
SIMD Vector Classes for C++
|
|
A helper class for fixed-size two-dimensional arrays.
#include <Vc/Memory>
Inherits VectorAlignedBaseT< V >, and MemoryBase< V, Memory< V, Size1, Size2 >, 2, Memory< V, Size2 > >.
Public Member Functions | |
constexpr size_t | rowsCount () const |
constexpr size_t | entriesCount () const |
constexpr size_t | vectorsCount () const |
template<typename Parent , typename RM > | |
Memory & | operator= (const MemoryBase< V, Parent, 2, RM > &rhs) |
Copies the data from a different object. More... | |
Memory & | operator= (const V &v) |
Initialize all data with the given vector. More... | |
Vc_PURE VectorPointerHelper< V, AlignedFlag > | vector (size_t i) |
Vc_PURE const VectorPointerHelperConst< V, AlignedFlag > | vector (size_t i) const |
Const overload of the above function. More... | |
Vc_PURE VectorPointerHelper< V, UnalignedFlag > | vector (size_t i, int shift) |
Vc_PURE const VectorPointerHelperConst< V, UnalignedFlag > | vector (size_t i, int shift) const |
Const overload of the above function. | |
VectorPointerHelper< V, A > | vectorAt (size_t i, A align=Vc::Aligned) |
const VectorPointerHelperConst < V, A > | vectorAt (size_t i, A align=Vc::Aligned) const |
Const overload of the above function. More... | |
Vc_PURE VectorPointerHelper< V, AlignedFlag > | firstVector () |
Vc_PURE const VectorPointerHelperConst< V, AlignedFlag > | firstVector () const |
Const overload of the above function. | |
Vc_PURE VectorPointerHelper< V, AlignedFlag > | lastVector () |
Vc_PURE const VectorPointerHelperConst< V, AlignedFlag > | lastVector () const |
Const overload of the above function. | |
constexpr size_t rowsCount | ( | ) | const |
constexpr size_t entriesCount | ( | ) | const |
Size2
is not divisible by V::Size
.constexpr size_t vectorsCount | ( | ) | const |
Memory& operator= | ( | const MemoryBase< V, Parent, 2, RM > & | rhs | ) |
Copies the data from a different object.
rhs | The object to copy the data from. |
Memory& operator= | ( | const V & | v | ) |
Initialize all data with the given vector.
v | This vector will be used to initialize the memory. |
|
inherited |
i | Selects the offset, where the vector should be read. |
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.
|
inherited |
Const overload of the above function.
i | Selects the offset, where the vector should be read. |
i-th
vector in the memory.
|
inherited |
i-th
vector + shift
in the memory.This function ensures that only unaligned loads and stores are used. It allows to access memory at any location aligned to the entry type.
i | Selects the memory location of the i-th vector. Thus if V::Size == 4 and i is set to 3 the base address for the load/store will be the 12th entry (same as &mem [12]). |
shift | Shifts the base address determined by parameter i by shift many entries. Thus vector(3, 1) for V::Size == 4 will load/store the 13th - 16th entries (same as &mem [13]). |
V::Size
will not result in aligned loads. You have to use the above vector(size_t) function for aligned loads instead.i
to 0 and use shift
as the parameter to select the memory address:
|
inherited |
i-th
scalar entry in the memory.Example:
i | Specifies the scalar entry from where the vector will be loaded/stored. I.e. the values scalar(i), scalar(i + 1), ..., scalar(i + V::Size - 1) will be read/overwritten. |
align | You must take care to determine whether an unaligned load/store is required. Per default an aligned load/store is used. If i is not a multiple of V::Size you must pass Vc::Unaligned here. |
|
inherited |
Const overload of the above function.
i-th
scalar entry in the memory.i | Specifies the scalar entry from where the vector will be loaded/stored. I.e. the values scalar(i), scalar(i + 1), ..., scalar(i + V::Size - 1) will be read/overwritten. |
align | You must take care to determine whether an unaligned load/store is required. Per default an aligned load/store is used. If i is not a multiple of V::Size you must pass Vc::Unaligned here. |
|
inherited |
This function is simply a shorthand for vector(0).
|
inherited |
This function is simply a shorthand for vector(vectorsCount() - 1).