MCPcopy Create free account
hub / github.com/emscripten-core/emscripten / __equal_aligned

Function __equal_aligned

system/lib/libcxx/include/__algorithm/equal.h:119–157  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

117
118template <class _Cp, bool _IsConst1, bool _IsConst2>
119[[__nodiscard__]] _LIBCPP_CONSTEXPR_SINCE_CXX20 _LIBCPP_HIDE_FROM_ABI bool
120__equal_aligned(__bit_iterator<_Cp, _IsConst1> __first1,
121 __bit_iterator<_Cp, _IsConst1> __last1,
122 __bit_iterator<_Cp, _IsConst2> __first2) {
123 using _It = __bit_iterator<_Cp, _IsConst1>;
124 using difference_type = typename _It::difference_type;
125 using __storage_type = typename _It::__storage_type;
126
127 const int __bits_per_word = _It::__bits_per_word;
128 difference_type __n = __last1 - __first1;
129 if (__n > 0) {
130 // do first word
131 if (__first1.__ctz_ != 0) {
132 unsigned __clz = __bits_per_word - __first1.__ctz_;
133 difference_type __dn = std::min(static_cast<difference_type>(__clz), __n);
134 __n -= __dn;
135 __storage_type __m = std::__middle_mask<__storage_type>(__clz - __dn, __first1.__ctz_);
136 if ((*__first2.__seg_ & __m) != (*__first1.__seg_ & __m))
137 return false;
138 ++__first2.__seg_;
139 ++__first1.__seg_;
140 // __first1.__ctz_ = 0;
141 // __first2.__ctz_ = 0;
142 }
143 // __first1.__ctz_ == 0;
144 // __first2.__ctz_ == 0;
145 // do middle words
146 for (; __n >= __bits_per_word; __n -= __bits_per_word, ++__first1.__seg_, ++__first2.__seg_)
147 if (*__first2.__seg_ != *__first1.__seg_)
148 return false;
149 // do last word
150 if (__n > 0) {
151 __storage_type __m = std::__trailing_mask<__storage_type>(__bits_per_word - __n);
152 if ((*__first2.__seg_ & __m) != (*__first1.__seg_ & __m))
153 return false;
154 }
155 }
156 return true;
157}
158
159template <class _Cp,
160 bool _IsConst1,

Callers 2

__equal_iter_implFunction · 0.85
__equal_implFunction · 0.85

Calls 1

minFunction · 0.70

Tested by

no test coverage detected