tests: use simd_cast for IndexType objects

Since IndexType uses simdarray<int, Size>, the previous uses of
static_cast can't work consistently anymore. simd_cast solves this.

Signed-off-by: Matthias Kretz <kretz@kde.org>
unittest: more concise Typelist/simdarray output

changed typeToString for Typelist and simdarray to require less
characters

Signed-off-by: Matthias Kretz <kretz@kde.org>
docs: internal API documentation

modified one comment to show up in doxygen

Signed-off-by: Matthias Kretz <kretz@kde.org>
subscript: use VC_ASSERT instead of assert

Signed-off-by: Matthias Kretz <kretz@kde.org>
subscript: skip initialization to T()

IndexVectorScaled is a std::vector (currently) and the previously used
constructor called initialized the whole thing to T() before assigning
the actual values. Now it uses the iterators ctor to initialize it with
the correct values right from the start.

Signed-off-by: Matthias Kretz <kretz@kde.org>
subscript: use pointer instead of std::vector argument

When calling the gather ctor or scatter function, use a pointer to the
IndexVectorScaled data instead of the actual object. The latter required
to copy the data unnecessarily and made it harder to adjust the offset
into the index data for simdarray.

Signed-off-by: Matthias Kretz <kretz@kde.org>
iterator: tag the Vc iterators as bidirectional

Signed-off-by: Matthias Kretz <kretz@kde.org>
simdarray: simplify/fix index argument splitting for gathers

Previously the actual split overload that was getting called was hard to
control. With the tag type this is now easy. And finally the index
argument is offset correctly, fixing the subscript unit test.

Signed-off-by: Matthias Kretz <kretz@kde.org>
simdarray: drop unused type alias

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