16379 {
16380 const T* vec = v->vec()->vds().data();
16381 const std::size_t
vec_size = v->size();
16382
16384
16385 if (
vec_size <=
static_cast<std::size_t
>(
lud.batch_size))
16386 {
16389
16391 {
16392 #define case_stmt(N,fall_through) \
16393 case N : result += vec[i++]; \
16394 fall_through \
16395
16396 #ifndef exprtk_disable_superscalar_unroll
16403
16404 #endif
16407 }
16408
16409 #undef case_stmt
16410
16411 return result;
16412 }
16413
16415 T(0),
T(0),
T(0),
T(0),
T(0),
T(0),
T(0),
T(0),
16416 T(0),
T(0),
T(0),
T(0),
T(0),
T(0),
T(0),
T(0)
16417 };
16418
16419 const T* upper_bound = vec +
lud.upper_bound;
16420
16421 while (vec < upper_bound)
16422 {
16423 #define exprtk_loop(N) \
16424 r[N] += vec[N]; \
16425
16428 #ifndef exprtk_disable_superscalar_unroll
16435 #endif
16436
16437 vec +=
lud.batch_size;
16438 }
16439
16441
16442 switch (
lud.remainder)
16443 {
16444 #define case_stmt(N,fall_through) \
16445 case N : r[0] += vec[i++]; \
16446 fall_through \
16447
16448 #ifndef exprtk_disable_superscalar_unroll
16455 #endif
16458 }
16459
16460 #undef exprtk_loop
16461 #undef case_stmt
16462
16463 return (r[ 0] + r[ 1] + r[ 2] + r[ 3])
16464 #ifndef exprtk_disable_superscalar_unroll
16465 + (r[ 4] + r[ 5] + r[ 6] + r[ 7])
16466 + (r[ 8] + r[ 9] + r[10] + r[11])
16467 + (r[12] + r[13] + r[14] + r[15])
16469 ;
16470 }
#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)