28 #ifndef VC_COMMON_ALGORITHMS_H_    29 #define VC_COMMON_ALGORITHMS_H_    33 namespace Vc_VERSIONED_NAMESPACE
    48 constexpr 
bool all_of(
bool b) { 
return b; }
    57 constexpr 
bool any_of(
bool b) { 
return b; }
    66 constexpr 
bool none_of(
bool b) { 
return !b; }
    76 constexpr 
bool some_of(
bool) { 
return false; }
    79 template <
typename InputIt, 
typename UnaryFunction>
    80 inline enable_if<std::is_arithmetic<typename InputIt::value_type>::value &&
    81                      Traits::is_functor_argument_immutable<
    84 simd_for_each(InputIt first, InputIt last, UnaryFunction f)
    87     typedef Scalar::Vector<typename InputIt::value_type> V1;
    88     for (; 
reinterpret_cast<std::uintptr_t
>(std::addressof(*first)) &
    94     const auto lastV = last - (V::Size + 1);
    95     for (; first < lastV; first += V::Size) {
    98     for (; first != last; ++first) {
   104 template <
typename InputIt, 
typename UnaryFunction>
   105 inline enable_if<std::is_arithmetic<typename InputIt::value_type>::value &&
   106                      !Traits::is_functor_argument_immutable<
   109 simd_for_each(InputIt first, InputIt last, UnaryFunction f)
   112     typedef Scalar::Vector<typename InputIt::value_type> V1;
   113     for (; 
reinterpret_cast<std::uintptr_t
>(std::addressof(*first)) &
   121     const auto lastV = last - (V::Size + 1);
   122     for (; first < lastV; first += V::Size) {
   127     for (; first != last; ++first) {
   135 template <
typename InputIt, 
typename UnaryFunction>
   136 inline enable_if<!std::is_arithmetic<typename InputIt::value_type>::value, UnaryFunction>
   137 simd_for_each(InputIt first, InputIt last, UnaryFunction f)
   139     return std::for_each(first, last, std::move(f));
   143 template <
typename InputIt, 
typename UnaryFunction>
   144 inline enable_if<std::is_arithmetic<typename InputIt::value_type>::value &&
   145                      Traits::is_functor_argument_immutable<
   148 simd_for_each_n(InputIt first, std::size_t count, UnaryFunction f)
   150     typename std::make_signed<size_t>::type len = count;
   152     typedef Scalar::Vector<typename InputIt::value_type> V1;
   153     for (; 
reinterpret_cast<std::uintptr_t
>(std::addressof(*first)) &
   159     for (; len >= int(V::Size); len -= V::Size, first += V::Size) {
   162     for (; len != 0; --len, ++first) {
   168 template <
typename InputIt, 
typename UnaryFunction>
   169 inline enable_if<std::is_arithmetic<typename InputIt::value_type>::value &&
   170                      !Traits::is_functor_argument_immutable<
   173 simd_for_each_n(InputIt first, std::size_t count, UnaryFunction f)
   175     typename std::make_signed<size_t>::type len = count;
   177     typedef Scalar::Vector<typename InputIt::value_type> V1;
   178     for (; 
reinterpret_cast<std::uintptr_t
>(std::addressof(*first)) &
   186     for (; len >= int(V::Size); len -= V::Size, first += V::Size) {
   191     for (; len != 0; --len, ++first) {
   200 template <
typename InputIt, 
typename UnaryFunction>
   201 inline enable_if<!std::is_arithmetic<typename InputIt::value_type>::value, UnaryFunction>
   202 simd_for_each_n(InputIt first, std::size_t count, UnaryFunction f)
   204     return std::for_each_n(first, count, std::move(f));
   210 #endif // VC_COMMON_ALGORITHMS_H_ The main vector class for expressing data parallelism. 
constexpr bool any_of(bool b)
Returns b. 
bool isFull() const 
Returns a logical AND of all components. 
constexpr bool none_of(bool b)
Returns !b. 
constexpr bool all_of(bool b)
Returns b. 
constexpr AlignedTag Aligned
Use this object for a flags parameter to request aligned loads and stores. 
constexpr bool some_of(bool)
Returns false. 
The main SIMD mask class. 
bool isNotEmpty() const 
Returns a logical OR of all components. 
constexpr std::size_t MemoryAlignment
Specifies the most conservative memory alignment necessary for aligned loads and stores of Vector typ...
bool isEmpty() const 
Returns true if components are false, false otherwise. 
bool isMix() const 
Returns !isFull() && !isEmpty().