26#ifndef _BLAZE_MATH_DENSE_DENSEITERATOR_H_
27#define _BLAZE_MATH_DENSE_DENSEITERATOR_H_
57template<
typename Type
103 constexpr
DenseIterator& operator+=( ptrdiff_t inc ) noexcept;
104 constexpr
DenseIterator& operator-=( ptrdiff_t inc ) noexcept;
123 constexpr
ReferenceType operator[](
size_t index ) const noexcept;
171template< typename Type
184template<
typename Type
197template<
typename Type
199template<
typename Other
221template<
typename Type
238template<
typename Type
262template<
typename Type
277template<
typename Type
291template<
typename Type
306template<
typename Type
329template<
typename Type
344template<
typename Type
359template<
typename Type
382template<
typename Type
410template<
typename Type
433template<
typename Type
455template<
typename Type
476template<
typename Type
499template<
typename Type
519template<
typename Type
539template<
typename Type
559template<
typename T1, AlignmentFlag AF1,
typename T2, AlignmentFlag AF2 >
563template<
typename T1, AlignmentFlag AF1,
typename T2, AlignmentFlag AF2 >
567template<
typename T1, AlignmentFlag AF1,
typename T2, AlignmentFlag AF2 >
571template<
typename T1, AlignmentFlag AF1,
typename T2, AlignmentFlag AF2 >
575template<
typename T1, AlignmentFlag AF1,
typename T2, AlignmentFlag AF2 >
579template<
typename T1, AlignmentFlag AF1,
typename T2, AlignmentFlag AF2 >
583template<
typename Type, AlignmentFlag AF >
587template<
typename Type, AlignmentFlag AF >
591template<
typename Type, AlignmentFlag AF >
595template<
typename Type, AlignmentFlag AF >
615 return lhs.base() == rhs.base();
633 return lhs.base() != rhs.base();
651 return lhs.base() < rhs.base();
669 return lhs.base() > rhs.base();
687 return lhs.base() <= rhs.base();
705 return lhs.base() >= rhs.base();
717template<
typename Type
733template<
typename Type
749template<
typename Type
765template<
typename Type
769 return lhs.base() - rhs.base();
Header file for the alignment check function.
Header file for the alignment flag enumeration.
Header file for run time assertion macros.
constexpr 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:751
constexpr 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:719
Header file for all SIMD functionality.
Implementation of a generic iterator for dense vectors and matrices.
Definition: DenseIterator.h:60
void storeu(const SIMDType &value) const noexcept
Unaligned store of the SIMD element at the current iterator position.
Definition: DenseIterator.h:521
constexpr ReferenceType operator*() const noexcept
Direct access to the element at the current iterator position.
Definition: DenseIterator.h:347
const SIMDType loadu() const noexcept
Unaligned load of the SIMD element at the current iterator position.
Definition: DenseIterator.h:458
const SIMDType loada() const noexcept
Aligned load of the SIMD element at the current iterator position.
Definition: DenseIterator.h:436
PointerType pointer
Pointer return type.
Definition: DenseIterator.h:72
constexpr DenseIterator & operator-=(ptrdiff_t inc) noexcept
Subtraction assignment operator.
Definition: DenseIterator.h:241
void store(const SIMDType &value) const noexcept
Store of the SIMD element at the current iterator position.
Definition: DenseIterator.h:478
ValueType value_type
Type of the underlying elements.
Definition: DenseIterator.h:71
IteratorCategory iterator_category
The iterator category.
Definition: DenseIterator.h:70
Type & ReferenceType
Reference return type.
Definition: DenseIterator.h:66
Type ValueType
Type of the underlying elements.
Definition: DenseIterator.h:64
void storea(const SIMDType &value) const noexcept
Aligned store of the SIMD element at the current iterator position.
Definition: DenseIterator.h:501
constexpr DenseIterator & operator--() noexcept
Pre-decrement operator.
Definition: DenseIterator.h:293
const SIMDType load() const noexcept
Load of the SIMD element at the current iterator position.
Definition: DenseIterator.h:413
DifferenceType difference_type
Difference between two iterators.
Definition: DenseIterator.h:74
constexpr DenseIterator() noexcept
Default constructor for the DenseIterator class.
Definition: DenseIterator.h:173
void stream(const SIMDType &value) const noexcept
Aligned, non-temporal store of the SIMD element at the current iterator position.
Definition: DenseIterator.h:541
PointerType ptr_
Pointer to the current element.
Definition: DenseIterator.h:153
constexpr PointerType base() const noexcept
Low-level access to the underlying member of the iterator.
Definition: DenseIterator.h:385
Type * PointerType
Pointer return type.
Definition: DenseIterator.h:65
constexpr PointerType operator->() const noexcept
Direct access to the element at the current iterator position.
Definition: DenseIterator.h:362
constexpr DenseIterator & operator+=(ptrdiff_t inc) noexcept
Addition assignment operator.
Definition: DenseIterator.h:224
constexpr ReferenceType operator[](size_t index) const noexcept
Direct access to the underlying elements.
Definition: DenseIterator.h:332
SIMDTrait_t< Type > SIMDType
SIMD type of the elements.
Definition: DenseIterator.h:77
constexpr DenseIterator & operator++() noexcept
Pre-increment operator.
Definition: DenseIterator.h:264
std::random_access_iterator_tag IteratorCategory
The iterator category.
Definition: DenseIterator.h:63
ReferenceType reference
Reference return type.
Definition: DenseIterator.h:73
ptrdiff_t DifferenceType
Difference between two iterators.
Definition: DenseIterator.h:67
constexpr bool operator>(const NegativeAccuracy< A > &lhs, const T &rhs)
Greater-than comparison between a NegativeAccuracy object and a floating point value.
Definition: Accuracy.h:370
constexpr bool operator==(const NegativeAccuracy< A > &lhs, const T &rhs)
Equality comparison between a NegativeAccuracy object and a floating point value.
Definition: Accuracy.h:253
AlignmentFlag
Alignment flag for (un-)aligned vectors and matrices.
Definition: AlignmentFlag.h:63
constexpr bool operator<(const NegativeAccuracy< A > &lhs, const T &rhs)
Less-than comparison between a NegativeAccuracy object and a floating point value.
Definition: Accuracy.h:332
constexpr 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:446
constexpr bool operator!=(const NegativeAccuracy< A > &lhs, const T &rhs)
Inequality comparison between a NegativeAccuracy object and a floating point value.
Definition: Accuracy.h:293
constexpr bool operator<=(const NegativeAccuracy< A > &, const T &rhs)
Less-or-equal-than comparison between a NegativeAccuracy object and a floating point value.
Definition: Accuracy.h:408
#define BLAZE_INTERNAL_ASSERT(expr, msg)
Run time assertion macro for internal checks.
Definition: Assert.h:101
typename SIMDTrait< T >::Type SIMDTrait_t
Auxiliary alias declaration for the SIMDTrait class template.
Definition: SIMDTrait.h:315
BLAZE_ALWAYS_INLINE EnableIf_t< IsIntegral_v< T1 > &&HasSize_v< T1, 1UL > > storea(T1 *address, const SIMDi8< T2 > &value) noexcept
Aligned store of a vector of 1-byte integral values.
Definition: Storea.h:78
BLAZE_ALWAYS_INLINE EnableIf_t< IsIntegral_v< T1 > &&HasSize_v< T1, 1UL > > storeu(T1 *address, const SIMDi8< T2 > &value) noexcept
Unaligned store of a vector of 1-byte integral values.
Definition: Storeu.h:75
BLAZE_ALWAYS_INLINE EnableIf_t< IsIntegral_v< T1 > &&HasSize_v< 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:74
BLAZE_ALWAYS_INLINE const EnableIf_t< IsIntegral_v< T > &&HasSize_v< T, 1UL >, If_t< IsSigned_v< T >, SIMDint8, SIMDuint8 > > loadu(const T *address) noexcept
Loads a vector of 1-byte integral values.
Definition: Loadu.h:76
BLAZE_ALWAYS_INLINE const EnableIf_t< IsIntegral_v< T > &&HasSize_v< T, 1UL >, If_t< IsSigned_v< T >, SIMDint8, SIMDuint8 > > loada(const T *address) noexcept
Loads a vector of 1-byte integral values.
Definition: Loada.h:79
BLAZE_ALWAYS_INLINE bool checkAlignment(const T *address)
Checks the alignment of the given address.
Definition: AlignmentCheck.h:68
Header file for basic type definitions.