Represents a non-packed triangular matrix. More...
#include <TriangularMat.hpp>
Public Types | |
| typedef Base::PtrType | PtrType | 
| using | Type = T | 
| using | Opts = Options | 
| using | ValueType = sp::remove_cvref_t< sp::remove_addrspace_t< T > > | 
| template<typename NewT > | |
| using | InValueType = TriangularMat< Upper, NewT, Options > | 
  Public Types inherited from sp::MemTensorLike< TriangularMat< Upper, T, sp::DefaultTensorOptions >, T, 2, sp::DefaultTensorOptions > | |
| using | ThisType = MemTensorLike< TriangularMat< Upper, T, sp::DefaultTensorOptions >, T, TensorRank, sp::DefaultTensorOptions > | 
| using | ValueType = sp::remove_cvref_t< sp::remove_addrspace_t< T > > | 
| using | Type = T | 
| using | Opts = sp::DefaultTensorOptions | 
| using | Base = TensorLike< TriangularMat< Upper, T, sp::DefaultTensorOptions >, TensorRank > | 
| using | InValueType = MemTensorLike< TriangularMat< Upper, T, sp::DefaultTensorOptions >, NewT, TensorRank, sp::DefaultTensorOptions > | 
| using | PtrType = T * | 
| The type of the data pointer.  More... | |
Public Member Functions | |
| TriangularMat (PtrType data, const Vec< int, 1 > &size) | |
| TriangularMat (PtrType data, const Vec< int, 2 > &sizes) | |
| TriangularMat (PtrType data, const Vec< int, 2 > &sizes, const Vec< int, 2 > &strides) | |
  Public Member Functions inherited from sp::MemTensorLike< TriangularMat< Upper, T, sp::DefaultTensorOptions >, T, 2, sp::DefaultTensorOptions > | |
| auto | getSizes () const | 
| void | setSizes (sp::Vec< int, Rank > sz) | 
| auto & | getSize (int n) | 
| const auto & | getSize (int n) const | 
| auto | getStrides () const | 
| void | setStrides (sp::Vec< int, getNumStrides()> sz) | 
| auto & | getStride (int n) | 
| const auto & | getStride (int n) const | 
| auto & | getTotalSize () | 
| const auto & | getTotalSize () const | 
| auto & | sizeQuantisation () | 
| const auto & | sizeQuantisation () const | 
| void | setDefaultSizeQuantisation () | 
| sp::Vec< int, Rank > | getDimsWithPadding () | 
| void | validateFields () | 
| void | computeStrides () | 
| Compute strides in the default way.  More... | |
| int | totalSizeImpl () const | 
Get the total memory occupied by the Tensor, in terms of elements.  More... | |
| sp::Vec< int, Rank > | stridesImpl () const | 
| Default implementation of the stride-getter.  More... | |
| sp::Vec< int, Rank > | strides () const | 
| int | stride (int i) const | 
| MemTensorLike (PtrType ptr, const Vec< int, Rank > &sizes) | |
Create a Tensor.  More... | |
| MemTensorLike (PtrType ptr, const Vec< int, Rank > &sizes, const Vec< int, Rank > &strides) | |
Create a Tensor with specified strides.  More... | |
| int | computeOffsetImpl (const Vec< int, Rank > &pos) const | 
| Calculate the offset from the start of the buffer that a particular element can be found at.  More... | |
| int | computeOffset (const Vec< int, Rank > &pos) const | 
| const PtrType | ptr (const Vec< int, Rank > &pos) const | 
| Get a pointer to a particular element.  More... | |
| PtrType | ptr (const Vec< int, Rank > &pos) | 
| const PtrType | ptr () const | 
| Get a pointer to the start of the underlying buffer.  More... | |
| PtrType | ptr () | 
| auto | begin () const | 
| auto | end () const | 
| auto | getViewImpl (const sp::Vec< int, Rank > &start, const sp::Vec< int, Rank > &size) | 
| Create a view into this Tensor using identical striding.  More... | |
| auto & | operator[] (int idx) | 
| Handy 1D subscript operator.  More... | |
| const auto & | operator[] (int idx) const | 
| void | setSizeQuantisation (int x) | 
| Set the size quantisation for the bounds checks.  More... | |
  Public Member Functions inherited from sp::TensorLike< Subclass, TensorRank > | |
