#![feature(portable_simd)]
macro_rules! cast_types {
    ($start:ident, $($target:ident),*) => {
        mod $start {
            use core_simd::simd::Simd;
            type Vector<const N: usize> = Simd<$start, N>;
            $(
                mod $target {
                    use super::*;
                    test_helpers::test_lanes! {
                        fn cast_as<const N: usize>() {
                            test_helpers::test_unary_elementwise(
                                &Vector::<N>::cast::<$target>,
                                &|x| x as $target,
                                &|_| true,
                            )
                        }
                    }
                }
            )*
        }
    };
}

// The hypothesis is that widening conversions aren't terribly interesting.
cast_types!(f32, f64, i8, u8, usize, isize);
cast_types!(f64, f32, i8, u8, usize, isize);
cast_types!(i8, u8, f32);
cast_types!(u8, i8, f32);
cast_types!(i16, u16, i8, u8, f32);
cast_types!(u16, i16, i8, u8, f32);
cast_types!(i32, u32, i8, u8, f32, f64);
cast_types!(u32, i32, i8, u8, f32, f64);
cast_types!(i64, u64, i8, u8, isize, usize, f32, f64);
cast_types!(u64, i64, i8, u8, isize, usize, f32, f64);
cast_types!(isize, usize, i8, u8, f32, f64);
cast_types!(usize, isize, i8, u8, f32, f64);
