14#ifndef LLVM_ADT_REPEATED_H
15#define LLVM_ADT_REPEATED_H
30 std::random_access_iterator_tag, T, ptrdiff_t,
31 const T *, const T &> {
32 const T *value =
nullptr;
38 : value(value), index(index) {}
43 assert((!value || !rhs.value || value == rhs.value) &&
44 "comparing iterators from different Repeated ranges");
45 return index == rhs.index;
49 assert((!value || !rhs.value || value == rhs.value) &&
50 "comparing iterators from different Repeated ranges");
51 return index < rhs.index;
55 assert((!value || !rhs.value || value == rhs.value) &&
56 "subtracting iterators from different Repeated ranges");
57 return index - rhs.index;
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
A random-access iterator that always dereferences to the same value.
RepeatedIterator & operator-=(ptrdiff_t n)
RepeatedIterator & operator+=(ptrdiff_t n)
ptrdiff_t operator-(const RepeatedIterator &rhs) const
bool operator<(const RepeatedIterator &rhs) const
RepeatedIterator()=default
const T & operator*() const
bool operator==(const RepeatedIterator &rhs) const
RepeatedIterator(const T *value, ptrdiff_t index)
CRTP base class which implements the entire standard iterator facade in terms of a minimal subset of ...
This is an optimization pass for GlobalISel generic memory operations.
GCNRegPressure max(const GCNRegPressure &P1, const GCNRegPressure &P2)
Repeated(size_t, U &&) -> Repeated< std::decay_t< U > >
Implement std::hash so that hash_code can be used in STL containers.
A memory-efficient immutable range with a single value repeated N times.
reverse_iterator const_reverse_iterator
reverse_iterator rend() const
RepeatedIterator< T > iterator
std::reverse_iterator< iterator > reverse_iterator
Repeated(size_t count, U &&value)
Create a value repeated count times.
const T & operator[](size_t idx) const
reverse_iterator rbegin() const