| auto | dims () const | 
| bool | boundsCheck (const Vec< int, Rank > &pos) const | 
| template<int L, CacheMode Mode = CacheMode::DEFAULT> | |
| auto | vectorRead (const Vec< int, Rank > &pos) const | 
| template<int L, CacheMode Mode = CacheMode::DEFAULT> | |
| auto | vectorOffsetRead (const Vec< int, Rank > &base, const Vec< int, Rank > &offset) const | 
| template<int L, CacheMode Mode = CacheMode::DEFAULT> | |
| auto | maskedVectorRead (const Vec< int, Rank > &pos) const | 
| template<int L, CacheMode Mode = CacheMode::DEFAULT, typename T > | |
| void | vectorWrite (const Vec< int, Rank > &pos, const Vec< T, L > &values) | 
| template<int L, CacheMode Mode = CacheMode::DEFAULT, typename T > | |
| void | maskedVectorWrite (const Vec< int, Rank > &pos, const Vec< T, L > &values) | 
| int | sizeQuantisation () const | 
| int | totalSize () const | 
Get the total memory occupied by the Tensor, in terms of elements.  More... | |
| auto | getView (const sp::Vec< int, Rank > &start, const sp::Vec< int, Rank > &size) | 
| Get an object that represents (and aliases) a portion of this object.  More... | |
| int | dim (int d) const | 
| Behaviour common to all TensorLikes ///.  More... | |
| template<CacheMode Mode = CacheMode::DEFAULT> | |
| auto | read (const Vec< int, Rank > &pos) const | 
| Get the element at a given position.  More... | |
| template<CacheMode Mode = CacheMode::DEFAULT, typename T > | |
| void | write (const Vec< int, Rank > &pos, const T &value) | 
| Set a single element.  More... | |
| template<int Dummy = 0> | |
| int | size () const | 
| template<int L> | |
| void | boundsCheckAccess (Vec< int, Rank > pos) const | 
Bounds-check an L-element vector read at pos.  More... | |
Static Public Attributes | |
| static constexpr int | Rank = 2 | 
| static constexpr bool | IsUpper = Upper | 
  Static Public Attributes inherited from sp::MemTensorLike< TriangularMat< Upper, T, sp::DefaultTensorOptions >, T, 2, sp::DefaultTensorOptions > | |
| static constexpr int | Rank | 
| static constexpr bool | AllowVectorMemoryOps | 
An overrideable flag to indicate if a concrete MemTensorLike subclass supports vector memory operations.  More... | |
| static constexpr int | NumStrides | 
| The number of strides to explicitly store.  More... | |
| static constexpr int | ImplicitStrides | 
| The number of strides that are not stored.  More... | |
| constexpr static bool | HasTotalSize | 
  Static Public Attributes inherited from sp::TensorLike< Subclass, TensorRank > | |
| constexpr static int | Rank = TensorRank | 
Protected Member Functions | |
| bool | boundsCheckImpl (const Vec< int, 2 > &pos) const | 
  Protected Member Functions inherited from sp::MemTensorLike< TriangularMat< Upper, T, sp::DefaultTensorOptions >, T, 2, sp::DefaultTensorOptions > | |
| sp::Vec< int, Rank > | dimsImpl () const | 
| int | sizeQuantisationImpl () const | 
| Vec< ValueType, L > | vectorReadImpl (const Vec< int, Rank > &pos) const | 
| This will yield a vector load instruction if the alignment permits.  More... | |
| void | vectorWriteImpl (const Vec< int, Rank > &pos, const Vec< ValueType, L > &values) | 
  Protected Member Functions inherited from sp::TensorLike< Subclass, TensorRank > | |
| template<typename Dummy = void*> | |
| auto | dimsImpl () const | 
Get an sp::Vec<int, X> representing the dimensions of the object.  More... | |
| bool | boundsCheckImpl (const sp::Vec< int, Rank > &) const | 
| Return true iff the given coordinates are inside the object (Default implementation below)  More... | |
| int | sizeQuantisationImpl () const | 
| The last dimension is rounded up to the next multiple of this value for the purposes of bounds checks.  More... | |
| template<int L, CacheMode Mode = CacheMode::DEFAULT> | |
| auto | vectorReadImpl (const Vec< int, Rank > &) const | 
| Read L elements, adjacent in the last dimension, starting at the given position.  More... | |
| template<int L, CacheMode Mode = CacheMode::DEFAULT> | |
| auto | vectorOffsetReadImpl (const Vec< int, Rank > &base, const Vec< int, Rank > &offset) const | 
Read L elements, adjacent in the last dimension, from position base + offset.  More... | |
| template<int L, CacheMode Mode = CacheMode::DEFAULT> | |
| auto | maskedVectorReadImpl (const Vec< int, Rank > &pos) const | 
| Do a vectorRead that copes with the possibility of part of the vector being out of bounds.  More... | |
| template<int L, CacheMode Mode = CacheMode::DEFAULT, typename T > | |
| void | maskedVectorWriteImpl (const Vec< int, Rank > &pos, const Vec< T, L > &values) | 
| Do a vectorWrite that copes with the possibility of part of the vector being out of bounds.  More... | |
| template<int L, CacheMode Mode, typename T > | |
| void | vectorWriteImpl (const Vec< int, Rank > &pos, const Vec< T, L > &values) | 
| Write L elements, adjacent in the last dimension, starting at the given position.  More... | |
| auto | getViewImpl (const sp::Vec< int, Rank > &start, const sp::Vec< int, Rank > &size) | 
The default implementation just makes a TensorView. Not hugely fast, but always works.  More... | |
Additional Inherited Members | |
  Static Public Member Functions inherited from sp::MemTensorLike< TriangularMat< Upper, T, sp::DefaultTensorOptions >, T, 2, sp::DefaultTensorOptions > | |
| static constexpr int | calculateNumStrides () | 
Compute the default value for NumStrides.  More... | |
  Public Attributes inherited from sp::MemTensorLike< TriangularMat< Upper, T, sp::DefaultTensorOptions >, T, 2, sp::DefaultTensorOptions > | |
| friend | Base | 
| PtrType | dataPtr | 
| sp::Vec< int, Rank+getNumStrides()+HasTotalSize+AssertionsEnabled > | variousIntegers | 
Represents a non-packed triangular matrix.
This differs from an ordinary Matrix only in the bounds checking rule that is used: triangular matrices must not access the "wrong half".
In release builds, since bounds checks are omitted, this class isn't even codegenned.