26 #ifndef _BLAZE_MATH_DENSE_DENSEITERATOR_H_
27 #define _BLAZE_MATH_DENSE_DENSEITERATOR_H_
56 template<
typename Type
85 template< typename Other,
bool AF2 >
116 inline ReferenceType operator[](
size_t index ) const noexcept;
117 inline ReferenceType operator* () const noexcept;
118 inline PointerType operator->() const noexcept;
125 inline PointerType
base() const noexcept;
132 inline const SIMDType
load () const noexcept;
133 inline const SIMDType
loada () const noexcept;
134 inline const SIMDType
loadu () const noexcept;
135 inline
void store ( const SIMDType& value ) const noexcept;
136 inline
void storea( const SIMDType& value ) const noexcept;
137 inline
void storeu( const SIMDType& value ) const noexcept;
138 inline
void stream( const SIMDType& value ) const noexcept;
164 template< typename Type
177 template<
typename Type
190 template<
typename Type
192 template<
typename Other
214 template<
typename Type
230 template<
typename Type
253 template<
typename Type
268 template<
typename Type
282 template<
typename Type
297 template<
typename Type
320 template<
typename Type
335 template<
typename Type
350 template<
typename Type
373 template<
typename Type
400 template<
typename Type
423 template<
typename Type
445 template<
typename Type
466 template<
typename Type
489 template<
typename Type
509 template<
typename Type
529 template<
typename Type
549 template<
typename T1,
bool AF1,
typename T2,
bool AF2 >
552 template<
typename T1,
bool AF1,
typename T2,
bool AF2 >
555 template<
typename T1,
bool AF1,
typename T2,
bool AF2 >
556 inline bool operator<( const DenseIterator<T1,AF1>& lhs,
const DenseIterator<T2,AF2>& rhs ) noexcept;
558 template<
typename T1,
bool AF1,
typename T2,
bool AF2 >
561 template<
typename T1,
bool AF1,
typename T2,
bool AF2 >
562 inline bool operator<=( const DenseIterator<T1,AF1>& lhs,
const DenseIterator<T2,AF2>& rhs ) noexcept;
564 template<
typename T1,
bool AF1,
typename T2,
bool AF2 >
567 template<
typename Type,
bool AF >
570 template<
typename Type,
bool AF >
573 template<
typename Type,
bool AF >
576 template<
typename Type,
bool AF >
589 template<
typename T1
595 return lhs.base() == rhs.base();
607 template<
typename T1
613 return lhs.base() != rhs.base();
625 template<
typename T1
631 return lhs.
base() < rhs.base();
643 template<
typename T1
649 return lhs.base() > rhs.base();
661 template<
typename T1
667 return lhs.
base() <= rhs.base();
679 template<
typename T1
685 return lhs.base() >= rhs.base();
697 template<
typename Type
713 template<
typename Type
729 template<
typename Type
745 template<
typename Type
749 return lhs.base() - rhs.base();
Pointer difference type of the Blaze library.
ValueType value_type
Type of the underlying elements.
Definition: DenseIterator.h:70
Header file for basic type definitions.
BLAZE_ALWAYS_INLINE EnableIf_< And< IsIntegral< T1 >, HasSize< T1, 1UL > > > storea(T1 *address, const SIMDi8< T2 > &value) noexcept
Aligned store of a vector of 1-byte integral values.
Definition: Storea.h:79
typename SIMDTrait< T >::Type SIMDTrait_
Auxiliary alias declaration for the SIMDTrait class template.The SIMDTrait_ alias declaration provide...
Definition: SIMDTrait.h:315
const DenseIterator< Type, AF > operator+(const DenseIterator< Type, AF > &it, ptrdiff_t inc) noexcept
Addition between a DenseIterator and an integral value.
Definition: DenseIterator.h:699
ptrdiff_t DifferenceType
Difference between two iterators.
Definition: DenseIterator.h:66
bool operator>(const NegativeAccuracy< A > &lhs, const T &rhs)
Greater-than comparison between a NegativeAccuracy object and a floating point value.
Definition: Accuracy.h:366
const SIMDType loada() const noexcept
Aligned load of the SIMD element at the current iterator position.
Definition: DenseIterator.h:426
bool operator>=(const NegativeAccuracy< A > &, const T &rhs)
Greater-or-equal-than comparison between a NegativeAccuracy object and a floating point value...
Definition: Accuracy.h:442
const DenseIterator< Type, AF > operator-(const DenseIterator< Type, AF > &it, ptrdiff_t inc) noexcept
Subtraction between a DenseIterator and an integral value.
Definition: DenseIterator.h:731
SIMDTrait_< Type > SIMDType
SIMD type of the elements.
Definition: DenseIterator.h:76
BLAZE_ALWAYS_INLINE const EnableIf_< And< IsIntegral< T >, HasSize< T, 1UL > >, If_< IsSigned< T >, SIMDint8, SIMDuint8 > > loadu(const T *address) noexcept
Loads a vector of 1-byte integral values.
Definition: Loadu.h:77
DenseIterator() noexcept
Default constructor for the DenseIterator class.
Definition: DenseIterator.h:166
Type ValueType
Type of the underlying elements.
Definition: DenseIterator.h:63
ReferenceType operator*() const noexcept
Direct access to the element at the current iterator position.
Definition: DenseIterator.h:338
const SIMDType loadu() const noexcept
Unaligned load of the SIMD element at the current iterator position.
Definition: DenseIterator.h:448
PointerType base() const noexcept
Low-level access to the underlying member of the iterator.
Definition: DenseIterator.h:375
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
Type & ReferenceType
Reference return type.
Definition: DenseIterator.h:65
DenseIterator & operator-=(ptrdiff_t inc) noexcept
Subtraction assignment operator.
Definition: DenseIterator.h:232
DenseIterator & operator--() noexcept
Pre-decrement operator.
Definition: DenseIterator.h:284
void stream(const SIMDType &value) const noexcept
Aligned, non-temporal store of the SIMD element at the current iterator position. ...
Definition: DenseIterator.h:531
void storea(const SIMDType &value) const noexcept
Aligned store of the SIMD element at the current iterator position.
Definition: DenseIterator.h:491
Header file for all SIMD functionality.
BLAZE_ALWAYS_INLINE const EnableIf_< And< IsIntegral< T >, HasSize< T, 1UL > >, If_< IsSigned< T >, SIMDint8, SIMDuint8 > > loada(const T *address) noexcept
Loads a vector of 1-byte integral values.
Definition: Loada.h:80
void storeu(const SIMDType &value) const noexcept
Unaligned store of the SIMD element at the current iterator position.
Definition: DenseIterator.h:511
DenseIterator & operator++() noexcept
Pre-increment operator.
Definition: DenseIterator.h:255
ReferenceType reference
Reference return type.
Definition: DenseIterator.h:72
PointerType ptr_
Pointer to the current element.
Definition: DenseIterator.h:146
BLAZE_ALWAYS_INLINE EnableIf_< And< IsIntegral< T1 >, HasSize< T1, 1UL > > > stream(T1 *address, const SIMDi8< T2 > &value) noexcept
Aligned, non-temporal store of a vector of 1-byte integral values.
Definition: Stream.h:75
IteratorCategory iterator_category
The iterator category.
Definition: DenseIterator.h:69
Header file for run time assertion macros.
Type * PointerType
Pointer return type.
Definition: DenseIterator.h:64
const SIMDType load() const noexcept
Load of the SIMD element at the current iterator position.
Definition: DenseIterator.h:403
ReferenceType operator[](size_t index) const noexcept
Direct access to the underlying elements.
Definition: DenseIterator.h:323
PointerType pointer
Pointer return type.
Definition: DenseIterator.h:71
DifferenceType difference_type
Difference between two iterators.
Definition: DenseIterator.h:73
Implementation of a generic iterator for dense vectors and matrices.The DenseIterator represents a ge...
Definition: DenseIterator.h:58
BLAZE_ALWAYS_INLINE EnableIf_< And< IsIntegral< T1 >, HasSize< T1, 1UL > > > storeu(T1 *address, const SIMDi8< T2 > &value) noexcept
Unaligned store of a vector of 1-byte integral values.
Definition: Storeu.h:76
BLAZE_ALWAYS_INLINE bool checkAlignment(const T *address)
Checks the alignment of the given address.
Definition: AlignmentCheck.h:68
PointerType operator->() const noexcept
Direct access to the element at the current iterator position.
Definition: DenseIterator.h:353
Header file for the alignment check function.
DenseIterator & operator+=(ptrdiff_t inc) noexcept
Addition assignment operator.
Definition: DenseIterator.h:216
bool operator==(const NegativeAccuracy< A > &lhs, const T &rhs)
Equality comparison between a NegativeAccuracy object and a floating point value. ...
Definition: Accuracy.h:249
bool operator!=(const NegativeAccuracy< A > &lhs, const T &rhs)
Inequality comparison between a NegativeAccuracy object and a floating point value.
Definition: Accuracy.h:289
std::random_access_iterator_tag IteratorCategory
The iterator category.
Definition: DenseIterator.h:62
void store(const SIMDType &value) const noexcept
Store of the SIMD element at the current iterator position.
Definition: DenseIterator.h:468
#define BLAZE_INTERNAL_ASSERT(expr, msg)
Run time assertion macro for internal checks.In case of an invalid run time expression, the program execution is terminated. The BLAZE_INTERNAL_ASSERT macro can be disabled by setting the BLAZE_USER_ASSERTION flag to zero or by defining NDEBUG during the compilation.
Definition: Assert.h:101