simd_cast: reorder code: Vector / Mask split

Signed-off-by: Matthias Kretz <kretz@kde.org>
simd_cast: reorder SSE simd_cast functions

Signed-off-by: Matthias Kretz <kretz@kde.org>
simd_cast: change default int->short impl

This was default for GCC only, but it is to be expected that
all compilers behave like this.

Signed-off-by: Matthias Kretz <kretz@kde.org>
simd_cast: check that sse/vector.h was included

Signed-off-by: Matthias Kretz <kretz@kde.org>
simd_cast: reorder AVX impl like SSE

order is important because only calls to simd_casts above are possible

Signed-off-by: Matthias Kretz <kretz@kde.org>
simd_cast: simplify SSE to Scalar casts

Signed-off-by: Matthias Kretz <kretz@kde.org>
simd_cast: offset==0 from SSE may only cast to SSE and Scalar

It doesn't know about AVX yet, therefore the function should not
participate in overloading when the Return type is an AVX Vector/Mask

Signed-off-by: Matthias Kretz <kretz@kde.org>
simd_cast: implement casts required for test (maybe more)

This should now contain the full set of AVX <-> SSE/Scalar Mask
conversions as well as simd_mask_array <-> AVX casts.

Signed-off-by: Matthias Kretz <kretz@kde.org>
Allocator: specialize std::allocator for more types

Mask, simdarray, and simd_mask_array all need a smarter allocator, too

Signed-off-by: Matthias Kretz <kretz@kde.org>
cmake: fix run_*_all dependency

Signed-off-by: Matthias Kretz <kretz@kde.org>
casts test: test simdarray<T, 17>

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