simdarray: implement generate function

implementation for the generate function that is already present in
Vector and Mask types

Signed-off-by: Matthias Kretz <kretz@kde.org>
simd_cast: greedy matching via universal reference

the trivial simd_cast that doesn't actually cast should use perfect
forwarding

Signed-off-by: Matthias Kretz <kretz@kde.org>
simd_cast: support more simd(mask)array casts

Signed-off-by: Matthias Kretz <kretz@kde.org>
Masks: add Zero() and One() static functions

for consistency I added the Zero() and One() functions to all Mask
classes

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

The simd_mask_array simd_cast functions in AVX and SSE were duplicating
functionality in common/simdarray.h. The latter should be the only place to
handle any simdarray simd_casts (which are then broken down to
non-simdarray casts).

Signed-off-by: Matthias Kretz <kretz@kde.org>
casts test: split into more targets

if a single translation unit requires 6GB RAM for compilation it's
probably too big. So I split it up with even more ifdefs.

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