16578 {
16579 const T* vec = v->vec()->vds().data();
16580 const std::size_t
vec_size = v->size();
16581
16583
16584 if (
vec_size <=
static_cast<std::size_t
>(
lud.batch_size))
16585 {
16588
16590 {
16591 #define case_stmt(N,fall_through) \
16592 case N : result += vec[i++]; \
16593 fall_through \
16594
16595 #ifndef exprtk_disable_superscalar_unroll
16602
16603 #endif
16606 }
16607
16608 #undef case_stmt
16609
16610 return result;
16611 }
16612
16614 T(0),
T(0),
T(0),
T(0),
T(0),
T(0),
T(0),
T(0),
16615 T(0),
T(0),
T(0),
T(0),
T(0),
T(0),
T(0),
T(0)
16616 };
16617
16618 const T* upper_bound = vec +
lud.upper_bound;
16619
16620 while (vec < upper_bound)
16621 {
16622 #define exprtk_loop(N) \
16623 r[N] += vec[N]; \
16624
16627 #ifndef exprtk_disable_superscalar_unroll
16634 #endif
16635
16636 vec +=
lud.batch_size;
16637 }
16638
16640
16641 switch (
lud.remainder)
16642 {
16643 #define case_stmt(N,fall_through) \
16644 case N : r[0] += vec[i++]; \
16645 fall_through \
16646
16647 #ifndef exprtk_disable_superscalar_unroll
16654 #endif
16657 }
16658
16659 #undef exprtk_loop
16660 #undef case_stmt
16661
16662 return (r[ 0] + r[ 1] + r[ 2] + r[ 3])
16663 #ifndef exprtk_disable_superscalar_unroll
16664 + (r[ 4] + r[ 5] + r[ 6] + r[ 7])
16665 + (r[ 8] + r[ 9] + r[10] + r[11])
16666 + (r[12] + r[13] + r[14] + r[15])
16668 ;
16669 }
#define exprtk_fallthrough
bool match_impl(const Iterator pattern_begin, const Iterator pattern_end, const Iterator data_begin, const Iterator data_end, const typename std::iterator_traits< Iterator >::value_type &zero_or_more, const typename std::iterator_traits< Iterator >::value_type &exactly_one)