simdarray: move min/max function definitions down

The min/max definitions require internal_data0/1 and therefore must come
after the internal_data0/1 declarations.

Signed-off-by: Matthias Kretz <kretz@kde.org>
simdarray: implement conditional_assign(simdarray, ...)

Signed-off-by: Matthias Kretz <kretz@kde.org>
MIC: fix comment alignment

Signed-off-by: Matthias Kretz <kretz@kde.org>
vim fold marker for simdarray.h

Signed-off-by: Matthias Kretz <kretz@kde.org>
simdarray: simplify sorted implementation (recurse)

Merge sort can be implemented with a simple min/max + sort of the left
and right halves. This makes it possible to reuse the optimized
implementation of data0/1

Signed-off-by: Matthias Kretz <kretz@kde.org>
AVX: make Alias<T> strict in allowed conversions

ICC implicitly converts __m???? types now. This made Alias<__m????>
types ambiguous. Therefore allow implicit conversion only from T via
SFINAE.

Signed-off-by: Matthias Kretz <kretz@kde.org>
simdarray: early forward declaration for internal_data0/1

Do the complete simdarray and simdmaskarray forward declarations in the
new simdarrayfwd header file. This allows proper declaration of
internal_data0/1 and thus makes the function usable in more places.

Signed-off-by: Matthias Kretz <kretz@kde.org>
AVX(2): disambiguate functions for AVX2 abstraction

Renamed the remaining _mm256_* functions that lead to ambiguous function
calls with ICC.
This removes the need for the custom m256 and param256 types.

Signed-off-by: Matthias Kretz <kretz@kde.org>
MIC::Mask: init to 0 in default ctor

Signed-off-by: Matthias Kretz <kretz@kde.org>
MIC: use MIC::int_v instead of IndexType

IndexType is a simdarray now, making this implementation more
complicated than it was meant. Instead int_v should be the right choice
here.

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