unittest: pretty print <Impl>::Mask<T>

Signed-off-by: Matthias Kretz <kretz@kde.org>
unittest: overload print(string) for \n handling

correct printing of \n is done via the `const char *` overload, thus
print(std::string) was handled differently (incorrectly). Now simply
forward it via c_str.

Signed-off-by: Matthias Kretz <kretz@kde.org>
AVX simd_cast: fix AVX::Mask<T> to SSE::Mask<T> conversion

little endian always gets me... messed up the order of arguments again,
alignr needs the hi part first and lo second

Signed-off-by: Matthias Kretz <kretz@kde.org>
reversed: new function to reverse the entries in the vector

implemented and tested for Scalar, SSE, AVX, and simdarray

Signed-off-by: Matthias Kretz <kretz@kde.org>
nonmember interleave: fix for AVX

The idea of the non-member interleave function in Vc is to have a fully
consistent interleave behavior. And the AVX unpacklo/hi functions are
not consistent, but do an interleave per 128-bit lane. Adjust for this
via Mem::shuffle128 calls - GCC at least can optimize this nicely.

Signed-off-by: Matthias Kretz <kretz@kde.org>
add missing __m128d permute overload

Signed-off-by: Matthias Kretz <kretz@kde.org>
simdarray: fix generate (GCC bug)

GCC bug: the order of evaluation in an initializer list is well-defined
(front to back), but GCC 4.8 doesn't implement this correctly. Therefore
we enforce correct order.

Signed-off-by: Matthias Kretz <kretz@kde.org>